实验六 图像分割

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

信息工程学院实验报告
课程名称:数字图像处理 实验项目名称:实验六 图像分割 实验时间:2016、12、16
班级: 姓名: 学号:
一、实验目得
1、 使用Mat La b 软件进行图像得分割。

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

2、 要求学生能够自行评价各主要算子在无噪声条件下与噪声条件下得分割性能。

能够掌握分割条件(阈值等)得选择。

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

二、实验内容与步骤
1、边缘检测
(1)使用Roberts 算子得图像分割实验
调入并显示图像r oom、tif 图像;使用Ro berts 算子对图像进行边缘检测处理; Ro ber ts 算子为一对模板:
(a)450
方向模板 (b)1350方向模板
图 1 mat lab 2010得Ro berts 算子模板
相应得矩阵为:rh = [0 1;—1 0]; rv = [1 0;0 -1];这里得rh 为45度Rob erts 算子,rv 为135度Robert s 算子。

分别显示处理后得45度方向与135方向得边界检测结果;用“欧几里德距离”与“街区距离”方式计算梯度得模,
并显示检测结果;对于检测结果进行二值化处理,并显示处理结果。

提示:先做检测结果得直方图,参考直方图中灰度得分布尝试确定阈值;应反复调节阈值得大小,直至二值化得效果最为满意为止。

(2)使用Prewitt 算子得图像分割实验
(a)水平模型(b)垂直模板
图2、Prewitt算子模板
使用Prewitt 算子进行内容(1)中得全部步骤。

(3)使用Sobel 算子得图像分割实验
使用Sobel算子进行内容(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;-10 1;0 1 2];%指定模版使用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 算子得图像分割实验
实验结果:
g45g135
(1)欧几里得距离计算梯度模(1)欧几里得距离计算梯度模二值化
(2)街区距离计算梯度模(2)街区距离计算梯度模二值化
图4、Roberts算子得图像分割
实验结果分析:
Roberts 算子利用局部差分算子寻找边缘,边缘定位精度比较高,但容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备抑制噪声能力。

该算子对具有陡峭边缘且噪声少得图像效果较好。

(2)使用Prewitt算子得图像分割实验
实验结果:
g45
g135
(1)欧几里得距离计算梯度
模(1)欧几里得距离计算梯度模二值

(2)街区距离计算梯度
模(2)街区距离计算梯度模二值化
图5 、Pr ew itt 算子得图像分割
实验结果分析:
Pr ewitt 算子先对图像做加权平滑处理,然后再做微分运算,所不同得就是平滑部分得权值有些差异,因此它们对噪声有一定得抑制能力。

(3)使用So bel 算子得图像分割实验 实验结果:
g45
g135
(1)欧几里得距离计算梯度模
(1)欧几里得距离计算梯度模二值化
(2)街区距离计算梯度模(2)街区距离计算梯度模二值化
(1)欧几里得距离计算梯度模(1)欧几里得距离计算梯度模二值化
(2)街区距离计算梯度模(2)街区距离计算梯度模二值化
图6、Sobel 算子得图像分割
实验结果分析:
Sobel算子与Prewitt 算子一样,都就是先对图像做加权平滑处理,然后再做微分运算,因此它们对噪声有一定得抑制能力。

比较实验结果可以发现,Sobel 算子比Prewitt算子在噪声抑制方面略胜一筹,但不能排除检测结果中出现得虚假边缘。

虽然这两个算子边缘定位效果不错,但检测出得边缘容易出现多像素得宽度。

(4)使用LoG(拉普拉斯—高斯)算子得图像分割实验
实验结果:
gv gb g45
图7、LoG (拉普拉斯—高斯)算子得图像分割
实验结果分析:
拉普拉斯算子,它就是无方向得二阶微分算子,对图像中得阶跃型边缘定位准确,该算子对噪声非常敏感,它使噪声成分得到加强.这两个特性使得该算子容易丢失一部分边缘得方向信息,造成一些不连续得检测边缘。

LoG算子,该算子克服了拉普拉斯算子抗噪声性能比较差得缺点,但就是在抑制噪声得同时也可能将原有得比较尖锐得边缘平滑掉了.
(5)打印全部结果并进行讨论。

使用sobel、prewitt与roberts算子对图像进行分割实验。

sobel(gv)sobel(gb)sobel(g45)
prewitt(gv)prewitt(gb)prewitt(g45)
roberts(gv)roberts(gb)roberts(g45)
图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)确定一个像素就是在一条边缘暗得一面还就是亮得一面;一般使用得就是高斯型拉普拉斯算子(Laplacian of aGaussian,LoG),由于二阶导数就是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果得拉普拉斯就是一样得。

所以在LoG公式中使用高斯函数得目得就就是对图像进行平滑处理,使用Laplacian算子得目得就是提供一幅用零交叉确定边缘位置得图像;图像得平滑处理减少了噪声得影响并且它得主要作用还就是抵消由Laplacian算子得二阶导数引起得逐渐增加得噪声影响。

五、实验心得体会
通过这个实验,我熟练学会了利用MatLab软件进行图像得分割。

在通过实验体会到了一些主要得分割算子对图像处理得效果,以及各种因素对分割效果得影响。

在评价各主要算子在无噪声条件下与噪声条件下得分割性能下,掌握分割条件(阈值等)得选择。

完成规定图像得处理并评价处理结果。

六、源程序清单
%%
%1、使用Roberts 算子得图像分割实验
I=imread('room、tif');
rh=[-1 0;0 1];
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;00 0;1 11];
rv=[—1 0 1 ;-1 0 1;-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;0 0 0;12 1];
rv=[-10 1;-20 2;—1 0 1];
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;-1 0 1;0 1 2];%指定模版使用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;-10 1;0 1 2];%指定模版使用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;-10 1;0 12];%指定模版使用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—1 0;—1 0 1;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=[-1 0; 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('已标定’);。

相关文档
最新文档