据我所知,您通过水平和垂直矩阵过滤每个像素,该矩阵提供水平和垂直渐变。渐变表示沿其各自轴的颜色差异。我明白了我不明白的是我们如何通过平方渐变,将它们加在一起,然后取平方根来计算最终值。它必须以某种方式有意义,但我不太明白。
答案 0 :(得分:2)
X和Y渐变一起组成一个2D矢量(G_x,G_y)
。您可以将此向量视为基于原点的箭头,该箭头指示该点处图像值的导数的方向和大小。 (更准确地说,Sobol滤波器使用局部像素值来计算导数的有限差分近似值。
向量具有方向和幅度;如果您只对此向量的大小感兴趣,则需要计算其长度。毕达哥拉斯定理就是你如何计算这个长度:G = sqrt(G_x^2 + G_y^2)
。
您想要使用矢量长度的原因是它平滑地独立于边缘的方向。
如果您尝试平均或以其他方式添加绝对差值,则边缘检测器对对角线边缘比对垂直或水平边缘更敏感;或者,如果您尝试获取两个向量元素的最大绝对值,则反之亦然。此外,两种替代方案都不是输入向量的平滑函数,这将导致函数不平滑的向量方向上的“扭结”。
如果您正在编写自己的过滤器,很容易尝试这一点。缺乏平滑度和方向独立性将在边缘检测滤波器的结果中显示为难看的伪像。