基于分水岭算法的彩色细胞图像分割摘要随着影像医学的发展,通过对细胞涂片影像的分析,从而对细胞影像进行区分和识别成为重要的研究课题。
细胞图像分割是细胞图像分析和识别的重要步骤。
图像分割是将图像中具有特殊含义的不同区域区分开来,是图像处理的关键步骤。
分割后的子区域互不交叉,每一个区域满足特定性质的一致性。
人体细胞种类繁多、形态多样且图像质量也很不相同,而分析应用中对细胞图像分割的质量却要求较高,所以细胞图像的自动分割极为重要且困难很大。
彩色图像与灰度图像相比,信息量更为丰富,而且颜色的描述方法也,较多。
很多经典算法只能对二值图像或灰度图像进行运算。
为此,关于彩色细胞图像的分割研究成为一个非常活跃的研究领域。
本文针对彩色细胞图像经过染色处理的特点,提出了一种彩色细胞图像的分割方法。
以快速分水蛉算法为主要分割算法,为了较好地抑制彩色细胞图像背景噪声,选择更符合人类视觉感知的HSI颜色空间,结合自动阈值和色度提出去除图像背景的方法。
同时,使用中值滤波和均匀化处理,有效地克服了分水岭算法的过分割现象。
针对细胞图像特点改进了区域合并算法。
得到了较准确的分割结果。
本文首先概括介绍了图像分割的意义及发展现状,概述了当前主要的图像分割算法。
其次,介绍了彩色图像颜色空间和快速分水岭算法的基本思想及实现方法。
最后列出了实验流程和实验结果并进行了讨论。
关键词:图像分割,HSI颜色空间,分水岭二.分水岭算法本章从对分水岭算法的定义出发,对分水岭算法的发展过程中的不同实现方法进行比较,阐明快速分水岭算法的优越特性及实现方法。
(一)分水岭算法的定义分水岭分割的最初算法是针对地形数字高程模型提出的.目前分水岭算法在图像分割领域正得到广泛应用.分水岭算法的定义121J对一幅二维灰度图像,,Jr的定义域为Dr cZ2,,取离散灰度值【0,N】,将该值视为对应像素点的高度,Ⅳ为一正整数。
用G表示相应的数字格网(以四邻域为例)o图像I中点p和g之间一条长度为z的路程≯为由点,Pl,⋯Pt-l,P1)组成的(斗1)元组,有Po=P,Pl=q,且Vf∈【l,,】,(Pf-I,Pi)∈G (3-2)将路径P的长度标识为^纠,点p的邻域集标识为: (p):%Q)=p’∈Z2,(DP’)∈回(3‘3)图像f在高度矗的一个极小区膨(minimum)定义为由高度值为h的点组成的一连通区域,从该区域肘中的一点出发到达任一高度低于h的像素点。
与极小区M相关联的集水盆地∞砂定义为D。
中的一个点集,其所包含P的特点为:假设一滴水落到该点P上,则该水滴由于重力作用将沿一条最快速下降路径下滑并最终到达极小区^^在集水盆地的基础上,分水岭的直观定义‘捌为:分割不同集水盆地的线称为分水岭。
以上定义虽然直观,但不方便用算法实现。
因此,Vincent与Soille给出了另一种算法定义(algorithmic definition)123}如下:将图像,中各点的梯度值视为该点的高度,在图像,的每个极小区M的底部之间钻上连通小孔。
然后,向图像形成的地表面中缓慢注水,水面将逐渐浸没地面,从而形成一个个小湖——集水盆地.从高度最低的极小区出发j水面将渐渐浸没图像,中不同的集水盆地。
在此过程中,如果来自两个不同集水盆地的水将要发生汇合,则在汇合处建一水坝。
在浸没过程的最后,每个集水盆地最终都会被水坝包围。
所有水坝的集合就对应图像的分承岭(算法定义)。
(二)常用的几种分水岭算法Beucher和Lantu巧oul最先提出了基于“浸没”模型的分水岭算法[241,在已知区域最小的前提下,在每个区域最小值影响的区域内,通过形态学闭运算,逐步扩展所影响的区域范围,最后得到分水岭线。
在计算的过程中,如果遇到这种情况,当同一区域呈环形时,就可能产生错误的分水岭线A.并且这种算法的效率是非常低的,因为在每一次二值闭运算的过程中,都必须将所有的像素扫描一次.也可以通过灰度骨架来计算分水岭嘲.基于这一点,Beucher证明了分水岭从一定程度上来说就是灰度骨架中的闭合曲线‘261。
灰度图像的骨架可以通过形态学细化运算来计算。
在形态学细化的过程中,可以很容易的将骨架内不闭合的曲线从图像中去掉。
整个过程,包括骨架提取和接下来对曲线的修剪的过程需要经过多次迭代,在每~步迭代过程中,和前一种算法类似需要对每个像素进行扫描,所以这种算法的效率基于分水岭算法的彩色细胞图像分割研究也是很低的. FriedLander在文献【271中提出了一种有序算法【281。
在数学形态学领域,有序算法被广泛的应用【29】.这类算法按照预先规定的顺序对图像进行扫描,在扫描的过程中每个像素的新的值可能会对下一个像素的新的值的计算产生影响。
整个算法必须有一个初始化的步骤,生成“主要蓄水盆地”。
拥有区域最小值M的主要蓄水盆地是一些像素的集合,从像素M开始,经过一个非降的浸没过程可以到达这些像素。
图像中的任何一个像素都至少属于一个主要蓄水盆地,而两个或两个以上的主要蓄水盆地重叠的区域就称为“分水岭区域”,这些区域组成了“受限蓄水盆地”,最后,可以通过SKIZ(skeleton by influence zones)得到分水岭线。
整个过程是相当快的.因为每一个步骤都是有序进行的。
另外.在算法中对每个蓄水盆地都进行了标记编号,线不是非常精确。
图3-2基于有向箭头的有序算法Beucher还提出了一种基于有向箭头的有序算法00。
算法有三个主要步骤:首先,找到图像中的区域最小值像素点(这些像素的邻接像素的狄度值都不小于当前像素的灰度值).然后,对于每一对像素细,p2),如果Pl点灰度值严格大于p2,那么用一个箭头从PI指向P2.这样就可以用一种简洁的方式表示像素的邻接情况。
最后,对区域最小值标记编号,并根据第二步中的箭头将这个标记值进行扩展。
这种算法比前两种算法计算的速度快,但计算的结果也不是十分的精确。
上面提到的算法有以下一些特点:第一,在处理的过程中,它们都连续多次对图像进行完整的扫描。
这就意味着在每一步过程中,所有的像素都必须被扫描一次,这是非常费时的.第二,这些算法都没有一个固定的迭代次数,每一次迭代都必须对图像进行完整的扫描,而迭代的次数可能很大。
所以,在目前的计算机中,这些算法的效率是非常低的。
针对上述算法的缺点, vincent和soille提出了一种高效精确的分水岭算法阅。
它需要解决两个问题:①如何随机访问图像中任意像素。
②如何直接访问给定像素的邻接像素。
vincent和Soille提出的算法是基于“浸没”模型的,整个算法可以分解为两个步骤。
为了能够直接访问某一灰度值的像素,在第一步中包含一个初始排序的过程,将所有的像素按照它们的灰度值的升序进行排列。
在第二步中,通过在每个灰度级别上的宽度优先扫描可以快速的计算出所影响到的像素,这种特殊的扫描是通过像素队列来实现的,这是一个先进先出的数据结构。
许多形态学交换都可以通过应用先进先出队列来提高算法的效率.执行步骤如下;步骤1首先计算图像中各点的梯度,然后扫描整幅图像得到各梯度的概率密度。
各像素点在排序数组中的位置由梯度分布的累积概率与该像素点的梯度值计算得到。
计算出所有像素点的摊序位置并将其存入排序数组。
在排序后的数组中,梯度值越低的点存放的位置越靠前。
步骤2像素点按梯度值从低到高的顺序处理,相同梯度值的点作为一个梯度层级.步骤3处理一个梯度层级h。
当前层,首先将该层中所有邻域已被标识的点加入到一个先进先出队列中去。
步骤4若先进先出队列非空,则弹出队列的首元素作为当前处理像素。
顺序处理当前像素所有高度为hc。
的相邻点。
如果邻点已被标识,则根据该邻点标识刷新当前像素点的标识.如果邻点尚未标识,则将该邻点加入到基于分水岭算法的彩色细胞图像分割研究先进先出队列中去,循环执行本步直至队列空为止。
步骤5再一次扫描当前梯度层级的像素点,检查是否仍有未标识点。
此时的未标识点意味着一个新的极小区.因此,如果发现未标识点,则将当前区域标识值加l,并将该值赋为未标识点的标识值。
然后,从该点出发执行与步骤4相同的浸没步骤,标识该极小区的所有像素点.步骤6返回步骤5处理下一梯度层级,直至将所有梯度层级都处理完毕为止.上述算法中,每个像素点平均被扫描5遍(排序过程中两遍,浸没过程三遍),因此其执行时间为线性.在使用普通的串行计算时,上述算法比几个经典算法快几百倍吲,但对某些应用而言,其计算开销仍然过大.(三)分水岭快速分割算法2005年邓子建等在vincent和soille提出的“浸没”模式的算法基础上提出改进基于直观分水岭定义的图像分割算法。
l、基本描述快速算法与vineent-soille算法一样,也包括排序与浸没两部分。
两算法的区别在于浸没方式。
具体而言,在每一梯度层级(本文将梯度值相等的像素点称为一个梯度层级)内部,vineent-soille算法是使用一先进先出队列由内向外逐步扩展现有的集水盆地。
而快速算法的做法则是按各像素点间的空间关系顺序扫描各像素点(自左上至右下),并在扫描过程中确定每一点是属于现有的集水盆地还是属于新的集水盆地。
判断的基本依据是该点是否有已标识邻点,若有则判为与邻点属同一集水盆地,否则判为新的极小区并赋给一新的区域标识。
有两个问题:(1)怎样快速实现按空间位置顺序对各梯度层级中的像素点进行扫描?(2)这样顺序扫描判断的结果是否正确?第一个问题在vincent-mille算法的排序步骤中可以自然地得到解决。
vincent-soille算法的排序是一种地址排序算法。
在该算法中,像素点在排序数组中的位置由该点梯度以及所有参与排序点的梯度分布计算得到。
如果在计算各点排序位置时将各点的空间位置考虑进去,则可以使得排序数组中元素的排列满足一定的空间关系(梯度值相同的像素点,空间位置位于左上的点排在右下的点之前.实际上,在真正计算排序位置时各点坐标并不需要显式地参与计算。
我们只需按由上至下,从左至右的顺序依次计算图像中各点的排序位置,并将它们挨个存放至排序数组中就可以了.使用这种方法的排序计算量与vincent-soille算法的捧序计算量完全相同.新算法的空间顺序扫描通过依次处理捧序数组各元素即可实现。
特||序图像块捧序后的数组X Y梯废(1,3.6)(2,3.6)(3,3.6)(3,I.7)(2.2.7)(3。
2,7)《1.t.9)(2,I,9)(1。
2.9)对于第二个问题,存在三种可能的情况(如图3.4所示)。
第一种情况,待扫描点所属集水盆地位于待扫描点A的左上方.由于A被扫描之前A 与初始集水盆地之间的所有点都已被扫描并被正确标识,所以扫描至A点时,A的左邻点与上邻点亦己正确标识.自然地,A也将被正确标识.第二种情况。
待扫描点位于其所属集水盆地的左上方。