Answers:
边缘检测的可能性很多,但是您提到的3个示例恰好属于3个不同的类别。
这近似于一阶导数。在渐变位置处给出极值,0表示不存在渐变。在1D中,它=
Sobel还有其他替代方案,具有+/-相同的特性。在Wikipedia 上的Roberts Cross页面上,您可以找到其中一些的比较。
这近似于二阶导数。在梯度位置给出0,在不存在梯度的情况下给出0。它给出了(更长)渐变开始或停止的极值。
可以从视觉上最好地看到这2种对不同类型的边缘的影响:
这不是一个简单的运算符,而是一个多步骤的方法,该方法使用Sobel作为步骤之一。在Sobel和Laplace为您提供灰度/浮点结果(您需要自己设定阈值)的情况下,Canny算法将智能阈值作为其步骤之一,因此您只得到二进制的yes / no结果。另外,在平滑边缘上,您可能会在渐变中间的某处仅找到1条线。
虽然Sobel和Laplacian只是过滤器,但Canny在两个方面比这更进一步。
首先,它会进行非最大抑制,从而消除了图像中各种物体和颜色渐变所产生的噪声。其次,它实际上包括一个允许您区分不同边缘方向并填充直线缺失点的步骤。
换句话说,Canny边缘检测器与Sobel和Laplacian处于完全不同的类别。它更聪明,因为它包括一堆后处理,而Sobel和Laplacian只是高通滤波器输出,然后是线性二进制阈值。
Canny生成二进制图像,并且取决于外部给定的阈值(取决于图像/应用程序)。
基于卷积的滤波器会产生“边缘强度”图像。如果边缘的重量或强度很重要(例如在加权霍夫变换中),这将很有用。