image - 检测噪声图像中的弱 Blob

标签 image opencv image-processing computer-vision feature-detection

我有一张图片可能包含一些 Blob 。 Blob 大小不限,有些会产生非常强的信号,而另一些则非常微弱。在这个问题中,我将重点关注弱点,因为它们很难检测到。

这是一个有 4 个 blob 的例子。

enter image description here

(480, 180) 处的 Blob 是最难检测的 Blob 。通过运行高斯滤波器然后进行开操作会稍微增加对比度,但不会增加很多:

enter image description here

这个问题的棘手部分是背景中的自然噪声会导致(许多)像素具有比我想要检测的 Blob 更强的信号。 Blob 之所以成为 Blob ,是因为它要么是强度平均增加的大区域(要么是强度增加非常大的小区域(此处不相关))。

如何包含此空间信息以检测我的 Blob ?

很明显,我首先需要使用高斯和/或中值滤波器对图像进行滤波,以便将每个像素的附近区域合并到每个单个像素值中。然而,再多的模糊也不足以轻松地将 Blob 从背景中分割出来。

编辑:关于阈值: 阈值非常诱人,但本身也存在问题。我没有“纯背景”区域, Blob 越大,信号越弱 - 但仍可检测到。

我也不应该认为典型的图像根本没有任何 Blob ,而只是纯背景。

最佳答案

您可以尝试 h-minima 变换。它删除了 h 高度以下的任何最小值,并将所有其他通过的高度增加 h。它被定义为侵 eclipse 的形态重建增加了高度 h。这是 h = 35 的结果:

after h-minima transform

它应该更容易操作。它还需要像分段这样的输入。不同之处在于它更健壮。相对较大地低估 h 只会使您更接近原始问题图像,而不是完全失败。

您可以尝试表征背景噪声以获得估计值,假设无论您的应用程序是什么,都会有相对恒定的噪声量。

请注意,底部两个大 Blob 之间有一个蓝点。甚至还需要进一步处理。您可以尝试继续形态学。我发现在像这样的一些“墨迹”分割案例中起作用的东西是遍历每个连接的组件,计算它们的凸包,最后计算图像中所有凸包的并集。它通常使进一步的形态学操作变得更加容易,并为标签提供了一个很好的估计。

关于image - 检测噪声图像中的弱 Blob ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42366458/

相关文章:

opencv - OpenCV如何使用

image-processing - 查找两个图像之间的差异,但*不是*像素到像素

c++ - 将线近似为平面图轮廓

java - 如何将图像背景更改为白色?

php - 在 UserCake 上添加新字段

javascript - 如何遍历图像数组并将它们呈现在 React 的组件中?

javascript - jQuery 将 div 高度与动态图像高度匹配

python - 根据像素颜色的函数更改像素颜色

python - 读取多个图像并将其保存在文件夹中 : Python

opencv - 您如何将对象检测器应用于给定视频的每一帧?