《基于+Matlab+的数字图像边缘检测算法研究复习课程.doc》由会员分享,可在线阅读,更多相关《基于+Matlab+的数字图像边缘检测算法研究复习课程.doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。基于+Matlab+的数字图像边缘检测算法研究-基于Matlab的数字图像边缘检测算法研究目录引言31基于一阶微分的边缘检测算法71.1Roberts算子71.2Prewitt算子81.3Kirsch算子82基于二阶微分的边缘检测算法102.1Laplacian算子102.2LoG算子122.3Canny算子153最佳Sobel边缘检测方法183.1Sobel图像边缘检测方法183.2改进的Sobel边缘检测方法183.3Sobel算子的最佳阈值选取194基于Matlab的实验结果与分析224.1Mat
2、lab简介224.2一阶微分算法的实验结果与分析254.3二阶微分算法的实验结果与分析304.4最佳Sobel边缘检测算法的实验结果与分析35结论40致谢42参考文献43附录源程序清单45摘要在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去.它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础.边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆满解决的一类问题.图像的边缘包含了图像的位置,轮廓等特征,是图像的基本特征之一,广泛地应用于特征描述,图像分割,图像增强,图像复原,模式识别,图像压缩等图像分析和处
3、理中.因此,图像边缘和轮廓特征的检测与提取方法,一直是图像处理与分析技术中的研究热点,新理论,新方法不断涌现.本文研究了一些边缘检测算法,包括传统的Roberts,Sobel,Prewitt,LoG,Canny,Kirsch等算法.经典边缘检测方法的抗噪声性能都较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要.传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法.本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值.文章中关于这些方法都有较详细的介绍,以及算法的实现步骤.对算法均进行了
4、仿真实验.论文的主要目的是进行图像边缘检测算法性能比较的研究.实验结果表明,本文的算法比较可以为图像处理的后续环节提供一些有益的参考.关键词:边缘检测;图像处理;Matlab;Sobel;检测算法AbstractInimageprocessing,asabasiccharacteristic,theedgeoftheimage,whichiswidelyusedintherecognition,segmentation,intensificationandcompressoftheimage,isoftenappliedtohigh-leveldomain.Edgedetectionisone
5、ofthemostfundamentalsinimageprocessingandanalyzing,whichisstillunsolved.Imagesedgesincludeimagesfeaturessuchaspositionandoutline,whichbelongtothefundamentalfeatures.Edgedetectioniswidelyusedinimageanalysisandprocessingsuchasfeaturedescription,imagesegmentation,imageenhancement,patternrecognitionandi
6、magecompressionetc,soEdgeDetectionandextractofoutlinefigurearetheresearchhotspotinthetechnologyofimageprocessingandanalysisall,onwhichthenewtheoryandmethodsareputforwardconstantly.Someedgedetectionalgorithmsareresearched,includingRoberts,Sobel,Prewitt,LoG,Canny,Kirschetc.Theclassicedgedetectionmetho
7、dshavesomedrawbacksinimagedenoising.Themainideaofresolvingthisproblemistosetathreshold,thencomparethethresholdwiththehigh-frequencycomponentsofanimagetoremovethenoise.Thechoiceofthethresholdisthekeyofimagedenoising.Thethresholdoftraditionalmethodsisobtainedbyexperiments,andthereisnogeneralmethodtode
8、termineit.AnewmethodofedgeestimationbytheMaximumaPosteriori(MAP)ispresentedinthispaper.Itproveshowtochoosetheoptimalthresholdintheory.Thesealgorithmsareintroducedindetail,andthestepsofalgorithmrealizationareintroducetoo.Thealgorithmistestedbysimulation.ThemainaimofthepaperisstudyingPerformanceEvalua
9、tioninedgedetectionalgorithms,andthedetectionresultsarecompared.Theexperimentsresultsshowthatthealgorithmscanbeausefulreferenceoflatterpartsofimageprocessing.Keywords:edgedetection;imageprocessing;Matlab;Sobel;detectionalgorithm引言图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息.而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点
10、给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘.而边缘检测算法则是图像处理问题中经典技术难题之一,它的解决对于进行高层次的特征描述,识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题1.在通常情况下,可以将信号中的奇异点和突交点认为是图像中的边缘点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映.根据这一特点,提出了多种边缘检测算子:如Robert算子,Sobel算子,Prewitt算子,Laplacian
11、算子等.这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果.但这类方法同时也存在有边缘像素宽,噪声干扰较严重等缺点,即使采用一些辅助的方法加以去噪,也相应的会带来边缘模糊等难以克服的缺陷.解决该问题的丰要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要2.传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法.本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值.图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化
12、比较剧烈的地方,即通常所说的信号发生奇异变化的地方.奇异信号沿边缘走向的灰度变化剧烈,通常将边缘划分为阶跃状和屋顶状两种类型如图1所示.阶跃边缘中两边的灰度值有明显的变化;而屋顶状边缘位于灰度增加与减少的交界处.在数学上可利用灰度的导数来刻画边缘点的变化,对阶跃边缘,屋顶状边缘分别求其一阶,二阶导数3.图1阶跃边缘和屋顶状边缘处一阶和二阶导数变化规律(其中第一排为理想信号,第二排对应实际信号)对一个边缘来说,有可能同时具有阶跃和线条边缘特性.例如在一个表面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线
13、经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘.由于边缘可能与场景中物体的重要特征对应,所以它是很重要的图像特征.比如,一个物体的轮廓通常产生阶跃边缘,因为物体的图像强度不同于背景的图像强度.论文选题来源于在图像工程中占有重要的地位和作用的实际应用课题.所谓图像工程学科是指将数学,光学等基础学科的原理,结合在图像应用中积累的技术经验而发展起来的学科.图像工程的内容非常丰富,根据抽象程度和研究方法等的不同分为三个层次:图像处理,图像分析和图像理解.如图2所示,在图中,图像分割处于图像分析与图像处理之间,其含义是,图像分割是从图
14、像处理进到图像分析的关键步骤,也是进一步理解图像的基础.图像工程图像处理图像分割图像分析图像理解图2图像分割在图像工程中的地位和作用图像分割对特征有重要影响.图像分割及基于分割的目标表达,特征提取和参数测量等将原始图像转化为更抽象更紧凑的形式,使得更高层的图像分析和理解成为可能.而边缘检测是图像分割的核心内容,所以边缘检测在图像工程中占有重要的地位和作用.因此边缘检测的研究一直是图像技术研究中热点和焦点,而且人们对其的关注和投入不断提高.本文的主要工作如下:(1)本文对图像边缘检测作了一个概要的说明,并说明了进行图像边缘检测的重要意义.(2)系统的介绍了比较经典的基于一阶微分的图像边缘检测算子
15、及其具体的实现原理,为介绍基于二阶微分的图像边缘检测算子做铺垫,以便于大家的理解.(3)系统介绍了比较经典的基于二阶微分的图像边缘检测算子及其具体的实现原理.(4)介绍了一种基于Sobel算子的改进型算法,此方法的最大优点是:在去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果.(5)对上述的算法用Matlab为工具进行仿真,并对其仿真结果进行分析,分析各种算法的特点.1基于一阶微分的边缘检测算法1.1Roberts算子由Roberts提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在22邻域上计算对角导数,Gi,j=(fi,jfi+
16、1,j+1)+(fi+1,jfi,j+1)22(1-1)Gi,j又称为Roberts交叉算子.在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:Gi,j=fi,jfi+1,j+1+fi+1,jfi,j+1(1-2)用卷积模板,上式变成:Gi,j=Gx+Gy(1-3)其中Gx和Gy由下面图3所示的模板计算:图3Robert边缘检测算子的模板Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值.由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值Gi,j,然后选取适当的门限TH,作如下判断:Gi,jTH,i,j为阶跃状边缘点,Gi,j为一个二值图
17、像,也就是图像的边缘.由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子4.1.2Prewitt算子为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发.由22扩大到33来计算差分算子,所以其卷积模板为图4所示:图4Prewitt边缘检测算子的模板在图像中的每个像素位置都用这2个模板做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下:fx=f(x1,y+1)+f(x,y+1)+f(x+1,y+1)f(x1,y1)f(x,y1)f(x+1,y1)(1-4)fy=f(x+1,y1)+f(x+1,y)
18、+f(x+1,y+1)f(x1,y1)f(x1,y)f(x1,y+1)(1-5)根据(1-4)和(1-5)式可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得到一幅边缘二值图像.采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响5.1.3Kirsch算子1971年,R.Kirsch提出了一种能检测边缘方向的Kirsch算子新方法:它使用了8个模板来确定梯度幅度值和梯度的方向.Kirsch算子是用一组模板对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向6.常用的八方向Kirsch模板各方向间的夹角为45度,模板如图5所示:图5Kir
19、sch边缘检测算子的模板上述算子都是计算一阶导数的边缘检测器.其基本思想都是:如果所求的一阶导数高于某一阈值,则确定该点为边缘点.但是这样做会导致检测的边缘点太多.总的来说,造成这些算子不能准确判定边缘的存在及正确位置的原因在于:(1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测出多个边缘.(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘.(3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算子.在线性滤波边缘检测方法中,最具代表性的是Marr-Hildreth提出
20、的LoG(LaplacianofGaussian)算法,Canny最优算子的边缘检测方法7.2基于二阶微分的边缘检测算法2.1Laplacian算子拉普拉斯算子是二阶导数的二维等效式.函数f(x,y)的拉普拉斯算子公式为:2f=2f2f+x2y2(2-1)使用差分方程对x和y方向上的二阶偏导数近似如下:2fGx=x2x(fi,j+1fi,j)=xfi,j+1fi,j=xx=(fi,j+22fi,j+1)+fi,j(2-2)这一近似式是以点fi,j+1为中心的,用j-1替换j得到2f=(fi,j+12fi,j)+fi,j1x2(2-3)它是以点i,j为中心的二阶偏导数的理想近似式,类似地,2f=
21、(fi+1,j2fi,j)+fi1,jx2(2-4)把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯算子的模板:0101410102(2-5)有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种基于这种思想的近似拉普拉斯算子:14142041412(2-6)当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区).原则上,过零点的位置精度可以通过线性内插方法精确到子像素分辨率,不过由于噪声,以及由噪声引起的边缘两端的不对称性,结果可能不会很精确8.考虑图6所给的例子.图中表明了对一幅具有简单阶跃边缘的图像进行拉普拉斯运
22、算的结果.输出图像中的一行是:在本例中,对应于原始图像边缘的零交叉点位于两个中心像素点之间.因此,边缘可以用其左边的像素或右边的像素来标记,但整幅图像的标记必须一致.在多数情况下,零交叉点很少恰好在两像素点中间,因此边缘的实际位置要通过内插值来确定.图6(a)为包含垂直阶跃边缘的图像(b)为垂直方向的阶跃边缘拉普拉斯响应现在考虑一下图7所示的例子.该图给出了拉普拉斯算法对斜坡边缘的响应,其中的一行输出是:零交叉点直接对应着图像中的一个像素点.当然,这是一种理想情况,图像边缘的实际情况要比这个复杂的多.图7(a)为包含垂直斜坡边缘的图像(b)为垂直方向的斜坡边缘拉普拉斯响应拉普拉斯算子有两个缺点
23、:其一是边缘方向信息的丢失,其二是它是二阶差分,双倍加强了图像中噪声影响.所以,后来才有人提出了改进的LoG算法.2.2LoG算子正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感.所以,希望在边缘增强前滤除噪声.为此,Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LoG(LaplaciallofGausSian,LoG)算法,也有人称之为拉普拉斯高斯算法.LoG算法理论是从生物视觉理论导出的方法.其基本思想是:首先在一定范围内做平滑滤波,然后利用差分算子检测在相应尺度上的边缘.滤波器的选择取决于两个因素,一是要求滤波器在空间上平稳,空间位置
24、误差x要小,二是要求平滑滤波器本身是带通滤波器,在其有限带通内是平稳的,即要求频域误差要小.由信号处理中的测不准原理知,x与是矛盾的,达到测不准下限的滤波器是高斯滤波器.Marr和Hildreth提出的差分算子是各向同性的拉普拉斯二阶差分算子.LoG边缘检测器的基本特征是(1)平滑滤波器是高斯滤波器(2)增强步骤采用二阶导数(二维拉普拉斯函数)(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除9.由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边
25、缘点,这一点可以用二阶导数的零交叉点来实现.拉普拉斯函数用作二维二阶导数的近似,是因为它是一种无方向算子.为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点10.LoG算子的输出h(x,y)是通过卷积运算得到的:h(x,y)=2g(x,y)f(x,y)(2-7)根据卷积求导法有:h(x,y)=2g(x,y)f(x,y)(2-8)其中:x2+y222g(x,y)=e42x2+y222(2-9)称之为墨西哥草帽算子.由以上分析知,下面两种方法在数学上是等价的:(1)求图像与高斯滤波器卷积,再求卷积的拉普拉斯变换(2)求高斯滤波器的拉普拉斯变换,再求与图像的卷积如果采用第一种方
26、法,就要用到高斯平滑滤波器.直接实现LoG算法的典型模板见图8.图8典型拉普拉斯高斯模板滤波(通常是平滑),增强,检测这三个边缘检测步骤对使用LoG边缘检测仍然成立,其中平滑是用高斯滤波器来完成的;增强是将边缘转换成零交叉点来实现的;边缘检测则是通过检测零交叉点来进行的.可以看到,零交叉点的斜率依赖于图像强度在穿过边缘时的变化对比度.剩下的问题是把那些由不同尺度算子检测到的边缘组合起来.在上述方法中,边缘是在特定的分辨下得到的.为了从图像中得到真正的边缘,有必要把那些通过不同尺度算子得到的信息组合起来.这里介绍一下尺度空间概念.高斯平滑运算导致图像中边缘和其它尖锐不连续部分的模糊,其中模糊量取
27、决于的值.值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能.如果用小尺度的滤波器,又有可能平滑不完全而留有太多的噪声.大尺度滤波器在平滑相互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘.因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的尺度11.2.3Canny算子Canny检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点.检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近.由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立.图像也受到摄像机噪声
28、和场景中不希望的细节的干扰.图像梯度逼近必须满足两个要求:首先逼近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置.抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性.有一种线性算子可以在抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯函数的一阶导数.Canny根据检测的要求,定义了下面三个最优准则:(1)最优检测.对真实边缘不漏检,非边缘点不错检,即要求输出信噪比最大.(2)最优检测精度.检测的边缘点的位置距实际的边缘点的位置最近.(3)检测
29、点与边缘点一一对应.每一个实际存在的边缘点和检测的边缘点是一一对应的关系.Canny首次将上述判据用是数学的形式表示出来,然后采用最优化数值方法,得到最佳边缘检测模板.对于二维图像,需要使用若干方向的模板分别对图像进行卷积处理,再取最可能的边缘方向.现在对Canny边缘检测器作一概括说明.用fi,j表示图像.使用可分离滤波方法求图像与高斯平滑滤波器卷积,得到的结果是一个已平滑数据阵列.Si,j=Gi,j;fi,j(2-10)其中Gi,j;代表一个高斯滤波的过程,而是高斯函数的标准差,它控制着平滑程度.已平滑数据阵列Si,j的梯度可以使用22一阶有限差分近似式来计算x与y偏导数的两个阵列Pi,j
30、与Qi,j:Pi,j(Si,j+1Si,j+Si+1,j+1Si+1,j)2Qi,j(Si,jSi+1,j+Si,j+1Si+1,j+1)2(2-11)(2-12)在这个22正方形内求有限差分的均值,以便在图像中的同一点计算x和y的偏导数梯度.幅值和方位角可用直角坐标到极坐标的坐标转化公式来计算:Mi,j=Pi,j+Qi,j22(2-13)(2-14)i,j=arctan(Qi,jPi,j)其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个圆周范围内.为高效率地计算这些函数,尽量不用浮点运算.梯度的幅度和方向也可以通过查找表由偏导数计算.反正切函数的大多数计算使用的是定点运算,很
31、少的几个计算是基本浮点运算,其中的浮点运算是由整数和定点算术通过软件实现的.在上式中,Mi,j反映了图像上的点i,j处的边缘强度,i,j是图像点i,j的法向矢量,正交于边缘方向.根据Canny的定义,中心边缘点为算子Gi,j;与图像fi,j的卷积在边缘梯度方向上的最大值,这样就可以在每一个点的梯度方向上判断此点强度是否为其邻域的最大值来确定该点是否为边缘点.当一个像素满足下面三个条件时,则被认为是图像的边缘点:(1)该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度(2)与该点梯度方向上相邻两点的方向差小于4(3)以该点为中心的33邻域中的边缘强度极大值小于某个阈值Canny给出的这三
32、个判据具有广泛的代表意义12.3最佳Sobel边缘检测方法3.1Sobel图像边缘检测方法传统的Sobel图像边缘检测方法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的.这两个方向模板一个检测垂直边缘,一个检测水平边缘,如图9所示.图中,模板内的数字为模板系数,梯度方向与边缘方向总是正交水平边缘Sobel算子垂直边缘Sobel算子图9Sobel算子模板元素和窗口像素之间的对应关系(以33窗口为例)定义如下:设窗口灰度为:F(j1,k1)F=F(j,k1)F(j+1,k1)F(j,k)F(j+1,k)F(j1,k)F(j1,k+1)F(j,k+1)F(j+1,k+1)(3-1)模板卷积
33、计算就是下式求乘积和的过程:fi(j,k)=m=1n=1F(j+m,k+n)M11im,n(3-2)式中,i=1,2分别代表垂直和水平模板.fi(j,k)为模板卷积法边缘检测的输出,l=L2,L为窗口宽度,对33窗口,l=1.将两个卷积结果的最大值,赋给图像中对应模板中心位置的像素,作为该像素的新灰度值,即:fmax=max(fi(j,k)i=1,2(3-3)3.2改进的Sobel边缘检测方法一种改进的Sobel边缘检测方法,就是在3.1节中两个模板的基础上,又增加六个方向的模板,即45,135,180,225,270,315,具体如图10所示.这样可以更加有效地检测图像多个方向的边缘,使边缘
34、信息更加完整.上面式(3-2),式(3-3)中的i=1,2,8代表图中的八个方向13.图10边缘检测的八个方向模板3.3Sobel算子的最佳阈值选取尽管八方向的Sobel算子可以得到更完整的边缘信息,但是和Sobel算子一样,它们的抗噪声能力都较差,即对于叠加噪声图像的边缘检测效果很不理想.解决该问题的一个方法就是设定一个阈值,然后与经过Sobel算子检测后的边缘值进行比较,当其幅值大于该阈值时定义为边缘,反之取为零,如式(3-4)所示.A,fi(j,k)Tg(j,k)=0,fi(j,k)T0T0sl(m,n)=xl(m,n)T00,(3-7)其中,T0=2s2wl(3-8)(3-7)式给出的
35、边缘估计方法在小波域称为软门限去噪法,因此可以认定T0即为所需要的最佳阈值.可以看出,由(3-7)式和(3-8)式所给出的边缘估计的特点是:当图像边缘的幅值大于阈值时,边缘的估计值为边缘幅值减去阈值.因此,具有更强的去噪功能.为了由(3-7)式得到边缘信号的最佳估计,首先需要确定T0的值.因此要分别估计出s和w的值.l假定图像大小为MM,那么w的值可以用中值法估计:lw=lmedianxl(m,n)0.6745,1m,nM(3-9)其中median表示取中值的运算.这样,注意到2x2=s2+wll(3-10)及x=l21MM2xl(m,n)M2m=1n=1(3-11)就可以得到2s=maxxw
36、,0ll(2)(3-12)把上面的(3-9),(3-12)给出的s和w,的估计值代入(3-7),就可以得到l阈值T0,即最佳阈值.上述方法的最大优点是:在去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果15.4基于Matlab的实验结果与分析4.1Matlab简介在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算.这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编制相应的程序做近似计算.目前流行用Basic,Fortran和C语言编制计算程序,既需要对有关算法有深刻的了解,还需要熟练地掌握所用语言的语法及编程技巧.对多数科学工作者而言,同时具备这两方面
37、技能有一定困难.通常,编制程序也是繁杂的,不仅消耗人力与物力,而且影响工作进程和效率.为克服上述困难,美国Mathwork公司于1967年推出了MatrixLaboratory(缩写为Matlab)软件包,并不断更新和扩充.目前最新的5.x版本(windows环境)是一种功能强,效率高便于进行科学和工程计算的交互式软件包.其中包括:一般数值分析,矩阵运算,数字信号处理,建模和系统控制和优化等应用程序,并集应用程序和图形于一体便于使用的集成环境中.在此环境下所解问题的Matlab语言表述形式和其数学表达形式相同,不需要按传统的方法编程.不过,Matlab作为一种新的计算机语言,要想运用自如,充分
38、发挥它的威力,也需先系统地学习它.但由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言如Basic,Fortran和C等那样难于掌握16.实践证明,你可在几十分钟的时间内学会Matlab的基础知识,在短短几个小时的使用中就能初步掌握它.从而使你能够进行高效率和富有创造性的计算.Matlab大大降低了对使用者的数学基础和计算机语言知识的要求,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科研助手.自推出后即风行美国,流传世界17.综上所述,Matlab语言有如下特点:(1)编程效率高它是一种面向科学与工程计
39、算的高级语言,允许用数学形式的语言编写程序,且比Basic,Fortran和C等语言更加接近书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题.因此,Matlab语言也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂.(2)用户使用方便Matlab语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活,方便,其调试程序手段丰富,调试速度快,需要学习时间少.人们用任何一种语言编写程序和调试程序一般都要经过四个步骤:编辑,编译,连接以及执行和调试.各个步骤之间是顺序关系,编程的过程就是在它们之间作瀑布型的循环.Matlab语言与其它语言相
40、比,较好地解决了上述问题,把编辑,编译,连接和执行融为一体.它能在同一画面上进行灵活操作快速排除输入程序中的书写错误,语法错误以至语意错误,从而加快了用户编写,修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言.具体地说,Matlab运行时,如直接在命令行输入Mailab语句(命令),包括调用M文件的语句,每输入一条语句,就立即对其进行处理,完成绩译,连接和运行的全过程.又如,将Matlab源程序编辑为M文件,由于Mat1ab磁盘文件也是M文件,所以编辑后的源文件就可直接运行,而不需进行编译和连接.在运行M文件时,如果有错,计算机屏幕上会给出详细的出锗信息,用户经修改后
41、再执行,直到正确为止.所以可以说,Mat1ab语言不仅是一种语言,广义上讲是一种该语言开发系统,即语言调试系统.(3)扩充能力强高版本的Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用.因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高Matlab使用效率和扩充它的功能.另外,为了充分利用Fortran,C等语言的资源,包括用户已编好的Fortran,C语言程序,通过建立Me调文件的形式,混合编程,方便地调用有关的Fortran,C语言的子程序.(4)语句简单,内涵丰
42、富Mat1ab语言中最基本最重要的成分是函数,其一般形式为a,b,c=fun(d,e,f,),即一个函数由函数名,输入变量d,e,f,和输出变量a,b,c组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性.这不仅使Matlab的库函数功能更丰富,而大大减少了需要的磁盘空间,使得Matlab编写的M文件简单,短小而高效.(5)高效方便的矩阵和数组运算Matlab语言象Basic,Fortran和C语言一样规定了矩阵的算术运算符,关系运算符,逻辑运算符,条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变地照搬到数组间的运算
43、,有些如算术运算符只要增加就可用于数组间的运算,另外,它不需定义数组的维数,并给出矩阵函数,特殊矩阵专门的库函数,使之在求解诸如信号处理,建模,系统识别,控制,优化等领域的问题时,显得大为简捷,高效,方便,这是其它高级语言所不能比拟的.在此基础上,高版本的Matlab已逐步扩展到科学及工程计算的其它领域.因此,不久的将来,它一定能名符其实地成为万能演算纸式的科学算法语言.(6)方便的绘图功能Matlab的绘图是十分方便的,它有一系列绘图函数(命令),例如线性坐标,对数坐标,半对数坐标及极坐标,均只需调用不同的绘图函数(命令),在图上标出图题,XY轴标注,格(栅)绘制也只需调用相应的命令,简单易
44、行.另外,在调用绘图函数时调整自变量可绘出不变颜色的点,线,复线或多重线.这种为科学研究着想的设计是通用的编程语言所不及的.总之,Matlab语言的设计思想可以说代表了当前计算机高级语言的发展方向,在不断使用中,人们会发现它的巨大潜力18.4.2一阶微分算法的实验结果与分析4.2.1实验程序清单Roberts算子程序:clcclearallcloseallA=imread(cameraman.tif);%读入图像imshow(A);title(原图);x_mask=10;0-1;%建立X方向的模板y_mask=rot90(x_mask);%建立Y方向的模板I=im2double(A);%将图像
45、数据转化为双精度dx=imfilter(I,x_mask);%计算X方向的梯度分量dy=imfilter(I,y_mask);%计算Y方向的梯度分量grad=sqrt(dx.*dx+dy.*dy);%计算梯度grad=mat2gray(grad);%将梯度矩阵转换为灰度图像level=graythresh(grad);%计算灰度阈值BW=im2bw(grad,level);%用阈值分割梯度图像figure,imshow(BW);%显示分割后的图像即边缘图像title(Roberts)Prewitt算子程序:clcclearallcloseallA=imread(cameraman.tif);%读入图像imshow(A);title(原图);y_mask=-1-1-1;000;111;%建立Y方向的模板x_mask=y_mask;%建立X方向的模板I=im2double(A);%将图像数据转化为双精度dx=imfilter(I,x_mask);%计算X方向的梯度分量dy=imfilter(I,y_mask);%计算Y方向的梯度分量grad=sqrt(dx.*dx+dy.*dy);%计算梯度grad=ma