基于边缘检测的各种算子及其特点
2014-05-30李竹林贺东霞
王 静,李竹林,贺东霞,王 蓓,李 智
(延安大学 数学与计算机科学学院,陕西 延安 716000)
基于边缘检测的图像分割方法的基本思路是先确定图像中的边缘像素,然后通过一定的方法把它们连接在一起构成所需要的边缘。MATLAB图像处理工具箱使用edge函数来检测边界,寻找像素值剧烈变化的像素点。对图像进行研究的过程中,人们往往会对某个部分或者特征感兴趣,图像的边缘作为图像分析的一种最基本的依据有着重要的作用,图像边缘检测的好坏直接关系着图像分析、特征提取、目标识别的精确性。通过对图像的边缘进行检测,可以使感兴趣的目标与背景分离,便于分析研究。
1 边缘检测的概念
图像的边缘指的是图像灰度、颜色、纹理结构等发生空间突变的像素的集合。图像的边缘意味着一个区域的结束和另一个区域的开始。图像的边缘有两个特征:梯度和方向。
基于边缘检测的图像分割方法的基本思路就是首先确定图像中的边缘像素,然后通过一定的方法把它们连接在一起构成所需要的边缘。
边缘检测对于灰度级间断的检测是最普遍的检测方法。检测图像中的一个点是否是边缘点可以用一阶导数,判断一个边缘像素是在边缘亮的一边还是暗的一边可以用二阶导数。但需注意,对图像中的每条边缘,二阶导数会生成两个值,这是我们不希望看到的,但二阶导数的过零点特性(即一条连接二阶导数正极值和负极值的虚构直线将在边缘中点附近穿过零点)对于确定粗边线的中心有很重要的作用[1]。
2 基于边缘检测的算子
边缘检测算子即边缘检测器,它是指从图像中抽取边缘(边缘点或者是边缘段)集合的算法。下面就分别介绍常用的几种算子。
2.1 梯度算子
图像的边缘是灰度值不连续的结果,这种不连续可以用求导的方法进行检测。即通过考察图像每个像素的某个邻域内灰度的变化,利用边缘邻近一阶或二阶导数的规律来检测边缘。
梯度对应的是一阶导数信息,是一阶导数算子。
假设图像灰度为f(x,y),则它在位置(x,y)的梯度定义为下列向量
在边缘检测中,梯度的大小非常重要。通常将梯度的幅度大小简称梯度,用▽g表示
梯度的方向也很重要,它是图像灰度变化最快的方向。令φ表示向量▽f在(x,y)处的方向角,由向量分析得到梯度的方向表示为
2.2 水平垂直差分算子
实际的数字图像是经过空间采样,灰度量化的图像,如果在求取梯度的时候用差分来代替微分,从而梯度算子中的式(2)就以重新表示为
为了简化计算,一般用以下式(5)来近似代替式(4)如下所示:
上述这种求梯度方法称为水平垂直差分法。
2.3 Canny算子
Canny算子[2]是 Jonny Canny于 1986 年提出的,使用Canny算子检测边缘具有很好的效果,所以它在图形图像处理的众多领域都得到了很广泛的应用。Canny算子有低误判率、高精度定位,抑制虚假边缘等优点。用Canny算子检测边缘需先对预处理的图像选择一高斯滤波器进行平滑滤波,然后采用一种称为“非极大抑制”的技术对平滑后的图像进行处理,得到最后所需要的边缘图像。
Canny算子边缘检测的基本原理是:采用二维高斯函数的任一方向上的一阶方向导数为噪声滤波器进行平滑滤波,再与图像卷积进行滤波,最后对滤波后的图像寻找图像梯度的局部极大值,以得到图像的边缘图像。二维高斯函数的表达式为
上式中,用方差σ来控制图像的平滑程度。
G(x,y)在某一方向的一阶方向导数为
Canny算子是在▽G*f(x,y)的基础之上得到边缘强度和方向后通过阈值判定来检测边缘。
2.4 Sobel算子
Prewitt算子与Sobel算子的梯度幅值表示相同,只是选取的3*3模板不同,虽然Prewitt算子得模板比Sobel算子的模板简单,但是它对噪声的抑制效果不如Sobel算子。
2.5 Robert算子
Roberts算子的检测精度比较高,但是对噪声比较敏感。Roberts算子是一个交叉算子,它在点(m,n)的梯度幅值表示如下
通常情况下,把式(11)简化为如下形式分别利用Rm和Rn的2*2模板对图像进行卷积,把两个卷积的结果进行求和就可以的到检测结果。
2.6 Laplacian算子
拉普拉斯算子是一种无方向性的二阶微分算子。二维函数f(x,y)的拉普拉斯算子的定义如下:
由于拉普拉斯算子对噪声有加强作用,不能检测出边缘的方向,且拉普拉斯算子的幅值会产生双边缘,所以一般情况下拉普拉斯算子的原始形式不用于检测边缘,而是用其零交叉的性质来判断一个像素是在一条边缘的亮侧还是在暗侧。
2.7 Log算子
由于拉普拉斯算子对噪声十分敏感。为此,马尔和希尔得勒斯提出了一种新的边缘检测的方法,该方法将拉普拉斯算子和高斯滤波结合在一起进行边缘检测,故称为Log算法,也称之为拉普拉斯高斯算法。拉普拉斯高斯算法主要分为三步:滤波、增强和检测。
由于在成像的时候,给定像素对应场景点的周围点对该点的光强呈正态分布,所以用呈正态分布的平滑函数对图像f(x,y)进行平滑滤波,根据人的视觉特性可以选用高斯函数作为滤波函数,则呈正态分布的高斯平滑滤波函数的定义如下
式中,H(x,y)是一个圆对称函数,通过方差σ来控制平滑的效果,对于噪声的降低具有很好的作用。H(x,y)与f(x,y)进行卷积后可以得到一个平滑图像,即
对平滑图像进行Laplacian运算,得到
数学上可以证明,对平滑图像h(x,y)进行拉普拉斯运算与f(x,y)和H(x,y)的拉普拉斯运算进行卷积是等价的。因此,式(2.4)可以变成
其中▽2H(x,y)称为Log算子(滤波器)。
Log算子综合考虑了对边缘的检测以及噪声的抑制,在图形图像处理领域得到了很好的应用。
用于边缘检测的算子很多,除了上述介绍的算子外还有一些其他的算子,比如Zerocross算子[4-6]等。Zerocross算子处理的图像效果与用Canny算子处理的图像效果差不多。对于Zerocross算法,阈值是根据0交叉的数目来确定,即超过0很多的像素值为边界。
3 实验结果
图1中(a)为原始图像,(b)~(f)分别为基于各种边缘检测算子的图像。
图1 原始图像以及边缘检测算子图像
由上述实验结果可以看出,Canny算子的检测结果最为精细,其次为Log算子,而Roberts算子的检测结果比Prewitt算子和Sobel算子都精细,虽然Prewitt对噪声的抑制效果不如Sobel算子但是Prewitt算子的检测结果比Sobel算子的检测结果稍微精细一些。
4 结束语
图像分割在数字图像处理技术中占据重要地位,它是图像分析、图像识别和特征提起的前提。图像分割没有唯一的标准和方法,应该按照不同种类的图像应用不同的分割技术。而基于边缘检测的图像分割方法又是图像分割中的重要内容,在图像理论研究及实际图像处理中得到了高度的关注和广泛应用。本文讲述了基于边缘检测算子的图像分割方法以及通过实验对几种算子的效果进行对比、研究和分析,为初学者的学习和研究工作提供了一定的参考价值。当然,这些算子并不是对所有的图像都有较好的分割效果,要想找到适合所有图像的理想的图像分割方法还有待于进一步的研究。
[1]冈萨雷斯.数字图像处理(第二版)[M].北京:电子工业出版社,2007.
[2]刘禾.数字图像处理及应用[M].北京:中国电力出版社,2006.
[3]张强,王正林.精通MATLB图像处理(第二版)[M].北京:电子工业出版社,2012.
[4]李俊山,李旭辉.数字图像处理[M].北京:清华大学出版社,2006.
[5]梁学军.基于光强加权梯度算子的图象过渡区算法[J].图象识别与自动化,2001,1:4-7.
[6]章毓晋 .过渡区和图象分割[J].电子学报,1996,24(1):12-17.