14组实验六 实验6 图像分割Word格式.docx
《14组实验六 实验6 图像分割Word格式.docx》由会员分享,可在线阅读,更多相关《14组实验六 实验6 图像分割Word格式.docx(19页珍藏版)》请在冰点文库上搜索。
[g,NR,SI,TI]=regiongrow(f,175,20);
figure,imshow(g)
区域生长S=175,T=20'
gf=imfill(g);
figure,imshow(gf)
孔洞填充'
se=strel('
disk'
10);
ge=imerode(gf,se);
figure,imshow(ge)
腐蚀'
ir=imreconstruct(ge,gf);
figure,imshow(ir)
重构'
2);
d=imdilate(ir,se);
figure,imshow(d);
膨胀分离出的肝脏'
2.利用分水岭分割算法对图像rice.tif进行分割,并对出现过分割现象提出解决方案。
(可以尝试tophat等学过的算法对图像进行预处理后再分割;
使用不同的结构元素和参数;
使用梯度分水岭算法与标记符控制算法等。
比较得到最好的结果)。
rice.tif'
g=im2bw(f,graythresh(f));
gc=~g;
D=bwdist(gc);
L=watershed(-D);
w=L==0;
g2=g&
~w;
figure,imshow(g2)
用距离和分水岭变换分割'
)
ft=imtophat(f,se);
h=fspecial('
sobel'
fd=double(ft);
g=sqrt(imfilter(fd,h,'
replicate'
).^2+imfilter(fd,h'
'
).^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;
用梯度的分水岭分割'
f=imread('
se=strel('
ft=imtophat(f,se);
h=fspecial('
fd=double(ft);
g=sqrt(imfilter(fd,h,'
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('
控制标记符的分水岭分割'
20);
f=imtophat(fse);
hy=fspecial('
hx=hy'
;
fy=imfilter(double(f),hy,'
fx=imfilter(double(f),hx,'
g=sqrt(fx.^2+fy.^2);
L=watershed(g);
imshow(g,[]);
梯度图'
se=strel('
2);
fe=imerode(f,se);
figure,imshow(fe,[]);
ir=imreconstruct(fe,f);
figure,imshow(ir,[]);
基于开操作的重建'
fird=imdilate(ir,se);
ir2=imreconstruct(imcomplement(fird),imcomplement(ir));
ir2c=imcomplement(ir2);
figure,imshow(ir2c,[]);
基于闭操作的重建'
fgm=imregionalmax(ir2c);
figure,imshow(fgm,[]);
局部最大值'
se2=strel(ones(3,2));
fgm2=imclose(fgm,se2);
fgm3=imerode(fgm2,se2);
fgm4=bwareaopen(fgm3,5);
figure,imshow(fgm4,[]);
像素个数大于5的局部最大值区域'
bw=im2bw(ir2c,graythresh(ir2c));
figure,imshow(bw,[]);
重建图像的阈值化二值图'
D=bwdist(bw);
L=watershed(D);
w=L==0;
figure,imshow(w);
背景分水岭线'
g2=imimposemin(g,w|fgm4);
figure,imshow(g2);
改写的梯度图'
figure,imshow(L2);
改写的梯度图的分水岭结果'
f(L2==0)=255;
figure,imshow(f);
改写的梯度图的分割结果'
3.计算图cancer02.bmp的链码等特性,仿照例子11.3
cancer02.bmp'
average'
9);
g=imfilter(f,h,'
g=im2bw(g,0.5);
B=boundaries(g);
%计算图像的边界
d=cellfun('
length'
B);
%最长边界
[max_d,k]=max(d);
b=B{k};
[mn]=size(g);
g=bound2im(b,m,n,min(b(:
1)),min(b(:
2)));
[s,su]=bsubsamp(b,50);
%对边界二次取样
c=fchcode(su);
c.fcc
ans=
Columns1through14
20200606646443
Column15
2
4.提高题:
利用texture_spacial函数,计算下图所示编号1-7的区域,请从liver图大致按照示意图提起25*25的区域,分别计算该区域的灰度共生矩阵的最大概率、一致性和熵,分析不同区域各个特性的特点,思考一下如果要分割出1和4区域所示的肝脏区域,应该选择那些特性,阈值为多少合适?
f=double(imread('
));
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;
x1+24,y1+24)=255;
g(x1,y1:
y1+24)=255;
g(x1+24,y1:
imshow(uint8(g));
[y2,x2]=getpts;
x2=uint16(x2);
y2=uint16(y2);
F2=imcrop(g,[x2,y2,24,24]);
区域2特性:
statxture(F2)
g=g;
g(x2:
x2+24,y2)=255;
x2+24,y2+24)=255;
g(x2,y2:
y2+24)=255;
g(x2+24,y2:
[y3,x3]=getpts;
x3=uint16(x3);
y3=uint16(y3);
F3=imcrop(g,[x3,y3,24,24]);
区域3特性:
statxture(F3)
g(x3:
x3+24,y3)=255;
x3+24,y3+24)=255;
g(x3,y3:
y3+24)=255;
g(x3+24,y3:
[y4,x4]=getpts;
x4=uint16(x4);
y4=uint16(y4);
F4=imcrop(g,[x4,y4,24,24]);
区域4特性:
statxture(F4)
g(x4:
x4+24,y4)=255;
x4+24,y4+24)=255;
g(x4,y4:
y4+24)=255;
g(x4+24,y4:
[y5,x5]=getpts;
x5=uint16(x5);
y5=uint16(y5);
F5=imcrop(g,[x5,y5,24,24]);
区域5特性:
statxture(F5)
g(x5:
x5+24,y5)=255;
x5+24,y5+24)=255;
g(x5,y5:
y5+24)=255;
g(x5+24,y5:
[y6,x6]=getpts;
x6=uint16(x6);
y6=uint16(y6);
F6=imcrop(g,[x6,y6,24,24]);
区域6特性:
statxture(F6)
g(x6:
x6+24,y6)=255;
x6+24,y6+24)=255;
g(x6,y6:
y6+24)=255;
g(x6+24,y6:
[y7,x7]=getpts;
x7=uint16(x7);
y7=uint16(y7);
F7=imcrop(g,[x7,y7,24,24]);
区域7特性:
statxture(F7)
g(x7:
x7+24,y7)=255;
x7+24,y7+24)=255;
g(x7,y7:
y7+24)=255;
g(x7+24,y7:
实验总结:
通过本次实验,组员熟悉了区域生长法,分水岭分割算法,但实验比较难,问了同学和找了资料才能做出来。