使用 Laplacian of Gaussian 滤波器进行斑点检测

信息处理 图像处理 局部特征
2022-02-11 14:42:02

我正在feature-detectors从这个讲义中学习,我不太了解Normalized Laplacian of Gaussian过滤后的图像。

这是原始图像: 在此处输入图像描述

这是讲义中呈现的输出,由高斯的归一化拉普拉斯算子过滤,σ=2.502在此处输入图像描述

这是我的,scipy.ndimage.filters.gaussian_laplace一起使用: σ=2.502在此处输入图像描述

好吧,我的输出图像与讲义中的图像完全不同。讲座输出的背景是全黑的,即使我做了一些阈值处理,我的输出仍然与讲座的不同。

此外,我注意到在讲座的输出中边缘几乎消失了,在每个检测到的斑点周围,似乎有一个环围绕着它,如下所示: 在此处输入图像描述

这是为什么?我用Laplacian of Gaussian错了吗?

1个回答

由于缩放,您的图像很可能看起来与讲座中的图像不同。请注意,使用拉普拉斯滤波器的卷积结果将具有正值和负值。结果图像的外观取决于数组的数据类型,以及值的缩放范围。例如,如果您将过滤后的图像存储在 uint8 中,而不自己进行任何缩放,则负值将被截断为 0。

通常,当图像具有负值时,将对其进行缩放,使 0 对应于中性灰色,最小值对应于黑色,最大值对应于白色。看起来这就是您的代码中正在发生的事情。

另一方面,在这种特殊情况下,您可能对拉普拉斯算子的最大值和最小值都感兴趣(明亮的暗点和暗点的亮点),所以您不妨只取过滤后图像的绝对值。然后你不会有任何负值,这使得缩放更容易。

至于你关于边缘的问题,这正是应该发生的事情。边缘处的拉普拉斯算子值应接近于零。通过找到高斯的拉普拉斯算子的零交叉点,此属性用于非常精确的边缘定位