选择边缘检测算法时应考虑哪些因素?


33

我了解了许多边缘检测算法,包括Sobel,Laplacian和Canny方法之类的算法。在我看来,最受欢迎的边缘检测器是Canny边缘检测器,但是在某些情况下这不是使用的最佳算法吗?如何确定要使用哪种算法?谢谢!


7
您正在检测什么?
endlith 2011年

Answers:


29

边缘检测的可能性很多,但是您提到的3个示例恰好属于3个不同的类别。

索贝尔

这近似于一阶导数。在渐变位置处给出极值,0表示不存在渐变。在1D中,它= [-1个01个]

  • 平滑边缘=>局部最小值或最大值,取决于上升或下降的信号。
  • 该行本身有1个像素行=> 0,其旁边是局部极值(具有不同符号)。在图1D中,是= [1个-21个]

Sobel还有其他替代方案,具有+/-相同的特性。在Wikipedia 上的Roberts Cross页面上,您可以找到其中一些的比较。

拉普拉斯

这近似于二阶导数。在梯度位置给出0,在不存在梯度的情况下给出0。它给出了(更长)渐变开始或停止的极值。

  • 沿着边缘的平滑边缘=> 0,在边缘的起点/终点处的局部极值。
  • 1个像素行=>该行处有一个“双”极值,旁边是带有不同符号的“正常”极值

可以从视觉上最好地看到这2种对不同类型的边缘的影响:

索贝尔与拉普拉斯的比较

坎尼

这不是一个简单的运算符,而是一个多步骤的方法,该方法使用Sobel作为步骤之一。在Sobel和Laplace为您提供灰度/浮点结果(您需要自己设定阈值)的情况下,Canny算法将智能阈值作为其步骤之一,因此您只得到二进制的yes / no结果。另外,在平滑边缘上,您可能会在渐变中间的某处仅找到1条线。


18

虽然Sobel和Laplacian只是过滤器,但Canny在两个方面比这更进一步。

首先,它会进行非最大抑制,从而消除了图像中各种物体和颜色渐变所产生的噪声。其次,它实际上包括一个允许您区分不同边缘方向并填充直线缺失点的步骤。

换句话说,Canny边缘检测器与Sobel和Laplacian处于完全不同的类别。它更聪明,因为它包括一堆后处理,而Sobel和Laplacian只是高通滤波器输出,然后是线性二进制阈值。


在这方面是否有canny的1-D版本?这将是2-D版本的直接应用吗?
Spacey 2012年

9

在我看来,检测边缘时最重要的两个决定通常是:

  1. 我是否可以对对象进行分段,然后使用形态学运算符查找二进制(分段)图像的边缘?对于嘈杂的数据,这往往更加健壮。

  2. 我应该使用哪种保留边缘的平滑滤波器来减少图像噪声?边缘滤波器基于差分,这会受到噪声数据的影响。最简单的选择是中值滤波器,但是各向异性扩散或非局部均值滤波器将以具有更多要调整的参数为代价提供更好的性能。

对于边缘检测本身,我不能有充分的理由不使用Canny。


7

SUSAN方法

边缘和角落检测的另一种方法是SUSAN方法

在这种方法中,使用积分近似方法而不是微分近似。这具有不仅能够检测边缘,而且能够检测“二维特征”(即角)的优点。

积分近似方法的另一个优点是噪声趋于对结果产生较小的影响。


6

Canny生成二进制图像,并且取决于外部给定的阈值(取决于图像/应用程序)。
基于卷积的滤波器会产生“边缘强度”图像。如果边缘的重量或强度很重要(例如在加权霍夫变换中),这将很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.