实验六 图像分割.docx
- 文档编号:4804823
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:13
- 大小:83.54KB
实验六 图像分割.docx
《实验六 图像分割.docx》由会员分享,可在线阅读,更多相关《实验六 图像分割.docx(13页珍藏版)》请在冰豆网上搜索。
实验六图像分割
信息工程学院实验报告
成绩:
指导老师(签名):
课程名称:
数字图像处理
实验项目名称:
实验六图像分割实验时间:
2016.12.16
班级:
姓名:
学号:
一、实验目的
1.使用MatLab软件进行图像的分割。
使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。
2.要求学生能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。
能够掌握分割条件(阈值等)的选择。
完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。
二、实验内容与步骤
1.边缘检测
(1)使用Roberts算子的图像分割实验
调入并显示图像room.tif图像;使用Roberts算子对图像进行边缘检测处理;Roberts算子为一对模板:
-1
0
0
-1
0
1
1
0
(a)450方向模板(b)1350方向模板
图1matlab2010的Roberts算子模板
相应的矩阵为:
rh=[01;-10];rv=[10;0-1];这里的rh为45度Roberts算子,rv为135度Roberts算子。
分别显示处理后的45度方向和135方向的边界检测结果;用“欧几里德距离”和“街区距离”方式计算梯度的模,并显示检测结果;对于检测结果进行二值化处理,并显示处理结果。
提示:
先做检测结果的直方图,参考直方图中灰度的分布尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止。
(2)使用Prewitt算子的图像分割实验
-1
-1
-1
-1
0
1
0
0
0
-1
0
1
1
1
1
-1
0
1
(a)水平模型(b)垂直模板
图2.Prewitt算子模板
使用Prewitt算子进行内容
(1)中的全部步骤。
(3)使用Sobel算子的图像分割实验
使用Sobel算子进行内容
(1)中的全部步骤。
-1
-2
-1
-1
0
1
0
0
0
-2
0
2
1
2
1
-1
0
1
(a)水平模型(b)垂直模板
图3.Sobel算子模板
(4)使用LoG(拉普拉斯-高斯)算子的图像分割实验
使用LoG(拉普拉斯-高斯)算子进行内容
(1)中的全部步骤。
提示1:
处理后可以直接显示处理结果,无须另外计算梯度的模。
提示2:
注意调节噪声的强度以及LoG(拉普拉斯-高斯)算子的参数,观察处理结果。
(5)打印全部结果并进行讨论。
下面是使用sobel算子对图像进行分割的MATLAB程序
f=imread('room.tif');
[gv,t1]=edge(f,'sobel','vertical');%使用edge函数对图像f提取垂直边缘
imshow(gv)
[gb,t2]=edge(f,'sobel','horizontal');%使用edge函数对图像f提取水平边缘
figure,imshow(gb)
w45=[-2-10;-101;012];%指定模版使用imfilter计算45度方向的边缘
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));%设定阈值
g45=g45>=T;%进行阈值处理
figure,imshow(g45);
在函数中使用'prewitt'和'roberts'的过程,类似于使用sobel边缘检测器的过程。
三、实验结果及结果分析
1.边缘检测
(1)使用Roberts算子的图像分割实验
实验结果:
图4.Roberts算子的图像分割
实验结果分析:
Roberts算子利用局部差分算子寻找边缘,边缘定位精度比较高,但容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备抑制噪声能力。
该算子对具有陡峭边缘且噪声少的图像效果较好。
(2)使用Prewitt算子的图像分割实验
实验结果:
图5.Prewitt算子的图像分割
实验结果分析:
Prewitt算子先对图像做加权平滑处理,然后再做微分运算,所不同的是平滑部分的权值有些差异,因此它们对噪声有一定的抑制能力。
(3)使用Sobel算子的图像分割实验
实验结果:
图6.Sobel算子的图像分割
实验结果分析:
Sobel算子和Prewitt算子一样,都是先对图像做加权平滑处理,然后再做微分运算,因此它们对噪声有一定的抑制能力。
比较实验结果可以发现,Sobel算子比Prewitt算子在噪声抑制方面略胜一筹,但不能排除检测结果中出现的虚假边缘。
虽然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素的宽度。
(4)使用LoG(拉普拉斯-高斯)算子的图像分割实验
实验结果:
图7.LoG(拉普拉斯-高斯)算子的图像分割
实验结果分析:
拉普拉斯算子,它是无方向的二阶微分算子,对图像中的阶跃型边缘定位准确,该算子对噪声非常敏感,它使噪声成分得到加强。
这两个特性使得该算子容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘。
LoG算子,该算子克服了拉普拉斯算子抗噪声性能比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘平滑掉了。
(5)打印全部结果并进行讨论。
使用sobel、prewitt和roberts算子对图像进行分割实验。
图8.全部结果
四、实验中遇到问题及解决方法
1.评价一下Roberts算子、Prewitt算子、Sobel算子对于噪声条件下边界检测的性能。
答:
Roberts算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。
检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感。
Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。
对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。
当对精度要求不是很高时,是一种较为常用的边缘检测方法。
Prewitt算子利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘。
对噪声具有平滑作用,定位精度不够高。
2.实验中所使用的四种算子所得到的边界有什么异同?
答:
算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位。
Roberts算子:
边缘定位准,但是对噪声敏感。
适用于边缘明显且噪声较少的图像分割。
Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。
经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。
Prewitt算子:
对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。
Sobel算子:
Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。
一般来说,距离越远,产生的影响越小。
IsotropicSobel算子:
加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。
Laplacian算子:
这是二阶微分算子。
其具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。
但是,其对噪声比较敏感,所以,图像一般先经过平滑处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。
Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Laplacian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:
(1)利用它的零交叉性质进行边缘定位;
(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(LaplacianofaGaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。
所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起的逐渐增加的噪声影响。
五、实验心得体会
通过这个实验,我熟练学会了利用MatLab软件进行图像的分割。
在通过实验体会到了一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。
在评价各主要算子在无噪声条件下和噪声条件下的分割性能下,掌握分割条件(阈值等)的选择。
完成规定图像的处理并评价处理结果。
六、源程序清单
%%
%1.使用Roberts算子的图像分割实验
I=imread('room.tif');
rh=[-10;01];
rv=[0-1;10];
g45=imfilter(double(I),rh,'replicate');
g135=imfilter(double(I),rv,'replicate');
subplot(3,2,1);
imshow(g45,[]);
title('g45');
subplot(322);
imshow(g135,[]);
title('g135');
%计算梯度模
%
(1)欧几里得距离计算梯度模
OD=sqrt(g45.^2+g135.^2);
subplot(323);
imshow(OD,[]);
title('
(1)欧几里得距离计算梯度模');
T=0.1*max(OD(:
));
BWOD=OD>T;
subplot(324);
imshow(BWOD);
title('
(1)欧几里得距离计算梯度模二值化');
%
(2)街区距离计算梯度摸
JD=abs(g45)+abs(g135);
subplot(325);
imshow(JD,[]);
title('
(2)街区距离计算梯度模');
T=0.1*max(JD(:
));
BWOD=OD>T;
subplot(326);
imshow(BWOD);
title('
(2)街区距离计算梯度模二值化');
%%
%2.使用Prewitt算子的图像分割实验
I=imread('room.tif');
rh=[-1-1-1;000;111];
rv=[-101;-101;-101];
g45=imfilter(double(I),rh,'replicate');
g135=imfilter(double(I),rv,'replicate');
subplot(3,2,1);
imshow(g45,[]);
title('g45');
subplot(322);
imshow(g135,[]);
title('g135');
%计算梯度模
%
(1)欧几里得距离计算梯度模
OD=sqrt(g45.^2+g135.^2);
subplot(323);
imshow(OD,[]);
title('
(1)欧几里得距离计算梯度模');
T=0.1*max(OD(:
));
BWOD=OD>T;
subplot(324);
imshow(BWOD);
title('
(1)欧几里得距离计算梯度模二值化');
%
(2)街区距离计算梯度模
JD=abs(g45)+abs(g135);
subplot(325);
imshow(JD,[]);
title('
(2)街区距离计算梯度模');
T=0.1*max(JD(:
));
BWOD=OD>T;
subplot(326);
imshow(BWOD);
title('
(2)街区距离计算梯度模二值化');
%%
%3.使用Sobel算子的图像分割实验
I=imread('room.tif');
rh=[-1-2-1;000;121];
rv=[-101;-202;-101];
g45=imfilter(double(I),rh,'replicate');
g135=imfilter(double(I),rv,'replicate');
subplot(3,2,1);
imshow(g45,[]);
title('g45');
subplot(322);
imshow(g135,[]);
title('g135');
%计算梯度模
%
(1)欧几里得距离计算梯度模
OD=sqrt(g45.^2+g135.^2);
subplot(323);
imshow(OD,[]);
title('
(1)欧几里得距离计算梯度模');
T=0.1*max(OD(:
));
BWOD=OD>T;
subplot(324);
imshow(BWOD);
title('
(1)欧几里得距离计算梯度模二值化');
%
(2)街区距离计算梯度摸
JD=abs(g45)+abs(g135);
subplot(325);
imshow(JD,[]);
title('
(2)街区距离计算梯度模');
T=0.1*max(JD(:
));
BWOD=OD>T;
subplot(326);
imshow(BWOD);
title('
(2)街区距离计算梯度模二值化');
%%
%4.使用LoG(拉普拉斯-高斯)算子的图像分割实验
f=imread('room.tif');
[gv,t1]=edge(f,'log','vertical');%使用edge函数对图像f提取垂直边缘
subplot(1,3,1);imshow(gv);title('gv');
[gb,t2]=edge(f,'log','horizontal');%使用edge函数对图像f提取水平边缘
subplot(1,3,2);imshow(gb);title('gb');
w45=[-2-10;-101;012];%指定模版使用imfilter计算45度方向的边缘
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));%设定阈值
g45=g45>=T;%进行阈值处理
subplot(1,3,3);imshow(g45);title('g45');
%%
%5打印全部结果并进行讨论。
%使用sobel、prewitt和roberts算子对图像进行分割实验。
f=imread('room.tif');
[gv,t1]=edge(f,'sobel','vertical');%使用edge函数对图像f提取垂直边缘
subplot(1,3,1);imshow(gv);title('sobel(gv)');
[gb,t2]=edge(f,'sobel','horizontal');%使用edge函数对图像f提取水平边缘
subplot(1,3,2);imshow(gb);title('sobel(gb)');
w45=[-2-10;-101;012];%指定模版使用imfilter计算45度方向的边缘
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));%设定阈值
g45=g45>=T;%进行阈值处理
subplot(1,3,3);imshow(g45);title('sobel(g45)');
%%
%使用prewitt算子对图像进行分割实验。
f=imread('room.tif');
[gv2,t3]=edge(f,'prewitt','vertical');%使用edge函数对图像f提取垂直边缘
subplot(1,3,1);imshow(gv2);title('prewitt(gv)');
[gb2,t4]=edge(f,'prewitt','horizontal');%使用edge函数对图像f提取水平边缘
subplot(1,3,2);imshow(gb2);title('prewitt(gb)');
w45=[-2-10;-101;012];%指定模版使用imfilter计算45度方向的边缘
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));%设定阈值
g45=g45>=T;%进行阈值处理
subplot(1,3,3);imshow(g45);title('prewitt(g45)');
%%
%使用roberts算子对图像进行分割实验。
f=imread('room.tif');
[gv3,t5]=edge(f,'roberts','vertical');%使用edge函数对图像f提取垂直边缘
subplot(1,3,1);imshow(gv3);title('roberts(gv)');
[gb3,t6]=edge(f,'roberts','horizontal');%使用edge函数对图像f提取水平边缘
subplot(1,3,2);imshow(gb3);title('roberts(gb)');
w45=[-2-10;-101;012];%指定模版使用imfilter计算45度方向的边缘
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));%设定阈值
g45=g45>=T;%进行阈值处理
subplot(1,3,3);imshow(g45);title('roberts(g45)');
%%
%图像像素值的标定
I=imread('room.tif');
rh=[-10;01];
rv=[0-1;10];
g45=imfilter(double(I),rh,'replicate');
subplot(121);
imshow(g45);
title('未标定');
cg45=(g45-min(g45(:
)))/(max(g45(:
))-min(g45(:
)));
subplot(122);
imshow(cg45);
title('已标定');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验六 图像分割 实验 图像 分割
![提示](https://static.bdocx.com/images/bang_tan.gif)