1

我了解您通过水平和垂直矩阵过滤每个像素,该矩阵提供水平和垂直渐变。渐变表示沿其各自轴的颜色差异。我明白了。我不明白的是,我们的最终值是如何通过对梯度求平方、将它们加在一起、然后取其平方根来计算的。它一定是有道理的,但我不太明白。

在此处输入图像描述

4

1 回答 1

2

X 和 Y 梯度共同构成一个 2D 向量,(G_x,G_y)。你可以把这个向量想象成一个以原点为基础的箭头,它表示图像值在该点的导数的方向和大小。(更准确地说,Sobol 滤波器使用局部像素值来计算导数的有限差分近似)。

向量既有方向又有大小;如果你只对这个向量的大小感兴趣,你需要计算它的长度。毕达哥拉斯定理是你如何计算这个长度: G = sqrt(G_x^2 + G_y^2).


您要使用矢量长度的原因是它平滑地独立于边缘的方向。

如果您尝试平均或以其他方式添加绝对差异,您的边缘检测器将对对角边缘比对垂直或水平边缘更敏感;或者,如果您尝试取两个向量元素的最大绝对值,则相反。此外,这两种选择都不是输入向量的平滑函数,这将导致函数不平滑的向量方向上的“扭结”。

如果您正在编写自己的过滤器,则很容易尝试一下。在边缘检测过滤器的结果中,缺乏平滑度和方向无关性将显示为丑陋的伪影。

于 2013-11-04T23:28:21.347 回答