C++ 什么是GIMP阈值算法?

C++ 什么是GIMP阈值算法?,c++,opencv,gimp,threshold,C++,Opencv,Gimp,Threshold,我是opencv的初学者,我尝试像GIMP应用程序一样设置图像阈值,但我不知道GIMP阈值算法。我在opencv中尝试了“阈值”方法,但结果不同。 有人能帮我吗 我使用opencv-3.4.3 Mat image = imread("myimage.png"); Mat ths; threshold(image, ths, 180, 255, THRESH_BINARY); imwrite("ths-image.png", ths); opencv“阈值”和GIMP“阈值”结果不同 编辑1 输

我是opencv的初学者,我尝试像GIMP应用程序一样设置图像阈值,但我不知道GIMP阈值算法。我在opencv中尝试了“阈值”方法,但结果不同。 有人能帮我吗

我使用opencv-3.4.3

Mat image = imread("myimage.png");
Mat ths;
threshold(image, ths, 180, 255, THRESH_BINARY);
imwrite("ths-image.png", ths);
opencv“阈值”和GIMP“阈值”结果不同

编辑1

输入图像为:

转换为HLS

阈值为210的GIMP阈值图像

将HLS转换为灰色,用于处理OpenCV阈值

阈值为210的OpenCV THRESH_二进制文件

阈值为210的OpenCV阈值

OpenCV THRESH_为零,阈值=210

OpenCV有几种解释阈值的方法。您当前已将其设置为THRESH_BINARY。也许其他方法中的一种更类似于GIMP中的方法:


此图显示阈值为127的不同方法的输出。

以下是使用Imagemagick对图像进行二值化的两种方法

第一个将图像转换为HCL颜色空间,并提取编号为H=0、C=1、L=2的色度饱和通道。接下来,将图像拉伸到整个动态范围。最后做一个简单的阈值

convert img.png -colorspace HCL -channel 1 -separate +channel -auto-level -threshold 57% result1.png

第二种简单地将接近黄色的颜色转换为白色,其余的全部转换为黑色

convert img.png -fuzz 10% -fill white -opaque "rgb(229,207,70)" -fill black +opaque white result2.png

我不知道GIMP做什么。此外,我无法使用GIMP和您指定的210值重现您的结果

以下是我从GIMP得到的信息:

我怀疑GIMP在值模式下会转换为HSV,而只是对V通道设置阈值。以下是使用210/255=82.35%的等效Imagemagick命令

convert img.png -colorspace HSV -channel 2 -separate +channel -threshold 82.35% IM_threshold_210.png


它们在我看来几乎一样。

从这里抓取一张灰度图像,然后在程序中尝试更改180,看看是否可以解决。myimage.png是单通道图像还是多通道图像?输入图像是灰度图像。