ale*_*ale 10 computer-vision edge-detection
有谁知道边缘检测算法中Prewitt,Sobel和Laplacian算子之间的差异是什么?
有些人比其他人好吗?
在不同情况下使用不同的运算符吗?
Nik*_*iki 18
laplace运算符是二阶导数运算符,另外两个是一阶导数运算符,因此它们用于不同的情况.当拉普拉斯算子测量斜率的变化时,Sobel/Prewitt测量斜率.
例子:
如果您有一个具有恒定斜率(梯度)的信号:
Gradient signal: 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
一阶导数滤波器(Sobel/Prewitt)将测量斜率,因此滤波器响应为
Sobel result: 2 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
对于该信号,lapace滤波器的结果为0,因为斜率是恒定的.
示例2:如果您有边缘信号:
Edge: 0 0 0 0 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
索贝尔滤波器结果有一个峰值; 峰的符号取决于边缘的方向:
Sobel result: 0 0 0 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
拉普拉斯过滤器产生两个峰值; 边缘的位置对应于拉普拉斯滤波器结果的过零点:
Laplace result: 0 0 0 1 -1 0 0 0
Run Code Online (Sandbox Code Playgroud)
因此,如果您想知道方向和边缘,您可以使用一阶导数滤波器.此外,拉普拉斯滤波器比Sobel或Prewitt对噪声更敏感.
另一方面,Sobel和Prewitt滤波器非常相似,并且用于相同的目的.一阶导数滤波器之间的重要区别是
这些属性可以通过人工测试图像进行测量(如着名的Jähne测试图案,见BernJähne的"图像处理").不幸的是,我在那本书中没有找到关于Prewitt算子的任何信息,所以你必须自己做实验.
最后,总是在这些属性之间进行权衡,哪些属性更重要取决于应用程序.