1、基于matlab的图像分割算法研究与仿真摘 要随着信息化程度的加深,图像作为包含大量信息的载体形式越来越能体现出它强大的信息包含能力。图像分割是进行图像分析的关键步骤,也是进一步理解图像的基础。图像分割在图像工程中位于图像处理和图像分析之间。图像分割就是把图像分割成一系列有意义、各具特征的目标或区域的过程。虽然图像分割算法有很多种,但是到目前位置还没有通用的图像分割算法。论文综述了阈值分割、区域生长、分裂合并和边缘检测图像分割算法。首先介绍了图像分割的研究意义及国内外研究现状。接着介绍了阈值分割、区域生长、分裂合并和边缘检测图像分割算法的基本原理及其MATLAB仿真结果。最后介绍了MATLAB
2、图形用户界面设计。MATLAB仿真结果表明:各种图像分割算法各有其优缺点及其适用范围。因此,在对一幅图像进行分割之前,首先要对图像进行判断分析,然后再选择恰当的分割算法,这样才能得到比较令人满意的分割效果。关键词:图像分割;阈值分割;区域生长;分裂合并;边缘检测;MATLABAbstractAs a media containing great amount of information, image embodies its powerful ability with the deepening of informationization. Image segmentation is not
3、 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 th
4、ere 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 imag
5、e 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 result
6、s 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
7、words: image segmentation;threshold segmentation; region growing; split and merge ; edge detection; MATLAB1 引 言 据研究,在人类所接受到的全部信息中,约有75%80%是通过视觉系统得到的,和语言或文字信息相比,图像包含的信息量更大、更直观、更确切,因而具有更高的使用效率和更广泛的适应性。当我们获得一副巨大的图像时,进行合理地分割和处理,可以获得对图像的进一步识别、分析和理解。这些都是我们的日常工作所需要的。1.1 图像与数字图像处理 客观世界在空间上是三维(3-D)的,但一般从客观景物
8、得到的图像是二维(2-D)的。一幅图像可以定义为一个二维函数f(x,y),这里 x和y 表示表示2-D空间中一个坐标点的位置,而幅值f则代表图像在坐标(x,y)上的某种性质的数值。例如常用的图像一般是灰度图,这时f表示灰度值,它常对应客观景物被观察到的亮度。 日常所见图像多是连续的,即f(x,y)的值可以任意实数。为了能用计算机对图像进行加工,需要把连续的图像在坐标空间x,y和幅值f都离散化。这种离散化了的图像就是数字图像,数字图像是由有限的元素组成的,每个元素都有一个特定的位置和幅值,这些元素称为图像像素。数字图像常用矩阵来描述。一幅MN个像素的数字图像,其像素灰度值可以用M行、N列的矩阵G
9、表示:在存储图像时,一幅M行、N列的数字图像(MN个像素),可以用一个MN的二维数组T来表示。图像的各个像素灰度值可按一定的顺序存放在数组T中。习惯上把数字图像左上角的像素定义为第(1,1)个像素,右下角的像素定义为第(M,N)个像素。数字图像处理,就是把数字图像经过一些特定数理模式的加工处理,以达到有利于人眼视觉或某种接收系统所需要的图像的过程。如对被噪声污染的图像除去噪声,对信息微弱的图像进行增强,对失真的图像进行几何校正等。随着计算机软硬件技术的突飞猛进,以及数字处理技术的不断发展,数字图像处理在科学研究、工业生产、国防以及现代管理决策等各行各业都得到越来越多的应用1。1.2 研究图像分
10、割处理的意义数字图像目标分割与提取是数字图像处理和计算机视觉领域中一个备受关注的研究分支。因为在目标分割与提取过程中可以利用大量的数字图像处理的方法,加上其在计算机视觉、模式识别等领域中的广泛应用,都吸引了众多研究者的注意。相信对这一问题的深入研究不仅会不断完善对这一问题的解决,而且必将推动模式识别、计算机视觉、人工智能等计算机科学分支的发展。图像分割和边缘检测的问题在近二十年中得到了广泛的关注和长足的发展,国内外很多研究人士提出了很多方法,在不同的领域取得了一定的成果。但是对于寻找一种能够普遍适用于各种复杂情况的准确率很高的分割和检测算法,还有很大的探索空间。边缘提取和分割是图像分析的经典研
11、究课题之一,目前的理论和方法仍存在许多不足之处,仍在不断改进和发展。需要说明的是:边缘与物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在与物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外成像的过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者们正在试图在边缘提取中加入高层的语义信息。由于图像的多意性和复杂性,许多分割的工作无法依靠计算机自动完成,而手工
12、分割又存在工作量大,定位不准确的难题,因此,人们提出了一些人工交互和计算机自动定位相结合的方法,利用各自的优势,实现目标轮廓的快速定位。相信这些交互式方法的应用,必将推动图像目标分割与提取这一既具有广阔的应用前景又具有重要的学术价值的课题的进一步研究,也必将成为一个更为独立和活跃的研究领域。1.3 图像分割技术的背景和国内外研究现状所谓图像分割就是根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将要识别的目标从背景或其他伪目标中分离出来。图像分割是图像理解的重要组成部分,其目的是将目标和背景分离,为目标识别、精确定位等后续处理提供依据,其结果将直接影响到其后的信息处理过程。如
13、何快速、有效地将感兴趣的目标从复杂的背景中分割出来一直是国内外研究的热点。分割问题的困难在于图像数据的模糊和噪声的干扰。到目前为止,还没有一种或者几种完善的分割方法,可以按照人们的意愿准确的分割任何一种图像。实际图像中景物情况各异,具体问题具体分析,需要根据实际情况选择适合的方法。分割结果的好坏或者正确与否,目前还没有一个统一的评价判断准则,分割的好坏必须从分割的效果和实际应用场景来判断。不过在人类研究图像的历史中,还是积累了许多经典的图像分割方法。虽然这些分割方法不适合所有类型的图像分割,但是这些方法却是图像分割方法进一步发展的基础。事实上,现代一些分割算法恰恰是从经典的分割方法衍生出来的。
14、早期的图像研究中,图像的分割方法主要可以分为两大类。一类是边界方法,这种方法的假设是图像分割结果的某个子区域在原来的图像中一定会有边缘存在;一类是区域方法,这种方法的假设是图像分割结果的子区域一定会有相同的性质,而不同区域的像素没有共同的性质。这两种方法都有缺点和优点,有的学者也试图把两者结合起来进行图像分割,随着计算机处理能力的提高,很多方法不断涌现,如基于彩色分量分割、纹理图像分割。所使用的教学工具和实验手段也是不断的扩展,从时域信号到频域信号处理,近来小波变换也应用在图像分割当中。随着各种理论的不断成熟和完善,图像分割技术已经获得了长足的进步,并广泛地应用到了医学、遥感、红外等多个领域。
15、现在国内外很多大学和科研机构都设有专门的机器视觉实验室对这方面的技术进行更加深入的研究,相信随着这方面研究的不断深入,更新更好的方法将会不断被提出和应用。2 图像目标分割与提取技术的方法综述图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。可是,图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。值得提出的是,没有唯一的标准的分割方法。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的
16、分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接影响对图像的理解。本文将重点介绍一些常用的方法,灰度阈值法、边缘检测与边界连接、区域生长、区域分裂与合并等等2。2.1 阈值分割2.1.1概述阈值化是最常用的一种图像分割技术,其特点是操作简单,分割结果是一系列连续区域。灰度图像的阈值分割一般基于如下假设:图像目标或背景内部的相邻像素间的灰度值是高度相关的,目标与背景之间的边界两侧像素的灰度值差别大,图像目标与背景的灰度分布都是单峰的。如果图像目标与背景对应的
17、两个单峰大小接近,方差较小且均值相差比较大,则该图像的直方图具有双峰性。阈值化常可以有效分割具有双峰性质的图像。阈值分割过程如下:首先确定一个阈值T,对于图像中的每个像素,若灰度值大于T,则将其设置为目标点(值为1),否则设置为背景点(值为0),或则相反,从而将图像分为目标区域与背景区域。同理,在编程实现时,也可以将目录像素设置为255,背景像素设置为0,或则相反,从而将图像分为目标区域与背景区域。用公式可表示为: (2.1)在编程实现时,也可以讲目标像素设置为255,背景像素设置为0,或则相反。当图像中含有多个目标且灰度差别较大时,可以设置多个阈值实现多阈值分割。多阈值分割可表示为: (2.
18、2)式中:为一系列分割阈值;k为赋予每个目标区域的标号;m为分割后的目标区域数减1。阈值分割的关键是如何确定适合的阈值,不同的阈值其处理结果差异很大,会影响特征测量与分析等后续过程。如图2.1所示,阈值过大,会过多的把背景像素分为目标;而阈值过小,又会过多的把目标像素错误分为背景。确定阈值的方法有多种,可以分为不同类型。如果选取的阈值仅与各个像素的灰度有关,则称为局部阈值;如果选取的阈值不仅和局部有关,还和像素的位置有关,则称为动态阈值或则自适应阈值。阈值一般可用下式表示: (2.3)式中:f(x,y)是点(x,y)处的像素灰度值:p(x,y)是该像素邻域的某种局部性质。图2.1 不同阈值时图
19、像分割结果当图像目标和背景之间灰度对比较强时,阈值选取较为容易。实际上,由于不良的光照原因或则过多的图像噪声的影响,目标与背景之间的对比往往不够明显,此时阈值选取并不容易。一般需要对图像进行预处理,如图像平滑去噪,再确定阈值进行分割3。2.1.2全局阈值当图像目标与背景之间具有高对比度时,利用全局阈值可以成功的分割图像。而确定全局阈值的方法很多,如极小点阈值法,迭代阈值法,最优阈值法,Qtsu阈值算法,最大熵法,p参数法等。当具有明显的双峰性质时,可直接从直方图的波谷处选取一个阈值,也可以根据某个准则自动计算出阈值。实际使用时,可根据图像特点确定合适的阈值方法,一般需要用几种方法进行对比试验,
20、以确定分割效果最好的阈值。2.1.3局部阈值当图像目标与背景在直方图上对应的两个波峰陡峭、对称且双峰之间有较深的波谷或双峰相距很远时,利用前面介绍的全局阈值方法可以确定具有较好分割效果的阈值。但是,由于图像噪声等因素的影响,会使用图像直方图双峰之间的波谷被填充或则双峰相距很近。另外,当图像目标与背景面积差别很大时,在直方图上的表现就是较小的一方被另外一方淹没。上面这两种情况都使得本应具有双峰性质的图像基本上变成单峰,难以检测到双峰之间的波谷。为了解决这个问题,除了利用像素自身的性质外,还可以借助像素领域的局部性质(如像素的梯度值与拉普拉斯值)来确定阈值,这就是局部阈值。常用的两种局部阈值方法有
21、直方图变换法和散射图法。2.1.4动态阈值在许多情况下,由于光照不均匀等因素的影响,图像背景的灰度值并不恒定,目录与背景的对比度在图像中也会变化,图像中还可能存在不同的阴影。如果只使用单一的全局阈值对整幅图像分割,则某些区域的分割效果好,而另外一些区域的分割效果可能很差。解决方法之一就是使阈值随图像中的位置缓慢变化,可以将整幅图像分解为一系列子图像,对不同的子图像使用不同的阈值进行分割,这种与像素坐标有关的阈值就称为动态阈值或自适应阈值。子图像之间可以部分重叠,也可以只相邻。图像分解之后,如果子图像足够小,则受光线等因素的影响就会较小,背景灰度也更均匀,目标与背景的对比度也更一致。此时可选用前
22、面介绍的全局阈值方法来确定各个子图像的阈值。下面简要介绍一下动态阈值方法,其基本步骤如下: 将整幅图像分解为一系列相互之间有50%重叠的子图像。 检测各子图像的直方图是否具有双峰性。如果是,则采用最优阈值法确定该子图像的阈值,否则不进行处理。 根据已得的部分子图像的阈值,插值得到其他不具备双峰性质的子图像的阈值。 根据各子图像的阈值插值得到所有像素的阈值。对于每个像素,如果其灰度值大于该点处的阈值,则分为目标像素,否则分为背景像素。2.2 区域生长和分裂合并图像分割时把图像分解为若干个有意义的子区域,而这种分解时基于物体有平滑均匀的表面,与图像中强度恒定或缓慢变化的区域相对应,即每个子区域都具
23、有一定得均匀性质。边缘所包围的部分可以看做是区域;或通过寻找阈值,使得分割后所得同一区域中的各像素灰度分布具有同一统计特性。这种分割虽然没有明显地使用分割定义中的均匀测度度量,但在根据直方图确定阈值时,实际上已经隐含了某种测量度量。 区域分割,是直接根据事先确定的相似性准则,直接取出若干特征相近或相同像素组成的区域。常用的方法有区域生长法,区域分裂与合并等。2.2.1区域生长法区域生长(region growing)是指将成组的像素或区域发展成更大区域的过程。从种子点的集合开始,从这些点的区域增长是通过将与每个种子点有相似属性像强度、灰度级、纹理颜色等的相邻像素合并到此区域。它是一个迭代的过程
24、,这里每个种子像素点都迭代生长,直到处理过每个像素,因此形成了不同的区域,这些区域它们的边界通过闭合的多边形定义。区域生长中的主要问题如下:表示区域的初始化种子的选择:在区域生长过程中,这些不同区域点合适属性的选择。基于图像具体属性的像素生长不一定是好的分割。在区域生长过程中,不应该使用连通性或邻接信息。相似性:相似性表示在灰度级中观察在两个空间邻接像素之间或像素集合的平均灰度级间的最小差分,它们将产生不同的区域。如果这个差分比相似度阈值小,则像素属于相同的区域。区域面积:最小面积阈值与像素中的最小区域大小有关。在分割的图像中,没有区域这个阈值小,它由用户定义。区域生长的后处理(region
25、growing post-processing):由于非优化参数的设置,区域生长经常会导致欠生长或过生长。人们已经开发了各种各样的后处理。从区域生长和基于边缘的分割中,后处理能获得联合分割的信息。更加简单的后处理是根据一般启发法,并且根据最初应用的均匀性标准,减少分割图像中无法与任何邻接区域合并的最小区域的数量。 在场景中区域间的邻接关系可以由区域邻接图(region adjacency graph, RGA)表示。在场景中的区域由在RGA的节点集合表示 N = N1, N2, . , Nm,这里,节点Ni表示在场景中的区域Ri ,并且区域Ri的属性存储在节点的数据结构Ni中。在Ni和Nj之间
26、的边缘Eij表示在区域Ri和Rj之间的连接。如果在区域Ri里存放一个像素与在区域Rj彼此相邻,那么两个区域Ri和Rj是相邻的。邻接可能是4连通或8连通的。邻接关系是自反(reflexive)和对称(symmetric)的,但不一定是可传递(transitive)的。下图显示具有6个截然不同区域的场景邻接图。图2.2 被分割成6个不同的区域当它表示区域邻接图(RAG)是,二进制矩阵A成为邻接矩阵(adjacency matrix)。在RAG里,当节点Ni和Nj邻接,在A中,aij是1。因为邻接关系是自反的,矩阵的对角元素都是1。在上图的多区域场景邻接矩阵(关系)如下所示。2.2.2区域合并和分裂
27、由于在场景中分割单一大区域,分割算法可能产生许多个小区域。在这种情况下,较小的区域需要根据相似性合并,并且使较小的区域更紧密。简单的区域合并算法如下所述。步骤1:使用阈值集合将图像分割为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,直到没有合并的区域为止。合并的另一个策略是根据两
28、个区域之间的边缘强度。在这个方法中,在邻接区域之间的合并是根据两个区域间沿标定边界长度的边缘强度。如果边缘强度小,即边缘点较弱(welk),如果合并没有大量改变平均像素强度值,那么可以合并两个区域。还有这种情况:由于错误的预处理分割,产生了太小的区域。这归结于不同区域错误合并成一个区域。在这种情况下,在分割区域中灰度值的变化可能高于阈值(T),因此,需要将区域分裂成更小的区域,这样每个更小的区域都有均匀小方差。分裂和合并可能结合在一起用于复杂场景的分割,基于规则可以指导分裂和合并运算的应用3。2.3 边缘检测图像的边缘是图像最基本的特征,它是灰度不连续的结果。通过计算一阶导数或二阶导数可以方便
29、地检测出图像中每个像素在其领域内的灰度变化,从而检测出边缘。图像中具有不同灰度的相邻区域之间总存在边缘。常见的边缘类型有阶跃型、斜坡型、线状型和屋顶型。阶跃型边缘是一种理想的边缘,由于采样等缘故,边缘处总有一些模糊,因而边缘处会有灰度斜坡,形成了斜坡型边缘。斜坡型边缘的坡度与被模糊地程度成反比,模糊程度高的边缘往往表现为厚边缘。线状型边缘有一个灰度突变,对应图像中的线条;而屋顶型边缘两侧的灰度斜坡相对平缓,对应粗边缘。2.3.1微分算子对于斜坡型边缘,在灰度斜坡的起点和终点,其一阶导数均有一个阶跃,在斜坡处为常数,其他的地方为零;其二阶导数在斜坡起点产生一个向上的脉冲,在终点产生一个向下的脉冲
30、,其他地方为零,在两个脉冲之间有一个过零点。因此,通过检查一阶导数的极大值,可以确定斜坡型边缘;通过检测二阶导数的过零点,可以确定边缘的中心位置。对于线状型边缘,在边缘的起点与终点处,其一阶导数都有一个阶跃,分别对应极大值和极小值;在边缘的起点与终点处,其二阶导数都对应一个向上的脉冲,在边缘中心对应一个向下的脉冲,在边缘中心两侧存在两个过零点。因此,通过检测二阶差分的两个过零点,就可以确定线状型边缘的范围;检测二阶差分的极小值,可以确定边缘中心位置。屋顶型边缘的一阶导数和二阶导数与线状型类似,通过检测其一阶导数的过零点可以确定屋顶的位置。由于上述分析可以得出以下结论:一阶导数的幅值可用来检测边
31、缘的存在;通过检查二阶导数的过零点可以确定边缘的中心位置;利用二阶导数在过零点附近的符号可以确定边缘像素位于边缘的暗区还是亮区。另外,一阶导数和二阶导数对噪声非常敏感,尤其是二阶导数。因此,在边缘检测之前应考虑图像平滑,减弱噪声的影响。在数字图像处理中常利用差分近似微分来求取导数。边缘检测可借助微分算子(包括梯度算子和拉普拉斯算子)在空间域通过模版卷积来实现4。算子名称模板H1模板H2特点Roberts各向同性;对噪声敏感;模板尺寸为偶数,中心位置不明显Prewitt引入了平均因素,对噪声有抑制作用;操作简便Sobel引入了平均因素,增强了最近像素的影响,噪声抑制效果比Prewitt要好Kri
32、sch噪声抑制作用较好;需求出8个方向的响应这里(只给出2个方向的模板)Isotropic权值反比于邻点与中心点的距离,检测沿不同方向边缘时梯度幅值一致,即具有各向同性表2.1 常用的梯度算子(1) 梯度算子常用的梯度算子如表2.1所示(星号代表模版中心)。梯度算子一般由两个模板组成,分别对应梯度的两个偏导数,用于计算两个相互垂直上的边缘相应。在计算梯度幅值时,可用公式(2.4)或公式(2.5),在适当的阈值下,对得到梯度图像二值化即可检测出有意义的边缘。 (2.4) (2.5)Krisch算子由8个模板组成,其他模板绕其中心旋转得到,每个模板都对特定的边缘方向做出最大响应。当把最大响应的模板的序号输出时,就构成了边缘方向的编码。Prewitt算子和Sobel算子也可以像Krisch算
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1