问题标签 [image-thresholding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2096 浏览

python - 在图像上使用 Skimage 自适应阈值并获得输出

我正在尝试在我的图像上使用 scikit-image 的自适应阈值。我从这里测试了他们的示例代码

该代码接收一个示例图像,对其进行阈值处理并使用 plt. 但是,我正在尝试检索阈值图像的 numpy 数组。当我尝试cv2.imwrite在变量上使用时binary_global,它不起作用。打印出来时binary_global-- 它实际上是一个由 False 和 True 值而不是数字组成的数组。我不确定 plt 如何使用它并生成图像。无论如何,我如何对图像进行阈值处理并使用 RGB 值检索新的阈值图像数组?

0 投票
1 回答
218 浏览

python - 编码 Otsu 方法的概念问题 - skimage.filters.thresholding.threshold_otsu

Otsu 的方法执行二值图像阈值处理,包括最大化通过在给定阈值处分割图像而创建的两个子类(前景/背景)之间的方差。在数学上,这表示为:

variance12 = weight1 * (mean1 - meanT)**2 + weight2 * (mean2 - meanT)**2

(meanT 是图像直方图的总体平均值)。但是,我无法理解这是如何在threshold_otsu函数中实现的,scikit-image其中将其写为:

variance12 = weight1 * weight2 * (mean1 - mean2)**2.

尽管此函数中权重和均值的定义略有不同,但我看不出这两个公式是如何相同的——即使它们给出了相同的答案。有人愿意澄清一下吗?

感谢您的帮助。

0 投票
0 回答
872 浏览

matlab - 如何自动找到 Canny 边缘检测的阈值和 sigma 值?

我想找到用于特定图像的阈值范围和 sigma 值。例如,如果有一组不同类型的图像,例如太亮和高对比度、太亮和低对比度、不亮和高对比度,我怎么知道我应该使用什么范围的阈值和 sigma 值?图像中的对象(例如透明瓶图片与花卉图片)如何影响这些值。

0 投票
2 回答
7773 浏览

python - 如何在不使用 OpenCV Python 中的 split 函数的情况下获取图像的单一颜色通道?

我想突出显示实时手势识别的手。我观察到使用 cv2.imsplit 函数,对于不同的颜色通道,手的图像会以不同的方式突出显示。但是这种拆分功能在时间方面是非常昂贵的。我无法使用 Numpy 索引执行相同的功能(如官方页面所示)

0 投票
3 回答
3427 浏览

python - 以相同方式的阈值图像

无论颜色变化如何,我都想对图像进行阈值处理。前任:

输入图像

我想在输入中对这两个字母设置阈值并在输出中显示。但是当我对图像进行阈值处理时,只显示一个字母。如何使用 Opencv 和 Python 做到这一点?

带有示例的附加信息:新示例示例的两个输入图像显示一个图像的字母颜色比背景颜色浅,而另一个图像的字母颜色较深。我想要的是对这两个图像进行阈值化以获得相同的输出。(白底黑字)

0 投票
3 回答
8289 浏览

c++ - 在 C++ 中使用 OpenCV 的自适应阈值

我正在尝试在图像中应用自适应阈值,但我不断收到此错误消息:

threshold.cpp:在成员函数 'cv::Mat filter::threshold(cv::Mat&, int&)' 中:threshold.cpp:20:25: 错误:变量或字段 'AdaptiveThreshold' 声明为 void void AdaptiveThreshold(img,image_final ,255,ADAPTIVE_THRESH_GAUSSIAN_C,CV_THRESH_B

0 投票
0 回答
989 浏览

python-3.x - 如何在 Python 中使用 OpenCV 去除 Otsu 二值化后的噪声?

我正在使用Raspberry Pi它的相机来执行一些图像处理算法。因此,我正在对捕获的流的连续帧执行背景减法,并尝试查找图像中是否存在任何对象,如果是,则打印出它的区域。该算法按预期工作正常,但存在问题。

使用的阈值函数会cv2.THRESH_OTSU在没有物体存在时产生颗粒状图像,即背景和前景图像相同。然而,当前景图像中存在对象时,这些噪声/颗粒会消失。这些如下 -

  1. 相同的背景图像和具有噪声的前景图像
  2. 不同的背景和前景图像,没有任何噪音

如您所见,如果图像几乎相同,则存在噪点,如果在帧中引入任何对象,则噪点消失。

我尝试了以下方法来消除噪音,但没有奏效。

  1. 尝试仅使用cv2.THRESH_BINARY/cv2.THRESH_BINARY_INV不使用 Otsu 二值化。

  2. 我尝试增加捕获图像的亮度/对比度/饱和度,以查看性能是否变化,但没有变化。

  3. 我试图增加/减少步骤之前的erosion/数量,但这也没有做出任何改变。dilationThresholding

这是我的代码 -

当背景和前景图像相同时,请帮我消除噪音。

谢谢你 !

0 投票
3 回答
7883 浏览

python - 在python中去噪二值图像

对于我的项目,我正在尝试在 python 中使用 openCV 对图像进行二值化。我使用来自 openCV 的自适应高斯阈值来转换具有以下结果的图像: 在此处输入图像描述

我想将二进制图像用于 OCR,但它太吵了。有什么方法可以从 python 中的二进制图像中去除噪声?我已经尝试过 openCV 中的 fastNlMeansDenoising,但没有任何区别。

PS也欢迎更好的二值化选项

0 投票
0 回答
248 浏览

android - 大津直方图自我实现

我尝试自己实现 Otsu。我已经从 java 和一些解释公式的站点中阅读了一些源代码并尝试实现它。我想分享这个以询问是否有人可以帮助我,或者至少告诉我可以做什么或改进什么。

我已经编写了获取宽度、高度以及背景和前景权重、均值、方差和类内方差的代码。

请注意,我还没有实现如何设置或找到确切的阈值,甚至使用类方差将图片更改为黑白(二值化)。如果你能帮助我,欢迎光临。我还看到一些具有treshhold = itreshhold = t但我看不到它们如何使图像变为黑白的 Java 代码。

这是我的代码:

大津.java

x[z]用于 x 轴,y[gray]用于 y 轴。我基于Lab Book上的图表

随时发送更多可以帮助我的样品。

输出:(我添加了 2 个函数和 3 个具有输出的输出。其他值只会返回几个黑点或只返回白色图像。)

在此处输入图像描述在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
327 浏览

opencv - 对灰度 QR 码图像进行二值化,同时保持其可读性

我们得到计算机生成的灰度格式的二维码。这些二维码是可读的。但是,我们需要将这些灰度 QR 码转换为特定终端应用程序的二进制格式。这就是问题出现的地方。当我们将二维码二值化时,我们会失去它的可读性(主要是通过 CamScanner 应用程序读取)。我们尝试了一些 OpenCV 中可用的基本二值化技术,例如在固定全局阈值下的简单二值化(尝试了多个阈值,如 60、80、127、150、190)和加权平均自适应阈值。它们都没有给出期望的可读性结果。