图像边缘检测的工作原理

2020-08-29 08:40:28

本周的节目-图像中的边缘检测。更具体地说,我们将仔细研究Sobel边缘检测算法。

本周的节目-图像中的边缘检测。更具体地说,我们将仔细研究Sobel边缘检测算法。

Sobel算法通过测量图像中变化的像素强度来工作。当然,当图像是标准化的灰度图像时,这是最容易实现的。

有几种算法可以生成灰度图像-最简单的算法是像素中R、G和B值的平均值。

然后,我们将这些新的强度值重新分配给原始像素的R、G和B字段。所有R、G和B值都相同的任何情况都会给您一个灰色阴影(请记住,#00000是黑色,#FFFFFF是白色)。

但是,虽然这通常会产生很好的效果,但下面的灰度函数使用的加权平均值更符合人眼如何解释不同的颜色以及它们之间的过渡。

不管我们使用哪个公式,我们现在都有一个灰度图像,我们也可以应用Sobel边缘检测算法。

Sobel算法是由斯坦福人工智能实验室(SAIL)的欧文·索贝尔(Irwin Sobel)和加里·费尔德曼(Gary Feldman)于1968年开发的。

最简单地说,他们的算法是通过对图像中的所有像素运行3×3矩阵运算(称为内核)来实现的。在每次迭代中,我们测量落入这个3×3核的像素的梯度变化。像素强度的变化越大,边缘就越明显。

卷积仅仅是在翻转内核的行和列之后将两个矩阵(内核和图像矩阵)的相应索引相乘和相加的过程。

左边的内核将其行和列翻转,然后与图像矩阵中的相应索引相乘。

该算法的标准实现分别对x轴和y轴使用以下3×3矩阵。

现在,我们已经完成了所有的预处理,并且手头有了卷积矩阵。

我们可以遍历原始图像中的所有像素,并在该方法的每一步应用图像卷积核Gx和Gy。此卷积运算将为每个内核返回单个整数。

下面是将GX内核应用于特定像素(红色)的示例:

倒数第二步是创建与原始图像尺寸相同的新图像,并为像素数据存储两个梯度值的大小:

推荐的下一步是通过将所有像素值除以观察到的最大梯度大小来归一化新图像中的所有数据。

现在,您有了一个新的灰度图像,其像素强度反映了它们与原始图像中边缘的距离。自然,像素的渐变值越高,生成的图像中的边缘将显示得越亮。