如何缩放高斯以进行边缘检测

信息处理 边缘检测 高斯差
2022-02-02 18:17:04

假设我有一个图像,我想使用 DOG 进行边缘检测。我可以在这个答案中看到他正在使用:m×n

gaussian1 = fspecial('Gaussian', 21, 15);
gaussian2 = fspecial('Gaussian', 21, 20);

我正在使用此图像作为参考,并尝试将大小从 1 移动到 30。我无法理解哪个输出更好。我认为我收到的最锋利的边缘是 for hsize=6,但我怎么知道?

在遵循评论中的建议并阅读wiki entery关于该主题的摘要后,我仍然感到困惑。据我了解,带通参数取决于图像,并且没有有效的自动方法可以从图像中导出滤波器的 sigma 和大小参数。这是否意味着我必须手动调整任何新图像的滤波器大小?

  • 有自动的方法吗?(我确信有,因为这种算法在市场上独立工作)
  • 假设我想为不同的过滤器生成响应作为实验:
    • 我应该经历哪些迭代?
    • 当我查看结果图像时,我应该寻找什么来说明它是所需的响应?
1个回答

这是否意味着我必须手动调整任何新图像的过滤器大小?

是的!您需要知道要检测的边缘类型。而这种“边缘”是变相的“边缘宽度(以像素为单位)”。因此,如果您想在任何缩放/分辨率的图片中检测到您最喜欢的边缘类型,您需要更多的“智能”而不仅仅是一只狗。

有自动的方法吗?

很多!例如,您可以简单地为您的 DOG 尝试一些参数化,然后自动选择参数化,以生成最适合您的信号模型的边缘图像 - 例如,如果您想在图像中找到方形框,寻找“最干净的“ 直线。

同样,这一切都取决于您想要检测的内容,以及您如何对信号进行建模。没有“普遍”最好的边缘检测器。(否则,这将是每个人唯一使用的,对吧?)