聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 基于区域生长法的图像分割论文原稿

基于区域生长法的图像分割论文原稿

时间:2014-05-29 00:54:16    下载该word文档

基于区域增长的图像分割

王春者

学院 电子信息工程专业

图像分割是一种重要的图像分析技术。对图像分割的研究一直是图像技术研究中的热点和焦点。图像分割的目的是将图像划分为不同的区域,基于区域生长是以直接找寻区域为基础的分割技术。

本论文首先简单介绍图像分割的主要方法,然后重点介绍一种基于区域增长法的图像分割方法,该方法是根据同一物体区域内象素的相似性质来聚集象素点的方法,从初始区域(如小邻域或甚至于每个象素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象素的相似性度量可以包括平均灰度值、纹理、颜色等信息

关键词:图像分割;区域增长法基本算法



Abstract

The image segmentation is an important technology of image processing. It is still a hotpoint and focus of image processing.The purpose is to image segmentation image is divided into different areas,based on region growing segmentation technique is based on the direct search for regional.

This paper first briefly introduce the main method of image segmentation, and then focuses on a method of image segmentation based on region growing method, the method is based on similar properties in the same region within theobject pixel to pixel aggregation method, from the initial area (as regards neighborhood of each pixel, or even), the adjacent pixel having the same nature or other areas merge into the current so as to gradually increase the area of the region can merge up until no other point or small area. Similarity measure may include a region of the pixel valuesof the average gray, texture, color and other information.

Key wordsImage segmentation; region growing method; basic algorithm

第一章绪论 1

1.1图像分割技术的现状和发展情况 1

1.2 图像分割的简介 1

1.3 图像分割的定义 2

1.4 图像分割主要研究方法 3

1.4.1 边缘检测法 3

1.4.2区域提取法 3

1.4.3 阈值分割法 4

1.4.4结合特定理论工具的分割法 4

1.5论文的内容与结构安排 5

第二章图像分割预处理 6

2.1图像平滑 6

2.1.1 中值滤波原理 6

2.1.2 平滑效果分析 7

2.2灰度调整 8

2.2.1 灰度调整原理 8

2.2.2 灰度调整效果分析 8

2.3本章小结 9

基于区域增长法的图像分割技术 10

3.1区域生长法原理 10

3.2图像生长法实验方法 11

3.2.1 图像二值化 12

3.2.2 基于区域灰度差的生长准则 13

3.2.3基于区域内灰度分布统计性质的生长准则 14

3.3算法流程设计 14

3.4 本章小结 16

总结与展望 17

4.1 工作总结 17

4.2 工作展望............................................17

致谢 19

参考文献 20

21



第一章 绪论

本章对论文涉及的研究领域进行了较为详细的综述。简要介绍了图像分割对于现实生活的重要意义,目前的科学研究现状以及发展前景。并且图像分割这一领域的主要方法进行了简要的介绍,在整体流程上做以安排。

1.1 图像分割技术的现状和发展情况

图像分割的研究已经几十年的历史,不仅得到人们的广泛重视和研究在实际生活中也得到大量的应用。关于图像分割的原理和方法国内外已有不少结论与推想,但一直以来没有一种分割方法适用于所有图像分割处理。传统的图像分割方法存在着不足,不能满足人们的要求,为进一步的图像分析和理解带来了困难。随着计算机技术的迅猛发展,及其相关技术的发展和成熟,结合图像增强等技术,能够在计算机上实现图像分割处理。

其中最主要的技术是图像分割技术,从图像中将某个特定区域与其它部分进行分离并提取出来的处理。图像分割的方法有许多种,在这里大概介绍这几种方法:有阈值分割方法,边界分割方法,区域提取方法,结合特定理论工具的分割方法等。其中基于区域的方法采用某种准则,直接将图像划分为多个区域。而基于边缘的方法则通过检测包含不同区域的边缘,获得关于各区域的边界轮廓描述,达到图像分割的目的,而区域与边缘相结合的方法通过区域分割与边缘检测的相互作用,得到分割结果。

1.2图像分割的简介

   图像分割( image segmentation) 就是把图像分成各具特征的区域并提取出感兴趣目标的技术和过程。这里特征可以是象素的灰度、颜色、纹理等, 预先定义的目标可以对应单个区域也可以对应多个区域。图像分割是图像处理到图像分析的关键步骤, 在图像工程中占据重要的位置。一方面, 它是目标表达的基础, 对特征测量有重要的影响。另一方面, 因为图像分割及其基于分割的目标表达、特征提取和参数测量等将原始图像转化为更抽象更紧凑的形式, 使得更高层的图像分析和理解成为可能。

   图像分割是一种重要的图像处理技术, 它不仅得到人们的广泛重视和研究, 在实际中也得到大量的应用。图像分割包括目标轮廓、阈值化、图像区分或求差、目标检测、目标识别、目标跟踪等技术。

   从大的方面来说,图像分割方法可大致分为基于区域的方法、基于边缘的方法、区域与边缘相结合的方法,以及在此基础上的采用多分辨率图像处理理论的多尺度分割方法

   其中基于区域的方法采用某种准则,直接将图像划分为多个区域。而基于边缘的方法则通过检测包含不同区域的边缘,获得关于各区域的边界轮廓描述,达到图像分割的目的,而区域与边缘相结合的方法通过区域分割与边缘检测的相互作用,得到分割结果。

   图像分割中基于区域的方法主要有直方图门限法、区域生长法、基于图像的随机场模型法、松弛标记区域分割法等。本文主要讨论基于区域分割的区域生长法。区域生长是一种古老的图像分割方法,最早的区域生长图像分割方法是由Levine等人提出的。该方法一般有两种方式,一种是先给定图像中要分割的目标物体内的一个小块或者说种子区域,再在种子区域基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的;另一种是先将图像分割成很多的一致性较强,如区域内像素灰度值相同的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的,典型的区域生长法如T. C. Pong等人提出的基于小面(facet)模型的区域生长法,区域生长法固有的缺点是往往会造成过度分割,即将图像分割成过多的区域。

1.3图像分割的定义

借助集合概念对图像分割给出如下较正式的定义:

令集合R 代表整个图像区域, R 的分割可看做将R 分成N

满足以下五个条件的非空子集( 子区域)R1, R3, ……, RN:

②对所有的i j, ij, RiRj≠○;

③对i=1,2,,N, P(Ri)=TRUE;

④对ij, P(RiRj)=FALSE;

⑤对i=1,2,,N, Ri 是连接的区域。

其中P(Ri)对所有在集合Ri 中元素的逻辑谓词, ○代表空集。上述的五个条件分别称为完备性,独立性,相似性,互斥性,连通性。

1.4图像分割主要研究方法

图像分割是图像处理中的一项不可缺少技术,自20世纪70年代起一直受到人们的高度重视,至今已提出了上千种各种类型的分割算法,但是,问题在于提出的分割算法大都是针对具体问题的,并没有存在一种适合于所有图像的通用分割算法,所以存在着近年来每年都有上百篇相关研究报道发表的现象。然而,一直没有被确定下来制定规则,这给图像分割技术的应用带来许多问题。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。

图像分割在图像处理分析中的有着不可或缺的地它起着承上启下的作用,可以认为是介于低层次处理和高层次处理的中间层间。最近几年出现了许多新思路、新方法、或改进算法。下面对一些经典传统方法作简要的概述。

图像分割是把图像分割成若干个特定的、具有独特性质的区域并提取出感兴趣目标的技术和过程,这些特性可以是像素的灰度、颜色、纹理等提取的目标可以是对应的单个区域,也可以是对应的多个区域。图像分割方法有许多种分类方式,在这里将分割方法概括为四类:

(1)边缘检测方法

(2)区域提取方法

(3)阈值分割方法

(4)结合特定理论工具的分割方法。

1.4.1 边缘检测法

图像处理分析的第一步往往是边缘检测。边缘检测方法是人们研究得比较多的一种方法,它通过检测图像中不同区域的边缘来达到分割图像的目的。边缘检测的实质是通过检测包含不同区域的边缘,获得关于各区域的边界轮廓描述,达到图像分割的目的。边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的。

1.4.2 区域提取法

区域提取法有两种基本形式:一种是从单个像素出发,逐渐合并以形成所需的分割区域;另一种是从全图出发,逐渐分裂切割至所需的分割区域。在实际中使用的通常是这两种基本形式的结合。根据以上两种基本形式,区域提取法可以分为区域生长法和分裂合并法。区域生长法的基本思想是将具有相似性质的像素合起来构成区域,具体做法是先给定图像中要分割的目标物体内的一个小块或者说种子区域,再在种子区域的基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的。该方法的关键是要选择合适的生长或相似准则。生长准则一般可分为三种:基于区域灰度差准则、基于区域内灰度分布统计性质准则和基于区域形状准则。分裂合并法是先将图像分割成很多的一致性较强的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的。论文将对区域生长法的具体算法进行试验,并在实际问题当中加以佐证,分析其方法的优劣与改进方法。

1.4.3 阈值分割法

对灰度图像的取阈值分割就是先确定一个处于图像灰度取值范围之中的灰度阈值,然后将图像中各个像素的灰度值都与这个阈值相比较,并根据比较结果将对应的像素分为两类。这两类像素一般分属图像的两类区域,从而达到分割的目的。阈值分割算法主要有两个步骤:

1)确定需要的阈值;

2)将分割阈值与像素值比较以划分像素。

可以看出,确定一个最优阈值是分割的关键。现有的大部分算法都是集中在阈值确定的研究上。阈值分割方法根据图像本身的特点,可分为单阈值分割方法和多阈值分割方法:也可分为基于像素值的阈值分割方法、基于区域性质的阈值分割方法和基于坐标位置的阈值分割方法.若考虑分割算法所用的特征或准则的特点,还可以分为直方图与直方图变换法、最大类空间方差法、最小误差法与均匀化误差法、共生矩阵法、最大熵法、简单统计法与局部特性法、概率松弛法、模糊集法等。

1.4.4结合特定理论工具的分割方法

近年来,随着各学科许多新理论和方法的提出,人们也提出了许多结合特定理论工具的分割方法,例如基于数学形态学的分割方法,基于神经网络的分割方法,基于信息论的分割方法,基于模糊集合和逻辑的分割方法,基于小波分析和变换的分割方法,基于遗传算法的分割方法等。基于小波分析和变换的分割方法是借助新出现的数学工具小波变换来分割图像的一种方法,也是现在非常新的一种方法。

1.5 论文的内容与结构安排

本文的内容分为章,具体的章节安排如下:

第一章 绪论:介绍图像分割的研究意义、起源与发展;概括介绍了图像分割的分类、层次及步骤;并对图像分割的研究现状做了概述。

第二章 图像分割预处理:介绍了图像分割前平滑与灰度调整等图像增强操作技术的定义、原理、算法。分析了在本系统中应用此操作的优势所在。

第三章 基于区域生长法的图像分割:介绍了区域生长法的主要内容,包括区域生长法的定义、原理、算法。分析了该方法的优势所在。

第五章 总结与展望:重点对本论文设计进行总结,并进一步展望该课题的研究前景。



第二章 图像分割预处理

由于受多种因素条件的影响,得到的图片往往信息微弱,无法辨识,需要进行增强处理。增强的目的,在于提供一个满足一定要求的图像,或对图像进行变换,以进行分析。

2.1 图像平滑

图像平滑的目的是为了减少图像噪声。图像的噪声来自于多方面,有来自于系统外部干扰,如电磁波或经电源串进系统内部而引起的外部噪声,也有来自于系统内部的干扰,如摄像机的热噪声,电器机械运动而产生的抖动噪声等内部噪声。因此,去除噪声,恢复原始图像是图像处理中的一个重要内容。噪声主要来自下面三个方面:

1)光电子噪声:主要由光的统计本质和图像传感器的光电转换过程引起的(如光电管的光量子噪声和电子起伏噪声);

2)电子噪声:主要来自电子元器件(如电阻引起的热噪声);

3)光学噪声:主要由光学现象产生的(如胶片的粒状结构产生的颗粒噪声);

图像在生成和传输过程中受到这些噪声的干扰和影响,使图像处理结果变差。因此,抑制或消除这些噪声从而改善图像质量,在图像处理过程中是一个重要的预处理,也称为对图像的平滑滤波过程。

2.1.1 中值滤波原理

中值滤波是一种非线性滤,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。中值滤波的目的是保护图像边缘的同时去除噪声。

在一维的情况下,中值滤波器是一个含有奇数个像素的窗口,在处理之后,将窗口正中的像素灰度值用窗口内各像素灰度值的中值来代替。设有一个维序列f1f2,…,fn,取窗口长度为奇数m,对此序列进行中值滤波,就是从输入序列中相续抽出m个数,fi-v,…fi,…fi+v,其中为窗口的中心值v=(m-1)2,再将这m个点的数值按其数值大小排列,取其序号为正中间的那个数作为滤波输出。中值滤波表达式为:

2-1

对二维序列{Xi,j}的中值滤波,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维中值滤波可表示为:

2-2

在实际使用窗口时,窗口的尺寸一般先用再取逐渐增大,直到其滤波效果满意为止

由于中值滤波是非线性运算,在输入和输出之间的频率上不存在一一对应关系,故不能用一般线性滤波器频率特性的研究方法。设G为输入信号频谱,F为输出信号频谱,定义为中值滤波器的频率响应特性,实现表明H是与G有关,呈不规则波动不大的曲线,其均值比较平坦,可以认为信号经中值滤波后,传输函数近似为1,即中值滤波对信号的频域影响不大,频谱基本不变。

2.1.2 平滑效果分析

2-3所示的是图像中值滤波前后的效果比较,其中图2-3a)是含有噪声的原图,图2-3b)是用中值滤波处理后的图像,滤波窗口为3×3,可见,中值滤波后的图像不仅滤去了椒盐类噪声,而且边缘得到了较好的保护。

(a)带噪声图像 (b)消噪后图像

2-3 带噪声图像与中值滤波后图像比较

2.2 灰度调整

在成像过程中,扫描系统、光电转换系统中的很多的因素,如光照强弱、感光部件灵敏度、光学系统不均匀性、元器件特性不稳定等均可造成图像亮度分布的不均匀,导致某些部分亮,某些部分暗。灰度调整就是在图像采集系统中对图像像素进行修正,使整幅图像成像均匀。

2.2.1灰度调整原理

灰度调整可使图像动态范围增大,图像对比度扩展,图像变清晰,特征明显,是图像增强的重要手段之一。

在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内。这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。采用线性灰度调整对图像每一个像素灰度作线性拉伸,将有效地改善图像视觉效果。

2.2.2灰度调整效果分析

a)灰度调整前 (b)灰度调整后

(c)原始图像直方图 d)调整后直方图

2-4 灰度调整前后直方图比较

由图2-4可以看出(b)视觉效果较(a)明显,灰度调整前后直方图的比较可以看出,调整后直方图(d)去除了原始直方图(c)的噪声直方图,灰度调整后图像明显清晰了。

2.3 本章小结

为了操作直观,本论文直接对灰度图像进行处理,要是彩色图像,须在操作前将其转换为灰度图像,本章通过对图像的平滑以及灰度调整,达到了比较明显的去噪效果。在图像的直方图上也表现得十分明显,这样为后面进行基于直方图的操作提供了较好的条件。

第三章 基于区域生长法图像分割技术

区域生长是一种古老的图像分割方法,最早的区域生长图像分割方法是由Levine等人提出的。该方法一般有两种方式,一种是先给定图像中要分割的目标物体内的一个小块或者说种子区域,再在种子区域基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的;另一种是先将图像分割成很多的一致性较强,如区域内像素灰度值相同的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的,典型的区域生长法如T. C. Pong等人提出的基于小面(facet)模型的区域生长法,区域生长法固有的缺点是往往会造成过度分割,即将图像分割成过多的区域。。

3.1 区域生长法原理

区域生长的基本思想是将具有相似性质的象素集合起来构成区域。首先对每个需要分割的区域找出一个种子象素作为生长的起点,然后将种子象素周围邻域中与种子有相同或相似性质的象素根据事先确定的生长或相似准则来确定合并到种子象素所在的区域中。而新的象素继续做种子向四周生长直到再没有满足条件的象素可以包括进来一个区域就生长而成了。

现在给出一个区域生长的示例。给出已知矩阵A

A B

大写的5 为种子, 从种子开始向周围每个象素的值与种子值取灰度差的绝对值, 当绝对值少于某个门限T , 该象素便生长成为新的种子, 而且向周围每个象素进行生长; 如果取门限T=1, 则区域生长的结果为B:

可见种子周围的灰度值为456 的象素都被很好地包进了生长区域之中, 而到了边界处灰度值为0127 的象素都成为了边界, 右上角的5 虽然也可以成为种子, 但由于它周围的象素不含有一个种子, 因此它也位于生长区域之外; 现在取门限T=3, 新的区域生长结果为:

整个矩阵都被分到一个区域中了。由此可见门限选取是很重要的

3.2 图像生长法实验方法

在实际应用区域生长法时需要解决三个问题:

1.选择或确定一组能正确代表所需区域的种子象素( 选取种子) ;

2.确定在生长过程中能将相邻象素包括进来的准则( 确定门限) ;

3.确定让生长过程停止的条件或规则( 停止条件)

利用迭代的方法从大到小收缩是一种典型的方法, 它不仅对2- D图像而且对3-D 图像也适用。一般情况下可以选取图像中亮度最大的象素作为种子, 或者借助生长所用准责对每个象素进行相应的计算, 如果计算结果呈现聚类的情况则接近聚类重心的象素可以作为种子象素。上面的例子, 分析它的直方图可知灰度值为1 5 的象素最多且处于聚类的中心, 所以可各选一个具有聚类中心灰度值的象素作为种子。

生长准则的选取不仅依赖于具体问题本身, 也和所用图像数据种类有关, 如彩色图和灰度图。一般的生长过程在进行到再没有满足生长条件的象素时停止, 为增加区域生长的能力常需考虑一些与尺寸、形状等图像和目标的全局性质有关的准则。

区域生长的关键是选择合适的生长或相似准则, 大部分区域生长准则会使用图像的局部性质生长准则可以根据不同原理制定, 而使用不同的生长准则会影响区域生长的过程。常用的生长准则和方法有两种, 即基于区域灰度差的、基于区域内灰度分布统计性质的。

下面给出实验结果:

非灰图像

转化后灰度图像

直方图 结果

3.2.1 图像二值化

基于区域的分割最主要方法是二值化。二值化方法对由多个实体和一个对比较强的背景图像所组成的场景图像特别有效。二值化方法一般速度较快,而且使每个分割出来的物体都具有闭合和连通的边界。图像二值化后信息丢失很严重,由此得到的边界轮廓可能会不精确。因此,可以用速度较快的二值化方法来获得一个关于图像分割结果的较粗略的描述。

3.2.2 基于区域灰度差的生长准则

在我们使用的区域生长方法中, 操作的基本单位是象素, 基于区域灰度差的生长准则步骤如下:

1.对图像进行逐行扫描, 找出尚无归属的象素;

2.以该象素为中心, 检查它相邻的象素, 即将邻域中的象素逐个与它比较, 如果灰度差小于事先确定的阈值, 则将它们合并;

3.以新合并的象素为中心, 再进行步骤2 检测, 直到区域不能进一步扩张;

4.重新回到步骤1, 继续扫描直到不能发现没有归属的象素, 整个生长过程结束。

上述方法是先要进行扫描, 这对区域生长起点的选择有比较大的依赖性, 为克服这个问题可以改进方法如下:

1.设灰度差的阈值为零, 用上述方法进行区域扩张, 合并灰度相同的象素;

2.求出所有邻接区域之间的平均灰度差, 合并具有最小灰度差的邻接区域;

3. 定终止准则, 通过反复进行步骤2 中的操作将区域依次合并, 直到终止准则满足为止, 生长过程结束。

当图像中存在灰度缓慢变化的区域时, 上述方法有可能会将不同区域逐步合并而产生错误。为了克服这个问题, 可以不用新象素的灰度值去与邻域象素的灰度值进行比较, 而用新象素所在区域的平均灰度值去与各邻域象素的灰度值进行比较。对一个有N 个象素的图像区域R, 灰度均值为:

对象素的比较为:

其中T 为阈值。

如果区域是均匀的, 区域内的灰度变化应当尽量小; 如果区域是非均值的( 一般情况) , 且由两部分构成。这两部分象素在R 中所占比例分别为q1q2, 灰度值分别为m1m2, 则区域均值为q1m1+q2m2, 对灰度值为m1的象素, 它与区域均值的差为:Sm=m1-(q1m1+q2m2)

可知正确判决的概率为:

这表明, 当考虑灰度均值时, 不同部分象素间的灰度差距应该尽量大。

3.2.3 基于区域内灰度分布统计性质的生长准则

考虑以灰度分布相似性作为生长准则来决定区域的合并, 具体步骤为:

1.把图像分成互不重叠的小区域;

2.比较邻接区域的累积灰度直方图, 根据灰度分布的相似性进行区域合并;

3.设定终止准则, 通过反复进行步骤2中的操作将各个区域依次合并直到满足终止准则, 生长过程结束。

设两个相邻区域的积累灰度直方图分别为h1(z)h2(z), 常用的两种检测方法为:

1. Kolmogorov- Smirnov 检测:

2. Smoothed- Difference 检测:

如果检测结果小于给定阈值T, 则两个区域合并。使用此方法, 小区域的尺寸对结果可能有较大影响, 尺寸太小时检测可靠性降低, 尺寸太大时得到的区域形状不理想, 小的目标会被漏掉, Smoothed-Difference 方法检测直方图相似性时效果Kolmogorov- Smirnov 要好, 因为它考虑了所有的灰度值。

3.3 算法流程设计

(1)图像读取:

f=imread('chepai.jpg');

figure

imshow(f);

title('源图像');

(2)以种子点对原图像二值分割:

seed=220;

S=abs(double(f)-double(seed))<20; %以初始种子点进行二值图像分割;

figure

imshow(S);

title('初始种子点');

(3)以种子点进行区域生长:

以种子点所在位置开始遍历,当判断满足种子点条件时调用函数:

function A=neitest(i,j,f,T)%返回当前(ij)位置种子点的

S=S|temp; %更新当前位置的8邻域满足阈值条件的点;使S中始终加入最近的种子点。

最终循环条件截止条件:

if(sum(sum(abs(double(S)-double(sd))))==0) %当前一次的种子加入点数和本次的相同时说明生长完毕,种子不再生长;

break;

end

(4)对生长完毕的图像进行膨胀操作:

B=[1 1 1;1 1 1;1 1 1];

S=imdilate(S,B);

figure

imshow(S)

title('膨胀后的图像')

5)对膨胀后的图像进行中值滤波:

C = medfilt2(S,[7 7]);

figure

imshow(C)

title('处理后图像');

3.4 本章小结

区域增长方法是一种比较普遍的方法,在没有先验知识可以利用时,可以取得最佳的性能,可以用来分割比较复杂的图象,如自然景物。但是,区域增长方法是一种迭代的方法,空间和时间开销都比较大。对于像素,信息不是很多的图都可以很快的得出结果但大的图片运算量会加大很多,致使电脑配置算法各方面都待于优化。当然在实验过程中也遇到了很多问题,比如最主要问题是:1、如何记录当前的新增种子点以及以新增种子点进入下次的生长过程。2、区域生长终止条件程序如何设计等。之后也曾用C语言对图像分割进行实现,相比于matlab来说,算法简单了一些,但调试运行的步骤花费了不少时间。最后会附有C语言代码



总结与展望

4.1 工作总结

本论文对传统的图像分割技术进行了简要的介绍,并将其中的区域生长法这一经典研究方法展开了深入的讲解与实验。

本论文是基于区域生长的图像分割,一种根据事先定义的准则将像素或子区域聚合成更大区域的过程。基本方法是以一组种子点开始,将与种子性质相似的相邻像素附加到生长区域的每个种子上。区域生长算法的重点是种子点的选择和生长准则的确定。在程序设计上实现了能够记录每次种子点生长时新增的种子点,在下次的生长过程中以上次新增的种子点继续生长。当没用新增种子点时标明生长完成,此时终止生长条件。在设计期间,遇到的最主要问题是:1、如何记录当前的新增种子点以及以新增种子点进入下次的生长过程。2、区域生长终止条件程序如何设计等。但经过反复的推敲,对区域生长原理的不断理解,最终问题得以解决。

4.2 工作展望

虽然近年来研究成果越来越多,但由于图像分割本身所具有的难度,使研究没有大的突破性的进展!仍然存在的问题主要有两个:其一是没有一种普遍使用的分割算法;其二是没有一个好的通用的分割评价标准!

从图像分割研究的历史来看,可以看到对图像分割的研究有几个明显的趋势:一是对原有算法的不断改进!二是新方法、新概念的引入和多种方法的有效综合运用!人们逐渐认识到现有的任何一种单独的图像分割算法都难以对一般图像取得令人满意的分割效果,因而很多人在把新方法和新概念不断的引入图像分割领域的同时,也更加重视把各种方法综合起来运用!在新出现的分割方法中,基于小波变换的图像分割方法就是一种很好的方法!三是交互式分割研究的深入!由于很多场合需要对目标图像进行边缘分割分析:例如对医学图像的分析,因此需要进行交互式分割研究!事实证明,交互式分割技术有着广泛的应用!四是对特殊图像分割的研究越来越得到重视!目前有很多针对立体图像、 彩色图像、多光谱图像以及多视场图像分割的研究,也有对运动图像及视频图像中目标分割的研究,还有对深度图像、纹理图像、计算机断层扫描CT、磁共振图像、共聚焦激光扫描显微镜图像、合成孔雷达图像等特殊图像的分割技术的研究!相信随着研究的不断深入,存在的问题会很快得到圆满的解决



本文的完成得到众多老师和亲人朋友的支持与帮助,借此机会:

深深感谢我的导师对我设计上的悉心指导,从论文设计工作的进行,到毕业论文的撰写和修改,倾注了老师的大量心血。他对工作严谨认真,一丝不苟的态度,更是我学习的榜样。

感谢同组的同学对我的帮助,他们使我得到许多启示。这是一个团结向上的集体,在大学度过这四年给我留下终生难忘的回忆。很荣幸结识各位师长和同学,正是这种愉悦的氛围,让我的大学生涯充满快乐。

最后,我要特别感谢我的父母,我所有的成绩都是他们的支持和鼓励下才能取得的,他们的支持和鼓励,使我一直不畏前路的任何困难,勇往直前,奋斗不息。



参考文献

1. 邵立康,邹飞平,迟权德,秦晓燕,丁厚本 一种基于直方图的阈值分割算法 中国人民解放军炮兵学院,合肥东方辐射公司1004-4140200902-0066-06

2. 景晓军, 蔡安妮, 孙景鳌 一种基于二维最大类间方差的图像分割算法 通信学报20014月第22卷第4

3. 姚宇华,严洪,蒋立正 基于局部最大方差分割的图像二值化算法 微型电脑应用2003年第l9卷第8

4. 丁亮,张永平,张雪英 图像分割方法及性能评价综述国际IT传媒品牌软件2010年第31卷第12

5. 阮秋琦.数字图像处理基础(21世纪高等学校电子信息工程规划教材)[D].清华大学出版社.2009.

6. 陈方昕.基于区域生长法的图像分割技术[M].科技信息.2008.

7. 黄长专.图像分割方法研究[M].计算机技术与发展.2009



一、区域生长法方法之一

clc;

clear;

image=imread('C:\Users\hp\Desktop\chepai.jpg');

IN=image;

figure,imshow(IN),title('原始图像')

[R,C]=size(IN);

%采用平方求和计算梯度矩阵

GM=zeros(R-1,C-1);

for i=1:R-1

for j=1:C-1

n_GM=(IN(i,j+1)-IN(i,j))^2+(IN(i+1,j)-IN(i,j))^2;

GM(i,j)=sqrt(double(n_GM));

end

end

I=GM;

I=double(I);

[M,N]=size(I);

获得种子点

[y,x]=getpts; .............获得区域生长起始点

x1=round(x); .............横坐标取整

y1=round(y); .............纵坐标取整

seed=I(x1,y1); .............将生长起始点灰度值存入seed

Y=zeros(M,N); ..............作一个全零与原图像等大的图像矩阵Y,作为输出图像矩阵

Y(x1,y1)=1; ..............Y中与所取点相对应位置的点设置为白场

sum=seed; ..............储存符合区域生长条件的点的灰度值的和

suit=1; ..............储存符合区域生长条件的点的个数

count=1; ...............记录每次判断一点周围八点符合条件的新点的数目

threshold=15; ...............域值

while count>0

s=0; ...............记录判断一点周围八点时,符合条件的新点的灰度值之和

count=0;

for i=1:M

for j=1:N

if Y(i,j)==1

if (i-1)>0 && (i+1)<(M+1) && (j-1)>0 && (j+1)<(N+1)

...............判断此点是否为图像边界上的点

for u= -1:1 ................判断点周围八点是否符合域值条件

for v= -1:1 .................u,v为偏移量

if

Y(i+u,j+v)==0 & abs(I(i+u,j+v)-seed)<=

threshold& 1/(1+1/15*abs(I(i+u,j+v)-seed))>0.8

..................判断是否未存在于输出矩阵Y,并且为符

合域值条件的点

Y(i+u,j+v)=1; ..................符合以上两条件即将其在Y中与之位置对

应的点设置为白场

count=count+1;

s=s+I(i+u,j+v); ..................此点的灰度之加入s

end

end

end

end

end

end

end

suit=suit+count; ...................n加入符合点数计数器中

sum=sum+s; ...................s加入符合点的灰度值总合中

seed=sum/suit; ....................计算新的灰度平均值

end

figure,imshow(Y),title('分割后图像')

二,区域生长法算法之二

clc;

Clear;

imread('C:\Users\hp\Desktop\fudiao2.jpg');

figure;imshow(I)

[m,n]=size(I);I=double(I);

mark(1,1)=I(1,1);mark(1,2)=1;

c=1;S=zeros(m,n);S(1,1)=c; %c为联通区域的数目;

用标记法进行区域划分;

将当前目标依次与左前点、左上点、正上点、右上点比较,如果值相似,作相同标记

否则标记+1为新的区域。

for i=1:m

for j=1:n

if i==1&j==1;

elseif i==1&j>=2 ..................对第一行的元素进行区域划分

if abs(I(i,j)-I(i,j-1))<25

S(i,j)=S(i,j-1);

a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

else

c=c+1;S(i,j)=c;a=S(i,j);

mark(a,1)=I(i,j);

mark(a,2)=1;

end

elseif j==1&i>=2 .................对第一列的元素进行区域划分

if abs(I(i,j)-I(i-1,j))<25

S(i,j)=S(i-1,j);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j+1))<25

S(i,j)=S(i-1,j+1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

else

c=c+1;S(i,j)=c;a=S(i,j);

mark(a,1)=I(i,j);

mark(a,2)=1;

end

elseif i>1&j==n ..............对最右边列进行区域划分

if abs(I(i,j)-I(i,j-1))<25

S(i,j)=S(i,j-1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j-1))<25

S(i,j)=S(i-1,j-1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j))<25

S(i,j)=S(i-1,j);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

else

c=c+1;S(i,j)=c;a=S(i,j);

mark(a,1)=I(i,j);

mark(a,2)=1;

end

else % 对中间元素进行区域划分

if abs(I(i,j)-I(i,j-1))<25

S(i,j)=S(i,j-1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j-1))<25

S(i,j)=S(i-1,j-1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j))<25

S(i,j)=S(i-1,j);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

elseif abs(I(i,j)-I(i-1,j+1))<25

S(i,j)=S(i-1,j+1);a=S(i,j);

mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);

mark(a,2)=mark(a,2)+1;

else

c=c+1;S(i,j)=c;a=S(i,j);

mark(a,1)=I(i,j);

mark(a,2)=1;

end

end

end

end

b=1;error=[0,0];

for i=2:m ..................寻找本属于同一类但因算法而归为异类的区域

for j=1:n-2

if (abs(I(i,j)-I(i-1,j+2))<25)&(S(i,j)~=S(i-1,j+2))

if find(error(:,1)==S(i,j));

else

error(b,1)=S(i,j);

error(b,2)=S(i-1,j+2);

b=b+1;

end

end

end

end

d=1;

for d=1:b-1

a=error(d,1);c=error(d,2); ...............a为需要纠正的区域的号码,c为目标区域号码

if a~=c

mark(c,1)=(mark(a,1)*mark(a,2)+mark(c,1)*mark(c,2))/(mark(c,2)+mark(a,2) );

mark(a,1)=0; %纠正均值

mark(c,2)=mark(c,2)+mark(a,2);mark(a,2)=0; ............纠正区域面积

for e=d:b-1 ................将已被纠正的区域类别号全被用目标区域的类

别号代替

if error(e,2)==a

error(e,2)=c;

end

end

else

end

end

for i=1:m

for j=1:n

if find(error(:,1)==S(i,j))

b=find(error(:,1)==S(i,j));

S(i,j)=error(b,2);

end

end

end

c=size(mark(:,1));

b=1;

for a=1:c

if mark(a,2)>60

target(b)=a; b=b+1;

end

end

对各联通区域用其区域的均值重新赋值;

for i=1:m

for j=1:n 4 .......................寻找是物体的区域

if find(target(:)==S(i,j))

a=S(i,j); Y(i,j)=mark(a,1);

else

Y(i,j)=0;

end

end

end

对各联通区域用其区域的均值重新赋值;

for a=1:c

if mark(a,2)<=60

for i=1:m

for j=1:n

if S(i,j)==a

Y(i,j)=0;

end

end

end

else

for i=1:m

for j=1:n

if S(i,j)==a

Y(i,j)=mark(a,1);

end

end

end

end

end

y=uint8(Y);

y=im2bw(y);

%y=imfill(y,'holes');

figure;imshow(y);

clear a b c d e i j;

3、区域生长法的C语言实现(取材于他人)

/*************************************************************************

*

* \函数名称:

* RegionGrow()

*

* \输入参数:

* CDib * pDib - 指向CDib类的指针,含有原始图象信息

* unsigned char * pUnRegion - 指向区域生长结果的指针

*

* \返回值:

*

*

* \说明:

* pUnRegion指针指向的数据区存储了区域生长的结果,其中(逻辑)表示

* 对应象素为生长区域,表示为非生长区域

* 区域生长一般包含三个比较重要的问题:

* 1. 种子点的选取

* 2. 生长准则

* 3. 终止条件

* 可以认为,这三个问题需要具体分析,而且每个问题解决的好坏直接关系到

* 区域生长的结果。

* 本函数的种子点选取为图像的中心,生长准则是相邻象素的象素值小于

* nThreshold, ()终止条件是一直进行到再没有满足生长准则需要的象素时为止

*

*************************************************************************

*/

// 在这个代码中,它认为这张图片就是一个区域,选取了中间点为种子点。

void RegionGrow(CDib * pDib, unsigned char * pUnRegion, int nThreshold)

{

static int nDx[]={-1,0,1,0};

static int nDy[]={0,1,0,-1};

nThreshold = 20;

// 遍历图象的纵坐标

// int y;

// 遍历图象的横坐标

// int x;

// 图象的长宽大小

CSize sizeImage = pDib->GetDimensions();

int nWidth = sizeImage.cx ;

int nHeight = sizeImage.cy ;

// 图像在计算机在存储中的实际大小

CSize sizeImageSave = pDib->GetDibSaveDim();

// 图像在内存中每一行象素占用的实际空间

int nSaveWidth = sizeImageSave.cx;

// 初始化

memset(pUnRegion,0,sizeof(unsigned char)*nWidth*nHeight);

// 种子点

int nSeedX, nSeedY;

// 设置种子点为图像的中心

nSeedX = nWidth /2 ;

nSeedY = nHeight/2 ;

// 定义堆栈,存储坐标

int * pnGrowQueX ;

int * pnGrowQueY ;

// 分配空间

pnGrowQueX = new int [nWidth*nHeight];

pnGrowQueY = new int [nWidth*nHeight];

// 图像数据的指针

unsigned char * pUnchInput =(unsigned char * )pDib->m_lpImage;

// 定义堆栈的起点和终点

// nStart=nEnd, 表示堆栈中只有一个点

int nStart ;

int nEnd ;

//初始化

nStart = 0 ;

nEnd = 0 ;

// 把种子点的坐标压入栈

pnGrowQueX[nEnd] = nSeedX;

pnGrowQueY[nEnd] = nSeedY;

// 当前正在处理的象素

int nCurrX ;

int nCurrY ;

// 循环控制变量

int k ;

// 图象的横纵坐标,用来对当前象素的邻域进行遍历

int xx;

int yy;

while (nStart<=nEnd)

{

// 当前种子点的坐标

nCurrX = pnGrowQueX[nStart];

nCurrY = pnGrowQueY[nStart];

// 对当前点的邻域进行遍历

for (k=0; k<4; k++)

{

// 4邻域象素的坐标

xx = nCurrX + nDx[k];

yy = nCurrY + nDy[k];

// 判断象素(xxyy) 是否在图像内部

// 判断象素(xxyy) 是否已经处理过

// pUnRegion[yy*nWidth+xx]==0 表示还没有处理

// 生长条件:判断象素(xxyy)和当前象素(nCurrX,nCurrY) 象素值差的绝对值

if ( (xx < nWidth) && (xx>=0) && (yy=0)

&& (pUnRegion[yy*nWidth+xx]==0)

&& abs(pUnchInput[yy*nSaveWidth+xx] - pUnchInput[nCurrY*nSaveWidth+nCurrX])

{

// 堆栈的尾部指针后移一位

nEnd++;

// 象素(xxyy) 压入栈

pnGrowQueX[nEnd] = xx;

pnGrowQueY[nEnd] = yy;

// 把象素(xxyy)设置成逻辑()

// 同时也表明该象素处理过

pUnRegion[yy*nWidth+xx] = 255 ;

}

}

nStart++;

}

// 释放内存

delete []pnGrowQueX;

delete []pnGrowQueY;

pnGrowQueX = NULL ;

pnGrowQueY = NULL ;

}

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服