• 518.95 KB
  • 2022-04-29 13:58:26 发布

图像分割算法的研究与实现电子信息科学与技术毕业论文.doc

  • 32页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'TP391.41学士学位论文(设计)论文题目图像分割算法研究与实现作者姓名指导教师所在院系XXX学院专业名称电子信息科学与技术完成时间20XX年5月15日 目录摘 要:11.前言32.图像分割概念32.1图像分割定义32.2图像分割方法综述52.3阈值法52.4基于边缘检测的分割方法92.5基于区域的分割方法123.图像分割方法详述133.1图像分割方法133.2图像分割方法实现144.实验结果及分析154.1实验结果154.2实验结果分析195.小结215.1本文主要工作总结215.2结论及展望226.致谢247.附录26湖北师范学院学士学位论文(设计)评审表 图像分割算法研究与实现韩焱(湖北师范学院物理与电子科学学院,湖北黄石435002)摘 要:图像分割是图像处理与计算机视觉的基本问题之一,是图像处理图像分析的关键步骤。因为图像分割及其基于分割的目标表达、特征提取和参数测量等将原始图像转化为更抽象更紧凑的形式,使得更高层的图像分析和理解成为可能。因此,图像分割多年来一直得到人们的高度重视.本文首先将现有的多种类型图像分割方法归结为3类典型的方法,并分析各自的特性;然后提出图象分割方案,并利用MATLAB软件编写程序,展示实验现象,最后对所做工作进行总结。关键词:图像分割阈值法边缘检测微分算子局部阈值中图分类号:TP391.41RESEARCHANDIMPLEMENTATIONOFIMAGESEGMENTATIONALGORITHMSHanYan(CollegeofPhysicsandElectronicScience,HubeiNormalUniversity,Huangshi435002,China)Abstract:Imagesegmentationisoneofbasicproblemsinimagepro-cessingandcomputervision,andisakeystepinimageprocessingandimageanalysis.Becauseoriginalimagecanbetranslatedintomoreabstractandmorecompactformatbyimagesegmentationandtargetexpression,featherextraction,parametersurvey,andsoonwhicharebaseonsegmentation,thismakesmorehighimagesanalysisandimageunderstandingpossible.Therefore,theimagesegmen- tationformanyyearsishighlyvalued.Atfirst,imagesegmentationmethodsareclassifiedintothreetypicaltypes,andtheircharacteris-ticsareanalyzed.Secondly,theschemeofimagesegmentationareintroduced.Atlast,thereisasummationtothewholework,writtingprogramwithMATLAB,andshowthephenomenon.Keywords:ImageSegmentation,Threshold,EdgeDetection,Differentialoperator,Localthreshold 图像分割算法研究与实现1.前言在图像的研究和应用过程中,人们往往仅对各幅图像中的某些部分感兴趣.这些部分常称为目标或前景,它们一般对应图像中特定的具有独特性质的区域.为了辨别和分析目标,需要将这些区域分离提取出来,在此基础上才有可能对目标进一步利用.图像分割就是将图像分成各具特性的区域并提取出感兴趣的目标的技术和过程.在进行图像分割时,首先要根据目标和背景的先验知识来对图像中的目标、背景进行标记、定位,然后将等待识别的目标从背景中分离出来.图像分割是由图像处理进到图像分析的关键步骤,也是一种基本的计算机视觉技术.这是因为图像的分割、目标的分离、特征的提取和参数的测量将原始的图像转化为更抽象更紧凑的形式,使得更高层的分析和理解成为可能.因此,图像分割多年来一直得到人们的高度重视[1]。图象分割在实际中已得到广泛的应用,例如在工业自动化,在线产品检验,生产过程控制,文档图象处理,遥感和生物医学图象分析,保安监视,以及军事,体育,农业工程等方面。概括来说,在各种图象应中,只要需对图象目标进行提取,测量等都离不开图象分割。近年来,图象分割在对图象的编码中也起到越来越重要的作用,例如国际标准MPEG一4中模型基/目标基编码等都需要基于分割的结果。可见,图象分割在图象工程中有重要的地位和影响。本文主要从图像分割定义、图像分割的方法等几个方面来阐述关于图像分割的几个问题。2.图像分割概念2.1图像分割定义文字定义:把图象(空间)按一定要求分成一些“有意义”区域的处理技术。“有意义”—希望这些区域能分别和图象景物中各目标物(或背景)相对应。 正式“集合”定义:令集合R代表整个图象区域,对R的分割可看作将R分成若干个满足如下五个条件的非空的子集(子区域):(1)(分割所得全部子区域的总和(并集)应能包括图象中所有象素或将图象中每个象素都划分进一个子区中)(2)对所有的i和j,有Ri∩Rj=ø(i≠j);(各子区互不重叠)(3)对i=1,2,3……,N,有P(Ri)=TRUE;(属于同一子区象素应具有的某些共同特性)(4)对i≠j,有P(Ri∪Rj)=FALSE;(属于不同子区象素应具有某些不同特性)(5)对i=1,2,……,N,Ri是连通区域(同一子区内象素应当是连通的)[2].条件1指出对一幅图象的分割结果的全部子区域的总和(并集)就是原图象,或者说分割应该是将图象中的每个象素都分进某个子区域中。条件2指出在分割结果中各个子区域是互不重叠的,或者说在分割结果中一个象素不能同时属于两个区域。条件3指出在分割结果中每个子区域都有独特的特性,或者说属于同一个区域中的象素应该具有某些相同的特性。条件4指出在分割结果中,不同的子区域具有不同的特性,没有公共元素,或者说属于不同区域的象素应该具有一些不同的特性。条件5要求分割结果中同一个子区域内的象素应当是相通的,即同一个子区域内的任意两个象素在该子区域内是互相连通,或者说分割得到的区域是一个连通组元。上面的定义,不仅对明确的说明了分割的含义,而且对进行分割也有相当的指导作用。因为分割总是根据一些分割准则进行的。条件1和条件2说明正确的分割准则应可适用于所有区域和所有象素,条件3和条件4说明合理的分割准则应该能够帮助确定各区域象素有代表性的特性,而条件5说明完整的分割准则应直接或间接地对区域内象素的连通性有一定的要求或限定。最后需要指出的是,在实际应用中图象分割不仅是要把一幅图象分成满足以上五个条件的各具特性的区域,而且需要把其中感兴趣的目标区域提取出来,只有这样才算是真正完成了图象分割的任务。 2.2图像分割方法综述图像分割是指将图像划分为与其中含有的真实世界的物体或区域有强相关性的组成部分的过程。图像分割是图像处理和分析中的重要问题,也是计算机视觉研究中的一个经典难题。尽管它一直受到科研人员的重视,但是它的发展很慢,被认为是计算机视觉的一个瓶颈。迄今为止,还没有一种图像分割方法适用于所有的图像,也没有一类图像所有的方法都适用于它。近几年来,研究人员不断改进原有方法并将其它学科的新理论和新方法引入图像分割,提出了不少新的分割方法。本文对传统的图像分割方法进行分析。典型的图像分割方法有阈值法,边缘检测法,区域法。分析各种图像分割方法可以发现,它们分割图像的基本依据和条件有以下4方面:(l)分割的图像区域应具有同质性,如灰度级别相近、纹理相似等;(2)区域内部平整,不存在很小的小空洞;(3)相邻区域之间对选定的某种同质判据而言,应存在显著差异性;(4)每个分割区域边界应具有齐整性和空间位置的准确性。现有的大多数图像分割方法只是部分满足上述判据。如果加强分割区域的同性质约束,分割区域很容易产生大量小空洞和不规整边缘:若强调不同区域间性质差异的显著性,则极易造成非同质区域的合并和有意义的边界丢失。不同的图像分割方法总有在各种约束条件之间找到适当的平衡点[3]。2.3阈值法阈值法的优点是计算简单,速度快,易于实现。尤其是对于不同类的物体灰度值或其他特征值相差很大时,能很有效地对图像进行分割。阈值法的缺点是当图像中不存在明显的灰度差异或灰度值范围有较大的重叠时,分割效果不理想。并且阈值法仅仅考虑图像的灰度信息而没有考虑图像的空间信息,致使阈值法对噪声和灰度不均匀十分地敏感。在实际应用中,阈值法通常与其他方法结合使用[4]。阈值分割法是简单地用一个或几个阈值将图像的直方图分成几类,图像中灰度值在同一个灰度类内的象素属干同一个类。其过程是决定一个灰度值,用以区分不同的类,这个灰度值就叫做“阈值” 。它可以分为全局阈值分割和局部阈值分割。所谓全局阈值分割是利用利用整幅图像的信息来得到分割用的阈值,并根据该阈值对整幅图像进行分割而局部阈值分割是根据图像中的不同区域获得对应的不同区域的阈值,利用这些阈值对各个区域进行分割,即一个阈值对应相应的一个子区域,这种方法也称适应阈值分割。阈值法是一种简单但是非常有效的方法,特别是不同物体或结构之间有很大的强度对比时,能够得到很好的效果它一般可以作为一系列图像处理过程的第一步。它一般要求在直方图上能得到明显的峰或谷,并在谷底选择阈值。如何根据图像选择合适的阈值是基于阈值分割方法的重点所在,也是难点所在。它的主要局限是,最简单形式的阈值法只能产生二值图像来区分两个不同的类。另外,它只考虑象素本身的值,一般都不考虑图像的空间特性,这样就对噪声很敏感它也没有考虑图像的纹理信息等有用信息,使分割效果有时不能尽如人意[5]。阈值法的几种阈值选择方法:全局阈值法(1)双峰法对于目标与背景的灰度级有明显差别的图像,其灰度直方图的分布呈双峰状,两个波峰分别与图像中的目标和背景相对应,波谷与图像边缘相对应。当分割阈值位于谷底时,图像分割可取得最好的效果。该方法简单易行,但是对于灰度直方图中波峰不明显或波谷宽阔平坦的图像,不能使用该方法[6]。假设,一副图像只有物体和背景两部分组成,其灰度图直方图呈现明显的双峰值,如下图:图1双峰法灰度直方图找出阈值T,则可以对整个图像进行二值化赋值。程序的实现:通过数组记录直方图中的各像素点值的个数, 再对逐个像素值进行扫描。记录每个像素能作为谷底的范围值,接着找出能作为谷底范围最大的点作为阈值[7]。实现流程图:开始通过数组g[255]读入直方图逐个查看能每个像素值在直方图中能作为谷底的范围找出能作为谷底范围最大的像素值作为阈值根据取得的阈值对图像进行二值化结束图2双峰法实现流程图(2)灰度直方图变换法该方法不是直接选取阈值,而是对灰度直方图进行变换,使其具有更深的波谷和更尖的波峰,然后再利用双峰法得到最优阈值。这种方法的一个共同特征是根据像素点的局部特性,对其进行灰度级的增强或减弱的变换。这种方法假设图像由目标和背景组成,并且目标和背景灰度直方图都是单峰分布[5]。(3)迭代法(最优方法)它基于逼近的思想,基本算法如下:<1>求出图像的最大灰度值和最小灰度值,分别记为Max和Min,令初始阈值为:,根据阈值将图像分割为前景和背景,分别求出两者的平均灰度值和;<2>求出阈值; <3>如果;则所得即为阈值;否则转<2>迭代计算。迭代所得的阈值分割图象的效果良好,基于迭代的阈值能区分图象的前景和背景的主要区域所在,但是在图象的细微处还是没有很好的区分度,令人惊讶的是对某些特定图象,微小数据的变化会引起分割效果的巨大变化,两者的数据只是稍有变化,分割效果反差极大,具体原因还有待进一步研究[8]。局部阈值法原始图像被分为几个小的子图像,再对每个子图像分别求出最优分割阈值。(1)自适应阈值在许多情况下,背景的灰度值并不是常数,物体和背景的对比度在图像中也有变化。这时,一个在图像中某一区域效果良好的阈值在其它区域却可能效果很差。另外,当遇到图像中有阴影、突发噪声、照度不均、对比度不均或背景灰度变化等情况时,只用一个固定的阈值对整幅图像进行阈值化处理,则会由于不能兼顾图像各处的情况而使分割效果受到影响。在这些情况下,阈值的选取不是一个固定的值,而是取成一个随图像中位置缓慢变化的函数值是比较合适的。这就是自适应阈值。自适应阈值就是对原始图像分块,对每一块区域根据一般的方法选取局部阈值进行分割。由于各个子图的阈值化是独立进行的,所以在相邻子图像边界处的阈值会有突变,因此应该以采用适当的平滑技术消除这种不连续性,子图像之间的相互交叠也有利于减小这种不连续性。总的来说,这类算法的时间和空间复杂度都较大,但是抗噪能力强,对一些使用全局阈值法不宜分割的图像具有较好的分割效果。(2)多阈值分割在多阈值分割中,分割是根据不同区域的特点得到几个目标对象,所以提取每一个目标需要采用不同的阈值,也就是说要使用多个阈值才能将它们分开,这就是多阈值分割。 在实际的应用中,由于噪声等干扰因素,直方图有时不能出现明显的峰值,此时选择的阈值不能得到满意的结果;另外一个就是阈值确定主要依赖于灰度直方图,很少考虑图像中象素的空间位置关系,因此当背景复杂,特别是在同一背景上重叠出现若干个研究目标时,容易丧失部分边界信息,造成图像分割的不完整[9]。2.4基于边缘检测的分割方法边缘(或边沿)是指其周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,也即边缘是灰度值不连续的结果,这种不连续常可以用求导数方便的检测到,一般常用一阶导数和二阶导数来检测边缘。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。因此,它是图像分割所依赖的重要特征,而边缘信息是一种图像的紧描述,所包含的往往是图像中最重要的信息,故对图像提取边缘能极大地降低我们要处理的数据量。常见的边缘剖面有3种:(1)阶梯状边缘:阶梯状的边缘处于图像中两个具有不同灰度值的相邻区域之间,可用二阶导数的过零点检测边缘位置;(2)脉冲状边缘:主要对应细条状的灰度值突变区域,通过检测二阶导数过零点可以确定脉冲的范围;(3)屋顶状边缘:屋顶状边缘位于灰度值从增加到减少的变化转折点,通过检测一阶导数过零点可以确定屋顶位置。图3常见边缘剖面虽然图像边缘点产生的原因不同,但他们都是图像上灰度不连续点,或是灰度变化剧烈的地方。经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘。这种方法称为边缘检测局部算子法。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。常用的边缘检测方法的基础是微分运算,边缘点对应于一阶微分幅度大的点,或对应于二阶微分的过零点。 传统的边缘检测算法通过梯度算子来实现,在求边缘的梯度时,需要对每个象素位置计算。经典的梯度算子模板有Prewitt模板、Canny模板、Sobel模板、Log模板等[10]。边缘检测的几种经典算法:(1)Canny算子Canny边缘检测利用高斯函数的一阶微分,在噪声抑制和边缘检测之间寻求较好的平衡,其表达式近似于高斯函数的一阶导数。Canny边缘检测算子对受加性噪声影响的边缘检测是最优的。(2)Prewitt和Sobel算子Prewitt从加大边缘检测算子的模板大小出发,由2×2扩大到3×3来计算差分算子,采用Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响。Sobel在Prewitt算子的基础上,对4-邻域采用带权的方法计算差分,该算子不仅能检测边缘点,且能进一步抑制噪声的影响,但检测的边缘较宽。(3)Log算子Log算子也就是Laplacian-Gauss算子,它把Gauss平滑滤波器和Laplacian锐化滤波器结合了起来,先平滑掉噪声,再进行边缘检测。边缘检测算法有如下四个步骤:1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折衷。2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度幅值来完成的。3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。各个边缘检测算子比较:Sobel算子和Prewitt算子:都是对图像先作加权平滑处理,然后再作微分运算,所不同的是平滑部分的权值有些差异, 因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。虽然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度。Log算子:该算子克服了拉普拉斯算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到。Canny算子:该算子同样采用高斯函数对图像做平滑处理,因此具有较强的抑制噪声能力,同样该算子也会将一些高频边缘平滑掉,造成边缘丢失。综上所述,前面所介绍的各个算子各有各的特点和应用领域,每个算子只能反映出边缘算法性能的一个方面,在许多情况下需要综合考虑[12]。该类方法对边缘灰度值过渡比较尖锐且噪声较小等不太复杂的图像,大都可以取得较好的效果。但对于边缘复杂、采光不均匀的图像来说,则效果不太理想,主要表现在边缘模糊、弱边缘丢失和整体边缘不连续等方面。在噪声较大的情况下常用的边缘检测算法,如Marr算子,递归滤波器和Canny算子等都是先对图像进行适当的平滑,抑制噪声,然后求导数,或者先对图像进行局部拟合,然后再用拟合的光滑函数的导数来代替直接的数值导数。Canny算子较为简单,而且考虑了梯度方向,效果比较好[13]。要做好边缘检测,首先要清楚待检测的图像特性变化的形式从而使用适应这种变化的检测方法。其次要知道特性变化总是发生在一定的空间范围内,不能期望用一种检测算子就能最佳检测出发生在图像上的所有特性变化。当需要提取多空间范围内的变化特性时,要考虑多算子的综合应用。第三,要考虑噪声的影响其中一个办法就是滤除噪声,这有一定的局限性再就是考虑信号加噪声的条件检测利用统计信号分析或通过对图像区域的建模而进一步使检测参数化。第四,可以考虑各种方法的组合,如先找出边缘然后在其局部利用函数近似通过内插等获得高精度定位。第五,在正确检测边缘的基础上要考虑精确定位的问题[14]。2.5基于区域的分割方法基于区域的图像分割是根据图像灰度、纹理、颜色和图像像素统计的均匀性等图像的空间局部特征,把图像中的像素划归到各个物体或区域中,进而将图像分割成若干个不同区域的一种分割方法。基于区域的分割方法主要有区域生长法、分裂合并法。 区域生长法、分裂合并法:区域生长法的基本思想是根据一定的相似性准则,将图像中满足相似性准则的像素或子区域合成更大的区域;分裂合并法是从整个图像出发,根据图像和各区域的不均匀性,把图像或区域分割成新的子区域,根据毗邻区域的均匀性,把毗邻的子区域合并成新的较大的区域。这两种方法通常相结合,以便把相似的子区域合并成尽可能大的区域。区域生长的固有缺点是分割效果依赖于种子的选择及生长顺序,区域分裂技术的缺点是可能破坏边界,所以它们常常与其他方法相结合,以期取得更好的分割效果[15]。区域生长算法的研究重点:(l)特征度量和区域增长规则的设计;(2)算法的高效性和准确性。区域生长方式的优点是计算简单。与闭值分割类似,区域增长也很少单独使用,往往是与其它分割方法一起使用。区域生长的缺点是:(l)它需要人工交互以获得种子点,这样使用者必须在每个需要抽取出的区域中植入一个种子点;(2)区域增长方式也对噪声敏感,导致抽取出的区域有空洞或者在局部体效应的情况下将分开的区域连接起来。在区域合并方法中,输入图像往往分为多个相似的区域,然后类似的相邻区域根据某种判断准则迭代进行合并。在区域分裂技术中,整个图像先被看成一个区域,然后区域不断被分裂为四个矩形区域,直到每个区域内部都是相似的,分裂合并方法中,区域先从整幅图像开始分裂,然后将相邻的区域进行合并。分裂合并方法不需要预先指定种子点,它的研究重点是分裂和合并规则的设计。但是,分裂合并技术可能会使分割区域的边界破坏[2]。和阈值法一样,区域生长法一般不单独使用,而是放在一系列处理过程中。它主要的缺陷是,每一个需要提取的区域都必须人工给出一个种子点,这样有多个区域就必须给出相应的种子个数。此法对噪声也很敏感,会造成孔状甚至是根本不连续的区域,相反的,局部且大量的影响还会使本来分开的区域连接起来[4]。3.图像分割方法详述3.1图像分割方法 本次毕业设计采用的是彩色图像作为分割图像,采用的分割方法总的来说是阈值法与边缘检测法的结合使用,在整个图象分割的过程中,最主要的方法是边缘检测法,而阈值法起到是对图象进行预处理和后处理的作用。考虑到既要具有良好的切割效果,又要保留图像的重要边缘特征,具体的实现步骤如下:(1)输入待分割图像f(x,y),f(x,y)为彩色图像;(2)将待分割图像f(x,y)转化为灰度图像g(x,y);(3)利用MATLAB显示灰度图像g(x,y)的灰度直方图,用迭代法进行阈值选取,以达到区分背景和目标的目的;(4)采用边缘检测算子检测图像的边界特征,确定图象的边界位置,得到图像G(x,y);(5)根据图象分割的实际效果,将经过边缘检测后的图像G(x,y)进行局部阈值分割,以达到消除图像中某些存在阴影、照度不均匀,各处的对比度不同,背景灰度变化等问题。3.2图像分割方法实现1、对彩色图像进行灰度处理2、用全局阈值法对图像进行预处理:阈值法是一种简单有效的图像分割方法,它用一个或几个阈值将图像的灰度级分为几个部分,认为属于同一个部分的像素是同一个物体。运用这种思想,我打算首先将全局阈值法用来区分图片中的背景和目标。阈值分割法的结果很大程度上依赖于对阈值的选择,因此该方法的关键是如何选择合适的阈值。合适的阈值必须具备的条件是在使用选取的阈值对图片进行分割后,必须使图像中的背景和目标的分割错误达到最小。这种方法是先确定一个处于图像灰度取值范围之中的灰度阈值,然后将图像中各个像素的灰度值都与这个阈值相比较,并根据比较结果将对应的像素划分为两类:像素的灰度值大于阈值的为一类,像素的灰度值小于阈值的为另一类.这两类像素一般分属于图像中的两类区域,所以对像素根据阈值分类达到了区域分割的目的.阈值分割可以分为全局阈值和局部阈值两种情况;在图像内容不太复杂、灰度分布较集中的情况下,往往采用最简单的全局阈值,并不考虑图像中点的位置和其邻域性质.我采用的是迭代法来求取阈值,迭代法是基于逼近思想: (1)求出图像的最大灰度值和最小灰度值,分别记为Max和Min,令初始阈值为:,根据阈值将图像分割为前景和背景,分别求出两者的平均灰度值和;(2)求出阈值;(3)如果;则所得即为阈值;否则转(2)迭代计算。迭代所得的阈值分割效果良好,基于迭代的阈值能区分图像的前景和背景的主要区域所在。3、用边缘检测法对图像进行分割:边缘是图像的最基本的特征,边缘中包含着有价值的目标边界信息,这些信息可以用作图像分析、目标识别。边缘检测分割法是通过检测出不同区域边界来进行分割的.边缘总是以强度突变的形式出现,可以定义为图像局部特性的不连续性,如灰度的突变、纹理结构的突变等.边缘常常意味着一个区域的终结和另一个区域的开始.图像的边缘包含了物体形状的重要信息,两个具有不同灰度值的相邻区域之间总存在灰度边缘.灰度边缘是灰度值不连续(或突变)的结果,这种不连续常可利用求一阶和二阶导数方便的检测到.在对图像进行分割时,采用了多种算子对图像进行分割,最后根据分割的现象采用效果最好的一种算子作为本次毕业设计的边缘检测算子。4、用局部阈值法对图像进行后处理:经过全局阈值分割和边缘检测分割后,有的地方存在灰度不连续,边缘不清晰的情况,如果只用一个固定的全局阈值对整幅图像进行后,则由于不能兼顾图像各处的情况而使分割效果受到影响。这时采用局部阈值法,即用与像素位置相关的一组阈值对图像各部分分别进行分割。最简单的方法是将图像划分为若干小图像,先对各子图像阈值法进行分割,再将分割后的小区域合并在一起,得到整幅图像的完整分割结果。其实局部阈值法是全局阈值法的一个拓展。 4.实验结果及分析4.1实验结果图4灰度直方图图5灰度图像 图6全局阈值化后的图片图7prewitt算子分割后的图片 图8Canny算子分割后的图片图9log算子分割后的图片将Canny算子分割后的图片作为边缘检测后的图片,再将这个图片分割为四个小图片,每一个图片的直方图如下: 图10第一块的直方图图11第二块的直方图图12第三块的直方图图13第四块的直方图图13局部阈值化后的图像 4.2实验结果分析由灰度图片的直方图可以看出,这个直方图有多个峰值,不满足双峰法的两个波峰一个波谷的条件,所以不适合采用双峰法,我采用的是迭代法,迭代法得到的阈值分割效果良好,基于迭代的阈值能区分图象的前景和背景的主要区域所在,迭代法作用于整幅图像每个像素,因此,对于直方图波峰明显或目标和背景的灰度差异悬殊的图像,得到的效果很好。由灰度图和灰度直方图可以看出,该图像的目标和背景的灰度差异悬殊,并且该灰度直方图的波峰明显,满足迭代法的使用条件。由效果图可以看出,用迭代法得到的阈值分割图失真度很低,基本上保持了原图的轮廓。在采用边缘算子时,本次毕业设计测试了3种算子,分别是Prewitt算子,Log算子和Canny算子。对于三种算子的实验现象,从视觉上来看,以Canny算子最好,边缘信息丰富,几乎保留了边缘所有的边缘点,而且边缘清晰,连续性好。Log算子,其分割图像中所含非边缘点较少,而且主要边缘大部分被保留,但是还是去掉了很多真边缘点。Prewitt算子的分割的图像中虽然几乎没有非边缘点,但是边缘的连续性较差,从视觉上来看图像显得很杂乱。我们对图像分割的结果通常以人的主观判决作为评价准则。尽管对大多数图像处理问题而言,最后的信宿是人的视觉,但对不同分割方法的处理结果作一定量的比较、评价也是必需的。这是一个有意义但比较困难的问题。从目前的文献来看,已有学者在这方面做了一些工作。一般认为对分割方法的评价可以通过分析和实验两种方式来进行。因此,分割评价方法可以分为分析法和实验法两大类。分析法是直接分析分割算法本身的原理及性能,而实验法是通过对测试图像的分割结果来评价算法的。通过对实际分割结果的分析来评估分割算法是具有实际意义的。定量试验准则:区域间的对比度 图像分割要把一幅原始图像分为若干个区域。直观的考虑,这些区域的特性之间应该有比较大的差距,或者说有明显的对比,根据区域间的特性对比度的大小可以判别分割图的质量,也可由此反推出所用分割算法的优劣来,对于图像中相邻接的两个区域来说,如果他们各自的平均灰度为f1和f2,则它们之间的区域对比度可以按下式来计算:(1)事实上式(1)中的f也可代表除灰度外的其他特征量,这样就得到其他区域间的对比度,当一幅图像有多个区域时,可利用式(1)分别计算两两间的区域间的对比度再求和[16]。将图像分为左右两个大的区域,下表是各个算子分割图像后的区域间的对比度:图像平均灰度1平均灰度2区域间对比度Canny算子25.9625.040.018Prewitt算子33.2132.610.009Log算子25.0424.880.003表1区域间的对比度所以,区域间的对比度越高代表分割效果越好,由上表可以看出,Canny算子分割的效果最好,Prewitt分割效果其次,Log算子的分割效果最差。接下来的局部阈值法,采用的就是Canny算子分割的图像。在将边缘分割后的图像进行分割后,分成四块小图像,在实验现象中可以看出,这四块小图像的灰度直方图都有很明显的双峰,但是由于波谷宽阔平坦,不满足双峰法的使用条件,所以不能使用双峰法,所以在对不同的图像进行阈值化的时候,采用的是全局阈值法里面的迭代法,总的来说,就是将Canny算子分割后的图片继续分割成四小块,对四块不同的图片用迭代法求取阈值,再将阈值化后的图片合并起来。局部阈值化后,由现象可以看出,并没有对原图进行多大的改善,只是在一些很细微的地方有了一些边缘的细化以及平滑,这说明在经过Canny算子分割后,由灰度直方图可以看出,这个灰度图双峰的谷底是在接近0的位置,而且是绝大部分像素都是接近于0 的位置,所以图像的改善并不大,并且图像并没有太多的灰度不连续以及阴影的情况存在,但是这并不能否定局部阈值化的效果的存在性。5.小结5.1本文主要工作总结通过对大量文献的阅读,在对图像分割领域研究现状和研究内容有了一定了解的基础上,本文围绕图像分割技术的理论基础及其实际应用情况,主要进行了以下几个方面的研究工作:<1>对图像分割的概念进行详细的陈述。<2>对图像分割的常用方法进行分析和总结;根据图像分割所基于的原理不同,把图像分割方法主要分为基于阈值分割、基于边缘检测分割和基于区域分割三大类,并对他们做了简单的介绍和比较。<3>提出本次图像分割的方案,并且对方案进行详细的论述以及分析。<4>运用MATLAB软件进行实验,展示实验现象,得到了较好的效果,根据实验现象对图像分割进行分析,运用相关的图像分割评价标准来对分割出来的图像进行分析,根据数据说明图像分割结果的优劣,总结本次图像分割方案的优缺点。5.2结论通过研究分析,可以得到以下结论:(1)阈值分割法的重点是对阈值的选择,因此该方法的关键是如何选择最佳阈值,如果阈值选择不合适,则影响了图片分割出来的效果,也影响下一步边缘分割的效果。(2)从实验现象中可以看出,图像中的目标和背景灰度差异不明显或灰度值范围有重叠的地方分割效果不明显,这一块的背景和目标就没有得到很好的区分,而其他灰度差异比较大的地方分割效果较好。因此,全局阈值法适用于灰度差异较大的图片,如果图像灰度变化不是很明显,则达不到理想的效果。(3)同样都是边缘检测法,不同的边缘检测算子对同一幅图像分割出来的效果是不同的,因为每一种边缘算子的卷积形式是不同的,对于图像的明暗程度,分辨率,灰度变化的敏感程度也是不同的。没有哪一种边缘算子是绝对的合适,从以上实验现象可以看出,例如: Canny算子的整体效果最好,它的分割结果很明显没有Prewitt算子分割细致,这是它不足的地方,每一种边缘检测算子分割的图像都有相应的优缺点,我们只能选取当中效果较好的一种,但是这也不能判定为这种算子就是最好的,只能说对于特定的图片,这种算子达到的效果最好。(4)局部阈值分割法是将原始图像划分成较小的图像,并对每个子图像选取相应的阈值。局部阈值分割法虽然能改善分割效果,但存在几个缺点:①每幅子图像的尺寸不能太小,否则统计出的结果无意义。②每幅图像的分割是任意的,假如有一幅子图像正好落在目标区域或背景区域,而根据统计结果对其进行分割,也许会产生更差的结果。③局部阈值法对每一幅子图像都要进行统计,速度慢,难以适应实时性的要求。(5)通常对于一幅图像的分割,仅仅只用一种图像分割方法是不够的,仅仅拥有依照分割算法本身进行了完善归纳和分类的图象分割理论也是远远不够的,每一种方法都有它不足的地方,因此仅仅只用一种方法往往达不到很好的效果,可以运用其他的方法结合使用,互相弥补不足。因为没有哪一种分割方法能够对所有的图象都产生理想的分割结果,而根据待分割图象的不同特点,结合已知的先验知识,研究符合具体图象特性的分割模型,才是提高图象分割的重要手段。尽管人们在图像分割方面作出了很多的研究,但是,迄今为止,没有哪种方法是适合于所有图像的,本文中提出的方法都有它的使用前提条件,因此,对于特定的图像分割,最主要的是分析这幅图像的特性,针对这幅图像的特点,制定适合它的方案,以达到最好的分割效果。5.3展望图像分割是图像理解与计算机视觉领域国际学术界公认的将会长期存在的最困难的问题之一,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。从一般意义上来说,只有对图像内容的彻底理解,才能产生完美的分割[17]。 近年来,随着各学科许多新理论和新方法的提出,人们也提出了许多与一些特定理论、方法和工具相结合的分割技术,例如:基于数学形态学的分割技术,基于模糊技术的图像分割方法,基于人工神经网络技术的图像分割方法,遗传算法在图像分割中的应用和基于小波分析和变换的分割技术。虽然近年来研究成果越来越多,但由于图像分割本身所具有的难度,使研究没有大的突破性的进展。从图像分割研究的历史来看,可以看到对图像分割的研究有几个明显的趋势:一是对原有算法的不断改进,二是新方法、新概念的引入和多种方法的有效综合运用,人们逐渐认识到现有的任何一种单独的图像分割算法都难以对一般图像取得令人满意的分割效果,因而很多人在把新方法和新概念不断的引入图像分割领域的同时,也更加重视把各种方法综合起来运用,相信随着研究的不断深入,存在的问题会很快得到圆满的解决[18]。6.致谢本次毕业设计是在王凤琴老师的悉心指导下完成的,从课题的选择到项目的最终完成,王老师始终给我细心指导和不懈的支持,她严谨细致的作风深深感染了我,在我做这个项目遇到困难的时候,在我想对论文中的难点想退却的时候,也是王老师始终没有放弃的帮助我,让我最终可以完成这个项目。另外,还要感谢这四年来陪伴我度过大学时代的老师和同学们,是他们丰富了我的大学生活,在求学的路上给我指引了方向,训练我科学严谨的治学态度。 参考文献[1]高秀娟.图像分割的理论、方法及应用[D].吉林大学硕士学位论文[2]see.xidian.edu.cn/course/dip/pdf/ch7.pdf2008-2-25[3]管慧娟.基于区域的图像分割方法[D].大连理工大学硕士学位论文[4]杨卫平,李忠科,王勇,吕培军.基于区域的图像分割算法综述[J].电子测量与仪器学报,2007:278-281[5]赵春燕,闰长青,时秀芳.图像分割综述[J].基础及前沿研究.中国科技信息,2009:41-43[6]韩思奇,王蕾.图像分割的阈值法综述[J].系统工程与电子技术第24卷第6期:91-94[7]周强.图像分割算法研究.福建电脑[J],2009:27-35[8]刘爽.图象分割中阈值选取方法的研究及其算法实现[J].电脑知识与技术:68-70[9]黄春艳.河南大学硕士学位论文[D].图像分割若干算法研究[10]杨金龙.西北师范大学硕士学位论文[D].图像分割算法研究与实现[11]吕玉琴,曾光宇.基于图像边缘检测算法的研究.太原科技[J].2009:31-33[12]特尼格尔,汪滢.图像边缘检测的研究与分析[J].科技论坛,2008:423-444[13]周鲜成.图像分割方法及其应用研究综述[J].信息技术,2007:11-14[14]丁莉,张琦.简捷图像分割研究[J].技术讲座,140-144[15]黄长专,王 彪,杨 忠.图像分割方法研究[J].计算机技术与发展,2009:76-79[16]章毓晋.图象分割[M].科学出版社,2001.[17]姜彬,施志刚.图像分割技术分析与展望[J].电脑知识与技术,2009:10066-10068[18]乐宋进,武和雷,胡泳芬.图像分割方法的研究现状与展望[J].南昌水专学报,2004:15-20 7.附录源码:第一步(迭代法):clearclc;tic%计时器Init=imread("gh.jpg");Im=rgb2gray(Init);figure,imhist(Im),title("直方图")figure,imshow(Im),title("灰度图像")[x,y]=size(Im);%求出图象大小b=double(Im);zd=double(max(max(Im)))%求出图象中最大的灰度zx=double(min(min(Im)))%最小的灰度T=double((zd+zx))/2;%T赋初值,为最大值和最小值的平均值count=double(0);%记录几次循环while1%迭代最佳阈值分割算法count=count+1;S0=0.0;n0=0.0;%为计算灰度大于阈值的元素的灰度总值、个数赋值S1=0.0;n1=0.0;%为计算灰度小于阈值的元素的灰度总值、个数赋值fori=1:xforj=1:yifdouble(Im(i,j))>=TS1=S1+double(Im(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加elseS0=S0+double(Im(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endendendT0=S0/n0;%求小于阀域值均值T1=S1/n1;%求大于阀域值均值ifabs(T-((T0+T1)/2))<0.1%迭代至前后两次阀域值相差几乎为0时停止break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程end endcount%显示运行次数T%显示最佳阈值算出Ttoci1=im2bw(Im,T/255);%图像在最佳阈值下二值化figure,imshow(i1)imwrite(i1,"D:pp.jpg")第二步(边缘检测(以canny算子为例)):im=imread("pp.jpg");figureimshow(im);BW=im2bw(im);I=double(BW);BW1=edge(I,"canny",0.2);figure(1);imshow(I);figure(2);imshow(BW1);imwrite(BW1,"D:pp2.jpg")第三步(局部阈值):clear;img=imread("pp2.jpg");subimg1=img(1:216,1:135);%将原图像平均分为四个子图像subimg2=img(1:216,136:269);subimg3=img(217:431,1:135);subimg4=img(217:431,136:269);I=subimg1;fxy=imhist(I,256);%统计每个灰度值的个数figure;plot(fxy);%画出灰度直方图[x,y]=size(I);b=double(I);zd=double(max(max(I)))%求出图象中最大的灰度zx=double(min(min(I)))%最小的灰度T=double((zd+zx))/2;%T赋初值,为最大值和最小值的平均值count=double(0);%记录几次循环while1%迭代最佳阈值分割算法count=count+1; S0=0.0;n0=0.0;%为计算灰度大于阈值的元素的灰度总值、个数赋值S1=0.0;n1=0.0;%为计算灰度小于阈值的元素的灰度总值、个数赋值fori=1:xforj=1:yifdouble(I(i,j))>=TS1=S1+double(I(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加elseS0=S0+double(I(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endendendT0=S0/n0;%求小于阀域值均值T1=S1/n1;%求大于阀域值均值ifabs(T-((T0+T1)/2))<0.1%迭代至前后两次阀域值相差几乎为0时停止break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程endendcount%显示运行次数T%显示最佳阈值算出Tbw1=im2bw(I,T/255);%图像在最佳阈值下二值化I=subimg2;fxy=imhist(I,256);%统计每个灰度值的个数figure;plot(fxy);%画出灰度直方图[x,y]=size(I);b=double(I);zd=double(max(max(I)))%求出图象中最大的灰度zx=double(min(min(I)))%最小的灰度T=double((zd+zx))/2;%T赋初值,为最大值和最小值的平均值count=double(0);%记录几次循环while1%迭代最佳阈值分割算法count=count+1;S0=0.0;n0=0.0;%为计算灰度大于阈值的元素的灰度总值、个数赋值S1=0.0;n1=0.0;%为计算灰度小于阈值的元素的灰度总值、个数赋值fori=1:xforj=1:y ifdouble(I(i,j))>=TS1=S1+double(I(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加elseS0=S0+double(I(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endendendT0=S0/n0;%求小于阀域值均值T1=S1/n1;%求大于阀域值均值ifabs(T-((T0+T1)/2))<0.1%迭代至前后两次阀域值相差几乎为0时停止break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程endendcount%显示运行次数T%显示最佳阈值算出Tbw2=im2bw(I,T/255);%图像在最佳阈值下二值化I=subimg3;fxy=imhist(I,256);%统计每个灰度值的个数figure;plot(fxy);%画出灰度直方图[x,y]=size(I);b=double(I);zd=double(max(max(I)))%求出图象中最大的灰度zx=double(min(min(I)))%最小的灰度T=double((zd+zx))/2;%T赋初值,为最大值和最小值的平均值count=double(0);%记录几次循环while1%迭代最佳阈值分割算法count=count+1;S0=0.0;n0=0.0;%为计算灰度大于阈值的元素的灰度总值、个数赋值S1=0.0;n1=0.0;%为计算灰度小于阈值的元素的灰度总值、个数赋值fori=1:xforj=1:yifdouble(I(i,j))>=TS1=S1+double(I(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加else S0=S0+double(I(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endendendT0=S0/n0;%求小于阀域值均值T1=S1/n1;%求大于阀域值均值ifabs(T-((T0+T1)/2))<0.1%迭代至前后两次阀域值相差几乎为0时停止break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程endendcount%显示运行次数T%显示最佳阈值算出Tbw3=im2bw(I,T/255);%图像在最佳阈值下二值化I=subimg4;fxy=imhist(I,256);%统计每个灰度值的个数figure;plot(fxy);%画出灰度直方图[x,y]=size(I);b=double(I);zd=double(max(max(I)))%求出图象中最大的灰度zx=double(min(min(I)))%最小的灰度T=double((zd+zx))/2;%T赋初值,为最大值和最小值的平均值count=double(0);%记录几次循环while1%迭代最佳阈值分割算法count=count+1;S0=0.0;n0=0.0;%为计算灰度大于阈值的元素的灰度总值、个数赋值S1=0.0;n1=0.0;%为计算灰度小于阈值的元素的灰度总值、个数赋值fori=1:xforj=1:yifdouble(I(i,j))>=TS1=S1+double(I(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加elseS0=S0+double(I(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endend endT0=S0/n0;%求小于阀域值均值T1=S1/n1;%求大于阀域值均值ifabs(T-((T0+T1)/2))<0.1%迭代至前后两次阀域值相差几乎为0时停止break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程endendcount%显示运行次数T%显示最佳阈值算出Tbw4=im2bw(I,T/255);%图像在最佳阈值下二值化bw5=horzcat(bw1,bw2);%合并子图像bw6=horzcat(bw3,bw4);bw=vertcat(bw5,bw6);figure,imshow(bw),title("局部阈值化")'