用于检测和平滑水平和垂直边缘的两个算子如下所示:
[-1 0 1]
[-2 0 2]
[-1 0 1]
和
[-1 -2 -1]
[ 0 0 0]
[ 1 2 1]
但是经过多次谷歌搜索,我仍然不知道这些运算符来自哪里。如果有人能告诉我它们是如何派生的,我将不胜感激。
用于检测和平滑水平和垂直边缘的两个算子如下所示:
[-1 0 1]
[-2 0 2]
[-1 0 1]
和
[-1 -2 -1]
[ 0 0 0]
[ 1 2 1]
但是经过多次谷歌搜索,我仍然不知道这些运算符来自哪里。如果有人能告诉我它们是如何派生的,我将不胜感激。
该公式是很久以前由 Irwin Sobel 提出的。我想到了 1974 年。这里有一个关于这个主题的精彩页面。
卷积要检测梯度的像素周围的 9 个像素的主要优点是,这个简单的算子非常快,可以通过移位和添加低成本硬件来完成。
它们不是世界上最好的边缘检测器——谷歌 Canny 边缘检测器有更好的用途,但它们速度快并且适用于许多简单的应用程序。
因此,空间滤波器,如 Sobel 核,通过在图像上“滑动”核来应用(这称为卷积)。如果我们采用这个内核:
[-1 0 1]
[-2 0 2]
[-1 0 1]
应用 Sobel 算子后,每个结果像素得到一个:
这是因为在离散的 2D 卷积中,结果是每个核值的总和乘以相应的图像像素。因此,垂直边缘会导致该值具有较大的负值或正值,具体取决于边缘梯度的方向。如果我们想将边缘显示为白色并且不关心边缘方向,我们可以将绝对值和缩放到区间 [0, 1]。
这对其他内核的工作方式相同,除了它会找到水平边缘。