基于matlab的图像分割算法研究与仿真—-毕业论文设计.doc

上传人:可****阿 文档编号:91636196 上传时间:2023-05-27 格式:DOC 页数:33 大小:556.86KB
返回 下载 相关 举报
基于matlab的图像分割算法研究与仿真—-毕业论文设计.doc_第1页
第1页 / 共33页
基于matlab的图像分割算法研究与仿真—-毕业论文设计.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《基于matlab的图像分割算法研究与仿真—-毕业论文设计.doc》由会员分享,可在线阅读,更多相关《基于matlab的图像分割算法研究与仿真—-毕业论文设计.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、摘 要随着信息化程度的加深,图像作为包含大量信息的载体形式越来越能体现出它强大的信息包含能力。图像分割是进行图像分析的关键步骤,也是进一步理解图像的基础。图像分割在图像工程中位于图像处理和图像分析之间。图像分割就是把图像分割成一系列有意义、各具特征的目标或区域的过程。虽然图像分割算法有很多种,但是到目前位置还没有通用的图像分割算法。论文综述了阈值分割、区域生长、分裂合并和边缘检测图像分割算法。首先介绍了图像分割的研究意义及国内外研究现状。接着介绍了阈值分割、区域生长、分裂合并和边缘检测图像分割算法的基本原理及其MATLAB仿真结果。最后介绍了MATLAB图形用户界面设计。MATLAB仿真结果表

2、明:各种图像分割算法各有其优缺点及其适用范围。因此,在对一幅图像进行分割之前,首先要对图像进行判断分析,然后再选择恰当的分割算法,这样才能得到比较令人满意的分割效果。关键词:图像分割;阈值分割;区域生长;分裂合并;边缘检测;MATLABAbstractAs a media containing great amount of information, image embodies its powerful ability with the deepening of informationization. Image segmentation is not only a key step bef

3、ore image analysis, but also the basis of further understanding image. Image segmentation locates between image process and image analysis. The process of dividing an image into a series of meaningful and characteristic objects or regions is called image segmentation. Although there are many kinds o

4、f image segmentation algorithms, there is no general image segmentation algorithm by now. This paper summarizes such image algorithms as threshold segmentation, region growing ,split and merge as well as edge detection. Firstly, research meaning and state around the world of image segmentation is in

5、troduced. Secondly, basic principle and MATLAB simulation results of threshold segmentation, region growing, split and merge as well as edge detection image segmentation algorithm is introduced. Finally, graphic user interface of MATLAB is introduced. The MATLAB simulation results demonstrate that d

6、ifferent image segmentation algorithms are of different advantages and disadvantages as well as its application. Therefore, image should be analyzed first and then appropriate image segmentation algorithm is selected before segmentation so as to acquire satisfactory results. Key words: image segment

7、ation;threshold segmentation; region growing; split and merge ; edge detection; MATLAB目 录 1 引 言11.1 图像与数字图像处理11.2 研究图像分割处理的意义11.3 图像分割技术的背景和国内外研究现状22 图像目标分割与提取技术的方法综述42.1 阈值分割42.1.1概述42.1.2全局阈值52.1.3局部阈值52.1.4动态阈值62.2 区域生长和分裂合并62.2.1区域生长法62.2.2区域合并和分裂72.3 边缘检测82.3.1微分算子82.3.2边界连接113 MATLAB仿真程序123.1

8、阈值算法MATLAB仿真结果123.1.1 阈值算法MATLAB仿真结果123.1.2小结143.2 基于MATLAB的几种常用边缘检测代码(见附录):143.2.1 边缘检测MATLAB仿真结果143.2.2 小结154 MATLAB GUI设计164.1 MATLAB简介164.2 图形用户界面GUI164.3 GUI设计原理及简介164.4 设计方法174.4.1图形用户界面设计工具174.4.2菜单设计184.4.3对话框设计184.4.4句柄图形184.4.5 图形对象句柄命令194.5 总结195 结论与展望205.1 结论205.2 展望20致 谢21参考文献22附 录23III

9、基于MATLAB的图像分割算法研究与仿真1 引 言 据研究,在人类所接受到的全部信息中,约有75%80%是通过视觉系统得到的,和语言或文字信息相比,图像包含的信息量更大、更直观、更确切,因而具有更高的使用效率和更广泛的适应性。当我们获得一副巨大的图像时,进行合理地分割和处理,可以获得对图像的进一步识别、分析和理解。这些都是我们的日常工作所需要的。1.1 图像与数字图像处理 客观世界在空间上是三维(3-D)的,但一般从客观景物得到的图像是二维(2-D)的。一幅图像可以定义为一个二维函数f(x,y),这里 x和y 表示表示2-D空间中一个坐标点的位置,而幅值f则代表图像在坐标(x,y)上的某种性质

10、的数值。例如常用的图像一般是灰度图,这时f表示灰度值,它常对应客观景物被观察到的亮度。 日常所见图像多是连续的,即f(x,y)的值可以任意实数。为了能用计算机对图像进行加工,需要把连续的图像在坐标空间x,y和幅值f都离散化。这种离散化了的图像就是数字图像,数字图像是由有限的元素组成的,每个元素都有一个特定的位置和幅值,这些元素称为图像像素。数字图像常用矩阵来描述。一幅MN个像素的数字图像,其像素灰度值可以用M行、N列的矩阵G表示:在存储图像时,一幅M行、N列的数字图像(MN个像素),可以用一个MN的二维数组T来表示。图像的各个像素灰度值可按一定的顺序存放在数组T中。习惯上把数字图像左上角的像素

11、定义为第(1,1)个像素,右下角的像素定义为第(M,N)个像素。数字图像处理,就是把数字图像经过一些特定数理模式的加工处理,以达到有利于人眼视觉或某种接收系统所需要的图像的过程。如对被噪声污染的图像除去噪声,对信息微弱的图像进行增强,对失真的图像进行几何校正等。随着计算机软硬件技术的突飞猛进,以及数字处理技术的不断发展,数字图像处理在科学研究、工业生产、国防以及现代管理决策等各行各业都得到越来越多的应用1。1.2 研究图像分割处理的意义数字图像目标分割与提取是数字图像处理和计算机视觉领域中一个备受关注的研究分支。因为在目标分割与提取过程中可以利用大量的数字图像处理的方法,加上其在计算机视觉、模

12、式识别等领域中的广泛应用,都吸引了众多研究者的注意。相信对这一问题的深入研究不仅会不断完善对这一问题的解决,而且必将推动模式识别、计算机视觉、人工智能等计算机科学分支的发展。图像分割和边缘检测的问题在近二十年中得到了广泛的关注和长足的发展,国内外很多研究人士提出了很多方法,在不同的领域取得了一定的成果。但是对于寻找一种能够普遍适用于各种复杂情况的准确率很高的分割和检测算法,还有很大的探索空间。边缘提取和分割是图像分析的经典研究课题之一,目前的理论和方法仍存在许多不足之处,仍在不断改进和发展。需要说明的是:边缘与物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实

13、场景中的存在与物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外成像的过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者们正在试图在边缘提取中加入高层的语义信息。由于图像的多意性和复杂性,许多分割的工作无法依靠计算机自动完成,而手工分割又存在工作量大,定位不准确的难题,因此,人们提出了一些人工交互和计算机自动定位相结合的方法,利用各自的优势,实现目标轮廓的快速定位。相信这些交互式方法的应用,必将推动图

14、像目标分割与提取这一既具有广阔的应用前景又具有重要的学术价值的课题的进一步研究,也必将成为一个更为独立和活跃的研究领域。1.3 图像分割技术的背景和国内外研究现状所谓图像分割就是根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将要识别的目标从背景或其他伪目标中分离出来。图像分割是图像理解的重要组成部分,其目的是将目标和背景分离,为目标识别、精确定位等后续处理提供依据,其结果将直接影响到其后的信息处理过程。如何快速、有效地将感兴趣的目标从复杂的背景中分割出来一直是国内外研究的热点。分割问题的困难在于图像数据的模糊和噪声的干扰。到目前为止,还没有一种或者几种完善的分割方法,可以按

15、照人们的意愿准确的分割任何一种图像。实际图像中景物情况各异,具体问题具体分析,需要根据实际情况选择适合的方法。分割结果的好坏或者正确与否,目前还没有一个统一的评价判断准则,分割的好坏必须从分割的效果和实际应用场景来判断。不过在人类研究图像的历史中,还是积累了许多经典的图像分割方法。虽然这些分割方法不适合所有类型的图像分割,但是这些方法却是图像分割方法进一步发展的基础。事实上,现代一些分割算法恰恰是从经典的分割方法衍生出来的。早期的图像研究中,图像的分割方法主要可以分为两大类。一类是边界方法,这种方法的假设是图像分割结果的某个子区域在原来的图像中一定会有边缘存在;一类是区域方法,这种方法的假设是

16、图像分割结果的子区域一定会有相同的性质,而不同区域的像素没有共同的性质。这两种方法都有缺点和优点,有的学者也试图把两者结合起来进行图像分割,随着计算机处理能力的提高,很多方法不断涌现,如基于彩色分量分割、纹理图像分割。所使用的教学工具和实验手段也是不断的扩展,从时域信号到频域信号处理,近来小波变换也应用在图像分割当中。随着各种理论的不断成熟和完善,图像分割技术已经获得了长足的进步,并广泛地应用到了医学、遥感、红外等多个领域。现在国内外很多大学和科研机构都设有专门的机器视觉实验室对这方面的技术进行更加深入的研究,相信随着这方面研究的不断深入,更新更好的方法将会不断被提出和应用。2 图像目标分割与

17、提取技术的方法综述图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。可是,图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。值得提出的是,没有唯一的标准的分割方法。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分

18、割结果的好坏直接影响对图像的理解。本文将重点介绍一些常用的方法,灰度阈值法、边缘检测与边界连接、区域生长、区域分裂与合并等等2。2.1 阈值分割2.1.1概述阈值化是最常用的一种图像分割技术,其特点是操作简单,分割结果是一系列连续区域。灰度图像的阈值分割一般基于如下假设:图像目标或背景内部的相邻像素间的灰度值是高度相关的,目标与背景之间的边界两侧像素的灰度值差别大,图像目标与背景的灰度分布都是单峰的。如果图像目标与背景对应的两个单峰大小接近,方差较小且均值相差比较大,则该图像的直方图具有双峰性。阈值化常可以有效分割具有双峰性质的图像。阈值分割过程如下:首先确定一个阈值T,对于图像中的每个像素,

19、若灰度值大于T,则将其设置为目标点(值为1),否则设置为背景点(值为0),或则相反,从而将图像分为目标区域与背景区域。同理,在编程实现时,也可以将目录像素设置为255,背景像素设置为0,或则相反,从而将图像分为目标区域与背景区域。用公式可表示为: (2.1)在编程实现时,也可以讲目标像素设置为255,背景像素设置为0,或则相反。当图像中含有多个目标且灰度差别较大时,可以设置多个阈值实现多阈值分割。多阈值分割可表示为: (2.2)式中:为一系列分割阈值;k为赋予每个目标区域的标号;m为分割后的目标区域数减1。阈值分割的关键是如何确定适合的阈值,不同的阈值其处理结果差异很大,会影响特征测量与分析等

20、后续过程。如图2.1所示,阈值过大,会过多的把背景像素分为目标;而阈值过小,又会过多的把目标像素错误分为背景。确定阈值的方法有多种,可以分为不同类型。如果选取的阈值仅与各个像素的灰度有关,则称为局部阈值;如果选取的阈值不仅和局部有关,还和像素的位置有关,则称为动态阈值或则自适应阈值。阈值一般可用下式表示: (2.3)式中:f(x,y)是点(x,y)处的像素灰度值:p(x,y)是该像素邻域的某种局部性质。图2.1 不同阈值时图像分割结果当图像目标和背景之间灰度对比较强时,阈值选取较为容易。实际上,由于不良的光照原因或则过多的图像噪声的影响,目标与背景之间的对比往往不够明显,此时阈值选取并不容易。

21、一般需要对图像进行预处理,如图像平滑去噪,再确定阈值进行分割3。2.1.2全局阈值当图像目标与背景之间具有高对比度时,利用全局阈值可以成功的分割图像。而确定全局阈值的方法很多,如极小点阈值法,迭代阈值法,最优阈值法,Qtsu阈值算法,最大熵法,p参数法等。当具有明显的双峰性质时,可直接从直方图的波谷处选取一个阈值,也可以根据某个准则自动计算出阈值。实际使用时,可根据图像特点确定合适的阈值方法,一般需要用几种方法进行对比试验,以确定分割效果最好的阈值。2.1.3局部阈值当图像目标与背景在直方图上对应的两个波峰陡峭、对称且双峰之间有较深的波谷或双峰相距很远时,利用前面介绍的全局阈值方法可以确定具有

22、较好分割效果的阈值。但是,由于图像噪声等因素的影响,会使用图像直方图双峰之间的波谷被填充或则双峰相距很近。另外,当图像目标与背景面积差别很大时,在直方图上的表现就是较小的一方被另外一方淹没。上面这两种情况都使得本应具有双峰性质的图像基本上变成单峰,难以检测到双峰之间的波谷。为了解决这个问题,除了利用像素自身的性质外,还可以借助像素领域的局部性质(如像素的梯度值与拉普拉斯值)来确定阈值,这就是局部阈值。常用的两种局部阈值方法有直方图变换法和散射图法。2.1.4动态阈值在许多情况下,由于光照不均匀等因素的影响,图像背景的灰度值并不恒定,目录与背景的对比度在图像中也会变化,图像中还可能存在不同的阴影

23、。如果只使用单一的全局阈值对整幅图像分割,则某些区域的分割效果好,而另外一些区域的分割效果可能很差。解决方法之一就是使阈值随图像中的位置缓慢变化,可以将整幅图像分解为一系列子图像,对不同的子图像使用不同的阈值进行分割,这种与像素坐标有关的阈值就称为动态阈值或自适应阈值。子图像之间可以部分重叠,也可以只相邻。图像分解之后,如果子图像足够小,则受光线等因素的影响就会较小,背景灰度也更均匀,目标与背景的对比度也更一致。此时可选用前面介绍的全局阈值方法来确定各个子图像的阈值。下面简要介绍一下动态阈值方法,其基本步骤如下: 将整幅图像分解为一系列相互之间有50%重叠的子图像。 检测各子图像的直方图是否具

24、有双峰性。如果是,则采用最优阈值法确定该子图像的阈值,否则不进行处理。 根据已得的部分子图像的阈值,插值得到其他不具备双峰性质的子图像的阈值。 根据各子图像的阈值插值得到所有像素的阈值。对于每个像素,如果其灰度值大于该点处的阈值,则分为目标像素,否则分为背景像素。2.2 区域生长和分裂合并图像分割时把图像分解为若干个有意义的子区域,而这种分解时基于物体有平滑均匀的表面,与图像中强度恒定或缓慢变化的区域相对应,即每个子区域都具有一定得均匀性质。边缘所包围的部分可以看做是区域;或通过寻找阈值,使得分割后所得同一区域中的各像素灰度分布具有同一统计特性。这种分割虽然没有明显地使用分割定义中的均匀测度度

25、量,但在根据直方图确定阈值时,实际上已经隐含了某种测量度量。 区域分割,是直接根据事先确定的相似性准则,直接取出若干特征相近或相同像素组成的区域。常用的方法有区域生长法,区域分裂与合并等。2.2.1区域生长法区域生长(region growing)是指将成组的像素或区域发展成更大区域的过程。从种子点的集合开始,从这些点的区域增长是通过将与每个种子点有相似属性像强度、灰度级、纹理颜色等的相邻像素合并到此区域。它是一个迭代的过程,这里每个种子像素点都迭代生长,直到处理过每个像素,因此形成了不同的区域,这些区域它们的边界通过闭合的多边形定义。区域生长中的主要问题如下:表示区域的初始化种子的选择:在区

26、域生长过程中,这些不同区域点合适属性的选择。基于图像具体属性的像素生长不一定是好的分割。在区域生长过程中,不应该使用连通性或邻接信息。相似性:相似性表示在灰度级中观察在两个空间邻接像素之间或像素集合的平均灰度级间的最小差分,它们将产生不同的区域。如果这个差分比相似度阈值小,则像素属于相同的区域。区域面积:最小面积阈值与像素中的最小区域大小有关。在分割的图像中,没有区域这个阈值小,它由用户定义。区域生长的后处理(region growing post-processing):由于非优化参数的设置,区域生长经常会导致欠生长或过生长。人们已经开发了各种各样的后处理。从区域生长和基于边缘的分割中,后处

27、理能获得联合分割的信息。更加简单的后处理是根据一般启发法,并且根据最初应用的均匀性标准,减少分割图像中无法与任何邻接区域合并的最小区域的数量。 在场景中区域间的邻接关系可以由区域邻接图(region adjacency graph, RGA)表示。在场景中的区域由在RGA的节点集合表示 N = N1, N2, . , Nm,这里,节点Ni表示在场景中的区域Ri ,并且区域Ri的属性存储在节点的数据结构Ni中。在Ni和Nj之间的边缘Eij表示在区域Ri和Rj之间的连接。如果在区域Ri里存放一个像素与在区域Rj彼此相邻,那么两个区域Ri和Rj是相邻的。邻接可能是4连通或8连通的。邻接关系是自反(r

28、eflexive)和对称(symmetric)的,但不一定是可传递(transitive)的。下图显示具有6个截然不同区域的场景邻接图。图2.2 被分割成6个不同的区域当它表示区域邻接图(RAG)是,二进制矩阵A成为邻接矩阵(adjacency matrix)。在RAG里,当节点Ni和Nj邻接,在A中,aij是1。因为邻接关系是自反的,矩阵的对角元素都是1。在上图的多区域场景邻接矩阵(关系)如下所示。2.2.2区域合并和分裂由于在场景中分割单一大区域,分割算法可能产生许多个小区域。在这种情况下,较小的区域需要根据相似性合并,并且使较小的区域更紧密。简单的区域合并算法如下所述。步骤1:使用阈值集

29、合将图像分割为R1,R2,R,Rm。步骤2:从图像的分割描述中生成区域邻接图(region adjacency graphics,RAG)。步骤3:对于每个Rj,i = 1,2,m,从RAG中确定所有Rj,ji,如Ri和Rj邻接。步骤4:对于所有i和j,计算在Ri和Rj之间合适的相似性度量Sij。步骤5:如果SijT,那么合并Ri和Rj步骤6:根据相似性标准,重复步骤3步骤5,直到没有合并的区域为止。合并的另一个策略是根据两个区域之间的边缘强度。在这个方法中,在邻接区域之间的合并是根据两个区域间沿标定边界长度的边缘强度。如果边缘强度小,即边缘点较弱(welk),如果合并没有大量改变平均像素强度

30、值,那么可以合并两个区域。还有这种情况:由于错误的预处理分割,产生了太小的区域。这归结于不同区域错误合并成一个区域。在这种情况下,在分割区域中灰度值的变化可能高于阈值(T),因此,需要将区域分裂成更小的区域,这样每个更小的区域都有均匀小方差。分裂和合并可能结合在一起用于复杂场景的分割,基于规则可以指导分裂和合并运算的应用3。2.3 边缘检测图像的边缘是图像最基本的特征,它是灰度不连续的结果。通过计算一阶导数或二阶导数可以方便地检测出图像中每个像素在其领域内的灰度变化,从而检测出边缘。图像中具有不同灰度的相邻区域之间总存在边缘。常见的边缘类型有阶跃型、斜坡型、线状型和屋顶型。阶跃型边缘是一种理想

31、的边缘,由于采样等缘故,边缘处总有一些模糊,因而边缘处会有灰度斜坡,形成了斜坡型边缘。斜坡型边缘的坡度与被模糊地程度成反比,模糊程度高的边缘往往表现为厚边缘。线状型边缘有一个灰度突变,对应图像中的线条;而屋顶型边缘两侧的灰度斜坡相对平缓,对应粗边缘。2.3.1微分算子对于斜坡型边缘,在灰度斜坡的起点和终点,其一阶导数均有一个阶跃,在斜坡处为常数,其他的地方为零;其二阶导数在斜坡起点产生一个向上的脉冲,在终点产生一个向下的脉冲,其他地方为零,在两个脉冲之间有一个过零点。因此,通过检查一阶导数的极大值,可以确定斜坡型边缘;通过检测二阶导数的过零点,可以确定边缘的中心位置。对于线状型边缘,在边缘的起

32、点与终点处,其一阶导数都有一个阶跃,分别对应极大值和极小值;在边缘的起点与终点处,其二阶导数都对应一个向上的脉冲,在边缘中心对应一个向下的脉冲,在边缘中心两侧存在两个过零点。因此,通过检测二阶差分的两个过零点,就可以确定线状型边缘的范围;检测二阶差分的极小值,可以确定边缘中心位置。屋顶型边缘的一阶导数和二阶导数与线状型类似,通过检测其一阶导数的过零点可以确定屋顶的位置。由于上述分析可以得出以下结论:一阶导数的幅值可用来检测边缘的存在;通过检查二阶导数的过零点可以确定边缘的中心位置;利用二阶导数在过零点附近的符号可以确定边缘像素位于边缘的暗区还是亮区。另外,一阶导数和二阶导数对噪声非常敏感,尤其

33、是二阶导数。因此,在边缘检测之前应考虑图像平滑,减弱噪声的影响。在数字图像处理中常利用差分近似微分来求取导数。边缘检测可借助微分算子(包括梯度算子和拉普拉斯算子)在空间域通过模版卷积来实现4。算子名称模板H1模板H2特点Roberts各向同性;对噪声敏感;模板尺寸为偶数,中心位置不明显Prewitt引入了平均因素,对噪声有抑制作用;操作简便Sobel引入了平均因素,增强了最近像素的影响,噪声抑制效果比Prewitt要好Krisch噪声抑制作用较好;需求出8个方向的响应这里(只给出2个方向的模板)Isotropic权值反比于邻点与中心点的距离,检测沿不同方向边缘时梯度幅值一致,即具有各向同性表2

34、.1 常用的梯度算子(1) 梯度算子常用的梯度算子如表2.1所示(星号代表模版中心)。梯度算子一般由两个模板组成,分别对应梯度的两个偏导数,用于计算两个相互垂直上的边缘相应。在计算梯度幅值时,可用公式(2.4)或公式(2.5),在适当的阈值下,对得到梯度图像二值化即可检测出有意义的边缘。 (2.4) (2.5)Krisch算子由8个模板组成,其他模板绕其中心旋转得到,每个模板都对特定的边缘方向做出最大响应。当把最大响应的模板的序号输出时,就构成了边缘方向的编码。Prewitt算子和Sobel算子也可以像Krisch算子那样,扩展到两个对象方向,使其在对角线向上做出最大响应。Prewitt和So

35、bel算子在两个对角线方向上的模板如图2.2所示 (a)Prewitt算子和方向模板 (b)Sobel算子方向模板图2.2Prewitt算子和Sobel算子检测对角方向边缘的模板(2) 高斯-拉普拉斯(LOG)算子 (2.6) 拉普拉斯算子由式子(2.6)定义,常用的三个拉普拉斯模板见上。其中,第一个模板在水平和垂直4个方向上具有各向同性,而第二个模板在水平、垂直和对角线8个方向上具有各向同性。然而,拉普拉斯算子一般不直接用于边缘检测,因为它作为一种二阶微分算子对噪声相当敏感,常产生双边缘,而且不能检测边缘方向。主要利用拉普拉斯算子的过零点性质确定边缘检测的位置,以根据其值得正负来确定边缘检测

36、位于边缘的暗区还是明区。高斯-拉普拉斯(LOG)算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来实现边缘检测,即先通过高斯平滑抑制噪声,以减轻噪声对拉普拉斯算子的影响,再进行拉普拉斯运算,通过检测其过零点来确定边缘位置。因此,高斯-拉普拉斯算子是一种性能较好的边缘检测器。二维高斯平滑函数表示如下: (2.7)其中,是高斯分布的均方差,图像被模糊的程度与其成正比。令,上式对r求二阶导数来计算其拉普拉斯值,则有 (2.8) 上式是一个轴对称函数,由于其曲面形状(剖面图)很像一顶墨西哥草帽,所以又叫墨西哥草帽函数。给定均方差后,对其离散化就可以得到相应的LOG算子模板,图2.3是常用的55模板之一(

37、模板并不唯一)。利用LOG算子检测边缘时,可直接用其模板与图像卷积,也可以先与高斯函数卷积,再与拉普拉斯模板卷积,两者是等价的。由于LOG算子模板一般比较大,因而用第二种方法可以提高速度。图2.3LOG算子剖面及常用的55模板(3)Canny边缘检测Canny边缘检测算子是一个非常普遍和有效地算子。Canny算子首先对灰度图像用均方差为伽马的高斯滤波器进行平滑,然后对平滑后图像的每个像素计算梯度幅值和梯度方向。梯度方向用于细化边缘,如果当前像素幅值不高于梯度方向上两个邻点的梯度幅值,则抑制该像素响应,从而使得边缘细化,这种方法称之为非最大抑制。该方法也可以结合其他边缘检测算子来细化边缘。为了便

38、于处理,需要将梯度方向量化到8个邻域方向上。Canny算子使用了两个幅值阈值,高阈值用于检测梯度幅值大的强边缘,低阈值用于检测梯度幅值较小的弱边缘。低阈值通常取为高阈值的一半。边缘细化后,就开始跟踪具有高幅值的轮廓。最后,从满足高阈值的边缘像素开始,顺序跟踪连续的轮廓段,把与强边缘连接的弱边缘连接起来5。2.3.2边界连接由于噪声等因素的影响,各种算子的检测结果通常是一些分散的边缘,没有形成分割区域所需要的闭合边界。为此,需要将检测出的边缘像素按照某种标准连接起来,常用的一种方法是根据邻近的边缘像素在梯度幅值和梯度方向上具有一定相似性而将它们连接起来,设T是幅度阈值,A是角度阈值,若像素(p,

39、q)在像素(x,y)的邻域内,且他们的梯度幅度和梯度方向分别满足一下两个条件: (2.9) (2.10)式中:(x,y)点处的梯度方向定义见式子(2.5)。另外,利用数学形态学的一些操作也可以实现边界连接。3 MATLAB仿真程序3.1 阈值算法MATLAB仿真结果3.1.1 阈值算法MATLAB仿真结果经典的阈值分割算法(见附录):图3.1 lenna阈值分割图3.2 blood阈值分割图3.3 couple阈值分割图3.4 rice阈值分割图3.5 cameraman阈值分割3.1.2小结由图3.1到图3.5不难推出这样一个结论:图像的直方图清晰地反映了图像的双峰特性,图像3.1、3.3和

40、3.4都不是这个特点,因此阈值法很难做大图像分割,往往会带来图像失真。而其他的图像由直方图可以看出,有较好的双峰性,再选择适当的T值(阈值),分割图像的效果将会达到很不错的效果,为我们提供有价值的信息。3.2 基于MATLAB的几种常用边缘检测代码(见附录): 3.2.1 边缘检测MATLAB仿真结果图3.6 不同微分算子的边缘检测效果(a)Sobel算子;(b)Canny方法图3.7 Sobel 算子和Canny方法边缘检测效果3.2.2小结在边缘检测方面,一般通过数学变换和MATLAB函数来完成对图像的边缘检测。其中梯度算子中Sobel算子要比另外2种算子边缘检测效果好。而edge函数提供

41、的最有效的边缘检测方法是Canny方法。Canny方法比较不容易被噪声“填充”,更容易检查出真正的弱边缘。4 MATLAB GUI设计4.1 MATLAB简介Matlab是美国的math works公司推出的一个科技应用软件,它是由Matrix(矩阵)和Laboratory(实验室)的前三个字母组成。经过十几年的发展和完善,目前已成为在科学分析和计算领域的主流软件。MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等

42、。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。MATLAB中包括了图形界面编辑GUI,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。这可让使用者也可以像VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑。它将数值分析,矩阵计算,科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究,工程设计以及必须进行有效数值运算的众多学科领域提供了一种简洁高效的编程工具。借助于这种编程环境,任何复杂计算问题及其解的描述都十分符合人们的逻辑思

43、维方式和数学表达习惯,用户只须列出简单的数学表达式,其结果便以数字或图形等方法表现出来。并在很大程度上摆脱了传统非交互式程序设计语言的编程模式,为自然科学和工程设计诸多领域提供强大环境。Matlab的特点是:它具有高效的数值运算及符号计算功能,使用户从繁杂的数值计算分析中解脱出来;它具备图形处理功能,实现计算结果和编程的可视化;友好的用户界面及接近数学表达式的自然化语言,是学者易于学习和掌握;为拥护提供大量方便的处理工具,是计算机辅助分析,设计,仿真,教学等领域不可缺少的基础软件。Matlab最重要的特点就是易于扩展,允许用户自行构建指定功能的M文件,进而构成适合用户要求的工具箱,这大大扩展了

44、MATLAB的适用范围。4.2 图形用户界面GUI用户界面是人,即用户与计算机(或程序)之间交互作用的工具和方法,是进行信息交流的方式。如键盘,鼠标,话筒都可成为与计算机交换信息的接口。图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。图形用户界面的功能是让用户定制用户与matlab的交互方式,使操作更简便。4.3 GUI设计原理及简介用户图形界面(GUI)是程序的图形化界面。一个

45、好的GUI 能够使程序更加容易的使用。它提供用户一个常见的界面,还提供一些控件,例如,按钮,列表框,滑块,菜单等。用户图形 界面应当是易理解且操作是可以预告的,所以当用户进行某一项操作,它知道如何去做。例如,当鼠标在一个按钮上发生了单击事件,用户图形界面初始化它的操作,并在按钮的标签上对这个操作进行描述。 创建MATLAB 用户图形界面必须由三个基本元素: 1 组件。在matlab GUI中的每一个项目(按钮,标签,编辑框等)都是一个图形化组件。组件可分为三类:图形化控件(按钮,编辑框,列表,滚动条等),静态元素(窗口和文本字符串),菜单和坐标系。图形化控件和静态元素函数uicontrol创建

46、,菜单由函数uimenu和uicontextmenu创建,坐标系经常用于显示图像化数据,由函数axes创建。2 图像窗口(Figure)。GUI的每一个组件都必须安排图像窗口中。以前,我们在画数据图像时,图像窗口会被自动创建。但我们还可以用函数figure来创建图像窗口,空图像窗口经常用于放置各种类型的组件。3 回调。最后,如果用户用鼠标或用键盘键入一些信息,那么程序就要有相应的动作。鼠标单击或键入信息是一个事件,如果matlab程序运行相应的函数,那么 matlab函数肯定会有所反应。例如,如果用户单击一按钮,这个事件必然导致相应的matlab语句执行。这些相应的语句被称为回调。只要执行GUI的单个图形组件,必然有一个回调call

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁