解决分水岭算法的过分割问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决分水岭算法的过分割问题
班级:020751
学号:02075087
姓名:刘恺
摘要针对基于分水岭变换的分割算法通常存在过分割现象,提出了一种新的分割算法,采用形态学的运算去除噪声及背景像素的影响,搜索区域极大值点,将分割定位于目标图像,从而达到很好的分割效果,方法从消除过分割及区域轮廓定位等方面均具有很好的分割效果。

关检词图像分割,分水岭变换,数学形态学
Abstract The article is based on watershed algorithm, proposed a method of image segmentation, adopted the morphology arithmetic to eliminate the effect of noise and background pixel, search for the max point in each area, let segmentation orientate as target image, could reach very good segment effect. The method can efficiently eliminate over-segmentation, and hold the position of region contours without evident bias.
Key words image segmentation, watershed transform ,mathematical morphology
1.1图像分割综述
把图像分解为一些特定的性质相似的部分(区域或对象),并用这些部分对图像进行分析和描述。

一幅图像往往包含许多不同类型的区域,如物体、环境和背景等。

图像分析的一个重要方法就是用它们作为基本组成成分对图像进行描述。

例如为了在气泡室图片中检出质点碰撞形式并判定其发生位置,就要在图像中分割出气泡的轨迹及其端点。

为了从输入的文本中识别出一串字符,首先就要把各个字符从背景和其他字符中分离出来。

因此把图像分割为若干子图像,并利用各子图像的特性和它们之间的关系描述图像,对于图像识别和解释、物景分析以及图像的分块处理和存储都有很大的意义。

图像分割基本上是对像素进行分类的过程。

例如用某个灰度阈值把图像像素分成“黑”和“白”两类,就可以把黑的对象同白的背景区分开。

常用的分割方法有灰度等级阈值法、谱和空间分类法、区域生长法和边缘检测法。

灰度等级阈值法在图像只有两种组成部分的情况下,图像灰度的直方图常常呈现两个峰值。

用两个峰值之间的谷值所对应的灰度作为阈值,把所有像素灰度大于或等于阈值的作为一类,小于阈值的作为另一类是一种最基本的两类分割方法。

实际应用时为了改善分类的可靠性,可以利用某些附加的信息(例如已知两类区域的面积之比)使阈值的选择更加合理。

在类别更多的情况下,可以采用多级阈值把各类分割开来(例如确定两个阈值,就可以把细胞图像分割为胞核、胞浆和背景三部分)。

类别越多,图像直方图的峰值就越不明显,分割就更为困难。

谱和空间分类法对于彩色和多光谱图像,可以用像素的几种性质(颜色和谱信号)对像素作比较精细的分类。

对于黑白图像,用包括像素本身灰度在内的一组局部性质(例如该像素邻域灰级的均值)在多维空间中进行分类。

对于一些复杂图像,这种方法比单独的灰度阈值法效果更好。

区域生长法 这是一种从图像中提取区域或实体的序贯分割法。

根据灰度、纹理的均匀性、同背景的对比度以及区域、形状、尺寸等准则,把性质大致相同的邻近像素组合在一起以形成分割区域。

边缘检测法 用于获取图像内物体轮廓的分割方法。

一般采用曲线拟合、轮廓跟踪或边缘点连接等技术求出物体的边界。

此外,若对像素的类别给以某种概率度量或隶属度,则可以对像素反复进行分类,这就成为松弛迭代分割算法。

这种算法有较好的效果,在图像分析中已得到广泛应用。

1.2分水岭算法
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。

分水岭的概念和形成可以通过模拟浸入过程来说明。

在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。

对于分水岭变换,目前存在着几种定义,我们这里所采用的定义是基于沉浸的离散图像的分水岭变换(watershed by immersion )。

令f :D 是一幅灰度图像,它的最大和最小灰度值为h_max 和h_min 。

定义一个从h_min 到h_max 的水位h 不断递增的递归过程。

在这个过程中每个与不同的局部最小相关的汇水盆地都不断扩展,定义X(h)记作在水位h 时候汇水盆地的集合的并。

在h+1层,一个连通分量T (h+1)或者是一个新的局部最小,或者是一个已经存在的X(h)中的一个盆地的扩展。

对于后者,按邻接关系计算高度为h+1的每一个点与各汇水盆地的距离。

如果一个点与两个以上的盆地等距离,则它不属于任何盆地,否则它属于与它距离最近的盆地。

这样从而产生新的X(h+1)。

把在高度h 出现的局部最小记作MIN (h )。

把Y (h+1,X(h))记作高度为h+1同时属于X(h)的点的集合。

(_min){|()_min}(_min)(1)(1)()(1,())X h p D f p h T h X h MIN h X h Y h X h =∈==⎧⎨+=+⋃⋃+⎩
分水岭变换Watershed(f)就是X(h_max)的补集:
()\(_max)Watershed f D h =
分水岭变换由于它以下优点被用在图像处理的许多领域:直观,快速并且可以并行计算,总是产生完整的边界,这样就避免了边界连接的后处理。

而且不少研究人员把分水岭嵌入到多尺度框架中。

然而,分水岭算法还是有一些致命的缺点,下面列出了最重要的几点。

过度分割。

由于大部分图像的梯度图都有许许多多的局部最小,所以分水岭变换的结果是无数的小区域边界,这样的结果毫无意义。

通常的解决办法是使用标记的图片来减少局部最小的数量,即使用带标记的分水岭变换。

对噪声的敏感。

局部的一些改变会引起分割结果的明显改变,强烈的噪声有时候使得分水岭变换无法找出真正的边界。

其中的一个解决办法是使用各项异性的滤波器。

难以准确检测出低对比度的边界。

由于对比度低所以使得信噪比高。

所以由
于前一个原因,对这种图片分水岭变换仍然无法很好的工作。

1.3解决过分割问题的方法
针对分水岭算法的过分割问题,已经提出了许多有效的解决方法。

利用门限的分水岭算法。

当两个汇水盆地即将连通时,首先判断,只有储水量和高度达到一定的阈值才判定为边界,否则把他们融合给与其相邻的最大的盆地。

基于区域合并和分水岭的图像分割方法。

根据定义的相似区域合并算法,对分割结果进行处理,合并相似区域来减小过分割。

基于模糊C均值聚类和分水岭的图像分割方法。

对分割结果利用模糊C均值聚类的方法进行相似小区域的合并,改善分割结果。

1.4本文提出的方法
在图像中对前景对象和背景对象进行标注区别,再应用分水岭算法会取得较好的分割效果。

其中过程用到了许多matlab图像处理工具箱的函数,例如fspecial、imfilter、watershed、label2rgb、imopen、imclose、imreconstruct、imcomplement、imregionalmax、bwareaopen、graythresh和imimposemin函数等。

具体标注过程为:首先对原图像进行形态学开操作或腐蚀后形态学重建,去除图片中的毛刺和小物体;接下来进行形态学关操作或膨胀后形态学重建,目的是填洞补沟,合并小的物体;关操作,然后腐蚀来收缩边缘,计算局部最大值就能得到较好的前景标记;去噪后选取合适的阈值转化为二值图像;为了不是背景标记太靠近目标对象边缘,通过“骨骼化”进行细化,对二值图像的距离进行分水岭变换,进而的到最终结果。

2.流程图
3.实验结果及分析
可以直观看到,直接对梯度图像运用分水岭算法结果并不理想,过分割现象严重
使用形态学重建技术对前景对象进行标记,标记的每个对象内部的像素值是连接在一起的。

左图是用半径为20的圆形结构元素进行开操作。

右图先对图像进
行腐蚀然后形态学重建。

比较两幅图像Iobrcbr和Ioc,以重建为基础的开关操作(结果为Iobrcbr)比一般的开关操作(结果为Ioc)在去除小的污点时会更有效,并且不会影响这个图像的轮廓。

在原来图像的基础上,显示局部极大值,对前景图像进行标记。

少部分前景目标物体已经扩展到边缘,因此应该收缩一下边缘,可以先对图像进行关操作,
然后再进行腐蚀来达到这样的效果。

然后去除孤立像素点。

对二值图像的距离进行分水岭变换,然后得到分水岭的界限
在原图像中分别标记前景对象、背景对象和边界。

为了使分割的边界更清楚,可以对图像进行膨胀操作。

可以看出,效果好了很多,基本反映出物体的边界信息。

4.算法综述
本算法较好的解决了分水岭算法的过分割问题,使得分割边界能够大致反映物体的边界信息,并且程序较为简单,处理速度较快,实时性好。

但对于边界过于复杂的图像,比如SAR图像,并不能很好的解决过分割问题,这也是本算法需要改进的一个方面。

5.应用前景
在高速高精度帧片机视觉检测中的应用。

分水岭算法贴片机图像分割随着表面贴装技术的迅速发展,贴片机在我国电子组装行业中的应用越来越广泛。

它是机-电-光以及微型计算机控制技术的综合体,通过吸取-位移-定位-放置等功能,实现了将表面贴装元件快速而准确地贴装到PCB板指定的焊盘位置。

其中贴片机视觉检测的任务是完成帖装元件的中心定位、质量检测以及贴装校正等。

而实现正确的视觉定位与检测的前提是保证图像的正确分割,即将贴装元件准确地从图像的背景中分割出来。

在DSA图像伪彩色处理的应用。

通过基于区域分割的DSA图像伪彩色处理系统,对心脏冠状动脉DSA图像进行处理,对比分析处理前后的图像质量,评价基于区域分割的DSA图像伪彩色处理系统在临床的应用价值。

方法采用分水岭算法进行DSA血管图像区域分割,应用彩虹码做为伪彩色编码,以VB和Matlab
做为开发平台,设计和开发DSA血管图像伪彩色处理系统,能有效提高心脏冠状动脉DSA图像质量,且减少对比剂用量和曝光次数。

在人体手背静脉血管图像增强与特征匹配的应用。

为提高手背静脉血管图像识别的准确性和改善图像采集的灵活性,提出了一种新的手背静脉图像识别算法.使用自适应直方图均衡法增强背景和静脉纹理图像的总体对比度和局部细节,使用分水岭算法得到静脉纹理图像的单像素级图像,最后采用纹理相似性原理进行特征匹配和识别.试验结果证明,该算法在图像采集位置灵活变动情况下的错误接受率为0%,错误拒绝率4.6%,利用此算法进行手背静脉血管图像识别是可行的,具有良好的应用前景。

在焊接图像中的应用。

针对焊接缺陷X射线检测方法的现状和目前存在的主要问题,提出了一种改进的分水岭算法.从图像的结构信息考虑,由于噪声产生的谷底值是很小的,而对应于真正的区域,每个区域的最小谷底会有一个很大的动态值,这个值与没有噪声时的谷底动态值相近.因此,只要简单地给一个阈值,通过动态合并准则进行边分割边合并就可以将那些由噪声产生的谷底滤掉,从而也就抑制了过分割问题.结果表明,该方法能够快速、准确地得到焊接图像的分割结果.
在MRI海马图像分割中的应用。

传统的分水岭算法虽然灵活性强,但在分割过程中较少用到边界特征的信息,使得图像的过分割问题比较突出.提出利用能量驱动的分水岭算法来实现人脑MRI中的海马分割.利用分水岭算法模型计算水流从种子点出发,沿代价最小的路径流经每一个像素的代价,将该像素的代价作为像素的能量.在整个图像能量最小化驱动下修改初始分水线处像素的归属类别,使分割结果与目标物体轮廓重合.该算法将内部特征与边缘条件相结合,可以很好地限制分水岭算法过分割的问题.多套MRI海马的分割结果表明,该算法可应用于海马等复杂结构的分割.
6.实验程序
%******************************************************** %直接对梯度图像进行分水岭变换
rgb = imread('1.png');%读取原图像
I = rgb2gray(rgb);%转化为灰度图像
imshow(I),title('原始灰度图像')
hy = fspecial('sobel');%sobel算子
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');%滤波求y方向边缘Ix = imfilter(double(I), hx, 'replicate');%滤波求x方向边缘gradmag = sqrt(Ix.^2 + Iy.^2);%求模
L = watershed(gradmag);%直接应用分水岭算法
Ig=L==0;
figure; imshow(Ig), %显示分割后的图像边界
title('梯度图像的分水岭变换边界(Ig)')
%******************************************************** %通过对图像进行一系列预处理,解决过分割问题
se = strel('disk', 20);%圆形结构元素
Io = imopen(I, se);%形态学开操作
figure; subplot(121)
imshow(Io), %显示执行开操作后的图像
title('开操作(Io)')
Ie = imerode(I, se);%对图像进行腐蚀
Iobr = imreconstruct(Ie, I);%形态学重建
subplot(122); imshow(Iobr), %显示重建后的图像
title('腐蚀后形态学重建(Iobr)')
Ioc = imclose(Io, se);%形态学关操作
figure; subplot(121)
imshow(Ioc), %显示关操作后的图像
title('关操作(Ioc)')
Iobrd = imdilate(Iobr, se);%对图像进行膨胀
Iobrcbr = imreconstruct(imcomplement(Iobrd), ...
imcomplement(Iobr));%形态学重建
Iobrcbr = imcomplement(Iobrcbr);%图像求反
subplot(122); imshow(Iobrcbr), %显示重建求反后的图像
title('膨胀后形态学重建求反(Iobrcbr)')
fgm = imregionalmax(Iobrcbr);%局部极大值
figure; imshow(fgm), %显示重建后局部极大值图像
title('重建后局部极大值图像(fgm)')
I2 = I;
I2(fgm) = 255;%局部极大值处像素值设置为255
figure; imshow(I2), %在原图上显示极大值区域
title('图上显示极大值区域(I2)')
se2 = strel(ones(5,5));%结构元素
fgm2 = imclose(fgm, se2);%关操作
fgm3 = imerode(fgm2, se2);%腐蚀
fgm4 = bwareaopen(fgm3, 20);%开操作
I3 = I;
I3(fgm4) = 255;%前景处设置为255
figure; subplot(121)
imshow(I3)%显示修改后的极大值区域
title('修改后的极大值区域(I3)')
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%转化为二值图像
subplot(122); imshow(bw), %显示二值图像
title('二值图像(bw)')
D = bwdist(bw);%计算距离
DL = watershed(D);%分水岭变换
bgm = DL == 0;%求取分割边界
figure; imshow(bgm), %显示分割后的边界
title('分水岭边界(bgm)')
gradmag2 = imimposemin(gradmag, bgm | fgm4);%设置最小值
L = watershed(gradmag2);%分水岭变换
I4 = I;
I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;%前景及边界处设置为255
figure;imshow(I4)%突出前景及边界
title('前景和背景边界')。

相关文档
最新文档