有人知道边缘检测算法中Prewitt、Sobel和Laplacian算子之间的区别吗?
有些算子比其他算子更好吗?
不同的情况下是否使用不同的算子?
有人知道边缘检测算法中Prewitt、Sobel和Laplacian算子之间的区别吗?
有些算子比其他算子更好吗?
不同的情况下是否使用不同的算子?
例如:
如果您有一个具有恒定斜率(梯度)的信号:
Gradient signal: 1 2 3 4 5 6 7 8 9
一阶导数滤波器(Sobel/Prewitt)将测量斜率,因此滤波器响应为
Sobel result: 2 2 2 2 2 2 2
拉普拉斯滤波器对于这个信号的结果为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测试模式,在Bern Jähne的“图像处理”中找到)来测量这些属性。不幸的是,在那本书中我没有找到任何关于Prewitt算子的内容,因此您需要进行自己的实验。
最终,这些属性之间总是存在权衡,哪一个更重要取决于应用程序。