实验2 图像分割

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

实验二、图像分割

一、实验目的

1、使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响;

2、使用MatLab 软件进行图像的分割;

3、能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能;

4、能够掌握分割条件(阈值等)的选择;

5、完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。

二、实验原理

1、边缘检测

(1)使用Roberts 算子的图像分割实验,调入并显示一幅图像*.gif或*.tif;使用Roberts 算子对图像进行边缘检测处理;Roberts 算子为一对模板,相应的矩阵为:

rh = [0 1;-1 0]; rv = [1 0;0 -1];

这里的rh 为水平Roberts 算子,rv为垂直Roberts 算子。可以显示处理后的水平边界和垂直边界检测结果;用“欧几里德距离”方式计算梯度的模,显示检测结果;对于检测结果进行二值化处理,并显示处理结果。

(2)使用Prewitt 算子的图像分割实验

使用Prewitt 算子进行内容(1)中的全部步骤。

(3)使用Sobel 算子的图像分割实验

使用Sobel 算子进行内容(1)中的全部步骤。

(4)使用Canny算子进行图像分割实验。

(5) 使用拉普拉斯算子进行图像分割实验。

2、灰度阀值分割

(1)单阈值分割图像

先将一幅彩色图像转换为灰度图像,显示其直方图,参考直方图中灰度的分布,尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止。

给图像加上零均值的高斯噪声(imnoise)重复上述过程,注意阈值的选择。

(2)多阈值分割图像

观察下列图像,对图1进行多阈值分割,使其分割结果如图2所示。注意阈值的选择。

图1 图2

三、实验步骤

1、打开计算机,启动MATLAB程序;

2、调入数字图像,并进行图像分割处理;

3、记录和整理实验报告。

四、实验仪器

1、计算机;

2、MATLAB等程序;

五、实验报告内容

1、叙述实验过程;

2、提交实验的原始图像和结果图像。

六、思考题

1 、评价Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边界检测的性能。

2、实验中所使用的四种算子所得到的边界有什么异同?

I=imread('blood1.BMP');

imshow(I);

BW1=edge(I,'roberts'); BW2=edge(I,'prewitt'); BW3=edge(I,'sobel'); BW4=edge(I,'log'); BW5=edge(I,'canny'); figure,imshow(BW1,[]); figure,imshow(BW2,[]); figure,imshow(BW3,[]); figure,imshow(BW4,[]); figure,imshow(BW5,[]);

I=imread('rice.bmp');

subplot(131);imshow(I); subplot(132);imhist(I);

T=110;

S=size(I);

[maxI,maxP]=max(I(:,:)) [minI,minP]=min(I(:,:))

for i=1:S(1)

for j=1:S(2)

if I(i,j)>=T I(i,j)=255;

else I(i,j)=0;

end

end

end

subplot(133);imshow(I);

clc;

I=imread('rice.bmp');

I=im2double(I);

figure,imshow(I),title('原图');

se=strel('disk',10);

ft=imtophat(I,se);

Th=graythresh(ft);

Th

G=im2bw(ft,Th);

figure,imshow(G),title('局部阈值');

A=imread('D:\blood.bmp');

a=A;

subplot(141);

imshow(a);

subplot(142);

imhist(a);

T=110;

s=size(a);

for i=1:s(1);

for j=1:s(2);

if a(i,j)>=T

a(i,j)=255;

else a(i,j)=0;

end

end

end

subplot(143);

imshow(a);

b=imnoise(A,'gaussian',0,0.002);

T1=100;

for i=1:s1(1);

for j=1:s1(2);

if b(i,j)>=T1

b(i,j)=255;

else b(i,j)=0;

end

end

end

subplot(144);

imshow(b);

相关文档
最新文档