【图像分割】图像处理教程系列之图像分割(二)【Matlab 076期】

一、简介

1.使用距离变换的分水岭分割

(1)距离变换

D = bwdist(BW);

二值图像的距离变换是指从每个像素到最接近零值的像素的距离。

(2)测地距离变换

D = bwdistgeodesic(BW,mask);

2.使用梯度的分水岭分割

获取梯度图像:

h = fspecial(‘sobel’);

fd = tofloat(f);

g = sqrt(imfilter(fd, h, ‘replicate’) .^ 2 + …

imfilter(fd, h’, ‘replicate’) .^ 2);

在使用针对分割的分水岭变换之前,常常使用梯度幅度对图像进行预处理。梯度幅度图像沿着物体的边缘有较高的像素值,而在其他地方则有较低的像素值。在理想的情况下,分水岭变换可得到沿物体边缘的分水岭脊线。若梯度图像直接进行分水岭变换可能会严重过分割,所以在计算分水岭变换之前可以先平滑梯度图像。

3.控制标记符的分水岭分割

(1)计算局部极小值区域

rm = imregionalmin(f);

其中,f 是灰度图像,rm 是二值图像,rm 的前景像素标记出局部小区域的位置。

(2)扩展极小值

im = imextendedmin(f,h);

其中,f 是灰度图像,h 是高度阈值,im 是一幅二值图像,im 的前景像素标记了深的局部小区域的位置。

(3)强制最小

mp = imimposemin(f, mask);

其中,f 是灰度图像,mask 是二值图像,mask 的前景像素标记了输出图像 mp 中局部最小区域的期望位置。通过在内部和外部标记符的位置覆盖局部最小区域,可以改进梯度图像,用于控制过分割的一种方法是基于标记符的概念。标记符是属于一幅图像的连通分量。我们希望有一个内部标记符集合,它们处在每个感兴趣物体的内部,而外部标记符集合包含在背景中。标记符的选择范围可以从简单过程到更复杂的方法,涉及尺寸、形状、位置、相对距离、纹理内容等等。指针是携带对分割有影响的先验知识的标记符。人们常常使用先验知识在每天的视觉中帮助解决分割和高级任务。最为熟悉的便是使用文本。因此,分水岭分割提供可以有效利用这些类型的知识的框架这一事实,是这一方法的突出优点。

二、源代码

%基于控制标记符的分水岭分割
[file,filepath]=uigetfile('*');
file=fullfile(filepath,file);
img=imread(file);%读图
imgsize=size(img);
if(numel(imgsize)>2)
i=rgb2gray(img);
else
i=img;
end;
imshow(i);title('灰度图');
pause;
%取阈值
[T,SM]=graythresh(i);
bw=im2bw(i,T);
imshow(bw);title('二值');
pause;
% % %%%%%%%%%%%%%%%%%%%%%%%%%%基于距离变换的分水岭分割%%%%%%%%%%%%%%%%%%%%%%
gc = ~bw;
% imshow(gc);
% pause;
D = bwdist(gc);
% figure,contour(-D,40);
imshow(-D,[]);title('距离变换图');
pause;


rm = imregionalmin(-D);%查看局部极小值区域
imshow(rm);title('查看局部极小值区域');
pause;


im = imextendedmin(-D,2);%扩展最小值
% figure,contour(im,40);
fim=i;
fim(im) = -255;
imshow(fim);title('合并后的局部极小值');%查看合并后的局部极小值
pause;


Lim = watershed(bwdist(im));
imshow(Lim,[]);title('基于距离变换的流域分割');
pause;
em = Lim == 0;
res=em|im;
imshow(res);%查看掩膜图像
title('掩膜图像');
pause;



g2 = imimposemin(i, im | em);
imshow(g2);
title('强制最小');
pause;


L2 = watershed(g2);
f2 = img;
f2(L2 == 0) = 255;
imshow(f2);
title('基于控制标记符的分水岭分割');

三、运行结果

【图像分割】图像处理教程系列之图像分割(二)【Matlab 076期】_第1张图片

四、备注

完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【图像压缩】图像处理教程系列之图像压缩【Matlab 074期】
【图像分割】图像处理教程系列之图像分割(一)【Matlab 075期】

你可能感兴趣的:(matlab,图像处理)