分水岭分割代码

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

I=imread('F:\orange.bmp'); %读取原图像

figure,subplot(121)%显示灰度图像
imshow(I)

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);%求模
subplot(122);imshow(gradmag,[]),%显示梯度
title('Gradient magnitude ()gradmag');


L=watershed(gradmag);%直接应用分水岭算法
Lrgb=label2rgb(L);%转化为彩色图像
figure,imshow(Lrgb);%显示分割后的图像
title('Watershed transform of gradient magnitude (Lrgb)');


se=strel('disk',2);%圆形结构元素
Io=imopen(I,se);%形态学开操作
figure,subplot(121);
imshow(Io);%显示执行开操作后的图像
title('Opening (Io)')
Ie=imerode(I,se);%对图像进行腐蚀
Iobr=imreconstruct(Ie,I);%形态学重建
subplot(122),imshow(Iobr);%显示重建后的图像
title('Opening-by-reconstruction (Iobr)')
Ioc=imclose(Io,se);%形态学操作
figure,subplot(121)
imshow(Ioc),%显示关操作后的图像
title('Opening-closeing (Ioc)')
Iobrd=imdilate(Iobr,se);%对图像进行膨胀
Iobrcbr=imreconstruct(imcomplement(Iobrd),...
imcomplement(Iobr));%形态学重建
Iobrcbr=imcomplement(Iobrcbr);%图像求反
subplot(122),imshow(Iobrcbr);%显示重建求反后图像
title('Opening-closing by reconstruction (Iobrcbr)')
fgm=imregionalmax(Iobrcbr);%局部最大值
figure;imshow(fgm);%显示重建后局部极大值图像
title('Regional maxima of opening-closing by reconstruction (fgm)')
I2=I;
I2(fgm)=255;%局部极大值处像素值设置为255
figure,imshow(I2),%在原图上显示极大值区域
title('Regional maxima superimposed on original image (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('Mosified regional maxima')
bw=im2bw(Iobrcbr,graythresh(Iobrcbr));%转化为二值图像
subplot(122);imshow(bw);%显示二值图像
title('Thresholded opening-closing by reconstruction');

相关文档
最新文档