matlab.docx
《matlab.docx》由会员分享,可在线阅读,更多相关《matlab.docx(51页珍藏版)》请在冰豆网上搜索。
matlab
在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。
它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。
边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆满解决的一类问题。
图像的边缘包含了图像的位置、轮廓等特征,是图像的基本特征之一,广泛地应用于特征描述、图像分割、图像增强、图像复原、模式识别、图像压缩等图像分析和处理中。
因此,图像边缘和轮廓特征的检测与提取方法,一直是图像处理与分析技术中的研究热点,新理论、新方法不断涌现。
本文研究了一些边缘检测算法,包括传统的Roberts、Sobel、Prewitt、LoG、Canny、Kirsch等算法。
经典边缘检测方法的抗噪声性能都较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要。
传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。
本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。
文章中关于这些方法都有较详细的介绍,以及算法的实现步骤。
对算法均进行了仿真实验。
论文的主要目的是进行图像边缘检测算法性能比较的研究。
实验结果表明,本文的算法比较可以为图像处理的后续环节提供一些有益的参考。
关键词:
边缘检测;图像处理;Matlab;Sobel;检测算法
Abstract
Inimageprocessing,asabasiccharacteristic,theedgeoftheimage,whichiswidelyusedintherecognition,segmentation,intensificationandcompressoftheimage,isoftenappliedtohigh-leveldomain.
Edgedetectionisoneofthemostfundamentalsinimageprocessingandanalyzing,whichisstillunsolved.Image’sedgesincludeimage’sfeaturessuchaspositionandoutline,whichbelongtothefundamentalfeatures.Edgedetectioniswidelyusedinimageanalysisandprocessingsuchasfeaturedescription,imagesegmentation,imageenhancement,patternrecognitionandimagecompressionetc,soEdgeDetectionandextractofoutlinefigurearetheresearchhotspotinthetechnologyofimageprocessingandanalysisall,onwhichthenewtheoryandmethodsareputforwardconstantly.
Someedgedetectionalgorithmsareresearched,includingRoberts,Sobel,Prewitt,LoG,Canny,Kirschetc.Theclassicedgedetectionmethodshavesomedrawbacksinimagedenoising.Themainideaofresolvingthisproblemistosetathreshold,thencomparethethresholdwiththehigh-frequencycomponentsofanimagetoremovethenoise.Thechoiceofthethresholdisthekeyofimagedenoising.Thethresholdoftraditionalmethodsisobtainedbyexperiments,andthereisnogeneralmethodtodetermineit.AnewmethodofedgeestimationbytheMaximumaPosteriori(MAP)ispresentedinthispaper.Itproveshowtochoosetheoptimalthresholdintheory.Thesealgorithmsareintroducedindetail,andthestepsofalgorithmrealizationareintroducetoo.Thealgorithmistestedbysimulation.
ThemainaimofthepaperisstudyingPerformanceEvaluationinedgedetectionalgorithms,andthedetectionresultsarecompared.Theexperimentsresultsshowthatthealgorithmscanbeausefulreferenceoflatterpartsofimageprocessing.
Keywords:
edgedetection;imageprocessing;Matlab;Sobel;detectionalgorithm
引言
图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。
而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘。
而边缘检测算法则是图像处理问题中经典技术难题之一,它的解决对于进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题[1]。
在通常情况下,可以将信号中的奇异点和突交点认为是图像中的边缘点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映。
根据这一特点,提出了多种边缘检测算子:
如Robert算子、Sobel算子、Prewitt算子、Laplacian算子等。
这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果。
但这类方法同时也存在有边缘像素宽、噪声干扰较严重等缺点,即使采用一些辅助的方法加以去噪,也相应的会带来边缘模糊等难以克服的缺陷。
解决该问题的丰要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要[2]。
传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。
本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。
图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较剧烈的地方,即通常所说的信号发生奇异变化的地方。
奇异信号沿边缘走向的灰度变化剧烈,通常将边缘划分为阶跃状和屋顶状两种类型如图1所示。
阶跃边缘中两边的灰度值有明显的变化;而屋顶状边缘位于灰度增加与减少的交界处。
在数学上可利用灰度的导数来刻画边缘点的变化,对阶跃边缘、屋顶状边缘分别求其一阶、二阶导数[3]。
图1阶跃边缘和屋顶状边缘处一阶和二阶导数变化规律
(其中第一排为理想信号,第二排对应实际信号)
对一个边缘来说,有可能同时具有阶跃和线条边缘特性。
例如在一个表面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘.由于边缘可能与场景中物体的重要特征对应,所以它是很重要的图像特征。
比如,一个物体的轮廓通常产生阶跃边缘,因为物体的图像强度不同于背景的图像强度。
论文选题来源于在图像工程中占有重要的地位和作用的实际应用课题。
所谓图像工程学科是指将数学、光学等基础学科的原理,结合在图像应用中积累的技术经验而发展起来的学科。
图像工程的内容非常丰富,根据抽象程度和研究方法等的不同分为三个层次:
图像处理,图像分析和图像理解。
如图2所示,在图中,图像分割处于图像分析与图像处理之间,其含义是,图像分割是从图像处理进到图像分析的关键步骤,也是进一步理解图像的基础。
图2图像分割在图像工程中的地位和作用
图像分割对特征有重要影响。
图像分割及基于分割的目标表达、特征提取和参数测量等将原始图像转化为更抽象更紧凑的形式,使得更高层的图像分析和理解成为可能。
而边缘检测是图像分割的核心内容,所以边缘检测在图像工程中占有重要的地位和作用。
因此边缘检测的研究一直是图像技术研究中热点和焦点,而且人们对其的关注和投入不断提高。
本文的主要工作如下:
(1)本文对图像边缘检测作了一个概要的说明,并说明了进行图像边缘检测的重要意义。
(2)系统的介绍了比较经典的基于一阶微分的图像边缘检测算子及其具体的实现原理,为介绍基于二阶微分的图像边缘检测算子做铺垫,以便于大家的理解。
(3)系统介绍了比较经典的基于二阶微分的图像边缘检测算子及其具体的实现原理。
(4)介绍了一种基于Sobel算子的改进型算法,此方法的最大优点是:
在去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果。
(5)对上述的算法用Matlab为工具进行仿真,并对其仿真结果进行分析,分析各种算法的特点。
∙基于一阶微分的边缘检测算法
∙Roberts算子
由Roberts提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在2×2邻域上计算对角导数,
G[i,j]又称为Roberts交叉算子。
在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:
用卷积模板,上式变成:
其中Gx和Gy由下面图3所示的模板计算:
图3Robert边缘检测算子的模板
Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值。
由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值G[i,j],然后选取适当的门限TH,作如下判断:
G[i,j]>TH,[i,j]为阶跃状边缘点,{G[i,j]}为一个二值图像,也就是图像的边缘。
由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子[4]。
∙Prewitt算子
为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发。
由2×2扩大到3×3来计算差分算子,所以其卷积模板为图4所示:
图4Prewitt边缘检测算子的模板
在图像中的每个像素位置都用这2个模板做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下:
根据(1-4)和(1-5)式可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得到一幅边缘二值图像。
采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响[5]。
∙Kirsch算子
1971年,R.Kirsch提出了一种能检测边缘方向的Kirsch算子新方法:
它使用了8个模板来确定梯度幅度值和梯度的方向。
Kirsch算子是用一组模板对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向[6]。
常用的八方向Kirsch模板各方向间的夹角为45度,模板如图5所示:
图5Kirsch边缘检测算子的模板
上述算子都是计算一阶导数的边缘检测器。
其基本思想都是:
如果所求的一阶导数高于某一阈值,则确定该点为边缘点。
但是这样做会导致检测的边缘点太多。
总的来说,造成这些算子不能准确判定边缘的存在及正确位置的原因在于:
(1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测出多个边缘。
(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘。
∙(3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算子。
在线性滤波边缘检测方法中,最具代表性的是Marr-Hildreth提出的LoG(LaplacianofGaussian)算法、Canny最优算子的边缘检测方法[7]。
∙Roberts算子
由Roberts提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在2×2邻域上计算对角导数,
G[i,j]又称为Roberts交叉算子。
在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:
用卷积模板,上式变成:
其中Gx和Gy由下面图3所示的模板计算:
图3Robert边缘检测算子的模板
Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值。
由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值G[i,j],然后选取适当的门限TH,作如下判断:
G[i,j]>TH,[i,j]为阶跃状边缘点,{G[i,j]}为一个二值图像,也就是图像的边缘。
由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子[4]。
∙Prewitt算子
为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发。
由2×2扩大到3×3来计算差分算子,所以其卷积模板为图4所示:
图4Prewitt边缘检测算子的模板
在图像中的每个像素位置都用这2个模板做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下:
根据(1-4)和(1-5)式可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得到一幅边缘二值图像。
采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响[5]。
∙Kirsch算子
1971年,R.Kirsch提出了一种能检测边缘方向的Kirsch算子新方法:
它使用了8个模板来确定梯度幅度值和梯度的方向。
Kirsch算子是用一组模板对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向[6]。
常用的八方向Kirsch模板各方向间的夹角为45度,模板如图5所示:
图5Kirsch边缘检测算子的模板
上述算子都是计算一阶导数的边缘检测器。
其基本思想都是:
如果所求的一阶导数高于某一阈值,则确定该点为边缘点。
但是这样做会导致检测的边缘点太多。
总的来说,造成这些算子不能准确判定边缘的存在及正确位置的原因在于:
(1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测出多个边缘。
(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘。
(3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算子。
在线性滤波边缘检测方法中,最具代表性的是Marr-Hildreth提出的LoG(LaplacianofGaussian)算法、Canny最优算子的边缘检测方法[7]。
∙基于二阶微分的边缘检测算法
∙Laplacian算子
拉普拉斯算子是二阶导数的二维等效式。
函数f(x,y)的拉普拉斯算子公式为:
使用差分方程对x和y方向上的二阶偏导数近似如下:
这一近似式是以点f[i,j+1]为中心的,用j-1替换j得到
它是以点[i,j]为中心的二阶偏导数的理想近似式,类似地,
把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯算子的模板:
有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种基于这种思想的近似拉普拉斯算子:
当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区)。
原则上,过零点的位置精度可以通过线性内插方法精确到子像素分辨率,不过由于噪声,以及由噪声引起的边缘两端的不对称性,结果可能不会很精确[8]。
考虑图6所给的例子。
图中表明了对一幅具有简单阶跃边缘的图像进行拉普拉斯运算的结果。
输出图像中的一行是:
在本例中,对应于原始图像边缘的零交叉点位于两个中心像素点之间。
因此,边缘可以用其左边的像素或右边的像素来标记,但整幅图像的标记必须一致。
在多数情况下,零交叉点很少恰好在两像素点中间,因此边缘的实际位置要通过内插值来确定。
图6(a)为包含垂直阶跃边缘的图像(b)为垂直方向的阶跃边缘拉普拉斯响应
现在考虑一下图7所示的例子。
该图给出了拉普拉斯算法对斜坡边缘的响应,其中的一行输出是:
零交叉点直接对应着图像中的一个像素点。
当然,这是一种理想情况,图像边缘的实际情况要比这个复杂的多。
图7(a)为包含垂直斜坡边缘的图像(b)为垂直方向的斜坡边缘拉普拉斯响应
拉普拉斯算子有两个缺点:
其一是边缘方向信息的丢失,其二是它是二阶差分,双倍加强了图像中噪声影响。
所以,后来才有人提出了改进的LoG算法。
∙LoG算子
正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感。
所以,希望在边缘增强前滤除噪声。
为此,Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LoG(LaplaciallofGausSian,LoG)算法,也有人称之为拉普拉斯高斯算法。
LoG算法理论是从生物视觉理论导出的方法。
其基本思想是:
首先在一定范围内做平滑滤波,然后利用差分算子检测在相应尺度上的边缘。
滤波器的选择取决于两个因素,一是要求滤波器在空间上平稳,空间位置误差
要小,二是要求平滑滤波器本身是带通滤波器,在其有限带通内是平稳的,即要求频域误差∆ω要小。
由信号处理中的测不准原理知,∆x与∆ω是矛盾的,达到测不准下限的滤波器是高斯滤波器。
Marr和Hildreth提出的差分算子是各向同性的拉普拉斯二阶差分算子。
LoG边缘检测器的基本特征是
(1)平滑滤波器是高斯滤波器
(2)增强步骤采用二阶导数(二维拉普拉斯函数)
(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值
这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除[9]。
由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点,这一点可以用二阶导数的零交叉点来实现。
拉普拉斯函数用作二维二阶导数的近似,是因为它是一种无方向算子。
为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点[10]。
LoG算子的输出h(x,y)是通过卷积运算得到的:
根据卷积求导法有:
其中:
称之为墨西哥草帽算子。
由以上分析知,下面两种方法在数学上是等价的:
(1)求图像与高斯滤波器卷积,再求卷积的拉普拉斯变换
(2)求高斯滤波器的拉普拉斯变换,再求与图像的卷积
如果采用第一种方法,就要用到高斯平滑滤波器。
直接实现LoG算法的典型模板见图8。
图8典型拉普拉斯高斯模板
滤波(通常是平滑)、增强、检测这三个边缘检测步骤对使用LoG边缘检测仍然成立,其中平滑是用高斯滤波器来完成的;增强是将边缘转换成零交叉点来实现的;边缘检测则是通过检测零交叉点来进行的。
可以看到,零交叉点的斜率依赖于图像强度在穿过边缘时的变化对比度。
剩下的问题是把那些由不同尺度算子检测到的边缘组合起来。
在上述方法中,边缘是在特定的分辨下得到的。
为了从图像中得到真正的边缘,有必要把那些通过不同尺度算子得到的信息组合起来。
这里介绍一下尺度空间概念。
高斯平滑运算导致图像中边缘和其它尖锐不连续部分的模糊,其中模糊量取决于σ的值。
σ值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能。
如果用小尺度的滤波器,又有可能平滑不完全而留有太多的噪声。
大尺度滤波器在平滑相互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘。
因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的尺度[11]。
∙Canny算子
Canny检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。
检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。
由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。
图像也受到摄像机噪声和场景中不希望的细节的干扰。
图像梯度逼近必须满足两个要求:
首先逼近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置。
抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。
有一种线性算子可以在抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯函数的一阶导数。
Canny根据检测的要求,定义了下面三个最优准则:
(1)最优检测。
对真实边缘不漏检,非边缘点不错检,即要求输出信噪比最大。
(2)最优检测精度。
检测的边缘点的位置距实际的边缘点的位置最近。
(3)检测点与边缘点一一对应。
每一个实际存在的边缘点和检测的边缘点是一一对应的关系。
Canny首次将上述判据用是数学的形式表示出来,然后采用最优化数值方法,得到最佳边缘检测模板。
对于二维图像,需要使用若干方向的模板分别对图像进行卷积处理,再取最可能的边缘方向。
现在对Canny边缘检测器作一概括说明。
用f[i,j]表示图像。
使用可分离滤波方法求图像与高斯平滑滤波器卷积,得到的结果是一个已平滑数据阵列。
其中G[i,j;σ]代表一个高斯滤波的过程,而σ是高斯函数的标准差,它控制着平滑程度。
已平滑数据阵列S[i,j]的梯度可以使用2×2一阶有限差分近似式来计算x与y偏导数的两个阵列P[i,j]与Q[i,j]:
在这个2×2正方形内求有限差分的均值,以便在图像中的同一点计算x和y的偏导数梯度。
幅值和方位角可用直角坐标到极坐标的坐标转化公式来计算:
其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个圆周范围内。
为高效率地计算这些函数,尽量不用浮点运算。
梯度的幅度和方向也可以通过查找表由偏导数计算。
反正切函数的大多数计算使用的是定点运算,很少的几个计算是基本浮点运算,其中的浮点运算是由整数和定点算术通过软件实现的。
在上式中,M[i,j]反映了图像上的点[i,j]处的边缘强度,𝜃[i,j]是图像点[