www.gusucode.com > 《matlab图像处理与界面编程宝典》秦襄培 编著,每章的MATLAB源代码程序 > 第23章/代码23-5.txt

    
f=imread('peppers.png');                                   % 读入图像
bw=im2bw(f,graythresh(f));                                 % 转换为黑白二值图像
bwc=~bw;                                                % 图像反色
dst=bwdist(bwc);                                          % 图像距离
ws=watershed(-dst);
w=ws==0;
rf=bw&~w;
figure,imshow(f);                                        % 显示原始图像
title('Original Image');                                    % 设置图像标题
figure,imshow(bw);                                      % 显示处理后的图像
title('Negative Image');                                   % 设置图像标题
figure,imshow(ws);                                       % 显示处理后的图像
title('Watershed - Distance Transform');                     % 设置图像标题
figure,imshow(rf);                                        % 显示处理后的图像
title('Superimposed - Watershed and original image');         % 设置图像标题
h=fspecial('sobel');                                       % 设置滤波器 
fd=im2double(f);                                         % 数据类型转换
sq=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);  % 分水岭距离变换
sqoc=imclose(imopen(sq,ones(3,3)),ones(3,3));               % 图像闭合运算
wsd=watershed(sqoc);                               
wg=wsd==0;
rfg=f;
rfg(wg)=255;
figure,imshow(wsd);                                        % 显示处理后的图像
title('Watershed - Gradient');                                 % 设置图像标题
figure,imshow(rf);                                           % 显示处理后的图像
title('Superimposed - Watershed and original image');           % 设置图像标题
im=imextendedmin(f,20);
Lim=watershed(bwdist(im));
figure,imshow(Lim);                                        % 显示处理后的图像
title('Watershed - Marker Controlled');                         % 设置图像标题
em=Lim==0;
rfmin=imimposemin(sq,im|em);
wsdmin=watershed(rfmin);
figure,imshow(rfmin);                                      % 显示处理后的图像
title('Watershed - Gradient and Marker Controlled');            % 设置图像标题
rfgm=f;
rfgm(wsdmin==0)=255;
figure,imshow(rfgm);                                       % 显示处理后的图像
title('Superimposed - Watershed (GM) and original image'); % 设置图像标题