定义
边缘检测是图像处理和图像分割中的基本问题,旨在识别数字图像中图像亮度急剧变化的点。这些图像亮度急剧变化的点通常组织成一组称为边缘的曲线段[1] 。
图像边缘可以理解为图像灰度发生空间突变的像素的集合。如图1所示,图像边缘有不同的类型,但总体而言图像边缘有两个基本要素:方向和幅度。沿着边缘走向的像素值变化比较平缓;而沿着垂直于边缘的走向,像素值则变化得比较大。因此,根据这一变化特点,通常会采用一阶和二阶导数来描述和检测边缘。而在数字图像中,导数可以通过微分算子计算来实现[2] 。
图1 图像边缘类型及导数曲线规律示例[2]
图 2 Roberts算子、Prewitt算子和Sobel算子[3]
我们以Sobel为例,其中Sx,Sy 分别表示对于X轴、Y轴的边缘检测算子,从 Sx算子结构可以很清楚发现,这个滤波器是计算当前像素点右边与左边8连通像素灰度值的差值。而整个过程需要沿着X轴、Y轴进行两次滤波操作,得到的结果进行平方求和加根号的操作得出当前像素点的图像梯度,我们来通过一张图理解一下这个过程:
图 2 梯度计算可视化[3]
图中(a)为原始的灰度图像,(b)和(c)为使用图3-3中Sobel算子的 Sx,Sy两种形式分别对原始图像进行的滤波结果,即表示为分别沿X、Y轴的梯度图,最后将两个图融合在一起则得到了我们所需的梯度图像(d)。此时硬币的边缘已经高亮出来,随后可以使用阈值处理即可得到边缘的二值图像。
参考文献
[1] https://en.wikipedia.org/wiki/Edge_detection#See_also
[2] https://blog.csdn.net/u010189457/article/details/78391288
[3] https://zhuanlan.zhihu.com/p/59640437
参阅:图像分割、阈值处理