1、14组实验六 实验6 图像分割实验6 图像分割实验目的:1. 熟悉区域生长法;2. 分水岭分割算法实验内容:1. 区域生长法利用图像像素间的相似性进行分割,调用regiongrow函数对图像weld.tif进行处理,注意参数中S(种子值),T(阈值)的选择对分割效果的影响。S=255,T65和S255 T150和S150,T65三组值进行处理,理解在区域生长法的原理。同时对liver.bmp,自己选择合适的S和T,以较好的分割出肝脏。参考书本P309例10.8答: f=imread(weld.tif); imshow(f) title(weld.tif); f1=regiongrow(f,25
2、5,65); figure,imshow(f1) title(S=255,T=65); f2=regiongrow(f,255,150); figure,imshow(f2) title(S=255,T=150); f3=regiongrow(f,150,65); figure,imshow(f3) title(S=150,T=65); f=imread(liver.bmp); imshow(f) title(liver.bmp); g, NR, SI, TI = regiongrow(f,175,20); figure,imshow(g) title(区域生长 S=175,T=20); gf
3、=imfill(g); figure,imshow(gf) title(孔洞填充); se=strel(disk,10); ge=imerode(gf,se); figure,imshow(ge) title(腐蚀); ir=imreconstruct(ge,gf); figure,imshow(ir) title(重构); se=strel(disk,2); d=imdilate(ir,se); figure,imshow(d); title(膨胀 分离出的肝脏);2. 利用分水岭分割算法对图像rice.tif进行分割,并对出现过分割现象提出解决方案。(可以尝试tophat等学过的算法对图像
4、进行预处理后再分割;使用不同的结构元素和参数;使用梯度分水岭算法与标记符控制算法等。比较得到最好的结果)。答: f=imread(rice.tif); imshow(f) title(rice.tif); g=im2bw(f,graythresh(f); gc=g; D=bwdist(gc); L=watershed(-D); w=L=0; g2= g & w; figure,imshow(g2) title(用距离和分水岭变换分割) f=imread(rice.tif); se=strel(disk,10); ft=imtophat(f,se); h=fspecial(sobel); fd=
5、double(ft); g=sqrt(imfilter(fd,h,replicate) .2+imfilter(fd,h,replicate) .2); L=watershed(g); wr =L=0; g2=imclose(imopen(g,ones(3,3),ones(3,3); L2 = watershed(g2); wr2 = L2=0; f2=ft; f2(wr2)=255; figure,imshow(f2) title(用梯度的分水岭分割)f=imread(rice.tif);se=strel(disk,10);ft=imtophat(f,se);h=fspecial(sobel
6、);fd=double(ft);g=sqrt(imfilter(fd,h,replicate) .2+imfilter(fd,h,replicate) .2);L=watershed(g);t=graythresh(ft);im = imextendedmin(ft,t*255);im=im;Lim=watershed(bwdist(im);em=Lim=0;g2=imimposemin(g,im|em);L2=watershed(g2);f2=ft;f2(L2=0)=255;figure,imshow(f2)title(控制标记符的分水岭分割) f=imread(rice.tif); se=
7、strel(disk,20); f=imtophat(fse); hy = fspecial(sobel); hx = hy; fy = imfilter(double(f), hy, replicate); fx = imfilter(double(f), hx, replicate); g = sqrt(fx.2 + fy.2); L = watershed(g); imshow(g,);title(梯度图); se = strel(disk, 2); fe = imerode(f, se); figure,imshow(fe,);title(腐蚀); ir = imreconstruct
8、(fe, f); figure,imshow(ir,);title(基于开操作的重建); fird = imdilate(ir, se); ir2 = imreconstruct(imcomplement(fird), imcomplement(ir); ir2c = imcomplement(ir2); figure,imshow(ir2c,);title(基于闭操作的重建); fgm = imregionalmax(ir2c); figure,imshow(fgm,);title(局部最大值); se2 = strel(ones(3,2); fgm2 = imclose(fgm, se2)
9、; fgm3 = imerode(fgm2, se2); fgm4 = bwareaopen(fgm3, 5);figure,imshow(fgm4,);title(像素个数大于5的局部最大值区域); bw = im2bw(ir2c, graythresh(ir2c); figure,imshow(bw,);title(重建图像的阈值化二值图); D = bwdist(bw); L = watershed(D); w = L = 0; figure,imshow(w);title(背景分水岭线); g2 = imimposemin(g, w | fgm4);figure,imshow(g2);
10、title(改写的梯度图); L2 = watershed(g2); figure,imshow(L2);title(改写的梯度图的分水岭结果); f(L2=0)=255;figure,imshow(f);title(改写的梯度图的分割结果);3. 计算图cancer02.bmp的链码等特性,仿照例子11.3答:f=imread(cancer02.bmp);h=fspecial(average,9);g=imfilter(f,h,replicate);g=im2bw(g,0.5);B=boundaries(g);%计算图像的边界d=cellfun(length,B);%最长边界max_d,k=
11、max(d);b=Bk;m n=size(g);g=bound2im(b,m,n,min(b(:,1),min(b(:,2);s,su=bsubsamp(b,50);%对边界二次取样c=fchcode(su);c.fccans = Columns 1 through 14 2 0 2 0 0 6 0 6 6 4 6 4 4 3 Column 15 24. 提高题:利用texture_spacial函数,计算下图所示编号1-7的区域,请从liver图大致按照示意图提起25*25的区域,分别计算该区域的灰度共生矩阵的最大概率、一致性和熵,分析不同区域各个特性的特点,思考一下如果要分割出1和4区域所
12、示的肝脏区域,应该选择那些特性,阈值为多少合适?答:f=double(imread(liver.bmp);imshow(uint8(f);y1,x1=getpts;%取点x1=uint16(x1);y1=uint16(y1);F1=imcrop(f,x1,y1,24,24);%获取区域disp(区域1特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F1)g=f;%将选的区域标定出来g(x1:x1+24,y1)=255;g(x1:x1+24,y1+24)=255;g(x1,y1:y1+24)=255;g(x1+24,y1:y1+24)=255;imshow(uint
13、8(g);y2,x2=getpts;x2=uint16(x2);y2=uint16(y2);F2=imcrop(g,x2,y2,24,24);disp(区域2特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F2)g=g;g(x2:x2+24,y2)=255;g(x2:x2+24,y2+24)=255;g(x2,y2:y2+24)=255;g(x2+24,y2:y2+24)=255;imshow(uint8(g);y3,x3=getpts;x3=uint16(x3);y3=uint16(y3);F3=imcrop(g,x3,y3,24,24);disp(区域3特性:
14、平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F3)g=g;g(x3:x3+24,y3)=255;g(x3:x3+24,y3+24)=255;g(x3,y3:y3+24)=255;g(x3+24,y3:y3+24)=255;imshow(uint8(g);y4,x4=getpts;x4=uint16(x4);y4=uint16(y4);F4=imcrop(g,x4,y4,24,24);disp(区域4特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F4)g=g;g(x4:x4+24,y4)=255;g(x4:x4+24,y4+24)=25
15、5;g(x4,y4:y4+24)=255;g(x4+24,y4:y4+24)=255;imshow(uint8(g);y5,x5=getpts;x5=uint16(x5);y5=uint16(y5);F5=imcrop(g,x5,y5,24,24);disp(区域5特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F5)g=g;g(x5:x5+24,y5)=255;g(x5:x5+24,y5+24)=255;g(x5,y5:y5+24)=255;g(x5+24,y5:y5+24)=255;imshow(uint8(g);y6,x6=getpts;x6=uint16(
16、x6);y6=uint16(y6);F6=imcrop(g,x6,y6,24,24);disp(区域6特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F6)g=g;g(x6:x6+24,y6)=255;g(x6:x6+24,y6+24)=255;g(x6,y6:y6+24)=255;g(x6+24,y6:y6+24)=255;imshow(uint8(g);y7,x7=getpts;x7=uint16(x7);y7=uint16(y7);F7=imcrop(g,x7,y7,24,24);disp(区域7特性:平均亮度、平均对比度、平滑度、三阶矩、一致性和熵);statxture(F7)g=g;g(x7:x7+24,y7)=255;g(x7:x7+24,y7+24)=255;g(x7,y7:y7+24)=255;g(x7+24,y7:y7+24)=255;imshow(uint8(g);实验总结: 通过本次实验,组员熟悉了区域生长法,分水岭分割算法,但实验比较难,问了同学和找了资料才能做出来。