kl800.com省心范文网

基于分水岭的图像分割程序设计


沈阳理工大学数字图像处理课程设计

摘 要
在图像处理中,图像分割是一项非常关键的技术,在图像工程中占有重要 的地位。随着科学技术的发展,它在众多领域中有着广泛的应用。如医学、 地质、环保、气象。常见的分割算法包括阔值分割算法、边缘检测方法、 区域提取方法和结合特定理论工具分割法。采用了标记分水岭算法对图像 进行分割,先对图像进行灰度图像的转化,在进行梯度分割,构造出区域 连接图和最小生成树, 然后对他们整合。针对分水岭算法对梯度图像强度的 变化分水岭算法对梯度图像强度的变化非常敏感,分水岭算法得到分割结 果的时候往往会存在过分分割现象本文通过分别对前景对象和背景对象进 行标记,来获得更加完善的效果。

关键词:标记分水岭;梯度图像;Matlab

I

沈阳理工大学数字图像处理课程设计

目 录
1 绪论 ........................................................................................................................................ 1 1.1 研究目的及意义 ........................................................................................................... 1 1.2 国内外现状 ................................................................................................................... 1 1.3 本文研究内容 ............................................................................................................... 2 2 图像分割算法综述 ................................................................................................................ 2 2.1 图像分割的概述 ........................................................................................................... 2 2.2 图像分割方法介绍 ....................................................................................................... 3 2.2.1 阈值的分割方法 ................................................................................................. 3 2.2.2 基于区域分割方法 ............................................................................................. 3 2.2.3 基于边缘的图像分割 ......................................................................................... 5 2.2.4 基于聚类分析的图像分割方法 ......................................................................... 6 3 分水岭图像分割算法 ............................................................................................................ 7 3.1 分水岭算法原理 ........................................................................................................... 7 3.2 分水岭算法特征 ........................................................................................................... 8 3.3 梯度图像获取 ............................................................................................................... 8 3.3.1 图像梯度的实现 ................................................................................................. 8 3.3.2 梯度图像处理方法 ............................................................................................ 9 3.4 标记对象 ..................................................................................................................... 10 4 分水岭算法实现 .................................................................................................................. 11 4.1 分水岭算法实现流程 ................................................................................................. 11 4.2 程序代码 ..................................................................................................................... 12 5 仿真结果及分析 .................................................................................................................. 16 结论 .......................................................................................................................................... 29 参考文献 .................................................................................................................................. 30

II

沈阳理工大学数字图像处理课程设计

1 绪论
1.1 研究目的及意义
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的 技术和过程,其中的独特性区域可以是图像的颜色、灰度、纹理、轮廓等,而目标可以 对应某一块所需要处理单位区域,也可是对应的多个处理区域。近年来,随着各科学新 理论和新方法的提出,人们也提出了一些特定理论、方法和工具相结合的分割记住,其 中基于形态学得分割算法是目前使用较为广泛的算法之一。 数字图像分割在数学图像的处理和计算机视觉领域中是一个备受关的研究分支在 目标分割和提取的过程中可以运用大量的数字处理方法,结合它在计算机上所产生的视 觉,模式识别等领域中的运用,吸引了一大群研究者的关注。数学图像分割技术所带来 的社会意义,加上研究者的研究,使得数学图像分割技术在深入的研究中不断的完善。 将会推动一系列的科学分之发展,比如,模式识别,计算机视觉,人工智能等。在最近 的 20 年中图像分割得到了广泛的关注和发展,国内外的很多研究人士提出了许多的方 法,在各个不同的领域中都取得了响应的成果。但是在对于一种能过普遍应用于各种复 杂情况和准确性很高的分割检测算法,还存在大量的提升空间。目前的方法和理论还有 许多不完善的地方,这就需要不断的探索不断的改进和发展。 图像有许多的复杂性和多义性,大部分的分割的过程无法依靠计算机单独完成,但 是手工分割的工作量大的惊人,而且对于地位非常困难,所以,有些人提出了人工河计 算机交互自动接合定位的方法,结合各自的优势,来实现对目标轮廓的快速定位。相信 这些交互式方法的应用, 必将推动图像目标分割与提取这一既具有广阔的应用前景又具 有重要的学术价值的课题的进一步研究,也必将成为一个更为独立和活跃的研究领域。

1.2 国内外现状
据数字图像处理技术的发展来看,实时性在实际应用中运用非常广泛。实时图像处 理系统的主要难点在于如何在有限的时间里完成大批量的数据处理。因为要对图像进行 处理,为了实现实时图像处理快速,高效的处理,在系统中图像处理的速度要达到一定 的速度,然而图像处理的速度是由执行短发的时间,视频输入输出延迟以及外部数据存

1

沈阳理工大学数字图像处理课程设计

储器与 DSP 的数据交换效率来决定的。从而产生了许多种图像分割算法。比如阈值分 割算法,基于区域分割算法,以及基于边缘的图像分割。 分水岭(watershed)算法法是一种已经发展起来的数学形态图像分割方法。该方法 之所以能引起人们的重视,第一是因为它的计算速度比较快,第二是因为物理轮廓线的 封闭性,第三是因为它的定位分厂精确。但是分水岭算法在微弱边缘处理也拥有很好的 响应。 分水岭算法最初是由 Digabel 和 Lantuejoul 引入图像处理领域,用于分析简单的二 值图像。 ,Beucher,Vincent 等人往深处研究,得到更通用的模型,建立了分水岭算法的 理论,大量的用于灰度图像的分割。它的思想虽然简单,但是设计方法比较困难,早期 因为计算机的落后导致该方法计算负担过重,所消耗的时间较长。因此,采用分水岭算 法进行图像分割时,会产生过度的分割现象和消耗的时间较长。 应用到图像分割中,分水岭变换是指将源图像转换成一个标记图像,其中所有属于 同一集水盆的点均被赋予同一个标记,并用一个特殊的标记来标几分水岭上的点。

1.3 本文研究内容
本文根据国内外现有的图像分割方法,和课题设计要求,研究基于分水岭图像分割 方法,梯度图像获取,所使用的算子。并介绍了利用分水岭算法对图像进行分割。

2 图像分割算法综述
2.1 图像分割的概述
图像分割在图像处理中时一项关键的技术, 在 20 世纪 70 年代开始一直受到人们的 高度重视,迄今为止已经提出了千百种分割算法,都因为无法通用的分割理论,现在所 提出的是针对具体问题的分割方法,并没有找到一种适合所有图像的通用分割算法。此 外,需要制定出适用分割算法的标准,给图像分割技术带来许多实际问题。最近几年又 涌现出了许多新思路、新方法或改进算法,对一些经典方法和新出现的方法作了划分。 将图像分割方法分为阈值分割方法、边缘检测方法、区域提取方法和结合特定理论工具 的分割方法。图像的分割方法有两种。一种是边界方法,一种是区域方法,两种方法都

2

沈阳理工大学数字图像处理课程设计

存在缺点和优点,一些学者试图把两者结合起来进行图像分割,随着计算机处理能力的 提高,越来越多的方法陆续的出现,如基于彩色纹理图像分割、纹理图像分割。教学工 具和实验手段也的到了很大的更新扩展,从时域信号到频域信号处理,使得近来的小波 变换也开始在图像分割中得到应用。

2.2 图像分割方法介绍
2.2.1 阈值的分割方法 灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多一类 [2]。阈值分割方法实际上是输入图像到输出图像其中,T 为阈值,物体的图像元素背景 的图像可以看出来,阈值的分割算法主要是确定阈值,主要能确定一个合适的阈值就能 准确的把图像分割开来。确定了阈值以后,把阈值和像素点的灰度值比较在和像素分割 可对各像素并行地进行,分割所得出的结果是直接给出图像的区域。 计算简单,运算 效率快,高是阈值分割的主要优点。在重视运算效率的场合,它得了广泛的应用。阈值 有很多种处理技术,有全局阈值,最佳阈值,自适应阈值等。 不同的问题需要选择不同的阈值来确定。具体可以通过实验来去顶。如果给定了一 张图像,分析直方图的来确定最佳的阈值方法。例如当直放图明显呈现双峰情况是,可 以选择两个峰值的中心点最为最佳的阈值。下图 2.1(a)( b )分别为全局阈值和自适应 阈值分割结果。

(a)全局阈值 (b)自适应阈值 图 2.1 全局阀值与自适应阀值

2.2.2 基于区域分割方法 区域分割方法有两种,一种是区域生长,一种是区域分裂合并。

3

沈阳理工大学数字图像处理课程设计

把具有相似性质的像素集合起来构成区域,这就是区域生长。详细的思想是先对每 一个所要分割的区域找到一个种子像素来作为所生长的起始点,根据某种实现确定的生 长或者相似准则来判定种子像素周围于种子像素有相同或相似性质的像素合并到像素 所在的区域中。得到的新像素后,在把这些像素当做新的像素种子,来继续上一步的过 程。一直执行到没有符合条件的像素可以被包括进来。这样就长成了一个区域。 区域生长实现过程,需要选择出一组能够正确代表区域的种子像素,确定好在生长 过程中的相同或者相似性准则,其中相似或者相同准则可以使灰度,彩色,纹理,梯度 等特性。再指定一个让生长停止的准则条件。所选取出来的种子像素可以使单个像素, 也可以是包含若干个像素的小区域。根据不同的原则来指定不同的生长准则,使用不同 的生长准则, 在生长的过程中会受到生长准则的影响。 区域生长的主要优点是计算简单, 在对较均匀的连通目标有很好的分割效果。而缺点是需要人为的去确定种子像素,对噪 声相当敏感,可能会导致区域中出现空洞。此外。它还是一种串行的算法,如果计算的 目标过于庞大,分割速度就会大大的减慢,因此在设计算法时,最好能提高它的计算效 率。下图为区域生长分割的一个结果。

图 2.2 区域生长分割结果

区域的分裂合并可以说是区域生长的逆过程:从整个的图像出发,不断的分裂图像 来得到各个子区域,然后把前景区域合并,来实现目标提取。假设对一幅图,前景区域 是由一些互相连通的像素组成的。如果把一副图像分裂到像素级,那就可以判定出该像 素是否就是前景像素。当判断完所有的像素点或子区域,在把前景区域或者像素合并就 能得到前景目标。 这种方法在使用中, 最常见的是四叉树分解法,下图为四叉树分解效果 图。

4

沈阳理工大学数字图像处理课程设计

图 2.3 四叉树分解效果图

2.2.3 基于边缘的图像分割 基于图像边缘信息的分割方法是最古老,也是仍然很重要的一类图像分割方法 [6]. 它主要作用是通过对于边缘的检测,检测灰度级或者结构具有突变的地方,表明一个区 域的终结,也是另一个区域开始的地方。边缘检测的结果是不能作为图像分割的结果。 还需要进一步的处理,将边缘点沿着边界(轮廓)连接起来。最终的目的至少是达到部 分分割,也就是将局部的边缘组成一个目标或部件的边界。 1.基于边缘的分割方法经常遇到的几个问题: 2.图像噪声和背景的影响。 3.不是边界的地方出现边缘点。 4.是边界的地方缺少边缘点。

(a)原始图片

(b)边缘图片

图 2.4 边缘检测原始及边缘图

5

沈阳理工大学数字图像处理课程设计

(c)边缘伸张后的图片 图 2.4 边缘检测效果图

2.2.4 基于聚类分析的图像分割方法 随着科学的不断发展,提出了许多对于图像分割的新理论和新方法,随着出现了一 些特定的理论,方法相结合的图像分割方法,而聚类分析就属于其中一种。 聚类法属于多远统计分析,它可在没有训练样本的情况下,自己根据数据集内在的 结构,按照数据在样本空间中相似性和相似性测量准则来对数据进行自动划分和归类, 使得同一类内的样本具有相同或者相近的属性,对于属性的不同类的样本属相差别会很 大。K 均值聚类是一种基本的聚类方法,既有结构明确,通用性好和分割快速的优点, 但是他也存在优化分割陷入局部极小值的问题。 1974 年 Dunn 提出了模式形式 K 均值聚 类算法,既模糊 C 均值聚类算法[8]。Bezdek 在 1981 年证明了模糊 C 均值的收敛性[9] 并讨论了模糊 C 均值类算法与 K 均值聚类算法的关系, 并进一步扩展和建立模糊聚类理 论。 2.2.5 基于模糊集理论的分割方法 模糊集理论有描述不确定的能力,常用于图像分割的问题。近年来,涌现出很多 模糊分割技术,已经广泛的应用到图像分割当中。因为模糊技术在图像分割中有一个突 出的优点,它能和现有的很多图像分割方法互相结合在一起,形成一系列的集成模糊分 割技术。模糊分割技术有很多类,比如模糊聚类,模糊阈值,模糊边缘检测技术之类的。

6

沈阳理工大学数字图像处理课程设计

3 分水岭图像分割算法
分水岭算法其实就是对于整体形态进行分割的算法,是对图像做梯度分割处理。这 样处理的目的是要将图像分割成不同类型的特殊个体,来分析物体的边缘灰度变化情 况。梯度分割处理可以很好的描述图像中物体边缘的灰度变化情况。所以,先将原始图 像进行对物体边缘的检测来得到梯度图像,在用分水岭算法对梯度图像进行分割。在进 行图像分析,从而达到分割图像的效果和目的。

3.1 分水岭算法原理
分水岭算法是一种基于拓扑理论的数学形态学得分割方法,其基本思想是把图像看 做是测地学上的拓扑地貌,图像中每个一像素灰度值表示该点得海拔高度,每一个局部 极小的值及其影响区域称为集盆,而集水盆的边界则形成分水岭[10]。它可以将图像分 割为互不重叠区域,得到一个象素宽度且连续的边界,其应用对象是灰度梯度图像,梯 度图像可有 Canny 算子在灰度图像上得到[11]。 Vincent 和 Soille 提出的浸没模拟分水岭 算法是根据自然界中水浸没的规律,即地形处于低洼的地段先被浸没。[12]分水岭算法 主要包含了两个步骤。第一步:将图像进行处理,在将处理的图像像素灰度值的大小按 照升序排列出来;第二步:对排序处的顺序进行扫描,构造出“集水盆地”,然后在不 同标记的“集水盆地”的边缘构造出“防水提坝”,来对图像区域的初始化划分处理。 (如图 3.1.1(a)(b)所示)

(a)“集水盆地”的构造

7

沈阳理工大学数字图像处理课程设计

(b)“提坝”的构造 图 3.1 分水岭地貌图

3.2 分水岭算法特征
分水岭算法有多种实现方法,较典型的有基于标记分水岭变换和欧式距离映射法。 所谓标记分水岭变换就是从给定图片的全局极小值点开始,假设当前的值是 ,其 中每个极小值小于或者等于 的集水盆会被分配到唯一的标记,对于当前值是 的像素, 如果跟它相邻得区域中已经有了被标记过的像素,就分配一个相同的标记给它,如果它 周围没有一个像素被标记过。就把这个未标记过的像素当成一个新的集水盆,并且给它 一个新的标记。重复的进行标记,一直标记到图像中所有的像素都配分配到某一个集水 盆(就是属于某个对象区域为止) 。标记分水岭变换则完成。 欧式距离映射法,则是通过对二值图像的腐蚀,就是计算各个像素的欧式距离映射 (Euclidean Distancc Maps.EDM)从而生成 EDM 图像,然后用该图像作为拓扑表面, 接着对其它像素的取值来作为获得分割结果的判断。EMD 图像从最亮的值开始,知道 迭代递减到 1,然后重复运算直到除了边界线以外所有的像素都被填充为止。 传统的分水岭算法都是对梯度图像进行无标记的分割,这样会造成过分的分割。本 文采用对分割区域进行标记,使用标记分水岭算法。

3.3 梯度图像获取
3.3.1 图像梯度的实现
.

8

沈阳理工大学数字图像处理课程设计

图像边缘一般都是通过对图像进行梯度运算来实现的。图 3.2 是使用 Sobel 算子所得到 的梯度图像。

图 3.2 灰度图梯度图

3.3.2 梯度图像处理方法 Sobel 算子 索贝尔算子(Sobel operator)是图像处理中的算子之一,主要用于图像边缘检测。 在技术上面,是一种离散性差分算子,它主要用来运行算图像亮度函数的梯度近似值。 使用该算子对图像的任和一个点计算,就会产长相对应的梯度矢量或者是其法矢量。 如果角度的值等于零的话,就代表图像该处拥有纵向边缘,左方向会比右方向暗一 些。 Sobel 算子在边缘检测中,是一种常用的模版。该算子分为两种,一种是检测水平 边沿,一种是检测垂直平边沿的。跟“和”相比,该算子对像素为止的影响做出了加权 处理,所以效果会更好。 该算子还有一种各向同性 Sobel 算子, 它也分为水平边沿检测和垂直平沿检测两种。 它和普通的 Sobel 算子相比较, 它的为止加权系数更加的准确, 不同方向的边沿检测时, 梯度的幅值一致。 Sobel 算子的优势在于它是滤波算子形式,用于提取图像边缘,利用了快速卷积函 数,方法简单有效, 所以得到广泛应用。而它的缺点在于该算子没有能把图像的主体 和背景严格的划分出来。就是说该算子没有对于图像的灰度进行处理,由于该算子没有

9

沈阳理工大学数字图像处理课程设计

严格的模拟人得视觉胜利特征来处理图像,所以提取出来的图像轮廓有些时候并不能得 到人们的满意。 Canny 算子 坎尼(Canny)边缘检测算子广泛的应用于灰度图像中。坎尼根据边缘检测的有 效性和定位的可靠性, 研究出了最优秀的边缘检测器所需要的特征,推导出了最优边 缘检测器的数学表达式。在不同类型的边缘中,坎尼的边缘检测算子是最好形式是不相 同的。在一维边缘检测中,由于一阶导数算子的最大值和 M-H 算子的零交叉是一直的, 所以坎尼边缘检测跟 M-N 边缘检测几乎是一样的。但是在二维检测中,坎尼算子的方 向性质使得边缘检测的定位性能要比 M-H 算子好很多, 能更好的边缘强度估计, 并且能 产生边缘梯度方向和强度两个信息,因此后续更为方便。 衡量边缘检测性能优劣有三个指标坎尼首次把三点判据用数学的形式表示出来,在 采用最优化数值方法,从而能得到对应给定边缘类型的最佳边缘检测模版。在二维图像 中,必须要使用若干个方向的模版分别对图像作卷积处理,然后取得最有可能的边缘方 向。对于阶跃行的边缘,坎尼推导出的最优边缘检测器的形状和高斯函数的一阶导数相 似。利用二维高斯函数的圆对称行和可分解性,我们就可以非常容易的来计算高斯函数 在任和一个方向上的方向导数和图像的卷积。所以,实际应用中可以选择高斯函数的一 届导数来作为阶跃形式边缘的次最优检测算子。

3.4 标记对象
分水岭算法对梯度图像强度的变化非常敏感,所以在用分水岭算法得到分割结果的 时候往往会存在过分分割现象,因此通常要分别对前景对象和背景对象进行标记,来获 得更加完善的效果。 获得前景标记的方法有很多种,这些标记都必须是前景对象的内部链接的斑点像 素。本文中,将采用形态学技术“基于开的重建”和“基于闭的重建”来清理图像。将 会对于每个对象内部创建单位极大值,使用 imregionalmax 命令来定位。 所谓开运算,就是先腐蚀后膨胀,它可以把比结构元素小的突刺过滤掉,在切断细 长的搭接二起到分离作用。闭运算是先膨胀后腐蚀,它可以把比结构元素小的缺口或孔

10

沈阳理工大学数字图像处理课程设计

填充上,大街较短的间隔来起到连接作用。这两种算法主要功能是去除比结构元素小的 特定图像细节,同时来保证不产生全局的几何失真。

4 分水岭算法实现
4.1 分水岭算法实现流程
分水岭算法在 MATLAB 上实现的基本步骤有以下几步: 1.读入彩色图像,并转化为灰度图像。 2.运用 Sobel 算子获得梯度幅值图像。 3.前景标记对象和计算。 4.计算背景标记。 5.计算分割函数的分水岭变换。

11

沈阳理工大学数字图像处理课程设计

开始

导入一幅彩色图像

读入图片,将图片 转化为灰度图像

做梯度幅值图像

前景标记对象和计 算

计算背景标记

分水岭变换的分割 函数计算 结束

图 4.1 基于分水岭算法实现流程图

4.2 程序代码
clc; clear all; close all;

12

沈阳理工大学数字图像处理课程设计

rgb = imread('pinguo.jpg'); if ndims(rgb) == 3 I = rgb2gray(rgb); else I = rgb; end figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(rgb); title('原图'); subplot(1, 2, 2); imshow(I); title('灰度图'); hy = fspecial('sobel'); hx = hy'; Iy = imfilter(double(I), hy, 'replicate'); Ix = imfilter(double(I), hx, 'replicate'); gradmag = sqrt(Ix.^2 + Iy.^2); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I,[]), title('灰度图像') subplot(1, 2, 2); imshow(gradmag,[]), title('梯度幅值图像') se = strel('disk', 20); Io = imopen(I, se); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I, []); title('灰度图像'); subplot(1, 2, 2); imshow(Io), title('图像开操作') Ie = imerode(I, se); Iobr = imreconstruct(Ie, I); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I, []); title('灰度图像'); subplot(1, 2, 2); imshow(Iobr, []), title('基于开的重建图像'); Ioc = imclose(Io, se); Ic = imclose(I, se); figure('units', 'normalized', 'position', [0 0 1 1]);

13

沈阳理工大学数字图像处理课程设计

subplot(2, 2, 1); imshow(I, []); title('灰度图像'); subplot(2, 2, 2); imshow(Io, []); title('开操作图像'); subplot(2, 2, 3); imshow(Ic, []); title('闭操作图像'); subplot(2, 2, 4); imshow(Ioc, []), title('开闭操作');

Iobrd = imdilate(Iobr, se); Iobrcbr =imreconstruct(imcomplement(Iobrd),imcomplement(Iobr)); Iobrcbr = imcomplement(Iobrcbr); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(I, []); title('灰度图像'); subplot(2, 2, 2); imshow(Ioc, []); title('开闭操作'); subplot(2, 2, 3); imshow(Iobr, []); title('基于开的重建图像'); subplot(2, 2, 4); imshow(Iobrcbr, []), title('基于闭的重建图像'); fgm = imregionalmax(Iobrcbr); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 3, 1); imshow(I, []); title('灰度图像'); subplot(1, 3, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(1, 3, 3); imshow(fgm, []); title('局部极大图像') It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm) = 255; It2(fgm) = 0; It3(fgm) = 0; I2 = cat(3, It1, It2, It3); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(rgb, []); title('原图像'); subplot(2, 2, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(2, 2, 3); imshow(fgm, []); title('局部极大图像'); subplot(2, 2, 4); imshow(I2); title('局部极大叠加到原图像'); se2 = strel(ones(5,5)); fgm2 = imclose(fgm, se2);

14

沈阳理工大学数字图像处理课程设计

fgm3 = imerode(fgm2, se2); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(2, 2, 2); imshow(fgm, []); title('局部极大图像'); subplot(2, 2, 3); imshow(fgm2, []); title('闭操作'); subplot(2, 2, 4); imshow(fgm3, []); title('腐蚀操作');

fgm4 = bwareaopen(fgm3, 20); It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm4) = 255; It2(fgm4) = 0; It3(fgm4) = 0; I3 = cat(3, It1, It2, It3); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(I2, []); title('局部极大叠加到原图像');

subplot(2, 2, 2); imshow(fgm3, []); title('闭腐蚀操作'); subplot(2, 2, 3); imshow(fgm4, []); title('去除小斑点操作'); subplot(2, 2, 4); imshow(I3, []); title('修改局部极大叠加到原图像'); bw = im2bw(Iobrcbr, graythresh(Iobrcbr)); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(1, 2, 2); imshow(bw, []); title('阈值分割'); D = bwdist(bw); DL = watershed(D); bgm = DL == 0; figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(2, 2, 2); imshow(bw, []); title('阈值分割'); subplot(2, 2, 3); imshow(label2rgb(DL), []); title('分水岭变换示意图');

15

沈阳理工大学数字图像处理课程设计

subplot(2, 2, 4); imshow(bgm, []); title('分水岭变换脊线图'); gradmag2 = imimposemin(gradmag, bgm | fgm4); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(bgm, []); title('分水岭变换脊线图'); subplot(2, 2, 2); imshow(fgm4, []); title('前景标记'); subplot(2, 2, 3); imshow(gradmag, []); title('梯度幅值图像'); subplot(2, 2, 4); imshow(gradmag2, []); title('修改梯度幅值图像');

5 仿真结果及分析

第一步:读入图片,将图片转化为灰度图像。 clc; clear all; close all; rgb = imread('pinguo.jpg'); if ndims(rgb) == 3 I = rgb2gray(rgb); else I = rgb; end figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(rgb); title('原图'); subplot(1, 2, 2); imshow(I); title('灰度图');

16

沈阳理工大学数字图像处理课程设计

(a)原图 图5.1 原图图的灰度处理

(b)灰度图

第二步:做梯度幅值图像。 使用 Sobel 边缘算子对图像进行水平和垂直方向的滤波,然后求取模值,sobel 算 子滤波后的图像在边界处会显示比较大的值,在没有边界处的值会很小 hy = fspecial('sobel'); hx = hy'; Iy = imfilter(double(I), hy, 'replicate'); Ix = imfilter(double(I), hx, 'replicate'); gradmag = sqrt(Ix.^2 + Iy.^2); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I,[]), title('灰度图像') subplot(1, 2, 2); imshow(gradmag,[]), title('梯度幅值图像')

17

沈阳理工大学数字图像处理课程设计

图 5.2 梯度幅值图像

第三步: 前景标记对象和计算。 如果直接使用梯度模值图像进行分水岭算法话,得到的结果通常会存在过度分割的 现象。所以本文采用分别对前景对象和背景对象进行标记,来获得更好的分割效果。 首先使用用 imopen 对图像做开操作。 se = strel('disk', 20); Io = imopen(I, se); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I, []); title('灰度图像'); subplot(1, 2, 2); imshow(Io), title('图像开操作')

图 5..3 图像的开操作

18

沈阳理工大学数字图像处理课程设计

然后对通过腐蚀之后重建来做基于开的重建计算: Ie = imerode(I, se); Iobr = imreconstruct(Ie, I); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(I, []); title('灰度图像'); subplot(1, 2, 2); imshow(Iobr, []), title('基于开的重建图像');

图 5.4 重建图像

开操作后,使用 imclose 移除较暗的斑点和枝干标记。对比常规的形态学闭操作和 基于闭的重建操作。 Ioc = imclose(Io, se); Ic = imclose(I, se); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(I, []); title('灰度图像');

subplot(2, 2, 2); imshow(Io, []); title('开操作图像'); subplot(2, 2, 3); imshow(Ic, []); title('闭操作图像'); subplot(2, 2, 4); imshow(Ioc, []), title('开闭操作');

19

沈阳理工大学数字图像处理课程设计

图 5..5 普通图像开闭操作

接着使用 imdilate,然后使用 imreconstruct。先对图像求补,对 imreconstruct 输出 图像求补。 Iobrd = imdilate(Iobr, se); Iobrcbr =imreconstruct(imcomplement(Iobrd),imcomplement(Iobr)); Iobrcbr = imcomplement(Iobrcbr); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(I, []); title('灰度图像'); subplot(2, 2, 2); imshow(Ioc, []); title('开闭操作'); subplot(2, 2, 3); imshow(Iobr, []); title('基于开的重建图像'); subplot(2, 2, 4); imshow(Iobrcbr, []), title('基于闭的重建图像');

20

沈阳理工大学数字图像处理课程设计

图 5.6 基于开闭重建图像

通过比较,基于重建的开闭操作比普通的开闭操作有效。下面计算 Iobrcbr 的局部 极大来得到更好的前景标记。 fgm = imregionalmax(Iobrcbr); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 3, 1); imshow(I, []); title('灰度图像'); subplot(1, 3, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(1, 3, 3); imshow(fgm, []); title('局部极大图像')

21

沈阳理工大学数字图像处理课程设计

图 5.7 前景标记

叠加前景标记到原图上,更容易的理解这个结果。 It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm) = 255; It2(fgm) = 0; It3(fgm) = 0; I2 = cat(3, It1, It2, It3); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(rgb, []); title('原图像'); subplot(2, 2, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作');

22

沈阳理工大学数字图像处理课程设计

subplot(2, 2, 3); imshow(fgm, []); title('局部极大图像'); subplot(2, 2, 4); imshow(I2); title('局部极大叠加到原图像');

图 5.8 前景标记到原图

通过闭操作和腐蚀操作来清理标记斑点的边缘,来解决大多闭塞处和阴影对象没有 被标记,对象在结果中得不到合理的分割和一些对象的前景标记会一直到对象的边缘。 se2 = strel(ones(5,5)); fgm2 = imclose(fgm, se2); fgm3 = imerode(fgm2, se2); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(2, 2, 2); imshow(fgm, []); title('局部极大图像'); subplot(2, 2, 3); imshow(fgm2, []); title('闭操作'); subplot(2, 2, 4); imshow(fgm3, []); title('腐蚀操作');

23

沈阳理工大学数字图像处理课程设计

图 5.9 闭操作和腐蚀操作

使用 bwareaopen,来移除少于特定像素个数的斑点。BW2 = bwareaopen(BW,P)从 二值图像中移除所以少于 P 像素值的连通块,得到另外的二值图像 BW2。 fgm4 = bwareaopen(fgm3, 20); It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm4) = 255; It2(fgm4) = 0; It3(fgm4) = 0; I3 = cat(3, It1, It2, It3); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(I2, []); title('局部极大叠加到原图像'); subplot(2, 2, 2); imshow(fgm3, []); title('闭腐蚀操作'); subplot(2, 2, 3); imshow(fgm4, []); title('去除小斑点操作');

24

沈阳理工大学数字图像处理课程设计

subplot(2, 2, 4); imshow(I3, []); title('修改局部极大叠加到原图像')

图 5.10 移出斑点

第四步:计算背景标记 首先,在清理后的图像 Iobrcbr 中,暗像素属于背景,所以可以从阈值操作开始。 bw = im2bw(Iobrcbr, graythresh(Iobrcbr)); figure('units', 'normalized', 'position', [0 0 1 1]); subplot(1, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(1, 2, 2); imshow(bw, []); title('阈值分割');

25

沈阳理工大学数字图像处理课程设计

图 5.11 阈值分割

背景像素在黑色区域,在理想情形下,不需要要求背景标记太接近于要分割的对象 边缘。一般计算“骨架影响范围”来“细化”背景,或者 SKIZ,bw 的前景。这样能通过计 算 bw 的距离变换的分水岭变换来实现,然后寻找结果的分水岭脊线(DL==0) 。D = bwdist(BW)计算二值图像 BW 的欧几里得矩阵。对 BW 的每一个像素,距离变换指定 像素和最近的 BW 非零像素的距离。bwdist 默认使用欧几里得距离公式。BW 可以由 任意维数,D 与 BW 有同样的大小。 D = bwdist(bw); DL = watershed(D); bgm = DL == 0; figure('units', 'normalized', 'position', [0 0 1 1]); subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作'); subplot(2, 2, 2); imshow(bw, []); title('阈值分割'); subplot(2, 2, 3); imshow(label2rgb(DL), []); title('分水岭变换示意图'); subplot(2, 2, 4); imshow(bgm, []); title('分水岭变换脊线图');

26

沈阳理工大学数字图像处理课程设计

图 5.12 分水岭变化

第五步:分水岭变换的分割函数计算 可以用 imimposemin 函数来修改图像,让它在特定的要求位置有局部极小。这一步 中是用 imimposemin 来修改梯度幅值图像,使得在前景和后景标记像素有局部极小。 gradmag2 = imimposemin(gradmag, bgm | fgm4); figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(bgm, []); title('分水岭变换脊线图'); subplot(2, 2, 2); imshow(fgm4, []); title('前景标记'); subplot(2, 2, 3); imshow(gradmag, []); title('梯度幅值图像'); subplot(2, 2, 4); imshow(gradmag2, []); title('修改梯度幅值图像');

27

沈阳理工大学数字图像处理课程设计

图 5.13 修改梯度幅值图像

28

沈阳理工大学数字图像处理课程设计

结论
本文提出了分水岭图像分割算法对图像进行分割的方法、梯度分割的方法以及区域 合并的方法。先对图像进行灰度图像的转化,在进行梯度分割,构造出区域连接图和最 小生成树,然后对他们整合。并作出了实验结果。 在图像的处理上,图像分割一直是至关重要的技术。随着科技的进步,以及人们对 图像分割的探索,使得图像分割技能越来越完善,处理图像的方法越来越多。达到处理 图像的目标越来越精确。但是这还是图像处理上的一个重要难题。需要我们不停地去探 索。来完善这一技术。让图像分割更好的能在各个领域上运用。

29

沈阳理工大学数字图像处理课程设计

参考文献
[1]陈婷婷,采用模糊形态学和分水岭算法的图像分割研究[D],西南大学,2008,94-96 [2]Milan Sonka,Vadav Hhvac,Roger Boyle£.Image Processing,Amdy-sis,and Machine Vision[M].人民邮电出版社。2003,45-46 [3]宋健中。基于边缘图像分割, 《视频图像处理》 ,2004,16-18 [4]J.Bezdek.Pattem recognition with fuzzy objective function algorithms[M].Plenum,New York,1981. [5]J.Bezdek.A convergence theorem.for the fuzzy ISODATA clustering algorithm[j].IEEE PAMI,1980,1(2):1-8 [6]CONZALEZ R C;WOODS R E Digital image processing[M].2nded New York: Prentice Hall,2002 [7]CANNY. A Computational Approach to Edge Detection [J].IEEE Trans action son Pattern Analysis and Machine Intelligence,1986,8(6):679-698 [8]VNCENTL, SOLLEP. Watershed in digital space: an efficient algorithm based on immersion simulation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence1991, (13):583-589 [9]唐金尤, 范彦斌, 姚锡凡.基于分水岭算法的彩色图像分割.佛山科学技术学院学报 (自 然科学版) ,2006.第 24 卷第 1 期 ,2-3

30


赞助商链接

数字图像处理题目安排表

彩色图像分割程序设计 杨大为 1103030429 1103030430 1103030431 吴才奇 HSI 模型 杨大为 基于分水岭的图像分割程序设计 基于支持向量机的图像识别程序设计 王伟 吴...

OpenCV基于分水岭图像分割算法

OpenCV基于分水岭图像分割算法_数学_自然科学_专业资料。算法源程序: #include<cv.h> #include<highgui.h> #include<iostream> using namespace std; IplImage* ...

基于分水岭技术的图像分割算法实现毕业论文

基于分水岭技术的图像分割算法实现毕业论文 - 毕业论文 基于分水岭技术的图像分割算法实现 学生姓名: 系专部: 业: 马越 学号: 电子工程系 电子信息工程 谭艳丽(...

数字图像处理课程设计题目分配

基于分水岭的图像分割程序设计(1) 15.基于支持向量机的图像识别程序设计(2) a) 训练样本的采集与处理 30 b) SVM 程序设计 31 16.运动目标检测程序设计(2) ...

基于MATLAB的图像分割方法及应用

图像分割算法研究——基于分水岭分割法的彩色图像分割...6 5.1.2 MATLAB 程序 ......选择适合本论文的设计方法,然 后通过对图像的分割,以达到人眼的最佳视觉...

ITK及其在医学图像分割中的应用

关键字:面向对象程序设计;ITK;图像分割; ITK and its application of medical ...它提供了一 些主流算法,如区域增长、阈值分割、基于分水岭的分割、Fast Marching...

基于MATLAB的图像分割算法研究开题报告

5、基于分水岭变换进行图像分割 三、 调研报告 调研...四、 方案论证 本次设计是基于MATLAB在图像分割算法...12?13 周 系统测试,完善程序功能。 14?15 周 ...

基于改进分水岭方法的癌细胞图像分割技术.doc

分类号:TP391.1 密级:公开 U D C:D10621-408-(2012)0670-0 编号:2008023005 成都信息工程学院学位论文 基于改进分水岭方法的癌细胞图像分割技术 论文作者姓名:...

基于改进分水岭方法的癌细胞图像分割技术学士学位论文

基于改进分水岭方法的癌细胞图像分割技术学士学位论文 - 分类号:TP391.1 密级:公开 U D C:D10621-408-(2012)0670-0 编号:2008023005 成 ...

图像算法:基于分水岭的彩色分割

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割》原理 分水岭算法有好好几种实现算法,拓扑学,形态学,浸水模拟和降水模拟等,最 常用的就是 Soille 和 ...