首页 基于MATLAB的图像分割算法研究与仿真

基于MATLAB的图像分割算法研究与仿真

举报
开通vip

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

基于MATLAB的图像分割算法研究与仿真
基于MATLAB的图像分割算法研究与仿真 摘 要 随着信息化程度的加深,图像作为包含大量信息的载体形式越来越能体现出它强大的信息包含能力。图像分割是进行图像分析的关键步骤,也是进一步理解图像的基础。图像分割在图像工程中位于图像处理和图像分析之间。图像分割就是把图像分割成一系列有意义、各具特征的目标或区域的过程。虽然图像分割算法有很多种,但是到目前位置还没有通用的图像分割算法。 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 综述了阈值分割、区域生长、分裂合并和边缘检测图像分割算法。首先介绍了图像分割的研究意义及国内外研究现状。接着介绍了阈值分割、区域生长、分裂合并和边缘检测图像分割算法的基本原理及其MATLAB仿真结果。最后介绍了MATLAB图形用户界面设计。 MATLAB仿真结果表明:各种图像分割算法各有其优缺点及其适用范围。因此,在对一幅图像进行分割之前,首先要对图像进行判断分析,然后再选择恰当的分割算法,这样才能得到比较令人满意的分割效果。 关键词:图像分割;阈值分割;区域生长;分裂合并;边缘检测;MATLAB I Abstract As 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 before 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 of 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 introduced. 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 different 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 segmentation;threshold segmentation; region growing; split and merge ; edge detection; MATLAB II 目 录 1 引 言 ...................................................................................................................................... 1 1.1 图像与数字图像处理 ....................................................................................................... 1 1.2 研究图像分割处理的意义 ............................................................................................... 1 1.3 图像分割技术的背景和国内外研究现状 ........................................................................ 2 2 图像目标分割与提取技术的方法综述 .................................................................................... 4 2.1 阈值分割 .......................................................................................................................... 4 2.1.1概述 ......................................................................................................................... 4 2.1.2全局阈值 ................................................................................................................. 5 2.1.3局部阈值 ................................................................................................................. 5 2.1.4动态阈值 ................................................................................................................. 6 2.2 区域生长和分裂合并 ....................................................................................................... 6 2.2.1区域生长法 .............................................................................................................. 6 2.2.2区域合并和分裂 ...................................................................................................... 7 2.3 边缘检测 .......................................................................................................................... 8 2.3.1微分算子 ................................................................................................................. 8 2.3.2边界连接 ............................................................................................................... 11 3 MATLAB仿真程序............................................................................................................... 12 3.1 阈值算法MATLAB仿真结果 ....................................................................................... 12 3.1.1 阈值算法MATLAB仿真结果 ............................................................................. 12 3.1.2小结 ....................................................................................................................... 14 3.2 基于MATLAB的几种常用边缘检测代码(见附录): .................................................. 14 3.2.1 边缘检测MATLAB仿真结果 ............................................................................. 14 3.2.2 小结 ...................................................................................................................... 15 III 4 MATLAB GUI设计 ............................................................................................................... 16 4.1 MATLAB简介 ................................................................................................................ 16 4.2 图形用户界面GUI ......................................................................................................... 16 4.3 GUI设计原理及简介 ...................................................................................................... 16 4.4 设计方法......................................................................................................................... 17 4.4.1图形用户界面设计工具 ......................................................................................... 17 4.4.2菜单设计 ................................................................................................................ 18 4.4.3对话框设计 ............................................................................................................ 18 4.4.4句柄图形 ................................................................................................................ 18 4.4.5 图形对象句柄命令................................................................................................ 19 4.5 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf ................................................................................................................................ 19 5 结论与展望 ............................................................................................................................ 20 5.1 结论 ................................................................................................................................ 20 5.2 展望 ................................................................................................................................ 20 致 谢 ...................................................................................................................................... 21 参考文献 ...................................................................................................................................... 22 附 录 ...................................................................................................................................... 23 IV 基于MATLAB的图像分割算法研究与仿真 1 引 言 据研究,在人类所接受到的全部信息中,约有75%~80%是通过视觉系统得到的,和语言或文字信息相比,图像包含的信息量更大、更直观、更确切,因而具有更高的使用效率和更广泛的适应性。当我们获得一副巨大的图像时,进行合理地分割和处理,可以获得对图像的进一步识别、分析和理解。这些都是我们的日常工作所需要的。 1.1 图像与数字图像处理 客观世界在空间上是三维(3-D)的,但一般从客观景物得到的图像是二维(2-D)的。一幅图像可以定义为一个二维函数f(x,y),这里 x和y 表示表示2-D空间中一个坐标点的位置,而幅值f则代表图像在坐标(x,y)上的某种性质的数值。例如常用的图像一般是灰度图,这时f表示灰度值,它常对应客观景物被观察到的亮度。 日常所见图像多是连续的,即f(x,y)的值可以任意实数。为了能用计算机对图像进行加工,需要把连续的图像在坐标空间x,y和幅值f都离散化。这种离散化了的图像就是数字图像,数字图像是由有限的元素组成的,每个元素都有一个特定的位置和幅值,这些元素称为图像像素。 数字图像常用矩阵来描述。一幅M×N个像素的数字图像,其像素灰度值可以用M行、N列的矩阵[G]表示: g g ? g,,11121N,,g g ? g21222N,,G,,,,,? ? ? ,,g g? gM1M2MN,, 在存储图像时,一幅M行、N列的数字图像(M×N个像素),可以用一个M×N的二维数组T来表示。图像的各个像素灰度值可按一定的顺序存放在数组T中。习惯上把数字图像左上角的像素定义为第(1,1)个像素,右下角的像素定义为第(M,N)个像素。 数字图像处理,就是把数字图像经过一些特定数理模式的加工处理,以达到有利于人眼视觉或某种接收系统所需要的图像的过程。如对被噪声污染的图像除去噪声,对信息微弱的图像进行增强,对失真的图像进行几何校正等。随着计算机软硬件技术的突飞猛进,以及数字处理技术的不断发展,数字图像处理在科学研究、工业生产、国防以及现代管理 [1]决策等各行各业都得到越来越多的应用。 1.2 研究图像分割处理的意义 数字图像目标分割与提取是数字图像处理和计算机视觉领域中一个备受关注的研究分支。因为在目标分割与提取过程中可以利用大量的数字图像处理的方法,加上其在计算机视觉、模式识别等领域中的广泛应用,都吸引了众多研究者的注意。相信对这一问题的深入研究不仅会不断完善对这一问题的解决,而且必将推动模式识别、计算机视觉、人工智能等计算机科学分支的发展。图像分割和边缘检测的问题在近二十年中得到了广泛的关注和长足的发展,国内外很多研究人士提出了很多方法,在不同的领域取得了一定的成果。 1 XX大学学士学位论文 但是对于寻找一种能够普遍适用于各种复杂情况的准确率很高的分割和检测算法,还有很大的探索空间。 边缘提取和分割是图像分析的经典研究课题之一,目前的理论和方法仍存在许多不足之处,仍在不断改进和发展。需要说明的是:边缘与物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在与物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外成像的过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者们正在试图在边缘提取中加入高层的语义信息。 由于图像的多意性和复杂性,许多分割的工作无法依靠计算机自动完成,而手工分割又存在工作量大,定位不准确的难题,因此,人们提出了一些人工交互和计算机自动定位相结合的方法,利用各自的优势,实现目标轮廓的快速定位。相信这些交互式方法的应用,必将推动图像目标分割与提取这一既具有广阔的应用前景又具有重要的学术价值的课题的进一步研究,也必将成为一个更为独立和活跃的研究领域。 1.3 图像分割技术的背景和国内外研究现状 所谓图像分割就是根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将要识别的目标从背景或其他伪目标中分离出来。图像分割是图像理解的重要组成部分,其目的是将目标和背景分离,为目标识别、精确定位等后续处理提供依据,其结果将直接影响到其后的信息处理过程。如何快速、有效地将感兴趣的目标从复杂的背景中分割出来一直是国内外研究的热点。 分割问题的困难在于图像数据的模糊和噪声的干扰。到目前为止,还没有一种或者几种完善的分割方法,可以按照人们的意愿准确的分割任何一种图像。实际图像中景物情况各异,具体问题具体分析,需要根据实际情况选择适合的方法。分割结果的好坏或者正确与否,目前还没有一个统一的评价判断准则,分割的好坏必须从分割的效果和实际应用场景来判断。不过在人类研究图像的历史中,还是积累了许多经典的图像分割方法。虽然这些分割方法不适合所有类型的图像分割,但是这些方法却是图像分割方法进一步发展的基础。事实上,现代一些分割算法恰恰是从经典的分割方法衍生出来的。 早期的图像研究中,图像的分割方法主要可以分为两大类。一类是边界方法,这种方法的假设是图像分割结果的某个子区域在原来的图像中一定会有边缘存在;一类是区域方法,这种方法的假设是图像分割结果的子区域一定会有相同的性质,而不同区域的像素没有共同的性质。这两种方法都有缺点和优点,有的学者也试图把两者结合起来进行图像分割,随着计算机处理能力的提高,很多方法不断涌现,如基于彩色分量分割、纹理图像分割。所使用的教学工具和实验手段也是不断的扩展,从时域信号到频域信号处理,近来小波变换也应用在图像分割当中。 随着各种理论的不断成熟和完善,图像分割技术已经获得了长足的进步,并广泛地应用到了医学、遥感、红外等多个领域。现在国内外很多大学和科研机构都设有专门的机器 2 基于MATLAB的图像分割算法研究与仿真 视觉实验室对这方面的技术进行更加深入的研究,相信随着这方面研究的不断深入,更新更好的方法将会不断被提出和应用。 3 XX大学学士学位论文 2 图像目标分割与提取技术的方法综述 图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。可是,图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。值得提出的是,没有唯一的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的分割方法。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接影响对图像的理解。本文将重点介绍一些常用的方法,灰度阈值法、边缘检测与边界连接、区域生长、区域分裂 [2]与合并等等。 2.1 阈值分割 2.1.1概述 阈值化是最常用的一种图像分割技术,其特点是操作简单,分割结果是一系列连续区域。灰度图像的阈值分割一般基于如下假设:图像目标或背景内部的相邻像素间的灰度值是高度相关的,目标与背景之间的边界两侧像素的灰度值差别大,图像目标与背景的灰度分布都是单峰的。如果图像目标与背景对应的两个单峰大小接近,方差较小且均值相差比较大,则该图像的直方图具有双峰性。阈值化常可以有效分割具有双峰性质的图像。 阈值分割过程如下:首先确定一个阈值T,对于图像中的每个像素,若灰度值大于T,则将其设置为目标点(值为1),否则设置为背景点(值为0),或则相反,从而将图像分为目标区域与背景区域。同理,在编程实现时,也可以将目录像素设置为255,背景像素设置为0,或则相反,从而将图像分为目标区域与背景区域。用公式可表示为: 1f(x,y),T,gx,y,,,,0其他值, (2.1) 在编程实现时,也可以讲目标像素设置为255,背景像素设置为0,或则相反。当图像中含有多个目标且灰度差别较大时,可以设置多个阈值实现多阈值分割。多阈值分割可表示为: 0f(x,y),T, ,,,gx,y,kT,f(x,y),T,k ,255f(x,y),Tk,1,2,?m,1m, (2.2) T式中:为一系列分割阈值;k为赋予每个目标区域的标号;m为分割后的目标区域数减k 1。阈值分割的关键是如何确定适合的阈值,不同的阈值其处理结果差异很大,会影响特征测量与分析等后续过程。如图2.1所示,阈值过大,会过多的把背景像素分为目标;而阈值过小,又会过多的把目标像素错误分为背景。确定阈值的方法有多种,可以分为不同类型。如果选取的阈值仅与各个像素的灰度有关,则称为局部阈值;如果选取的阈值不仅 4 基于MATLAB的图像分割算法研究与仿真 和局部有关,还和像素的位置有关,则称为动态阈值或则自适应阈值。阈值一般可用下式表示: ,,T,Tx,y,f(x,y),p(x,y) (2.3) 式中:f(x,y)是点(x,y)处的像素灰度值:p(x,y)是该像素邻域的某种局部性质。 图2.1 不同阈值时图像分割结果 当图像目标和背景之间灰度对比较强时,阈值选取较为容易。实际上,由于不良的光照原因或则过多的图像噪声的影响,目标与背景之间的对比往往不够明显,此时阈值选 [3]取并不容易。一般需要对图像进行预处理,如图像平滑去噪,再确定阈值进行分割。 2.1.2全局阈值 当图像目标与背景之间具有高对比度时,利用全局阈值可以成功的分割图像。而确定全局阈值的方法很多,如极小点阈值法,迭代阈值法,最优阈值法,Qtsu阈值算法,最大熵法,p参数法等。当具有明显的双峰性质时,可直接从直方图的波谷处选取一个阈值,也可以根据某个准则自动计算出阈值。实际使用时,可根据图像特点确定合适的阈值方法,一般需要用几种方法进行对比试验,以确定分割效果最好的阈值。 2.1.3局部阈值 当图像目标与背景在直方图上对应的两个波峰陡峭、对称且双峰之间有较深的波谷或双峰相距很远时,利用前面介绍的全局阈值方法可以确定具有较好分割效果的阈值。但是, 5 XX大学学士学位论文 由于图像噪声等因素的影响,会使用图像直方图双峰之间的波谷被填充或则双峰相距很近。另外,当图像目标与背景面积差别很大时,在直方图上的表现就是较小的一方被另外一方淹没。上面这两种情况都使得本应具有双峰性质的图像基本上变成单峰,难以检测到双峰之间的波谷。为了解决这个问题,除了利用像素自身的性质外,还可以借助像素领域的局部性质(如像素的梯度值与拉普拉斯值)来确定阈值,这就是局部阈值。常用的两种局部阈值方法有直方图变换法和散射图法。 2.1.4动态阈值 在许多情况下,由于光照不均匀等因素的影响,图像背景的灰度值并不恒定,目录与背景的对比度在图像中也会变化,图像中还可能存在不同的阴影。如果只使用单一的全局阈值对整幅图像分割,则某些区域的分割效果好,而另外一些区域的分割效果可能很差。解决方法之一就是使阈值随图像中的位置缓慢变化,可以将整幅图像分解为一系列子图像,对不同的子图像使用不同的阈值进行分割,这种与像素坐标有关的阈值就称为动态阈值或自适应阈值。子图像之间可以部分重叠,也可以只相邻。 图像分解之后,如果子图像足够小,则受光线等因素的影响就会较小,背景灰度也更均匀,目标与背景的对比度也更一致。此时可选用前面介绍的全局阈值方法来确定各个子图像的阈值。 下面简要介绍一下动态阈值方法,其基本步骤如下: ? 将整幅图像分解为一系列相互之间有50%重叠的子图像。 ? 检测各子图像的直方图是否具有双峰性。如果是,则采用最优阈值法确定该子图像的 阈值,否则不进行处理。 ? 根据已得的部分子图像的阈值,插值得到其他不具备双峰性质的子图像的阈值。 ? 根据各子图像的阈值插值得到所有像素的阈值。对于每个像素,如果其灰度值大于该 点处的阈值,则分为目标像素,否则分为背景像素。 2.2 区域生长和分裂合并 图像分割时把图像分解为若干个有意义的子区域,而这种分解时基于物体有平滑均匀的表面,与图像中强度恒定或缓慢变化的区域相对应,即每个子区域都具有一定得均匀性质。边缘所包围的部分可以看做是区域;或通过寻找阈值,使得分割后所得同一区域中的各像素灰度分布具有同一统计特性。这种分割虽然没有明显地使用分割定义中的均匀测度度量,但在根据直方图确定阈值时,实际上已经隐含了某种测量度量。 区域分割,是直接根据事先确定的相似性准则,直接取出若干特征相近或相同像素组成的区域。常用的方法有区域生长法,区域分裂与合并等。 2.2.1区域生长法 区域生长(region growing)是指将成组的像素或区域发展成更大区域的过程。从种子点的集合开始,从这些点的区域增长是通过将与每个种子点有相似属性像强度、灰度级、纹理颜色等的相邻像素合并到此区域。它是一个迭代的过程,这里每个种子像素点都迭代生长,直到处理过每个像素,因此形成了不同的区域,这些区域它们的边界通过闭合的多边形定义。 6 基于MATLAB的图像分割算法研究与仿真 区域生长中的主要问题如下: ?表示区域的初始化种子的选择:在区域生长过程中,这些不同区域点合适属性的选择。 ?基于图像具体属性的像素生长不一定是好的分割。在区域生长过程中,不应该使用连通性或邻接信息。 ?相似性:相似性表示在灰度级中观察在两个空间邻接像素之间或像素集合的平均灰度级间的最小差分,它们将产生不同的区域。如果这个差分比相似度阈值小,则像素属于相同的区域。 ?区域面积:最小面积阈值与像素中的最小区域大小有关。在分割的图像中,没有区域这个阈值小,它由用户定义。 区域生长的后处理(region growing post-processing):由于非优化参数的设置,区域生长经常会导致欠生长或过生长。人们已经开发了各种各样的后处理。从区域生长和基于边缘的分割中,后处理能获得联合分割的信息。更加简单的后处理是根据一般启发法,并且根据最初应用的均匀性标准,减少分割图像中无法与任何邻接区域合并的最小区域的数量。 在场景中区域间的邻接关系可以由区域邻接图(region adjacency graph, RGA)表示。在场景中的区域由在RGA的节点集合表示 N = {N1, N2, ... , Nm},这里,节点Ni表示在场景中的区域Ri ,并且区域Ri的属性存储在节点的数据结构Ni中。在Ni和Nj之间的边缘Eij表示在区域Ri和Rj之间的连接。如果在区域Ri里存放一个像素与在区域Rj彼此相邻,那么两个区域Ri和Rj是相邻的。邻接可能是4连通或8连通的。邻接关系是自反(reflexive)和对称(symmetric)的,但不一定是可传递(transitive)的。下图显示具有6个截然不同区域的场景邻接图。 R2 R3 R1R3 R6 R5 R4 图2.2 被分割成6个不同的区域 当它表示区域邻接图(RAG)是,二进制矩阵A成为邻接矩阵(adjacency matrix)。在RAG里,当节点Ni和Nj邻接,在A中,aij是1。因为邻接关系是自反的,矩阵的对角元素都是1。在上图的多区域场景邻接矩阵(关系)如下所示。 2.2.2区域合并和分裂 由于在场景中分割单一大区域,分割算法可能产生许多个小区域。在这种情况下,较小的区域需要根据相似性合并,并且使较小的区域更紧密。简单的区域合并算法如下所述。 7 XX大学学士学位论文 步骤1:使用阈值集合将图像分割为R1,R2,R,…,Rm。 步骤2:从图像的分割描述中生成区域邻接图(region adjacency graphics,RAG)。 步骤3:对于每个Rj,i = 1,2,…,m,从RAG中确定所有Rj,j?i,如Ri和Rj邻接。 步骤4:对于所有i和j,计算在Ri和Rj之间合适的相似性度量Sij。 步骤5:如果Sij>T,那么合并Ri和Rj 步骤6:根据相似性标准,重复步骤3~步骤5,直到没有合并的区域为止。 合并的另一个策略是根据两个区域之间的边缘强度。在这个方法中,在邻接区域之间的合并是根据两个区域间沿标定边界长度的边缘强度。如果边缘强度小,即边缘点较弱(welk),如果合并没有大量改变平均像素强度值,那么可以合并两个区域。 还有这种情况:由于错误的预处理分割,产生了太小的区域。这归结于不同区域错误 合并成一个区域。在这种情况下,在分割区域中灰度值的变化可能高于阈值(T),因此,需要将区域分裂成更小的区域,这样每个更小的区域都有均匀小方差。 分裂和合并可能结合在一起用于复杂场景的分割,基于规则可以指导分裂和合并运算 [3]的应用。 2.3 边缘检测 图像的边缘是图像最基本的特征,它是灰度不连续的结果。通过计算一阶导数或二阶导数可以方便地检测出图像中每个像素在其领域内的灰度变化,从而检测出边缘。图像中具有不同灰度的相邻区域之间总存在边缘。常见的边缘类型有阶跃型、斜坡型、线状型和屋顶型。阶跃型边缘是一种理想的边缘,由于采样等缘故,边缘处总有一些模糊,因而边缘处会有灰度斜坡,形成了斜坡型边缘。斜坡型边缘的坡度与被模糊地程度成反比,模糊程度高的边缘往往表现为厚边缘。线状型边缘有一个灰度突变,对应图像中的线条;而屋顶型边缘两侧的灰度斜坡相对平缓,对应粗边缘。 2.3.1微分算子 对于斜坡型边缘,在灰度斜坡的起点和终点,其一阶导数均有一个阶跃,在斜坡处为常数,其他的地方为零;其二阶导数在斜坡起点产生一个向上的脉冲,在终点产生一个向下的脉冲,其他地方为零,在两个脉冲之间有一个过零点。因此,通过检查一阶导数的极大值,可以确定斜坡型边缘;通过检测二阶导数的过零点,可以确定边缘的中心位置。对于线状型边缘,在边缘的起点与终点处,其一阶导数都有一个阶跃,分别对应极大值和极小值;在边缘的起点与终点处,其二阶导数都对应一个向上的脉冲,在边缘中心对应一个向下的脉冲,在边缘中心两侧存在两个过零点。因此,通过检测二阶差分的两个过零点,就可以确定线状型边缘的范围;检测二阶差分的极小值,可以确定边缘中心位置。屋顶型边缘的一阶导数和二阶导数与线状型类似,通过检测其一阶导数的过零点可以确定屋顶的位置。 由于上述分析可以得出以下结论:一阶导数的幅值可用来检测边缘的存在;通过检查二阶导数的过零点可以确定边缘的中心位置;利用二阶导数在过零点附近的符号可以确定边缘像素位于边缘的暗区还是亮区。另外,一阶导数和二阶导数对噪声非常敏感,尤其是 8 基于MATLAB的图像分割算法研究与仿真 二阶导数。因此,在边缘检测之前应考虑图像平滑,减弱噪声的影响。在数字图像处理中常利用差分近似微分来求取导数。边缘检测可借助微分算子(包括梯度算子和拉普拉斯算 [4]子)在空间域通过模版卷积来实现。 算子名称 模板H1 模板H2 特点 各向同性;对噪声敏感;模板 0*,1,1*0,,,,Roberts ,,,,尺寸为偶数,中心位置不明显 1001,,,, ,101,1,1,1,,,, ,,,,引入了平均因素,对噪声有抑 ,10*100*0Prewitt ,,,, 制作用;操作简便 ,,,,,101111,,,, 引入了平均因素,增强了最近 ,101,1,2,1,,,, ,,,,像素的影响,噪声抑制效果比 ,20*200*0Sobel ,,,, Prewitt要好 ,,,,,101121,,,, 噪声抑制作用较好;需求出8 ,3,35,3,3,3,,,, ,,,,个方向的响应这里(只给出2个 ,30*5,30*,3,,,,Krisch 方向的模板) ,,,,,3,35555,,,, 权值反比于邻点与中心点的距 ,,,101,1,2,1,,,,,,离,检测沿不同方向边缘时梯 ,20*200*0Isotropic ,,,,,,度幅值一致,即具有各向同性 ,,,101121,,,, 表2.1 常用的梯度算子 (1) 梯度算子 常用的梯度算子如表2.1所示(星号代表模版中心)。梯度算子一般由两个模板组成,分别对应梯度的两个偏导数,用于计算两个相互垂直上的边缘相应。在计算梯度幅值时,可用公式(2.4)或公式(2.5),在适当的阈值下,对得到梯度图像二值化即可检测出有意义的边缘。 12mag(,f(x,y)),(G,G) (2.4) xy Gy (2.5) ,(x,y),arctan()Gx Krisch算子由8个模板组成,其他模板绕其中心旋转得到,每个模板都对特定的边缘方向做出最大响应。当把最大响应的模板的序号输出时,就构成了边缘方向的编码。Prewitt算子和Sobel算子也可以像Krisch算子那样,扩展到两个对象方向,使其在对角线向上做出最大响应。Prewitt和Sobel算子在两个对角线方向上的模板如图2.2所示 9 XX大学学士学位论文 ,2,10012,1,10011,,,,,,,, ,,,,,,,,,10*1,10*1,10*1,10*1,,,,,,,, ,,,,,,,,011,1,10012,2,10,,,,,,,, ,,,,45,4545和,45(a)Prewitt算子和方向模板 (b)Sobel算子方向模板 图2.2Prewitt算子和Sobel算子检测对角方向边缘的模板 (2) 高斯-拉普拉斯(LOG)算子 22,f,f2 (2.6) ,f,,22,x,y 1,210,10,1,1,1,,,,,, ,,,,,,,24*,2,14*,1,18*,1,,,,,, ,,,,,,0,10,1,1,11,21,,,,,, 拉普拉斯算子由式子(2.6)定义,常用的三个拉普拉斯模板见上。其中,第一个模板在水平和垂直4个方向上具有各向同性,而第二个模板在水平、垂直和对角线8个方向上具有各向同性。然而,拉普拉斯算子一般不直接用于边缘检测,因为它作为一种二阶微分算子对噪声相当敏感,常产生双边缘,而且不能检测边缘方向。主要利用拉普拉斯算子的过零点性质确定边缘检测的位置,以根据其值得正负来确定边缘检测位于边缘的暗区还是明区。 高斯-拉普拉斯(LOG)算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来实现边缘检测,即先通过高斯平滑抑制噪声,以减轻噪声对拉普拉斯算子的影响,再进行拉普拉斯运算,通过检测其过零点来确定边缘位置。因此,高斯-拉普拉斯算子是一种性能较好的边缘检测器。二维高斯平滑函数表示如下: 22,xy,,,h(x,y)exp() (2.7) 2,2 222,r,x,y其中,是高斯分布的均方差,图像被模糊的程度与其成正比。令,上式对r求二阶导数来计算其拉普拉斯值,则有 222,,rr2,,,,h(r)()exp() (2.8) 42,,2 上式是一个轴对称函数,由于其曲面形状(剖面图)很像一顶墨西哥草帽,所以又叫 ,墨西哥草帽函数。给定均方差后,对其离散化就可以得到相应的LOG算子模板,图2.3是常用的5×5模板之一(模板并不唯一)。利用LOG算子检测边缘时,可直接用其模板与图像卷积,也可以先与高斯函数卷积,再与拉普拉斯模板卷积,两者是等价的。由于LOG算子模板一般比较大,因而用第二种方法可以提高速度。 10 基于MATLAB的图像分割算法研究与仿真 ,2,4,4,4,2,, ,,,4080,4,, ,,,4824*8,4 ,,,4080,4,, ,,,2,4,4,4,2,, 图2.3LOG算子剖面及常用的5×5模板 (3)Canny边缘检测 Canny边缘检测算子是一个非常普遍和有效地算子。Canny算子首先对灰度图像用均方差为伽马的高斯滤波器进行平滑,然后对平滑后图像的每个像素计算梯度幅值和梯度方向。梯度方向用于细化边缘,如果当前像素幅值不高于梯度方向上两个邻点的梯度幅值,则抑制该像素响应,从而使得边缘细化,这种方法称之为非最大抑制。该方法也可以结合其他边缘检测算子来细化边缘。为了便于处理,需要将梯度方向量化到8个邻域方向上。Canny算子使用了两个幅值阈值,高阈值用于检测梯度幅值大的强边缘,低阈值用于检测梯度幅值较小的弱边缘。低阈值通常取为高阈值的一半。边缘细化后,就开始跟踪具有高幅值的轮廓。最后,从满足高阈值的边缘像素开始,顺序跟踪连续的轮廓段,把与强边缘 [5]连接的弱边缘连接起来。 2.3.2边界连接 由于噪声等因素的影响,各种算子的检测结果通常是一些分散的边缘,没有形成分割区域所需要的闭合边界。为此,需要将检测出的边缘像素按照某种标准连接起来,常用的一种方法是根据邻近的边缘像素在梯度幅值和梯度方向上具有一定相似性而将它们连接起来,设T是幅度阈值,A是角度阈值,若像素(p,q)在像素(x,y)的邻域内,且他们的梯度幅度和梯度方向分别满足一下两个条件: (2.9) ,f(p,q),,f(s,t),T (2.10) ,(p,q),,(s,t),A 式中:(x,y)点处的梯度方向定义见式子(2.5)。另外,利用数学形态学的一些操作也可以实现边界连接。 11 XX大学学士学位论文 3 MATLAB仿真程序 3.1 阈值算法MATLAB仿真结果 3.1.1 阈值算法MATLAB仿真结果 经典的阈值分割算法(见附录): 图3.1 lenna阈值分割 图3.2 blood阈值分割 12 基于MATLAB的图像分割算法研究与仿真 图3.3 couple阈值分割 图3.4 rice阈值分割 13 XX大学学士学位论文 图3.5 cameraman阈值分割 3.1.2小结 由图3.1到图3.5不难推出这样一个结论:图像的直方图清晰地反映了图像的双峰特性,图像3.1、3.3和3.4都不是这个特点,因此阈值法很难做大图像分割,往往会带来图像失真。而其他的图像由直方图可以看出,有较好的双峰性,再选择适当的T值(阈值),分割图像的效果将会达到很不错的效果,为我们提供有价值的信息。 3.2 基于MATLAB的几种常用边缘检测代码(见附录): 3.2.1 边缘检测MATLAB仿真结果 图3.6 不同微分算子的边缘检测效果 14 基于MATLAB的图像分割算法研究与仿真 (a)Sobel算子;(b)Canny方法 图3.7 Sobel 算子和Canny方法边缘检测效果 3.2.2小结 在边缘检测方面,一般通过数学变换和MATLAB函数来完成对图像的边缘检测。其中梯度算子中Sobel算子要比另外2种算子边缘检测效果好。而edge函数提供的最有效的边缘检测方法是Canny方法。Canny方法比较不容易被噪声“填充”,更容易检查出真正的弱边缘。 15 XX大学学士学位论文 4 MATLAB GUI设计 4.1 MATLAB简介 Matlab是美国的math works公司推出的一个科技应用软件,它是由Matrix(矩阵)和Laboratory(实验室)的前三个字母组成。经过十几年的发展和完善,目前已成为在科学分析和计算领域的主流软件。MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。MATLAB中包括了图形界面编辑GUI,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。这可让使用者也可以像VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑。它将数值分析,矩阵计算,科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究,工程设计以及必须进行有效数值运算的众多学科领域提供了一种简洁高效的编程工具。借助于这种编程环境,任何复杂计算问题及其解的描述都十分符合人们的逻辑思维方式和数学表达习惯,用户只须列出简单的数学表达式,其结果便以数字或图形等方法表现出来。并在很大程度上摆脱了传统非交互式程序设计语言的编程模式,为自然科学和工程设计诸多领域提供强大环境。 Matlab的特点是:它具有高效的数值运算及符号计算功能,使用户从繁杂的数值计算分析中解脱出来;它具备图形处理功能,实现计算结果和编程的可视化;友好的用户界面及接近数学表达式的自然化语言,是学者易于学习和掌握;为拥护提供大量方便的处理工具,是计算机辅助分析,设计,仿真,教学等领域不可缺少的基础软件。Matlab最重要的特点就是易于扩展,允许用户自行构建指定功能的M文件,进而构成适合用户要求的工具箱,这大大扩展了MATLAB的适用范围。 4.2 图形用户界面GUI 用户界面是人,即用户与计算机(或程序)之间交互作用的工具和方法,是进行信息交流的方式。如键盘,鼠标,话筒都可成为与计算机交换信息的接口。 图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。图形用户界面的功能是让用户定制用户与matlab的交互方式,使操作更简便。 4.3 GUI设计原理及简介 用户图形界面(GUI)是程序的图形化界面。一个好的GUI 能够使程序更加容易的使用。它提供用户一个常见的界面,还提供一些控件,例如,按钮,列表框,滑块,菜单等。用户图形 界面应当是易理解且操作是可以预告的,所以当用户进行某一项操作,它 16 基于MATLAB的图像分割算法研究与仿真 知道如何去做。例如,当鼠标在一个按钮上发生了单击事件,用户图形界面初始化它的操作,并在按钮的标签上对这个操作进行描述。 创建MATLAB 用户图形界面必须由三个基本元素: 1(组件。在matlab GUI中的每一个项目(按钮,标签,编辑框等)都是一个图形化组件。 组件可分为三类:图形化控件(按钮,编辑框,列表,滚动条等),静态元素(窗口和 文本字符串),菜单和坐标系。图形化控件和静态元素函数uicontrol创建,菜单由函 数uimenu和uicontextmenu创建,坐标系经常用于显示图像化数据,由函数 axes创建。 2(图像窗口(Figure)。GUI的每一个组件都必须安排图像窗口中。以前,我们在画数据 图像时,图像窗口会被自动创建。但我们还可以用函数figure来创建图像窗口,空图 像窗口经常用于放置各种类型的组件。 (回调。最后,如果用户用鼠标或用键盘键入一些信息,那么程序就要有相应的动作。3 鼠标单击或键入信息是一个事件,如果matlab程序运行相应的函数,那么 matlab函 数肯定会有所反应。例如,如果用户单击一按钮,这个事件必然导致相应的matlab语 句执行。这些相应的语句被称为回调。只要执行GUI的单个图形组件,必然有一个回 调callback.Callback属性:是连接程序界面整个程序系统的实质性功能的纽带。该属 性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对 字符串进行求值。 4.4 设计方法 Matlab中的GUI的建立有两种方式。第一种是直接通过程序编写的方式产生对象,即利用uicontrol,uimeum等函数以编写M文件的方式来开发整个GUI。程序编写建立GUI对象的优点在于GUI菜单的建立比较齐全,并且程序代码的通用性很高。但这种方法的最大缺点就是GUI对象在界面上位置的配置,如果不熟悉GUI的用户会比较难以控制。 另一种方式是直接在matlab的GUI编辑界面GUIDE来建立。这个界面非常实用,只要直接通过鼠标将对象拖到目的地,就可以快速的建立出整个GUI框架,布局然后在随界面自动生成的M文件里面添加函数或程序代码。这种方式在M文件的管理上也比较 4.4.1图形用户界面设计工具 MATLAB的用户界面设计工具共有6个,它们是: ? 图形用户界面设计窗口:在窗口内创建,安排各种图形对象。 ? 菜单编辑器(Menu Editor):创建,设计,修改下拉式菜单和快捷菜单。 ? 对象属性查看器(Property Inspector):可查看每个对象的属性值,也可修改设置对象的属性值。 ? 位置调整工具(Alignment Tool):可利用该工具左右,上下对多个对象的位置进行调整。 ? 对象浏览器(Object Browser):可观察当前设计阶段的各个句柄图形对象。 ? Tab顺序编辑器(Tab Order Editor):通过该工具,设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。 17 XX大学学士学位论文 4.4.2菜单设计 ? 建立用户菜单 要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。 ? 菜单对象常用属性 菜单对象具有Children,Parent,Tag,Type,UserData,Visible等公共属性,除公共属性外,还有一些常用的特殊属性。 ? 快捷菜单 快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单.这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系.在MATLAB中,可以使用uicontextmenu函数和图 [15]形对象的UIContextMenu属性来建立快捷菜单。 4.4.3对话框设计 ?对话框的控件 在对话框上有各种各样的控件,利用这些控件可以实现有关控制.下面先介绍这些控件。 按钮(Push Button). 双位按钮(Toggle Button). 单选按钮(Radio Button). 复选框(Check Box). 列表框(List Box). 弹出框(Popup Menu). 编辑框(Edit Box). 滑动条(Slider). 静态文本(Static Text). 边框(Frame).按钮组(Botton Group)。 ?对话框的设计 一.建立控件对象 MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为: 对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…),其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同 二.控件对象的属性 MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。除Children、Parent、Tag、Type、UserData、Visible等公共属性 4.4.4句柄图形 句柄图形是对底层图形命令集合的总称,它实际上进行生成图形的工作。句柄图形的层次关系如下: 图4.1 句柄层次图形 18 基于MATLAB的图像分割算法研究与仿真 4.4.5 图形对象句柄命令 句柄系统可以从底层(1ow level)创建和操作线、面、文字、图像等基本图形对象指令。 4.5 总结 本章主要介绍了MATLAB GUI设计,包括其设计原理,设计工具,设计方法和如何制作一个GUI界面。 19 XX大学学士学位论文 5 结论与展望 5.1 结论 数字图像目标分割与提取是数字图像处理和计算机视觉领域中一个备受关注的研究分支,也是图像处理领域的一个经典难题。经过近二十年的不断研究和探讨,数字图像目标分割与提取在不同领域取得了很大发展,但是目前还没有一个通用的算法或标准能够胜任所有不同的应用,该问题也没有形成一个通用的自身理论。 通过学习和实践经典的图像目标分割与提取的算法,我对这一领域的历史和发展现状有了较为清楚的认识。在现在的研究水平下,想找出一种通用的技术或方法是很困难的。每一种算法都有其自身的优点和缺点,有其特定的适用范围,因此首先明确研究对象的性质是至关重要的,这样在使用算法时才可以有的放矢。经典的算法虽然在应用上已被新的算法所取代,但经典算法中的很多思想都具有相当重要的价值,它们是新算法研究和提出的基础。 通过本次毕业设计,我得到了许多收获。不但对数字图像目标分割与提取邻域的基本理论和基本知识有了较为全面的了解,在对新知识学习的过程中,自己原有的知识和理论也得到了进一步的巩固,同时自己的编程能力也得到了一定程度的提高。另外,在毕业设计过程中,我所学的知识得到了系统地整理和运用,这既是对我四年学习的检查,也为我今后在工作上的学习打下了坚实的基础。 因为时间仓促,再加上本人水平有限,在毕业设计过程中存在不少不足之处。我将以此为鉴,在今后的学习和生活过程中不断改进。 5.2 展望 分割问题的困难在于图像数据的模糊和噪声的干扰。到目前为止,还没有一种或者几种完善的分割方法,可以按照人们的意愿准确的分割任何一种图像。实际图像中景物情况各异,具体问题具体分析,需要根据实际情况选择适合的方法。分割结果的好坏或者正确与否,目前还没有一个统一的评价判断准则,分割的好坏必须从分割的效果和实际应用场景来判断。不过在人类研究图像的历史中,还是积累了许多经典的图像分割方法。虽然这些分割方法不适合所有类型的图像分割,但是这些方法却是图像分割方法进一步发展的基 [16]础。事实上,现代一些分割算法恰恰是从经典的分割方法衍生出来的。 20 基于MATLAB的图像分割算法研究与仿真 致 谢 值此论文完成之际~谨向所有曾给予我鼓励、关心和帮助的老师、同学、朋友表示深深的谢意: 首先要感谢我的导师顾斌杰~在整个毕业设计的过程中~他给了我各方面的悉心指导~使我有可能完成论文。他严谨求实的作风和渊博深厚的学识深深的感染了我。 我还要感谢我们班以及我们系我所认识的同学~是你们给了我好的环境和鼓励帮助~让我顺利的完成了这次的设计。 感谢在我成长过程中所有关心我、帮助我的人们。 21 XX大学学士学位论文 参考文献 [1] 夏得深,傅德胜.现代图像处理技术与应用.东南大学出版,2001:200-210 [2] K.R.Castleman. 数字图像处理.电子工业出版社,1998:120-130 [3] 冈萨雷斯.数字图像处理(MATLAB版).电子工业出版社,2005:210-240 [4] 刘直芳,游胜志等.基于多尺度彩色形态矢量算子的边缘检测.中国图像图形学报 2002 (9): 888-893 [5] 潘晨,顾峰.基于3D直方图的彩色图像分割方法.中国图像图形学报 2002 (8) :800-805 [6] 李宏贵,李兴国.一种基于函数的图像边缘检测算法.中国图像图形学报 2003(2) :188-192 [7] J. Shi and J. Malik. “Normalized cuts and image egmentation”.Proc. of CVPR,, 1997:731-737 [8] W.Y. Ma and B.S. Manjunath.“Edge flow: a framework of boundary detection and image segmentation”.Proc. of CVPR, 1997:744-749 [9] S. Belongie, et. al. “Color- and texture-based image segmentation using EM and its application to content-based image retrieval”. Proc. Of ICCV,, 1998:675-682 [10] G.Kuntimad and H.S.Ranganath.“Perfect Image Segmentation Using Pulse Coupled NeuralNetworks”.IEEE trans. on NeuralNetworks,Vol.10,No.3, 1999 [11] 孙祥,徐流美,吴清.MATLAB 7.0 基础教程.清华大学出版社,2005:320-330 [12] WU Z , LEAHY R .An op timal graph theoretic app roach to data clustering: theory and its app lication to image segmentation [ J ].IEEE Transactions on Pattern Analysis and Machine Intelligence,1993, 15 (11) : 1101-1113 [13] SH I J, Malik J. Normalized Cuts and Image Segmentation[A ]. Pro2ceedings of IEEE Conference on ComputerVision and Pattern Recog2 nition[C ], 1997: 731-737 [14] WANG S , SISKUND JM. Image segmentation with ratio cut [ J ] .IEEE Transactions on Pattern Analysis and Machine Intelligence,2003, 25 (6) : 675-690 [15] GRADYLJ . Space 2Variant ComputerVision : A Graph 2Theoretic App roach[D ]. Boston University, 2004:65-98 [16] S Wang,J M Siskind(Image segmentation with ratio cut[J](IEEE Trans on PAMI,2003;25(6): 675-690 22 基于MATLAB的图像分割算法研究与仿真 附 录 阈值算法: fname=uigetfile('*.bmp,*.tif,*.jpg','请选择一副图片'); I=imread(fname); subplot(2,2,1),imshow(I),title('原始图像'); subplot(2,2,2),imhist(I),title('原始图像直方图'); G1=threshold(I,120); G2=threshold(I,50); subplot(2,2,3),imshow(G1),title('T=120时的图像分割'); subplot(2,2,4),imshow(G2),title('T=50时的图像分割'); 以下是threshold子函数的程序代码如下: function G=threshold(I,T); [m,n]=size(I); G=zeros(m,n); for i=1:m for j=1:n if I(i,j)>=T G(i,j)=255; end end end 边缘检测 I=imread('lena.jpg');% 提取图像 BW1=edge(I,'sobel'); %用SOBEL算子进行边缘检测 BW2=edge(I,'roberts');%用Roberts算子进行边缘检测 BW3=edge(I,'prewitt'); %用prewitt算子进行边缘检测 BW4=edge(I,'log'); %用log算子进行边缘检测 BW5=edge(I,'canny'); %用canny算子进行边缘检测 h=fspecial('gaussian?,5); BW6=edge(I,?canny?); subplot(2,3,1), imshow(BW1); title(„sobel edge check?); subplot(2,3,2), imshow(BW2); title(„sobel edge check?); subplot(2,3,3), imshow(BW3); 23 XX大学学士学位论文 title(„prewitt edge check?); subplot(2,3,4), imshow(BW4); title(„log edge check?); subplot(2,3,5), imshow(BW5); title(„canny edge check?); subplot(2,3,6), imshow(BW6); title(„gasussian&canny edge check?);%此为用高斯滤波后Canny算子边缘检测结果 %边缘检测 I=imread( 'blood.tif '); subplot(2,2,1),imshow(I),title('原始图像'); BW1=edge(I,'Roberts '); BW2=edge(I, 'Prewitt' ); BW3=edge(I, 'Sobel' ); subplot(2,2,2),imshow(BW1),title('Roberts算子边缘检测结果'); subplot(2,2,3),imshow(BW2),title('Prewitt算子边缘检测结果'); subplot(2,2,4),imshow(BW3),title('Sobel算子边缘检测结果'); Callback函数1:用于读取图像。 global im [filename, pathname]=uigetfile({'*.bmp';'*.tif';'*.jpg'},'请选择一个图像'); if pathname == 0 return; end str=[pathname filename]; [im A]=imread(str); axes(handles.axes1); imshow(im,A); function varargout = gui_new(varargin) % GUI_NEW M-file for gui_new.fig % GUI_NEW, by itself, creates a new GUI_NEW or raises the existing % singleton*. % % H = GUI_NEW returns the handle to a new GUI_NEW or the handle to % the existing singleton*. % % GUI_NEW('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GUI_NEW.M with the given input arguments. 24 基于MATLAB的图像分割算法研究与仿真 % % GUI_NEW('Property','Value',...) creates a new GUI_NEW or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before gui_new_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to gui_new_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help gui_new % Last Modified by GUIDE v2.5 14-May-2009 16:58:58 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @gui_new_OpeningFcn, ... 'gui_OutputFcn', @gui_new_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before gui_new is made visible. function gui_new_OpeningFcn(hObject, eventdata, handles, varargin) 25 XX大学学士学位论文 % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to gui_new (see VARARGIN) % Choose default command line output for gui_new handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes gui_new wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = gui_new_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB 26 基于MATLAB的图像分割算法研究与仿真 % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in radiobutton1. function radiobutton1_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton1 % --- Executes on button press in radiobutton2. function radiobutton2_Callback(hObject, eventdata, handles) % hObject handle to radiobutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton2 % --- Executes on button press in radiobutton3. function radiobutton3_Callback(hObject, eventdata, handles) % hObject handle to radiobutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton3 % --- Executes on button press in radiobutton4. function radiobutton4_Callback(hObject, eventdata, handles) % hObject handle to radiobutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton4 27 XX大学学士学位论文 % --- Executes on button press in radiobutton5. function radiobutton5_Callback(hObject, eventdata, handles) % hObject handle to radiobutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton5 callback函数4:用于退出GUI界面 close(gcf); set(0,'currentfigure',thanks); 28
本文档为【基于MATLAB的图像分割算法研究与仿真】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_348501
暂无简介~
格式:doc
大小:247KB
软件:Word
页数:44
分类:工学
上传时间:2017-10-16
浏览量:164