资源描述
图像边缘检测算法效果对比
目录
一、引言
二、 边缘检测
2.1 Roberts 梯度算子
2.2 Prewitt算子
2.3 Sobel算子
2.4 Laplace 算子
2.5 Canny 算子
三、 几种算子的比较
3.1 基于Matlab 的边缘检测算法实现
3.2 算法比较
四、 最小二乘支持向量机在边缘检测中的应用
五、结束语
六、参考文献
摘要: 边缘是图像最基本的特征, 包含图像中用于识别的有用信息, 边缘检测是数字图像处理中基础而又重要的课题。文章具体考察了5 种经典常用的边缘检测算子以及最小二乘支持向量机提取边缘检测算子,并运用Matlab 进行图像处理结果比较。梯度算子简单有效, LOG 算法和Canny 边缘检测器能产生较细的边缘。最小二乘支持向量机结合图像的梯度和零交叉信息, 选取一定的参数条件, 可以获得比Canny 方法更好的性能。
一、引言
图像边缘是图像最基本的特征之一,往往携带着一幅图像的的大部分的信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处。这些点给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘。而边缘检测算法则是处理问题中经典技术难题之一,它的解决对于进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质级好的效果的边缘检测算子的问题。
由于边缘检测在图像处理系统中占有重要的作用, 所以其效果直接影响着后续图像处理效果的好坏。许多数字图像处理直接或间接地依靠边缘检测算法的性能, 并且在模式识别、机器人视觉、图像分割、特征提取、图像压缩等方面都把边缘检测作为最基本的工具。但实际图像中的边缘往往是各种类型的边缘以及它们模糊化后结果的组合, 并且在实际图像中存在着不同程度的噪声, 各种类型的图像边缘检测算法不断涌现。早在1965 年就有人提出边缘检测算子, 边缘检测的传统方法包括Kirsch, Prewitt, Sobel, Roberts, Robins, Mar -Hildreth边缘检测方法以及Laplacian-Gaussian (LOG) 算子方法和Canny 最优算子方法等。
本文主要讨论其中5 种边缘检测算法以及最小二乘支持向量机进行图像边缘处理算法的性能, 并使用Matlab7.8 图像处理工具以实际图像为例对这些方法进行比较。
二、 边缘检测
在Marr的视觉计算理论框架中,抽取二维图像上的边缘、 角点、纹理等基本特征,是整个系统框架中的第一步。这些特征所组成的图称为基元图。Yuille等指出, 在不同“尺度”意义下的边缘点,在一定条件下包含了原图像的全部信息。图画出了一幅图像中的边缘点,仅仅根据这些边缘点,就能识别出三维物体, 可见边缘点确实包含了图像中的大量信息。
(1) 空间曲面上的不连续点。如标为A的边缘线,这些边缘线为两个不同曲面的或平面的交线,该点处物体表面的法线方向不连续,在A类边缘线的两边, 图像的灰度值有明显的不同。
(2)B类边缘线。B类边缘线是由不同材料或相同材料不同颜色产生的。图中桌面由两种不同材料组成,由于它们对光的反射系数不同, 使B边缘线的两侧灰度有明显不同。
(3)C类边缘线。C类边缘线是物体与背景的分界线。如图中圆柱上有两条C类边缘线,这类边缘线一般称为外轮廓线。在C类边缘点上,三维物体表面的法线方向是连续的,出现边缘点是由于从一定视角看物体时,C类边界点是物体与背景的交界处。由于物体与背景在光照条件与材料反射系数等方面差异很大, 因此在C类边缘两侧, 图像的灰度也有很大差异。图中标以C′的边缘,即是物体与背景的交界处, 也是物体上表面法线的不连续处,但引起它两侧灰度跃变的原因是前者。
(4)D边缘。D是阴影引起的边缘。由于物体表面某一部分被另一物体遮挡,使它得不到光源的照射,从而引起边缘点两侧灰度值有较大的差异。
结论:边缘是图像的灰度不连续处,或灰度急剧变化的地方
边缘检测与微分运算。
如前所述,边缘点是信号“变化剧烈”的地方,但这么说并不准确,需要定义一个准确的边缘数学模型。以一维信号为例, 下图(b)是一种阶跃信号,我们当然认为A点处为边缘点。在实际情况中,物理信号不可能有理想的突变, 而是图(b)所示的逐渐增大的信号,对图(b)中所示A、B、C三点, 一般称B点为边缘点。在图(c)和图(d)中,如果台阶比较窄,即可以认为B点为边缘点,也可以认为该信号有两个边缘点A与C。
图像中不同类型的边界
(a)边界 (b)线 (c)折线变化 (d)缓慢的平滑变化
数字图像中, 边缘(edge) 是指图像局部强度变化最显著的部分。边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩) 之间。边缘检测常用到的有属于简单空域微分算法的Roberts 算子、Sobel 算子、Prewitt 算子, 拉普拉斯高斯(LOG) 算法以及Canny边缘检测器等。边缘检测算法的基本步骤: ①滤波: 改善与噪声有关的边缘检测器的性能;一般滤波器降导致了边缘的损失; 增强边缘和降低噪声之间需要折衷; ②增强: 将邻域强度值有显著变化的点突显出来,边缘增强一般是通过计算梯度幅值来完成的; ③检测: 最简单的边缘检测判据是梯度幅值阀值; ④定位: 边缘的位置和方位在子像素分辨率上估计。
2.1 Roberts 梯度算子
对阶跃状边缘, 在边缘点处一阶导数有极值, 因此可计算每个像素处的梯度来检测边缘点。对于图像g(x,y),在(x,y)处的梯度定义为grad(x,y)。梯度是一矢量,大小代表边缘的强度, 方向与边缘走向垂直。梯度算子仅用最近邻像素的灰度计算, 对噪声敏感, 无法抑制噪声的影响。
由Roberts提出的算子是一种利用局部差分寻找边缘点的算子,对于边缘界陡峭且噪比较小的图像检测效果比较好,它在2×2邻域上计算对角导数,
(1)
· 又成为Roberts交叉算子。在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:
(2)
用卷积模版,上式可以变成:
(3)
其中和由下面图3所示的模版计算:
1
0
0
-1
0
1
-1
0
Roberts边缘检测算子的模版
Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值。由上面连个卷积算子对图像运算后,带入(3)式,可求得图像的梯度幅度值,然后选取适当的门限TH,做如下判断:>TH,[i,j]为阶跃状边缘点,{G[i,j]}为一个二值图像,也就是图像的边缘。由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子。
2.2 Prewitt算子
为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发,由2×2扩大到3×3来计算差分算子,所以其卷积模版为下图所示
-1
-1
-1
0
0
0
1
1
1
-1
0
1
-1
0
1
-1
0
1
Prewitt边缘检测算子的模版
在图像中的每个像素位置都都用这2个模版做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下:
(1)
(2)
根据上式,可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得到一幅边缘二值图像,采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响。
2.3 Sobel算子
在图像空间利用两个方向模版与图像进行邻域卷积来完成。这两个方向的模版一个检测垂直边缘,一个检测水平边缘,如图所示。图中,模版内的数字为模版系数,梯度方向与边缘方向总是正交
图 Sobel算子
模版元素和窗口像素之间的对应关系(以3×3窗口为例)定义如下窗口灰度为:
模版卷积计算就是下式乘积和的过程:
式中,i=1,2分别代表垂直和水平模版,为模版卷积法边缘检测的输出,i=[L/2],L为窗口宽度,对3×3窗口,I=1.将两个卷积结果的最大值,赋给图像中对应模版中心位置的像素,作为该图像的新灰度值,即:
Prewitt 和Sobel 算子
Prewitt 从加大边缘检测算子的模板大小出发, 由2×2 扩大到3×3 来计算差分算子, 采用Prewitt 算子不仅能检测边缘点, 而且能抑制噪声的影响。Sobel 在Prewitt算子的基础上, 对4-邻域采用带权的方法计算差分, 该算子不仅能检测边缘点, 且能进一步抑制噪声的影响, 但检测的边缘较宽
2.4 Laplace 算子
Laplace 算子是一与方向无关的各向同性(旋转轴对称) 边缘检测算子。其特点是各向同性、线形和位移不变, 对细线和孤立点检测效果好。但边缘方向信息丢失, 常产生双像素的边缘, 对噪声有双倍加强作用。由于梯度算子和Laplace 算子都对噪声敏感, 因此一般在用它们检测边缘前要先对图像进行平滑。
噪声点对边缘检测有较大的影响, 效果更好的边缘检测器是高斯-拉普拉斯(LOG)算子。它把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果更好。
常用的LOG算子是5×5的模板:
LOG算子中心点的距离与位置加权系数的关系
若将上图绕y轴作旋转一周后,LOG算子很像一顶墨西哥草帽, 所以,LOG又叫墨西哥草帽滤波器。
2.5 Canny 算子
具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器,其采用一阶微分滤波器。采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部最大值,以此来确定图像边缘。根据对信噪比与定位乘积进行测度,得到最优化逼近算子,这就是Canny边缘检测算子。类似与Marr(LOG)边缘检测方法,也属于先平滑后求导数的方法。
现在对Canny边缘检测器作一概括说明,用f[i,j]表示图像,使用可分离滤波方法求图像与高斯平滑滤波器卷积,得到的结果是一个已平滑数据阵列。
(1)
其中代表一个高斯滤波的过程,而是高斯函数的标准差,它控制着平滑程度。
已平滑数据阵列的梯度可以用2×2一阶有限差分近似式来计算x与y偏导数的两个阵列与;
(2)
(3)
在这个2×2正方形内求有限差分的均值,以便在图像中的同一点计算x和y的偏导数梯度,幅值和方位角可用直角坐标的坐标转化公式来计算:
(4)
(5)
其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个圆周范围内。为高效率地计算这些函数,尽量不用浮点运算。梯度的幅度和方向也可以通过查找表由偏导数计算。方正切函数的大多数计算使用的是定点运算,很少的几个计算是基本浮点运算,其中的浮点运算是由整数和定点算术通过软件实现的。
在上式中,反映了图像上的点[i,j]处的边缘强度,是图像点[i,j]的法向矢量,正交于边缘方向。根据Canny的定义,中心边缘点为算子与图像的卷积在边缘梯度方向上的最大值,这样就可以在每个点的梯度方向上判断此点强度是否为其邻域的最大值来确定该点是否为边缘点。当一个像素满足下面三个条件时,则被认为是图像的边缘点:
(1) 该点的边缘点大于该点梯度方向的两个相邻像素点的边缘强度;
(2) 该点梯度方向上相邻两点的方向差小于π/4;
(3) 以该点为中心的3×3邻域中的边缘强度极大值小于某个阈值;
Canny给出的这三个判定具有广泛的代表意义。
三、 几种算子的比较
3.1 基于Matlab 的边缘检测算法实现
以下代码给出了针对同一幅图像的5 种边缘检测的不同效果。使用Matlab7.8 图像处理工具箱中的edge 函数编程实现 。
I= imread('D:\yaya.jpg');
BW1=edge(I,'roberts');
BW2=edge(I,'prewitt');
BW3=edge(I,'sobel');
BW4=edge(I,'log');
BW5=edge(I,'canny');
figure;imshow(I);
figure;
subplot(231);imshow(BW1);
subplot(232);imshow(BW2);
subplot(233);imshow(BW3);
subplot(234);imshow(BW4);
subplot(235);imshow(BW5);
运行结果为:
3.2 算法比较
Roberts 算子定位比较精确, 但由于不包括平滑, 所以对于噪声比较敏感。Prewitt 算子和Sobel算子都是一阶的微分算子, 这两者对灰度渐变低噪声的图像有较好的检测效果, 但是对于混合多复杂噪声的图像, 处理效果就不理想了。LOG 平滑作用显著,去除噪声好, 但图像的细节损失大, 边缘精度也低。所以在边缘定位精度和消除噪声级间存在着矛盾。Canny方法则以一阶导数为基础来判断边缘点。它是一阶传统微分中检测阶跃型边缘效果最好的算子之一。它比Roberts 算子、Sobel 算子和Prewitt 算子极小值算法的去噪能力都要强, 但它也容易平滑掉一些边缘信息。
四、 最小二乘支持向量机在边缘检测中的应用
最小二乘支持向量机是从全局最优的观点提取边缘, 该方法从拟合图像的角度出发, 利用性能上优于最小二乘法的LS-SVM 对图像灰度进行拟合, 从拟合函数中得到图像的梯度和二阶零交叉信息, 克服了传统微分方法提取边缘时利用差分代替微分的不足, 同时该方法综合梯度和零交叉信息进行边缘定位, 提高了边缘检测的精度, 有较强的抗噪能力。利用LS-SVM 提取图像边缘时, 实际是属于曲面拟合边缘检测算法, 与其它曲面拟合边缘检测算法一样,都需要计算图像的梯度算子和零交叉算子, 因此基于LS-SVM 的图像边缘检测具体实现步骤如下: ①采用高斯滤波器对图像进行去噪预处理; ②利用一阶算子模板和图像卷积计算图像水平, 垂直方向上的梯度, 分析图像梯度, 由梯度值的统计特性确定阈值T1, 并对其进行阈值化得到梯度所确定的边缘图S1; ③利用二阶算子模板和图像卷积计算得到图像二阶导数, 并选取负值点;再将其8 个相邻点中最大的点取出来, 如果为正, 将此点与负值点之差作为该点的输出, 其余点置为零; 然后根据二阶导数的统计特性确定阈值T2, 并进行阈值化得到零交叉点的边缘图S2; ④对边缘图S1和边缘图S2进行与运算, 得到边缘图S3; ⑤去除边缘图S3的离散点,并对其细化, 也能得到最终的边缘检测图。
五、结束语
讨论和比较了几种常用的边缘检测算法。梯度算子计算简单, 但精度不高, 只能检测出图像大致的轮廓,而对于比较细的边缘可能会忽略。Prewitt 和Sobel 算子比Roberts 效果要好一些。LOG 滤波器和Canny 算子的检测效果优于梯度算子, 能够检测出图像较细的边缘部分。采用基于LS-SVM 的图像边缘检测方法时, 根据不同核函数, 选择不同的卷积核, 表现出较佳的性能, 通过选取最优参数, 基于LS-SVM 的边缘检测方法可以获得比Canny 方法更优越的性能。在微分法边缘检测中, 边缘定位与噪声滤除是两个相互矛盾的部分, 很难同时得到很好的解决, 这就是边缘检测的“两难” 问题。本文利用最小二乘支持向量机与经典算子进行比较, 在一定数据参数条件下最小二乘支持向量机取得较好效果。相信我们能在此基础上改进, 以较好地解决边缘检测的“两难” 问题。
六、参考文献
[1]《基于Canny 算子的图像边缘检测与提取的算法》 叶俊 科技咨迅 2007 NO.34
[2] 《基于Matlab 图像边缘检测算法效果对比》杨先花, 黎粤华 机电产品开发与创新 第23卷第2期
[3] 《基于边缘检测的对比度增强法》 张明慧,雷相波,扶晓 Vol.6,No.11,April 2010
[4]《基于蜂群算法的图像边缘检测 》肖永豪, 余卫宇 计算机应用研究 第27卷第7期 2010年7月
[5]《基于图像边缘检测算法的研究》 吕玉琴,曾光宇 太原科技 2009 年第2期
[7]《一种改进的Canny 算子边缘检测算法》 周晓明,马秋禾,肖蓉,杨娜 《测绘工程》 第17卷第1期 2008 年2 月
展开阅读全文