王智文
(广西工学院 计算机工程系,柳州 545006)
边缘检测是图像处理和计算机视觉中的基本问题和重要环节,尤其是特征提取中的一个重要研究领域。图像边缘检测可以大幅度地减少数据量,并且可以剔除与图像处理不相关的信息,保留图像重要的结构属性。然而,由于实际景物图像的边缘往往是各种类型的边缘及它们模糊化后结果的组合,且实际图像信号存在着噪声[1]。噪声和边缘都属于高频信号,很难用频带做简单取舍。所以,边缘检测又是图像处理中的一个难题[2]。目前常用的边缘检测算法没有哪一种具有绝对的优越性。因此,对各种边缘检测算法的性能进行比较分析,根据图像边缘的特征和噪声的特征以及噪声在图像中的分布情况选择比较合理的边缘检测算法来进行边缘检测显得尤为重要。本文具体比较研究了7种常用的边缘检测算子的特点和性能。
边缘是指图像中周围像素灰度有阶跃变化或屋顶变化的那些像素的集合[3]。在图像处理过程中,边缘能大大地减少要处理的图像信息而又可以保留图像中物体的形状信息。边缘检测的目的是为了标识数字图像中亮度变化明显的点。边缘检测可以划分为两类:基于查找和基于零穿越的边缘检测。基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。基于零穿越的方法通常采用Laplacian过零点或者非线性差分表示的过零点来进行边缘检测[4]。对常用的七种边缘检测算法简介如下[5]:
Zero-Cross用两个不同参数的高斯函数的差来近似地对图像作卷积操作,通过寻找图像的二阶导数零穿越来寻找图像边界,从而检测出图像的边缘点。
Roberts算子采用对角线方向相邻两像素之差近似的梯度幅值来检测边缘。算子定位比较精确,但由于不包括平滑,所以对于噪声比较敏感,检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感。
Sobel算子根据图像的像素点上下、左右邻点灰度加权差在边缘处达到极值这一现象来检测边缘。算子对噪声具有平滑作用,能提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的图像边缘检测方法。
Prewitt算子边缘检测的思路与Sobel微分算子的思路类似,是在一个奇数大小的模板中定义其微分运算。算子对噪声具有平滑作用,定位精度也不够高。
Laplacian算子是二阶微分算子,利用边缘点处二阶导函数出现零交叉原理来检测图像的边缘。算子不具方向性,对灰度突变比较敏感,定位精度高,同时对噪声比较敏感,且不能获得边缘方向等信息。
Guassian滤波器方法通过检测二阶导数过零点来判断图像边缘点。Guassian滤波器中的σ正比于低通滤波器的宽度,σ越大,平滑作用越显著,去除噪声效果越好,但图像的细节损失也越大,检测出来的图像边缘精度也就越低。由于在边缘定位精度和消除噪声级之间存在着矛盾,所以应该根据具体问题对噪声水平和边缘点定位精度要求适当选取σ。
Canny方法则是以一阶导数为基础来判断图像的边缘点。它是一阶传统微分中检测阶跃型边缘效果最好的算子之一。它比Roberts 算子、Sobel 算子和Prewitt 算子极小值算法的去噪能力都要强,并能产生较细的边缘,但它也容易平滑掉一些边缘信息。
通过对经典边缘检测算子的实验结果得到:阈值自动赋值时,7种算法都能够检测出图像边缘;而Laplacian和Zero-Cross算子因其所得幅值相对小,当选择较大的阈值时,边缘信息可能部分或全部丢失;Roberts算子和Laplace算子定位精度较高;Roberts算子检测垂直和水平方向的阶跃边缘、线的效果比检测斜向阶跃边缘、线的效果好,保留住了矩形的角点,而Sobel和Prewitt算子则不及,尤其是Prewitt算子基本丢失了角点信息;Sobel和Prewitt算子检测斜向阶跃边缘、线的效果较好,保留住了三角形的角点。由此得出以下结论:
1)Roberts算子简单直观,Laplacian算子利用二阶导数零交叉特性检测边缘。Roberts算子和Laplacian 算子定位精
度较高,但对噪声较为敏感。Laplacian算子只能获得边缘位置信息,不能得到边缘的方向等信息。
2)Prewitt 算子和 Sobel算子都是一阶的微分算子,而前者是平均滤波,后者是加权平均滤波且检测到的图像边缘可能大于两个像素。这两者对灰度渐变低噪声的图像有较好的检测效果,但是对于混合多复杂噪声的图像,处理效果就不理想了。Prewitt 算子和Sobel算子对噪声具有较好的平滑作用,能滤除一些噪声,去掉部分伪边缘,但同时也平滑了真正的边缘;定位精度不高。Sobel算子可提供最精确的边缘方向估计。
3)Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平和垂直边缘效果较好。
4)Roberts算子检测垂直和水平方向的阶跃边缘、线的效果比检测斜向阶跃边缘、线的效果好,保留住了矩形的角点,而Sobel和Prewitt算子则不及,尤其是Prewitt算子基本丢失了角点信息。而Sobel和Prewitt算子检测斜向阶跃边缘、线的效果较好,保留住了三角形的角点。
5)Guassian滤波器方法比Canny方法具有更好的边缘检测效果。Zero-Cross滤波器方法没有解决如何组织不同尺度滤波器输出的边缘图为单一的、正确的边缘图像的具体方法。
6)Canny算子对各种噪声图像最敏感。
7)Gaussian边缘检测算子对边缘变化突出处检测效果明显,且不容易受噪声干扰。
8)Sobel、Prewitt、Roberts边缘检测算子检测图像边缘时易出现“削顶”现象,即对图像顶部检测困难。
9)对比斑点、高斯、泊松、椒盐噪声图像,椒盐噪声图像对各种检测算子的检测效果影响最大,泊松噪声图像对各种检测算子的检测效果影响最小。
通过对检测结果进行比较得到表1和表2。
表1 七种边缘检测算子的特点和适用范围比较
表2 七种边缘检测算子的性能比较
图像边缘检测的检测算子都不是具有绝对优势的方法,在图像的抗噪声、图像边缘的定位情况、是否可以检测出图像部分边缘和算法运行的速度等方面各自存在优缺点。由于图像数据是二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等原因的影响,使得有边缘的地方不一定能被检测出来, 而检测出来的边缘也不一定代表实际边缘。实践时要根据不同的系统,针对不同的环境条件和要求,选择合适的算子来对图像进行边缘检测。
[1] Kang Chung-Chia,Wang Wen-June.A novel edge detection method based on the maximizing objective function [J].Pattern Recognition(S0031-3203), 2007, 40(2): 609-618.
[2] 王智文, 刘美珍, 蔡启先, 谢国庆.基于加权改进小波变换的图像融合算法[J], 计算机工程, 2009, 35(11): 228-230.
[3] John Canny.A Computational Approach to Edge Detection[J].IEEE Trans Pattern Analysis and Machine Intelligence, 1986, 10(12): 679-697.
[4] 马艳, 张治辉.几种边缘检测算子的比较[J].工矿自动化, 2004, 1: 54-56.
[5] 赵芳, 栾晓明, 孙越.数字图像几种边缘检测算子检测比较分析[J].自动化技术与应用, 2009, 28(3): 68-69.