边缘检测实验报告_第1页
边缘检测实验报告_第2页
边缘检测实验报告_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像边缘提取实验报告一、实验目的通过课堂的学习,已经对图像分割的相关理论知识已经有了全面的了解,知道了许多图像分割的算法及算子,了解到不同的算子算法有着不同的优缺点,为了更好更直观地对图像分割进行深入理解,达到理论联系实际的目的,特制定如下的实验。二、实验原理检测图像边缘信息,可以把图像看做曲面,边缘就是图像的变化最剧烈的位置。这里所讲的边缘信息包含两个方面:一是边缘的具体位置,即像素的坐 标;而是边缘的方向。微分算子有两个重要性质:定域性(或局部性)、敏感性(或 无界性)。敏感性就是说,它对局部的函数值变化很敏感,但是因其对变化过于 敏感又有了天然的缺陷一一不能抵抗噪声。局部性意思是指,每一

2、点的导数只 与函数在该点邻近的信息有关。主要有两大类基于微分算子的边缘检测技术:一阶微分算子边缘检测与二阶微分算子边缘检测。这些检测技术采用以下的基本步骤:(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) )对集合Sh进行整理,同时调整阈值hRoberts 算子Roberts算子是一种利用局部差分算

3、子寻找边缘的算子,两个模板分别为1 0Rxc彳010 1Ryy 1 0则,Rxf(i, j)= f(i, j) f(i 1, j1)Ryf(i,j)=f(i 1, j) f(i, j1)算法的步骤为:(1)首先用两个模板分别对图像作用得到Rxf 和 Ryf ;(2)对Tf(i,j) Rxf |Ry,进行阈值判决,若Tf(i,j)大于阈值则相应的点 位于便于边缘处。对于阈值选取的说明:由于微分算子的检测性能受阈值的影响较大,为此,针对具体图像我们采用以下阈值的选取方法,对处理后的图像统计大于某一阈 值的点,对这些数据求平均值,以下每个程序均采用此方法,不再做说明。Sobel算子Sobel算子采用

4、中心差分,但对中间水平线和垂直线上的四个邻近点赋予略高的权重。两个模板分别如下:101202Sy101Prewitt 算子Prewitt算子也属于中心差分类型,板如下:但没有给最邻近点较高的权重,两个模1011Px101Py010111 10 01 1采用一阶微分算子很难找到一个一致的阈值选择办法,保证检测出的图像有相对均匀的宽度,克服这个障碍的办法是改用二阶微分算子进行边缘检测定位。 Laplace采用一阶微分算子很难找到一个一致的阈值选择办法,保证检测出的图像有相对均匀的宽度,克服这个障碍的办法是改用二阶微分算子进行边缘检测定位。经常采用如下Laplace微分算子:2f 2ff(x, y)

5、 2 rx y并进而寻找f(x,y)的跨零点的位置(零点的局部正和负的取值都有)。 当然实践中可以通过模板来实现,本程序采用如下模板:0 1 01410 1 0无论什么样的微分算子,直接用来进行边缘检测,会受到噪声很大的干扰。 即使是二阶微分算子也不能克服噪声干扰。但是如果采用高斯低通滤波,所得 的结果则比较好地保留了图像的边缘特征。Marr-Hildrech 的LOG边缘检测算法:精选资料Canny检测子Canny算子采用和数据内容相关的滤波技术。Canny算子求边缘点具体算法步骤如下:1. 用高斯滤波器平滑图像.2. 用一阶偏导有限差分计算梯度幅值和方向3. 对梯度幅值进行非极大值抑制.4

6、. 用双阈值算法检测和连接边缘.步1.图像与高斯平滑滤波器卷积:-a令g (“ 训平滑后的區像,用虹3 Q)对圈像a 7 )的珈回表示刘g(盖丿)-叽H&汁耳中;冰代表卷积.步2-使用一阶有限筆分计算偏导数阵列P与匕已平滑心 点閱梯度可以便用2x2-阶育限差分近说式来计算r与了偏导数的两个 阵列£匕了)与咒兀川£(切知伉=f/(x十ij)vj)+/(i+i十匸h叨十i川2,;)対G尸二LZ(兀尹+ 1) 了(工为+/(兀+1丿+1) /(兀+人片)卩2t VPay + h rX. V+1-p + l. i +l V. Vm1>1/a r +1I",I

7、.r + L r+ 11-1J1-1I在这牛2般正方形內求育限差分的均值*臥便在图像中的同一点计算x和y吊偏导数 梯度°幅值和方位角可用直角坐癖9极坐标的坐标转优公式来计茸:兀3二J&X (兀+E (兀巧2亦加二arctan (牙(兀尹)®(s)Afjv,y反映了團慷的边缓强虧日比片反映了边缘的方向口便得取得局部最大值 的方向角灵扎尹卜就反映了边缘:的亓直L步3.对梯度幅值进行非极大值抑 制(non_maxima suppression , NMS):仅仅得到全局的梯度并不足以确定边缘, 因此为确定边缘,必须保留局部梯 度最大的点,而抑制非极大值。解决方法:利用梯度

8、的方向12384765埒梯度角离散为圆周的四个扇区之一衣以便用3X3的窗口作抑制运算。四亍扇区的标号为 0到对应貂3邻域的四种可能组合在每一点上,邻域的中心象素人几与沿着梯度线萤两入篡秦相比=如果My的 梯度值不比沿梯度线的两个相邻辣秦梯蜜值大则令步4用 双阈值算法检测和连接边缘对非极大值抑制图像作用两个阈值th1和th2,两者关系th1=0.4th2 。我们把梯度值小于th1的像素的灰度值设为0,得到图像1。然后把梯度值小于 th2的 像素的灰度值设为0,得到图像2。由于图像2的阈值较高,去除大部分噪音,但同时也损失了有用的边缘信息。而图像1的阈值较低,保留了较多的信息,我们可以以图像2为基

9、础,以图像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中找不到新

10、轮廓线为止。至此,完成canny算 子的边缘检测。三、具体过程原皓國像Mb创检测卩怕wit t检测laplace 检测匚茗朗¥检测卩怕wit t检测加入高斯噪声宀旳闿像sb创检测Ciberts 检测laplace 检测cannyfe测Log算子阈值取0.01Canny算子阈值取0.2卩怕wit t检测加入高斯噪声(尸0,是加2)團像汕画检测roberts 检测lplace 检测匚茗朗¥检测Log算子阈值取0.01Canny算子阈值取0.25四、实验分析通过对上述几种算子的研究,我们可以发现, Prewit t算子和Sobel算 子都是对图像进行差分和滤波运算,仅在平滑部分的

11、权值选择上有些差异,但是 图像产生了一定的模糊,而且有些边缘还检测不出来,所以检测精度比较低 , 该类算子比较适用于图像边缘灰度值比较明显的情况。Robert s算子检测精度比较高,但容易丢失一部分边缘,使检测的结果 不完整,同时图像没经过平滑处理,不能抑制噪声,所以该算子对具有陡峭的低 噪声图像响应最好。Laplace算子通过高斯函数对图像进行了平滑处理,对噪声的抑制作用比 较明显 , 但处理的同时也可能将原有的边缘平滑 , 造成某些边缘无法检测到。 此外,噪声对其影响也较大,检测到的图细节很丰富 , 同时就可能出现伪边缘。 但是,如果要降低伪边缘的话,又可能使检测精度下降,丢失很多真边缘。

12、因 此, 对于不同图像应选择不同参数。Canny 算子也采用高斯函数对图像进行平滑处理 ,也具有较强的去噪能力 但同样可能会丢失一些边缘信息,但是,从图中可以看出, Canny 算子比 Laplace 算子的检测边缘的精度要高些。 通过实验结果可以看出 ,该算子在上述 几种边缘检测算子当中效果最好。 通过上述实验结果我们可以发现,在加入高斯噪声以后, canny 算子的去噪能 力减弱,对边缘检测的效果不太明显。相反,从图中可以发现 sobel 算子和 prewitt 算子对噪声的过滤作用较为明显。 基本上能够检测出较为完整的边缘信 号。Matlab 代码: clear all;close al

13、l;warning off all;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(' 原始

14、图像 ');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(

15、9;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);sub

16、plot(2,3,1),imshow(l_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('laplac

17、e检测');subplot(2,3,6),imshow(BW_canny),xlabel('canny检测 ');%加入高斯噪声(卩=0 ,于2=0.02 )检测结果l_g2 = imnoise(l,'gaussian',0,0.02);BW_sobel = edge(l_g2,'sobel');BW_prewitt = edge(l_g2,'prewitt');BW_roberts = edge(l_g2,'roberts');BW_laplace = edge(l_g2,'log');BW_canny = edge(l_g2,'canny');figure(3);subplot(2,3,1),imshow(l_g2),xlabel('加入高斯噪声(尸0 ,于2=0.02)图像')subplot(2,3,2),imshow(BW_sobe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论