17.5 分水岭分割算法(3)
来源:百度文库 编辑:神马文学网 时间:2024/05/05 05:19:40
17.5 分水岭分割算法(3)
将图像Iobrcbr使用合适的阈值转化成二值图像,其中淡颜色的值为背景,转化成的二值图像如图17-25右边图像所示。
图17-25 调整后的局部极大值图像和二值图像进行分水岭变换并显示。
代码如下:
- D = bwdist(bw);%计算距离
- DL = watershed(D);%分水岭变换
- bgm = DL == 0;%求取分割边界
- figure; imshow(bgm), %显示分割后的边界
- title('Watershed ridge lines (bgm)')
- gradmag2 = imimposemin(gradmag, bgm | fgm4);%设置最小值
- L = watershed(gradmag2);%分水岭变换
- I4 = I;
- I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;%前景及边界处设置为255
- figure; subplot(121)
- imshow(I4)%突出前景及边界
- title('Markers and object boundaries')
- Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');%转化为伪彩色图像
- subplot(122); imshow(Lrgb) ;%显示伪彩色图像
- title('Colored watershed label matrix')
- figure; imshow(I),
- hold on
- himage = imshow(Lrgb); %在原图上显示伪彩色图像
- set(himage, 'AlphaData', 0.3);
- title('Lrgb superimposed transparently on original image')
从图17-25中可以看出,背景像素是黑色的,但是理想情况下,我们不希望背景标记太靠近目标对象的边缘,可以通过"骨骼化"进行细化,对二值图像的距离进行分水岭变换,然后寻找分水岭的界限,分水岭的界限如图17-26所示。
图17-26 分水岭界限
函数imimposemin可以用来对图像进行修改,使图像在一些特定的区域像素值最小。在本程序中,使用imimposemin函数修改梯度模值图像,使梯度模值图像在标记的前景对象和背景对象中有最小值,然后进行分水岭变换得到矩阵L。
还有一种可视化的技术是在原图像中分别标记前景对象、背景对象和边界。为了使分割的边界更清楚,可以对图像进行膨胀操作,如图17-27左边图像所示。
从图17-27左边图像中可以看出,对前景对象和背景对象标记后再进行分水岭变换比直接在梯度模值图像上进行分水岭变换的效果要好得多。
另外一种显示分割后图像的方法是使用彩色图像显示,使用label2rgb函数将分水岭变换后的图像显示为彩色,如图17-27右边图像所示。
(点击查看大图)图17-27 分割图像的显示
同样也可以在原来图像的基础上,使用透明技术将图像显示为伪彩色图像,如图17-28所示。
(点击查看大图)图17-28 分割图像的伪彩色显示 【责任编辑:云霞 TEL:(010)68476606
17.5 分水岭分割算法(3)
17.5 分水岭分割算法(1) -
17.5 分水岭分割算法(1 )
17.5 分水岭分割算法(2)
分水岭分割算法源代码
分水岭分割算法源代码 - 闹市茅庐 - CSDN博客
分水岭分割算法源代码 - 闹市茅庐 - CSDN博客
分水岭(FSL)
分水岭
根据特征点及梯度进行改进的矩不变阈值分割图像算法
基因算法(GA)
大学毕业后职业发展的3个分水岭
买卖分水岭
DES算法原理(资料)
DES算法原理(aa)
分割图案
分割线条
字符串分割
动态分割
深入java虚拟机第9章, 垃圾收集(3)火车算法
3D游戏寻路算法(A*)
各种排序算法的比较(转)
袁天罡称骨算法(转载)
决策树(decision tree)分类算法