计 算 技 术 与 自 动 化ComputingTechnologyandAutomation
Vol129,No12
Jun.2010
文章编号:1003-6199(2010)02-0070-04
基于MATLAB的遥感图像边缘
检测算子的实验比较分析
何亮云
(湖南城市学院城市建设系,湖南益阳 413000)
摘 要:MATLAB软件工具箱中,提供了edge函数,它能利用多种算子进行图像的边缘检测,语言结
构简单。本文就数字图像处理中几种常用的用于检测的算子(Roberts算子、Prewitt算子、Sobel算子、log算子、Canny算子),通过MATLAB软件来实现遥感图像的边缘检测,对抗噪声能力进行分析,得出各自的优缺点和适用范围。
关键词:MATLAB;图像处理;边缘检测;算子中图分类号:TP31714 文献标识码:AExperImentalComparIsonsofMATLAB2basedOperatorsforEdgeDetectioninRSDigitalImage
HELiang2yun
(DepartmentofUrbanConstruction,HunanCityUniversity,Yiyang 413000,China)
Abstract:ImageProcessingMATLABToolboxUser’sGuide,Hasprovidedtheedgefunction,Itcanusemanykindsofoperators
tocarryontheimagetheedgeexamination.Severalcommonedgedetectionoperators(Sobeloperator、Prewittoperator、Sobeloperator、LogoperatorandCannyoperator)indigitalprocessingcanbeachievedthroughMATLABandthedetectioneffectandanti2noiseabilityofeachoperatorareanalyzedtoclarifytheadvantagesanddisadvantagesandthescopeofapplication.
Keywords:MATLAB;imageprocessing;edgedetection;operators
1 引 言
MATLAB是指矩阵实验室(MatrixLabora2
tory),是MathWorks公司于1982年推出的一套
高性能的数值计算和可视化数学软件。也是当今最流行的一种高级科学与工程计算软件,MAT2LAB自问世以来,就以数值计算著称,是当今国际上(尤其是自动控制领域)最具影响力,也是最有活动力的软件之一,它起源于矩阵运算,并已经发展成一种高度集成的计算语言(被称作计算机语言)。MATLAB用非常直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码,给用户带来最直观、最简洁的程序开发环境,它提供了强大的科算、灵活的程序设计流程、
高质量的图形可视化界面设计、便捷的与其它程序
和语言接口的功能。在MATLAB图像处理工具箱中,提供了edge函数利用多种算子来检测灰度图像的边缘。本文通过对各种边缘检测方法的对比研究,选取几种具有代表性的边缘检测算法进行详细地分析比较,给出了这些算法的适用领域和适用范围,为人们使用这些算法提供实验依据。
2 常用边缘检测算子的简介
图像的边缘就是指图像灰度发生空间突变的像素的集合。图像的边缘是图像的基本特征之一,人们对目标的识别主要是依靠边缘。灰度的突变一般常用导数来描述和检测。常见的灰度突变主要有3种:阶跃状、斜坡状和屋顶状。
收稿日期:2010-03-09
基金项目:教育部全国教育科学“十一五”规划项目(FFB090573);湖南省教育厅科技项目(05C775)
),男,湖南益阳人,副教授,硕士,研究方向:测绘工程(E-mail:iiyyhhllyy@sohu.com)。作者简介:何亮云(1963—
第29卷第2期何亮云:基于MATLAB的遥感图像边缘检测算子的实验比较分析71
-1-1-1-1
图1 图像边缘及其导数曲线规律
从图1可以看出,灰度剖面图的一阶导数在图
像的突变处产生一个阶跃。因此,可以用一阶导数的幅度值检测边缘的存在,根据二阶导数的幅度变化情况可以确定边缘的位置。对于数字图像来说,通常利用差分来近似微分进行计算。211 梯度算子
对于数字图像,梯度是一阶导数的二维等效形式,因此通过求取梯度可以判断边缘。对于一个连续函数f(x,y)在(x,y)处的梯度定义如下:5f5fTT
(1)犳==GxGy5x5y梯度是一个向量,其幅值和相位分别为:
犳=
犳=
Gx+Gy
T
T
00和-111-13)Sobel算子
Sobel算子与Prewitt算子的区别仅在于选用的模板不同:
-1-2-1-101000和-202121-101212 高斯-拉普拉斯算子(LOG)01
000111(2)(3)
a(x,y)=arctan(Gx/Gy)
对于数字图像,通常以两相邻点之间灰度差来近似Gx和Gy,即:
Δxf=f(m,n)-f(m-1,n)(4)Δyf=f(m,n)-f(m,n-1)(5)
00
上述公式采用模板表示,则为:和
-1100
-1
1
模板算子运算时采用卷积方式,即把模板在图像上移动并在每点计算相应的梯度值。图像处理发展到今天,人们已经提出了许多不同大小、不同系数的算子,例如:常用梯度算子Roberts算子,Prewitt算子,Sobel算子,等等。
1)Roberts算子
Roberts算子是一种交差微分算子,用交叉的差分表示梯度,它的两个方向的模板是的2×2,是最简单的梯度算子。该算子的模板为:-1001
和
0-1-10分别利用上述模板对图像进行卷积,然后将两次卷积结果进行求和,就可以得到Roberts算子对图像进行边缘检测的结果。
2)Prewitt算子
Prewitt算子是加权平均算子,是在一个奇数大小的模板中定义其微分运算。模板如下:
拉普拉斯算子是一种二阶微分算子,能在边缘处产生一个陡峭的零交叉。前面介绍的几种梯度算子都具有方向性,不能对各种走向的边缘都具有相同的增强效果。但是拉普拉斯算子是标量算子,是各向同性的,能对任何走向的界线和线条进行锐化。这是拉普拉斯算子区别于其他算法的最大优点。
一个二维图像f(x,y)的拉普拉斯算子定义为:
52f52f2
(6)f=22+22
5x5y
在图像处理过程中,函数的拉普拉斯算子也是借助模板来实现的。其模板的基本特征是中心的系数为正,其余相邻系数为负,所有系数之和为零。常用拉普拉斯算子的模板如下:
0-10-1-1-1-14-1和-18-11-10-1-1-1但是,由于拉普拉斯算子检测方法对噪声比较敏感,而且不能提供边缘方向信息,容易产生双边缘,所以一般很少直接使用拉普拉斯算子进行边缘检测。为了克服上述不足,可先用一个高斯型二维低通滤波器对图像进行平滑,然后再对图像求拉普拉斯算子。这种方法的算子称为Laplace2Gauss算子(LOG),表述为:
22
(7)G=gx,y3fx,y式中:G为高斯函数,2G=2gx,y=
22σσ2是卷积核。其常用的5×5模板为:-2-4-4-4-2-4080-4-48248-4-4080-4-2-4-4-4-2213 Canny算子
Canny边缘检测算子是近年来在许多数字图像领域中得到广泛应用的一种比较新的边缘检测算子。
K
x+y22
-2exp-
x+y22
72计算技术与自动化2010年6月
Canny认为一个优良的边缘检测算子应具有以下3个特性:
1)好的检测性能。即不漏检真实边缘,也不
把非边缘点作为边缘点检出,使输出的信噪比最大。
2)好的定位性能。即检测出的边缘点要尽可能靠近实际边缘的中心位置。
3)唯一性。对于单个边缘点仅有一个响应。根据以上3个准则,Canny推导出最优边缘检测算子的一个近似实现是:边界点位于图像被高斯函数平滑后的梯度幅度的极大值点。
通过Canny算子的计算,可以计算出数字图像边缘的边缘强度和边缘的梯度方向,为后续边缘点判断提供依据,其计算表达式为:
(8)Gn=n犌
5G5x犌3犳x,y式中:n=;G=;表
G3fx,y5G5y示边缘的方向,G表示梯度矢量,犌3犳x,y表示边缘强度。
利用高斯函数的可分性,将▽G的两个滤波器卷积模板分解为两个一维的行列滤波器:
22-x-y5G(9)=kxexpexp222σ2σ5x
22-y-x5G(10)=kxexpexp222σ2σ5y
将(9)和(10)分别与图像f(x,y)卷积,得
相邻像素从候选边缘点中剔除,条件3)的作用是消除虚假的边缘点。
Canny边缘检测算子步骤如下:
step1:用高斯滤波器对图像进行滤波消噪;step2:用一阶偏导的有限差分来计算梯度的幅值和方向;
step3:对梯度幅值进行非极大值抑制;step4:用双阈值算法检测和连接边缘。
3 边缘检测实验效果
为了分析上述几种算子的效果,我们用MATLAB的edge函数对IMG_6619原始图像以及分别加入了高斯噪声和椒盐噪声后的IMG_6619.图像进行检测。对IMG_6619原始图像进行边缘检测的MATLAB程序代码(略):
图2 IMG_6619原图
4 实验效果对比分析
由于Roberts算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易丢失一部分边缘,同时由于没经过图像平滑计算,因此不能抑制噪声,如图(3b、4b、5b)所示,该算子对具有陡峭的低噪声图像响应最好。
Prewitt算子和Sobel算子都是对图像进行差
到:
5G3fx,y3f(x,y);5x5GEy=3fx,y5y
Ex=Ax,y=
2
2
(11)
(x,y)=Exx,y+Eyx,y;α
(12)
arctan
Eyi,jExi,j则A(i,j)反映了图像上(i,j)点处的边缘强度,α(i,j)是图像在(i,j)点处的法向矢量(正交于边缘方向)。
当一个像素满足以下三个条件时,则被认为是图像的边缘点:
1)该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度;
2)与该点梯度方向上相邻两点的方向差小于45°;
3)以该点为中心的3×3领域中的边缘强度极大值小于某个阈值。
条件1)、2)的作用是将在梯度方向上的两个
分和滤波运算,仅在平滑部分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗噪能力是通过像素平均来实现的,所以图像产生了一定的模糊,而且还会检测出一些伪边
缘,所以检测精度比较低,如图(3c、3d、4c、4d、5c、5d)所示,该类算子比较适用于图像边缘灰度值
比较尖锐,且图像噪声比较小的情况。
LOG算子首先通过高斯函数对图像进行平滑
处理,因此对噪声的抑制作用比较明显,但同时
第29卷第2期何亮云:基于MATLAB的遥感图像边缘检测算子的实验比较分析73
易平滑掉一些边缘信息,其后所采用的一阶微分算子的方向性较LOG算子要好,因此边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于,它使用2种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出图像中,因此这种方法较其它方法而言不容易被噪声“填充”,更容易检查出真正的弱边缘。通过如图(3f、4f、5f)的实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。
图3 各种算子对IMG_6619原始图像检测的效果(a)~(f)
图5 各种算子对加入椒盐噪声后的
IMG_6619图像检测的效果(a)~(f)
5 结 论
本文通过MATLAB对几种常见的边缘检测算子的实验对比分析,总结了各种算法的优缺点及适用范围,通过对算子的检测比较后,可以看出,Canny边缘检测算子能比较完美的检测出图像的边缘。
图4 各种算子对加入高斯噪声后的IMG_6619图像检测的效果(a)~(f)
参考文献
[1] 高成.MatLab图像处理与应用(第二版)[M].北京:国防工
也可能将原有的边缘也平滑了,造成某些边缘无
法检测到,如图(3e、4e、5e)所示。此外高斯分布因子σ的选择对图像边缘检测效果有较大的影响。σ越大,检测到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提高,但边缘检测精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。
Canny算子也采用高斯函数对图像进行平滑处理,因此具有较强的去噪能力,但同样存在容
业出版社,2007.
[2] 董长虹.Matlab神经网络与应用(第二版[M].北京:国防工
业出版社,2007.
[3] 陈垚光.精通MATLABGUI设计[M].北京:电子工业出版
社,2008.
[4] 何亮云.基于2类观测值联合平差权比调整的MATLAB程
序设计[J].湖南城市学院学报:自然科学版,2007(03):26-28.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务