边缘检测实验报告.docx

上传人:b****7 文档编号:9603181 上传时间:2023-02-05 格式:DOCX 页数:10 大小:95.54KB
下载 相关 举报
边缘检测实验报告.docx_第1页
第1页 / 共10页
边缘检测实验报告.docx_第2页
第2页 / 共10页
边缘检测实验报告.docx_第3页
第3页 / 共10页
边缘检测实验报告.docx_第4页
第4页 / 共10页
边缘检测实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

边缘检测实验报告.docx

《边缘检测实验报告.docx》由会员分享,可在线阅读,更多相关《边缘检测实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

边缘检测实验报告.docx

边缘检测实验报告

图像边缘提取实验报告

一、实验目的

通过课堂的学习,已经对图像分割的相关理论知识已经有了全面的了解,知道了许多图像分割的算法及算子,了解到不同的算子算法有着不同的优缺点,为了更好更直观地对图像分割进行深入理解,达到理论联系实际的目的,特制定如下的实验。

二、实验原理

检测图像边缘信息,可以把图像看做曲面,边缘就是图像的变化最剧烈的位置。

这里所讲的边缘信息包含两个方面:

一是边缘的具体位置,即像素的坐标;而是边缘的方向。

微分算子有两个重要性质:

定域性(或局部性)、敏感性(或无界性)。

敏感性就是说,它对局部的函数值变化很敏感,但是因其对变化过于敏感又有了天然的缺陷——不能抵抗噪声。

局部性意思是指,每一点的导数只与函数在该点邻近的信息有关。

主要有两大类基于微分算子的边缘检测技术:

一阶微分算子边缘检测与二阶微分算子边缘检测。

这些检测技术采用以下的基本步骤:

(1)将相应的微分算子简化为离散的差分格式,进而简化为模板(记为T)。

(2)利用模板对图像f(m,n)进行运算,获得模板作用后的结果Tf(m,n)。

(3)提出阈值h,在采用一阶微分算子情形记录下高于某个阈值h的位置坐标

Sh{(m,n)|Tf(m,n)h}

(而采用二阶微分算子情形,一般是对某个阈值

0确立

Sh{(m,n)|Tf(m,n)})

(4)对集合Sh进行整理,同时调整阈值h

Roberts算子

Roberts算子是一种利用局部差分算子寻找边缘的算子,两个模板分别为

10

Rx1001

Ry

01

10

则,Rxf(i,j)=f(i,j)f(i1,j1)

Ryf(i,j)=f(i1,j)f(i,j1)

算法的步骤为:

(1)首先用两个模板分别对图像作用得到Rxf和Ryf;

(2)对Tf(i,j)Rx2Ry,进行阈值判决,若Tf(i,j)大于阈值则相应的点

位于便于边缘处

对于阈值选取的说明:

由于微分算子的检测性能受阈值的影响较大,为此,针对具体图像我们采用以下阈值的选取方法,对处理后的图像统计大于某一阈值的点,对这些数据求平均值,以下每个程序均采用此方法,不再做说明。

Sobel算子

Sobel算子采用中心差分,但对中间水平线和垂直线上的四个邻近点赋予略

高的权重。

两个模板分别如下:

101

Sy

Sx202

101

Prewitt算子

Prewitt算子也属于中心差分类型,但没有给最邻近点较高的权重,两个模板如下:

101111

Px101Py000

101111采用一阶微分算子很难找到一个一致的阈值选择办法,保证检测出的图像有相对均匀的宽度,克服这个障碍的办法是改用二阶微分算子进行边缘检测定位。

Laplace

采用一阶微分算子很难找到一个一致的阈值选择办法,保证检测出的图像有相对均匀的宽度,克服这个障碍的办法是改用二阶微分算子进行边缘检测定位。

经常采用如下Laplace微分算子:

2f2f

f(x,y)f22f

xy

并进而寻找f(x,y)的跨零点的位置(零点的局部正和负的取值都有)。

当然实践中可以通过模板来实现,本程序采用如下模板:

010

141010

无论什么样的微分算子,直接用来进行边缘检测,会受到噪声很大的干扰。

即使是二阶微分算子也不能克服噪声干扰。

但是如果采用高斯低通滤波,所得的结果则比较好地保留了图像的边缘特征。

Marr-Hildrech的LOG边缘检测算法:

Canny检测子

Canny算子采用和数据内容相关的滤波技术。

Canny算子求边缘点具体算法步骤如下:

1.用高斯滤波器平滑图像.

2.用一阶偏导有限差分计算梯度幅值和方向

3.对梯度幅值进行非极大值抑制.

4.用双阈值算法检测和连接边缘.

步1.图像与高斯平滑滤波器卷积

1

小茹八-

令g(3)为平滑后的图像,用力("Q对图像几x,y)的壬遺戛表示为:

C(xj)-叽x

其中:

科弋表卷积.

步2.使用一阶有限差分计算偏导数阵列P与Q:

已平滑£G『)的梯度可以使用2x2—阶有限差分近欣式来计算)c与y偏导敌的两个阵列77D与/:

(兀y)*

兀⑴恥Gy=[/(x+l^)-/(^y)+/(x+lfty+l)-/(^y+l)]/2

左(兀y)母屯=[了(儿尹+1)—了(x,_y)+/(x+1,y+1)—/(x+1,y)]f2

 

XV

v+Uy

X.1•十1

v+Lv十1

•Xy

1

x+Lr

1

t.r,v+1

i.v+Lj+1

y

 

G塔

I

・1

・1

-1

1

•1

1

1

在这个2x2正方形內求有限差分的均值,以便在图像中的同一点计算X和y的偏导数梯處。

幅值和方位角可用直角坐标到极坐标的坐标转弋公式来计算:

Mg汨竝心卄吸分

纽心刃=arctan(G心,y)!

Gy(兀刃)

必区刃反映了图像的边缢强度;日区刃反映了边缘的方向。

使得M[x,y]取得局部最大值的方向角&[xj],就反映了边缘的方向。

步3.对梯度幅值进行非极大值抑制(non_maximasuppression,NMS):

仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。

解决方法:

利用梯度的方向:

步4.用双阈值算法检测和连接边缘

对非极大值抑制图像作用两个阈值th1和th2,两者关系th1=0.4th2。

我们把梯度值小于th1的像素的灰度值设为0,得到图像1。

然后把梯度值小于th2的像素的灰度值设为0,得到图像2。

由于图像2的阈值较高,去除大部分噪音,但同时也损失了有用的边缘信息。

而图像1的阈值较低,保留了较多的信息,我

们可以以图像2为基础,以图像1为补充来连结图像的边缘。

链接边缘的具体步骤如下:

对图像2进行扫描,当遇到一个非零灰度的像素p(x,y)时,跟踪以p(x,y)为开始点的轮廓线,直到轮廓线的终点q(x,y)。

考察图像1中与图像2中q(x,y)点位置对应的点s(x,y)的8邻近区域。

如果在s(x,y)点的8邻近区域中有非零像素s(x,y)存在,则将其包括到图像2中,作为r(x,y)点。

从r(x,y)开始,重复第一步,直到我们在图像1和图像2中都无法继续为止。

当完成对包含p(x,y)的轮廓线的连结之后,将这条轮廓线标记为已经访问。

回到第一步,寻找下一条轮廓线。

重复第一步、第二步、第三步,直到图像2中找不到新轮廓线为止。

至此,完成canny算子的边缘检测。

三、具体过程

 

 

Log算子阈值取0.01

Canny算子阈值取0.2

 

Log算子阈值取0.01

Canny算子阈值取0.25

四、实验分析

通过对上述几种算子的研究,我们可以发现,Prewitt算子和Sobel算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,但是图像产生了一定的模糊,而且有些边缘还检测不出来,所以检测精度比较低,该类算子比较适用于图像边缘灰度值比较明显的情况。

Roberts算子检测精度比较高,但容易丢失一部分边缘,使检测的结果不完整,同时图像没经过平滑处理,不能抑制噪声,所以该算子对具有陡峭的低噪声图像响应最好。

Laplace算子通过高斯函数对图像进行了平滑处理,对噪声的抑制作用比较明显,但处理的同时也可能将原有的边缘平滑,造成某些边缘无法检测到。

此外,噪声对其影响也较大,检测到的图细节很丰富,同时就可能出现伪边缘。

但是,如果要降低伪边缘的话,又可能使检测精度下降,丢失很多真边缘。

因此,对于不同图像应选择不同参数。

Canny算子也采用高斯函数对图像进行平滑处理,也具有较强的去噪能力,但同样可能会丢失一些边缘信息,但是,从图中可以看出,Canny算子比Laplace算子的检测边缘的精度要高些。

通过实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。

通过上述实验结果我们可以发现,在加入高斯噪声以后,canny算子的去噪能力减弱,对边缘检测的效果不太明显。

相反,从图中可以发现sobel算子和prewitt算子对噪声的过滤作用较为明显。

基本上能够检测出较为完整的边缘信号。

Matlab代码:

clearall;

closeall;

warningoffall;

I=imread('cameraman.tif');%%没有噪声时的检测结果BW_sobel=edge(I,'sobel');

BW_prewitt=edge(I,'prewitt');

BW_roberts=edge(I,'roberts');

BW_laplace=edge(I,'log');

BW_canny=edge(I,'canny');

figure

(1);

subplot(2,3,1),imshow(I),xlabel('原始图像');subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测');subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测');subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测');subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测');subplot(2,3,6),imshow(BW_canny),xlabel('canny检测');

%%加入高斯噪声(μ=0,σ^2=0.01)检测结果

I_g1=imnoise(I,'gaussian',0,0.01);

BW_sobel=edge(I_g1,'sobel');

BW_prewitt=edge(I_g1,'prewitt');

BW_roberts=edge(I_g1,'roberts');

BW_laplace=edge(I_g1,'log');

BW_canny=edge(I_g1,'canny');

figure

(2);

subplot(2,3,1),imshow(I_g1),xlabel('加入高斯噪声(μ=0,σ^2=0.01)图像');subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测');subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测');subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测');subplot(2,3,6),imshow(BW_canny),xlabel('canny检测');

%%加入高斯噪声(μ=0,σ^2=0.02)检测结果

I_g2=imnoise(I,'gaussian',0,0.02);

BW_sobel=edge(I_g2,'sobel');

BW_prewitt=edge(I_g2,'prewitt');

BW_roberts=edge(I_g2,'roberts');

BW_laplace=edge(I_g2,'log');

BW_canny=edge(I_g2,'canny');

figure(3);

subplot(2,3,1),imshow(I_g2),xlabel('加入高斯噪声(μ=0,σ^2=0.02)图像')subplot(2,3,2),imshow(BW_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(BW_prewitt),xlabel('prewitt检测');subplot(2,3,4),imshow(BW_roberts),xlabel('roberts检测');subplot(2,3,5),imshow(BW_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(BW_canny),xlabel('canny检测');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1