12

有谁知道边缘检测算法中 Prewitt、Sobel 和 Laplacian 算子之间的区别?

有些比其他更好吗?

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

4

1 回答 1

24

拉普拉斯算子是二阶导数算子,另外两个是一阶导数算子,所以用在不同的场合。Sobel/Prewitt 测量斜率,而 Laplacian 测量斜率的变化。

例子:

如果您有一个具有恒定斜率(梯度)的信号:

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 滤波结果有一个峰值;峰值的符号取决于边缘的方向:

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 测试模式,在Bern Jähne 的“图像处理”中找到)。不幸的是,我在那本书中没有找到任何关于 Prewitt 算子的信息,所以你必须自己做实验。

归根结底,这些属性之间总是需要权衡取舍,其中哪个更重要取决于应用程序。

于 2010-12-19T19:22:48.480 回答