实验三 图像分割

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

实验三图像分割

一、实验目的

1、掌握基于边缘的分割方法:检测图像点边缘,线边缘

2、掌握基于区域的分割方法:阈值分割技术、区域生长技术、分水岭分割方法

3、用MATLAB编写程序实现上述分割方法

二、实验内容

1、点、线和边缘检测

1)点检测方法为g=abs(imfilter(double(f),w))>=T,即将图像f 用8邻域拉普拉斯模板w 进行滤波,得到滤波图像g,将图像g中大于最高灰度值一半的图像显示出来,即得到检测的点。

2)线检测方法为g=abs(imfilter(double(f),w)),即将图像f分别用,水平、垂直、+45度,-45度模板检测。

3)边缘检测方法为使用edge函数,语法BW = edge(I,‘parameter’),即用edge函数,通过实验选择一种较好的算子检测图像边缘。

要求:给出djc.m,xjc.m,byjc.m三个完整程序,给出原始图像,检测后的图像,合理排列图像,给出合理的图像title。

2、阈值分割

语法:level = graythresh(I) ,自动阈值分割。

要求:给出yzfg.m完整程序,给出原始图像,分割后的图像,合理排列图像,给出合理的图像title。

3、区域生长技术

使用函数regionGrow(见附件1),实现图像分割。

要求:给出程序各行注释;给出原始图像,分割后的图像,合理排列图像,给出合理的图像title。

4、分水岭分割方法

使用附件2代码对图像进行分割。

要求:给出程序各行注释;给出原始图像,分割后的图像,合理排列图像,给出合理的图像title。

三、实验报告内容

1、4个源程序,2个程序注释;分别实现图像分割。

2、试验中涉及的相应的图像,具体见每一项实验的“要求”。打印图像(B5纸),附在试验报告之后。

function J = regionGrow(I)

if isinteger(I)

I=im2double(I);

end

figure,imshow(I),title('Ô-ʼͼÏñ')

[M,N]=size(I);

[y,x]=getpts;

x1=round(x);

y1=round(y);

seed=I(x1,y1);

J=zeros(M,N);

J(x1,y1)=1;

sum=seed;

suit=1;

count=1;

threshold=0.15;

while count>0

s=0;

count=0;

for i=1:M

for j=1:N

if J(i,j)==1

if (i-1)>0 & (i+1)<(M+1) & (j-1)>0 & (j+1)<(N+1)

for u= -1:1

for v= -1:1

if J(i+u,j+v)==0 & abs(I(i+u,j+v)-seed)<=threshold& 1/(1+1/15*abs(I(i+u,j+v)-seed))>0.8

J(i+u,j+v)=1;

count=count+1;

s=s+I(i+u,j+v);

end

end

end

end

end

end

end

suit=suit+count;

sum=sum+s;

seed=sum/suit;

end

f=imread('**.**'); imshow(f);

g=im2bw(f,graythresh(f)); figure,imshow(g);

gc=~g;

D=bwdist(gc);

L=watershed(~D);

w=L==0;

g2=g&~w;

figure,imshow(g2);

相关文档
最新文档