在噪声图像中检测弱小的斑点

3

我有一张图片,可能包含一些斑点。这些斑点可以是任何大小,有些会产生非常强的信号,而其他的则非常微弱。在这个问题中,我将专注于那些微弱的斑点,因为它们是难以检测的。

这里有一个包含4个斑点的例子。

enter image description here

位于(480, 180)的斑点是最难检测的。通过运行高斯滤波器,然后进行开操作可以稍微增加对比度,但效果不太明显:

enter image description here

这个问题的棘手之处在于背景中的自然噪声会导致许多像素具有比我想要检测的斑点更强的信号。使斑点成为斑点的原因是它要么是一个具有平均增加强度的大区域(或者是一个非常强的增加强度的小区域(这里不相关))。
如何包含此空间信息以便检测我的斑点?
很明显,我首先需要用高斯和/或中值滤波器过滤图像,以将每个像素的附近区域并入每个单个像素值中。然而,无论模糊程度如何,都不足以使从背景中分割出斑点变得容易。
编辑:关于阈值:阈值处理非常诱人,但本身也存在问题。我没有“纯背景”区域,而且斑点越大,信号就越弱 - 仍然可以被检测到。
我还应该指出,典型的图像可能根本没有任何斑点,只是纯背景。

尝试阈值处理,然后标记连接组件,最后进行形态学开运算以消除较小的组件(噪声)。 - Malcolm McLean
你是只需要对斑点进行正面识别和定位,还是也需要精确的尺寸测量? - Sneaky Polar Bear
@SneakyPolarBear 只是正面身份验证和(大约)位置。 - Markus
如果您正在尝试识别其他情况(例如,blob 值低于背景或单个像素高强度峰),如果您也发布这些情况的图像,那对我们非常有帮助... - Sneaky Polar Bear
你最后解决了这个问题/决定采取什么策略了吗? - Sneaky Polar Bear
显示剩余2条评论
3个回答

1

你可以尝试使用 h-minima 变换。它会删除高度低于h的所有最小值,并将所有其他波谷的高度增加h。它被定义为通过高度h增加腐蚀操作的形态学重建。这里是h = 35时的结果:

after h-minima transform

它应该更容易操作。它还需要像分割一样的输入。不同之处在于这更加稳健。低估h会使您更接近原始问题图像,而不是完全失败。
您可以尝试表征背景噪声以获得估计值,假设您的应用程序会有相对恒定的噪声数量。
请注意两个底部大斑点之间的一个蓝色点。需要进一步处理。您可以尝试继续进行形态学处理。我发现在某些类似这样的“墨水斑点”分割情况下,通过运行每个连接组件、计算它们的凸包并最终计算图像中所有凸包的并集,通常会使进一步的形态学操作更加容易,并为标签提供良好的估计值。

谢谢,看起来很有意思。我会试着操作一下。 - Markus

0

根据我的经验,如果你能看到高斯滤波器的大小(那些小圆圈),那么你的滤波器宽度就太小了。虽然非常昂贵,但尝试增加高斯半径,直到其半径与您要查找的最小对象的半径相匹配,这应该会持续改善您的结果。

在使用重型高斯滤波器之后,我会在整个图像上进行峰值搜索。剪切任何峰值过低或与最近的谷/背景对比度过小的部分。

不要害怕将其拆分为两个独立的处理流程:一个用于低对比度散布的斑点的过滤和提取,另一个完全不同的流程用于隔离高对比度的尖峰(更容易找到)。话虽如此,高对比度的尖峰“应该”即使在相当激进的滤波器下也能存活。还要记住的另一件事是迭代减法,如果有一些斑点可以很容易地从一开始就被找到,请将它们从图像中取出,然后进行拉伸(但要小心,因为过度拉伸可能会使图像成为您想要的任何形状)。


首先,大幅增加高斯滤波确实可以改善情况。但是,当我没有真正的“最小对象”时,我该如何处理呢?我的最小对象非常依赖于对比度。如果对比度很大,我可以检测到比一个像素更小的对象(一个或两个像素会非常明亮),而如果对比度很差(就像在这种情况下),显然需要更大的对象才能看到。 - Markus
好的,我必须假设你的小物体(如果可检测到)具有非常高的对比度(否则它们将与背景噪声无法区分)。 - Sneaky Polar Bear
尽管将高斯滤波器设置为目标大小很好,但归根结底,它只需要足够大来消除噪声,因此可以对最坏情况下的噪声进行一些分析,并根据此设置高斯滤波器。高斯滤波器在超过其大小之前不应使对象更难找到。 - Sneaky Polar Bear
你可以采用迭代的方法。首先进行第一次遍历,抓取任何你能看到的对象(超级明亮的高对比度)。然后应用越来越大的高斯滤波器,直到你确定只剩下噪声为止。 - Sneaky Polar Bear

0

也许可以尝试使用阈值和边缘检测的迭代方法:

首先使用非常高的阈值(比如信号的90%),然后在阈值图像上运行Canny滤波器(或者您喜欢的任何二进制边缘滤波器)。计算并存储生成的像素数(边缘像素)。

接着,重复执行此步骤,直到阈值降低到一定程度时,您将看到检测到的边缘数量急剧增加(即您酷炫的纹理背景)。然后稍微提高阈值,并在生成的边缘图像上运行闭合和洪水填充。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接