2010-12-19 161 views
10

有谁知道Prewitt,Sobel和Laplacian算子在边缘检测算法中有什么区别吗?边缘检测技术

比其他人好些吗?

在不同情况下使用不同的操作符?

回答

16

拉普拉斯算子是二阶导数算子,另外两个是一阶导数算子,所以它们用于不同的情况。 Sobel/Prewitt测量斜率,而拉普拉斯算子测量斜率的变化。

实例:

如果你有恒定斜率的信号(梯度):

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

一个第一导数滤波器(索贝尔/ 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应该正比于罪α余弦α,其中α是角度的梯度,并且两个方格的总和应该对于每个角度都是相同的。
  • 行为在角部

这些性质可与人工测试图像(如著名的Jähne test patterns,在"Image Processing" by Bern Jähne实测值)进行测定。不幸的是,我没有在该书中找到关于Prewitt操作员的任何信息,所以你必须做自己的实验。

最后,这些属性之间总是有一个折衷,它们中哪一个更重要取决于应用程序。

+0

谢谢Nikie,这是一个很好的回应,正是我所期待的。接受的答案:)。 – ale 2010-12-19 22:27:52

+0

英特尔的Jähne测试模式显然已经改变了位置(在上面的答案中是死链接),我在这里找到它们:https://software.intel.com/zh-cn/node/503777 – winne2 2015-11-03 15:06:46

+1

@ winne2:谢谢,我已经更新了链接 – Niki 2015-11-03 16:15:20