【发布时间】:2010-12-19 14:59:31
【问题描述】:
有谁知道边缘检测算法中 Prewitt、Sobel 和 Laplacian 算子的区别?
有些人比其他人更好吗?
在不同的情况下使用不同的运算符吗?
【问题讨论】:
标签: computer-vision edge-detection
有谁知道边缘检测算法中 Prewitt、Sobel 和 Laplacian 算子的区别?
有些人比其他人更好吗?
在不同的情况下使用不同的运算符吗?
【问题讨论】:
标签: computer-vision edge-detection
拉普拉斯算子是二阶导数算子,另外两个是一阶导数算子,所以用在不同的场合。 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 过滤器非常相似,并且用于相同的目的。一阶导数滤波器之间的重要区别是
这些属性可以通过人工测试图像(如著名的Jähne test patterns,在"Image Processing" by Bern Jähne 中找到)来测量。不幸的是,我在那本书中没有找到任何关于 Prewitt 算子的信息,所以你必须自己做实验。
最终,这些属性之间总是需要权衡取舍,其中哪个更重要取决于应用程序。
【讨论】: