边缘检测技术

时间:2010-12-19 14:59:32

标签: computer-vision edge-detection

有人知道边缘检测算法中Prewitt,Sobel和Laplacian算子之间的差异吗?

有些人比其他人好吗?

在不同情况下使用不同的运算符吗?

1 个答案:

答案 0 :(得分:18)

laplace运算符是二阶导数运算符,另外两个是一阶导数运算符,因此它们在不同情况下使用。当拉普拉斯算子测量斜率的变化时,Sobel / Prewitt测量斜率。

示例:

如果您的信号具有恒定斜率(渐变):

Gradient signal: 1 2 3 4 5 6 7 8 9

一阶导数滤波器(Sobel / Prewitt)将测量斜率,因此滤波器响应为

Sobel result:      2 2 2 2 2 2 2 

对于此信号,lapace滤波器的结果为0,因为斜率是常数。

示例2:如果您有边缘信号:

Edge:            0 0 0 0 1 1 1 1 

索贝尔滤波器结果有一个峰值;峰的符号取决于边缘的方向:

Sobel result:    0 0 0 1 1 0 0 0

拉普拉斯滤波器产生两个峰值;边缘的位置对应于拉普拉斯滤波器结果的零交叉:

Laplace result:  0 0 0 1 -1 0 0 0

因此,如果你想知道方向和边缘,你可以使用一阶导数滤波器。此外,拉普拉斯滤波器比Sobel或Prewitt对噪声更敏感。

另一方面,Sobel和Prewitt过滤器非常相似,用于相同的目的。一阶导数滤波器之间的重要区别是

  • 对噪音的敏感度
  • 各向异性:理想情况下,X / Y的滤波器结果应与sinαcosα成比例,其中α是梯度的角度,总和每个角度的两个方块应该相同。
  • 角落的行为

可以使用人工测试图像(例如Jähne test patterns中的着名"Image Processing" by Bern Jähne)来测量这些属性。不幸的是,我在那本书中没有找到关于Prewitt算子的任何信息,所以你必须自己做实验。

最后,这些属性之间总是需要权衡,哪些属性更重要取决于应用程序。