夏百花,杜晓婷,方 飞
(安徽三联学院,安徽 合肥230601)
图像边缘往往携带了大量人们感兴趣的信息,通过对这些边缘信息的处理,就可以作为图像的一种基本特征,被应用到后续图像处理中.因此,边缘检测在图像处理系统中占有十分重要的地位.而图像边缘存在于目标与背景、目标与目标、区域与区域(包括不同色彩)之间,它为人们描述或识别目标以及解释图像提供了一个重要的特征参数.
早在1965 年就有人提出了边缘检测方法,随后各种类型的检测方法就在此基础上不断提出和优化.经典的边缘检测方法是对原始灰度图像中以待处理像素为中心的某个小邻域来构造边缘检测因子.常用的检测方法共分为两种[1,2]:一种基于一阶微分的边缘检测算法,如Roberts 算子、Prewitt算子、Sobel 算子、Kirsch 算子等;另一种是基于二阶微分的边缘检测算法,如Laplacian 算子、LOG 算子、Canny 算子等.本文讨论的重点内容是对边缘检测方法中各种算法的优缺点和抗干扰能力的比较.
此算法也可称为“梯度检测法”,它利用的是某个邻域内相邻像素的灰度差进行边缘的判定.
Roberts 算子:是一种利用局部差分算子来寻找图像边缘的算子,它是在2*2 邻域上进行求对角导数,即把对角线方向上相邻两像素之差近似认为是梯度幅值.假设f(x,y)为原始图像,G(i,j)为处理后的图像,则两者之间的关系为:
式中,G(i,j)称之为Roberts 交叉算子.为简化计算,通常采用梯度函数进行近似,即:
用卷积模板,G(i,j)=|Gx|+|Gy|
从以上分析可以看出,该算子是利用局部差分法检测较为陡峭的图像边缘,但对于噪声比较敏感,经常会出现孤立点.于是在此基础上提出了Prewitt 算子.
Prewitt 算子:为了在检测边缘的同时减小噪声的影响,该算子从加大边缘检测算子出发,由2*2 扩大到3*3 邻域卷积来计算差分因子,其算子模板如图1 所示.
图1 Prewitt 算子
这两个方向模板一个用于检测水平边缘,而另一个检测垂直边缘.
在图像中的每个像素位置都采用这2 个算子模板计算梯度幅值和方向.由于该算子在求局部平均的基础上,与方向差分运算相结合,因此采用该算子不仅能有效检测出边缘点,且还能抑制噪声对图像的影响.
Sobel 算子:与Prewitt 算子相同的是,该算子也是在图像空间上利用两个方向模板与图像进行邻域卷积检测边缘的.不同的是,算子模板内的数字,即模板系数不为1,其目的在于将离待处理点越近的点赋予更高的权重,这样更能准确的定位边缘的所在.其算子模板如图2 所示.
图2 Sobel 算子
Kirsch 算子:该算子主要使用的是一组模板(8 个,且各方向间的夹角为45 度,权重不为1)对图像中的每个像素点进行卷积,选取卷积后的最大值作为边缘强度,而与之对应的方向作为边缘方向.该算子的8 个模板分别为.
图3 Kirsch 算子
上述四种算子均是基于计算一阶导数的边缘检测器,其基本思想在于:通过原图像中每个像素点与对应的算子模板进行卷积后可得出所对应的梯度和方向,然后选取合适的阈值T 对于该梯度图像二值化,若高于阈值T,则可确定该点即为所求的边缘点,进而得到一副边缘二值图像.
从数学角度来说,二阶微分[5]和一阶微分一样,同样对噪声较为敏感,其解决的方法为首先对图像进行平滑滤波,消除部分噪声后,再进行边缘检测.此方法是一种过零检测法,即求二阶微分之后的结果为零的像素点作为其边缘点,因此,得到的边缘点数较少,有利用后续的处理和识别工作.此算法也可称之为“线性边缘检测算子”.
Laplacian 算子:是对二维函数进行运算的二阶导数算子,其具有各同向性(梯度结果与坐标轴方向无关),因而计算量要小.其算子模板如图4所示.有时候若希望邻域中心点位置具有更大的权重,其算子模板也可如图5 所示.
图4 Laplacian 算子
图5 另一种Laplacian 算子
图6 LOG 算子
当该算子输出过零点时说明有边缘存在,其中忽略无意义的过零点(均匀零区),从原则上说,过零点的位置可通过线性插值算法可精确得到,由于受到噪声或由噪声引起的边缘两端的不对称性,结果可能不会很精确.总体来说,该算子存在两个缺点:一是由于其各同向性导致边缘方向信息的丢失;二是由于其本身是基于二阶微分的算子,双倍加强了图像中的噪声对检测结果的影响.
LOG 算子:该算子是基于Marr 生物视觉理论中提出的边缘检测方法,即首先对原始图像进行平滑滤波(高斯滤波),从而最大程度地抑制噪声,再对平滑后的图像求取边缘.简言之,该算子就是对原始图像进行滤波和微分的过程.
该算子的基本特征为:平滑滤波器采取高斯滤波器;边缘求取采用二阶导数(Laplacian 算子);边缘检测的判据是二阶导数过零交叉点,且为一阶导数的较大峰值.其算子模板如图6 所示.
Canny 算子:该算子功能虽比较强大,但实现起来较为复杂,它是一个具有滤波、增强和检测的多阶段优化算子.在对原始图像处理前,首先利用高斯滤波器来平滑图像以除去噪声,其次通过计算梯度幅值将邻域强度值变化较为显著的点进行突出以增强边缘,最后采用双阈值将边缘连接.
图7 一阶微分算子在无噪声和加入高斯白噪声后的检测结果
本文以一幅汽车图片为例,分别采用以上两种边缘检测方法,在无噪声和有高斯白噪声的环境下进行边缘检测并运用Matlab 进行实验仿真,检测结果如图7,8 所示.
通过图7 可以看出,采用一阶微分的边缘检测方法在图像没有任何噪声干扰的情况下,四种算子都能够较为准确的检测出图像的边缘,但在加入高斯白噪声后,四种算子对噪声都极为敏感,且检测出了大量的噪声点和伪边缘.总体来说,Roberts 受噪声影响最大,其他三种受噪声的影响比Roberts要小一些.Sobel 和Prewitt 两个算子检测出的边缘差不多,均优于Roberts 算子,且边缘较为连续,但是线条较粗,甚至出现了一些伪边缘.
图8 二阶微分算子在无噪声和加入高斯白噪声后的检测结果
通过图8 可以看出,Laplacian 算子对噪声也比较敏感且使噪声成分加强,丢失一些边缘的方向信息,因此通常很少使用该算子检测边缘,而是用来判断边缘像素是图像的明区还是暗区.LOG 算子有效克服了Laplacian 算子抗干扰能力较差的缺点,检测出的边缘更加连续和细小.由于二阶算子本身的缺陷,该算子对噪声也很敏感.Canny 算子具有较强的噪声抑制能力,同时也将一些高频边缘平滑掉,造成边缘的丢失,但由于采用了双阈值算法对边缘进行检测和连接,因此边缘的连续性更好.
本文通过对目前较为成熟的边缘检测方法进行阐述和分析,最后利用Matlab 软件进行仿真并对结果进行比较,得出了各种边缘检测方法检测效果的优缺点.在实际生活中,任何图像都不可避免的受到各种干扰噪声的影响,因此,一个好的边缘检测方法既能够准确且清晰地检测出边缘点的位置,又能够抑制无关的细节和噪声.如何能够根据实际要求,设计出更加完美的边缘检测方法或者对现有方法进行改进是目前图像处理中的一个迫切需要解决的问题之一.
[1] 李安安.几种图像边缘检测算法的比较与展望[J].大众科技,2009,(12):46-47.
[2] 卢洋,张旭秀.图像边缘检测算法的对比分析与研究[J].太原科技,2009,(3):17-18.
[3] 马艳,张治辉.几种边缘检测算子的比较[J].工矿自动化.2004,(1):54-56.
[4] 雷丽珍.数字图像边缘检测方法的探讨[J].测绘通报,2006,(3):40-42.
[5] 熊秋菊,杨慕生.图像处理中边缘检测算法的对比研究[J].机械工程与自动化.2009,(2):21-23.