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'); % 设置图像标题