码迷,mamicode.com
首页 > 其他好文 > 详细

Log和Canny边缘检测(附Matlab程序)

时间:2016-07-15 19:30:55      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:

 

一、 实验目的

(1) 通过实验分析不同尺度下LOG和Canny边缘提取算子的性能。

(2) 研究这两种边缘提取方法在不同参数下的边缘提取能力。

(3) 使用不同的滤波尺度和添加噪声能量(噪声水平),通过与无噪声图像对比,选择最能说明自己结论的滤波尺度和噪声水平,并做出分析说明。

二、 实验原理

边缘的含义:在数字图像中,边缘是指图像局部变化最显著的部分,边缘主要存在于目标与目标,目标与背景之间,是图像局部特性的不连续性,如灰度的突变、纹理结构的突变、颜色的突变等。尽管图像的边缘点产生的原因各不相同,但他们都是图形上灰度不连续或灰度急剧变化的点,图像边缘分为阶跃状、斜坡状和屋顶状。

一般图像边缘检测方法主要有如下四个步骤:

(1)图像滤波:传统边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出的是,大多数滤波器在降低噪声的同时也造成了边缘强度的损失,因此,在增强边缘和降低噪声之间需要一个折衷的选择。

(2)图像增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度的幅值来完成的。

(3)图像检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判断依据是梯度幅值。

(4)图像定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。

LOG检测算子

(1)LOG边缘检测算子

在20世纪70年代,Marr理论根据神经生理学实验得出了以下结论:物体的边界是将亮度图像与其解释连接起来的最重要线索。边缘检测技术在当时是基于很小邻域的卷积,只对特殊图像效果好。这些边缘检测子的主要缺点是它们依赖物体的大小且对噪声敏感。

基于二阶导数过零点的边缘检测技术探究了阶跃边缘对应于图像函数陡峭的变化这一事实。图像函数的一阶导数在对应于图像边缘的位置上应该取得极值,因此二阶导数在同一位置应该为0;而寻找过零点位置比起极值来得更容易和更准确。关键的问题是如何稳定地计算二阶导数,一种可能性是首先平滑图像(减小噪声),再计算二阶导数。在选择平滑滤波器时,需要满足两个标准:

(1) 滤波器应该是平滑的且在邻域中大致上是有限带宽的,以便减少会导致函数变化的可能频率数。

(2)空间定位的约束要求滤波器的响应应来自于图像中邻近的点。这两个标准矛盾的,但是可以通过使用高斯分布同时得到优化。在实践中,需要准确地考虑优化的含义。

2D高斯平滑算子(也称为高斯滤波器或简单地称为高斯)由下式给出:

技术分享

其中技术分享是图像坐标,σ是关联的概率分布的标准差。标准差是高斯滤波器的唯一参数,它与滤波器操作邻域的大小成正比。离算子中心越远的像素影响越小,离中心超过3的像素影响可以忽略不计。我们的目标是得到平滑后2D函数的二阶导数。我们知道Laplacian算子给出了二阶导数且是各向同性的。那么高斯平滑后的图像的Laplacian可以表示为:

技术分享

由于所涉及算子的线性性,微分和卷积运算顺序可以交换:

技术分享

由于高斯滤波器的导数与所考虑的图像无关,故它可以事先解析地计算出来。这样复合运算的复杂度降低了。选择算子技术分享的基础有两个基本概念。第一,算子的高斯部分会模糊图像,从而在尺寸上将结构的灰度(包括噪声)降低到远小于σ的程度,而且高斯函数能在空间和频率两个域平滑图像,因而在原图像中引入不存在的人为干扰(如振铃)的可能性很小。第二,拉普拉斯有各向同性(旋转不变)的重要优点,符合人的视觉系统特性,而且对任何模板方向的灰度变化有相等的响应,从而避免了使用多个模板去计算图像中任何点处的最强响应。

LOG算法步骤如下:

1、 取样得到的技术分享高斯低通滤波器对输入图像滤波。

2、 计算第一步得到图像的拉普拉斯。

3、 找到步骤2所得图像的零交叉。

Canny边缘检测算子介绍

1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny边缘检测器,它是迄今为止讨论过的最优秀的边缘检测器。

Canny方法基于三个基本的目标:

1、低错误率。所有的边缘都应该被找到,并且没有假边缘,所有检测的边缘尽可能真实。

2、边缘点应被很好的定位。由检测器检测到的边缘点与真实边缘的中心之间的巨鹿应该最小。

3、单一的边缘点效应。对于真实的边缘点,检测器应该仅仅返回一个点。也就是真实边缘的局部最大数应该是最小的。意味着仅存在单一边缘点的位置,检测器不应指出多个边缘像素。

Canny边缘检测算法由一下基本步骤组成:

1、用一个高斯滤波器平滑输入图像。

2、计算梯度幅值图像和角度图像。

3、对梯度幅值图像应用非最大抑制。

4、用双阈值处理和连接分析来检测并连接边缘。

算法详解

1、高斯滤波

对任何一幅图像技术分享进行边缘检测,都不能直接在原始数据上进行操作,必须有平滑滤波的过程。Canny算子的第一步就是对原始图像进行高斯平滑滤波,高斯模板如下:

技术分享

用该模板对原始图像进行高斯卷积,可以得到平滑后的图像:

技术分享

高斯模糊后的图像与原始图像相比,有轻微的模糊,高斯卷积的目的主要是为了抑制图像噪声对边缘检测的干扰,它能够在频域和时域两个域平滑图像。

2、梯度幅值图像和角度图像

技术分享

幅值图像技术分享和角度图像技术分享是与平滑后的图像尺寸相同的阵列。因为它是使用梯度得到的,技术分享在局部最大值范围通常包含更宽的范围。下一步是细化那些边缘,也就是下一步需要采用的操作,使用非最大抑制。

3、非最大抑制

非最大抑制的目的是细化梯度幅值图像产生的宽边缘问题,该方法的本质是指定边缘法线的许多离散方向(梯度向量)。例如,在一个3×3区域内,对于通过该区域中心点的边缘,我们可以定义四个方向:水平、垂直、+45°和-45°。图1显示了水平边缘的两个可能方向。

技术分享技术分享

图1  在一个3×3区域中,水平边缘的两个可能方向。

因为我们需要把所有的边缘方向量化为四个方向,故需要定义一个方向范围,在该范围内,我们考虑一个水平方向的边缘。我们由法线的方向来确定边缘的方向。如图2所示,如果边缘法线方向的范围为-25°和+25°,或者是-157.5°和+157.5°,我们称该边缘为水平边缘。图3则显示了对应于所考虑的四个方向的角度范围。

技术分享 技术分享 图2 图3

图2表示一个水平边缘的边缘法线的方向角的值的范围(灰色)        

图3表示在3×3区域中,4种类型的边缘方向的边缘法线角度范围

令d1,d2,d3和d4表示四个基本边缘方向:水平、-45°、垂直、+45°。对于技术分享中以没一点技术分享为中心的3×3区域,我们可以给出如下非最大抑制方案:

(1) 寻找最接近技术分享的方向技术分享.

(2) 如果技术分享的值至少小于沿技术分享的两个邻居之一,则令技术分享(抑制);

否则,令技术分享技术分享是非最大抑制后的图像。

3、阈值处理

为了减少伪边缘点,对技术分享进行阈值处理。Canny算子采用双阈值的处理方法,一个低阈值技术分享,一个高阈值技术分享,Canny算子技术分享技术分享比率2:1或3:1。将阈值操作认为两幅附加的图像

技术分享

技术分享

开始时,技术分享技术分享被设置为零。阈值处理后,技术分享的非零像素通常比技术分享少,但是技术分享中所有的非零像素都包含在技术分享中。通过令技术分享

三、 实验结果及分析

在实验中,选取三幅图像作为边缘检测的输入图像,分别是棋盘格(Tessella.bmp)、Lena (Lena.bmp)和自己选择的一幅自然场景图像(转换成8bit灰度,256×256大小的Bmp格式图像)。实验过程中,为了比较噪声的影响,分别对图像加入了不同参数下的高斯噪声。具体参数如下:

对于LOG算子,采用了均值为0,标准差σ=0.005的高斯白噪声。高斯模板采用的是滤波尺度为5×5,标准差σ=1,设置的阈值有thr=0.06、0.10、0.15三种情况。同时为了比较加入噪声对边缘检测的影响,同时参考了无噪声不同参数下的边缘检测效果。

对于Canny算子,设置的参数主要有高斯模糊尺度的不同,添加的噪声的程度以及双阈值参数的设置。具体为在无添加噪声情况下,有滤波尺度5×5

σ=1,thr_min=12,thr_max=24;滤波尺度5×5 ,σ=0.5 ,thr_min=12, thr_max=24;滤波尺度5×5 ,σ=1,thr_min=24 ,thr_max=48;滤波尺度5×5 ,σ=1 ,thr_min=6 thr_max=12;添加高斯噪声图片均值为0,方差为0.005 滤波尺度5×5 ,σ=1 thr_min=6 ,thr_max=12;添加高斯噪声图片均值为0,方差为0.0005滤波尺度5×5 ,σ=1 ,thr_min=6 ,thr_max=12。

(一)LOG边缘检测结果

1、Lena(256×256,bmp格式的灰度图)为测试图片进行边缘检测

(1)噪声水平为=0.0005

技术分享技术分享

图1-1-1 LOG 边缘检测及局部放大 技术分享=1 thr=0.06

技术分享技术分享

图1-1-2 LOG 边缘检测及局部放大 技术分享=1 thr=0.10

技术分享技术分享

图1-1-3 LOG 边缘检测及局部放大 技术分享=1 thr=0.15

技术分享技术分享

图1-1- 4 LOG 边缘检测及局部放大 技术分享=0.5 thr=0.15

(2)噪声水平为=0.005

技术分享技术分享

图1-1-5 LOG 边缘检测及局部放大 技术分享=1 thr=0.06

2、以棋盘格Tessella为测试图片进行边缘检测

(1)噪声水平为=0.0005

技术分享技术分享

图1-2-1 LOG 原图及加噪图像

技术分享技术分享

图1-2-2 LOG 高斯平滑及边缘检测图像 技术分享=1 thr=0.06

(二)Canny边缘检测结果

该部分对Canny边缘检测的四个步骤的各阶段图像都进行了显示,以便检验每一步操作的功能。在本实验中,阈值采用了thr_max/thr_min=2的默认比例。

1、以Lena(256×256,bmp格式的灰度图)为测试图片进行边缘检测

(1)噪声水平为=0,无噪声边缘检测

技术分享技术分享

技术分享技术分享

图2-1-1滤波尺度技术分享 技术分享=1 thr_min=12 thr_max=24

技术分享v技术分享

技术分享技术分享

图2-1-2滤波尺度技术分享 技术分享=0.5 thr_min=12 thr_max=24

技术分享技术分享

技术分享技术分享

图2-1-3滤波尺度技术分享 技术分享=1 thr_min=24 thr_max=48

技术分享 技术分享 技术分享 技术分享

图2-1-4滤波尺度技术分享 技术分享=1 thr_min=6 thr_max=12

(2)噪声水平为=0.005

技术分享 技术分享 技术分享 技术分享

图2-1-5滤波尺度技术分享 技术分享=1 thr_min=6 thr_max=12

(3)噪声水平为=0.005

技术分享技术分享技术分享技术分享

图2-1-6滤波尺度技术分享 技术分享=1 thr_min=6 thr_max=12

2、以棋盘格Tessella为测试图片进行边缘检测

技术分享技术分享技术分享 技术分享

图2-2-1添加高斯噪声图片均值为0,方差为0.0005

滤波尺度技术分享 技术分享=1 thr_min=6 thr_max=12

实验结果分析

(1)以Lena图像分析LOG和Canny

通过观察图1-1-1、图1-1-2及图1-1-3,可以发现LOG边缘检测随着阈值thr的增大,虽然噪点越来越少,但同时检测到的图像边缘信息丢失严重,图像局部精细部分检测几乎趋向于零。

通过观察图1-1-1和图1-1-5,两幅图主要是加的噪声水平不一样,前者是0.0005,后者则是0.005,可以看到图1-1-5边缘检测的效果非常差,几乎只能隐约看到轮廓信息,大量的噪点充斥着整幅图像。从而我们可以知道LOG算子对噪声比较敏感,图1-3-2同样证实了该结论。

比较高斯滤波模板标准差为1的图1-1-1和标准差为0.5图1-1-4,可以发现在尺度较小的情况下,对图像中的纹理丰富的头发,帽子上的装饰刻画的比较细致,但同时丢失了背景中左侧的垂直边缘和右侧中部的对比度很弱的横向边缘;在大尺度上,这些背景边缘得到了体现,但同时对于那些丰富的纹理区,检测结果出现了丢失和偏移。

从Canny算子的检测结果来看,它对于图像中的纹理丰富的地方和背景处的边缘,以及对比度弱的边缘都能得到很好的检出率;从图2-1-1和图2-1-2可以发现在大尺度上同样也丢失了很多细节,只表现出一些轮廓特征。

比较图2-1-1、图2-1-3及图2-1-4,同样可以发现,随着阈值的增大,Canny边缘检测同样丢失信息越来越多,只表现出一些轮廓。比较图2-1-4和图2-1-5,在噪声水平扩大10倍的情况下,可以观察到左侧垂直边缘信息丢失严重,同时边缘像素变宽,出现了横向的细小条纹。右侧黑色背景部分出现了一定的伪边缘现象。但相对于LOG算子,Canny边缘检测总体效果较好,对噪声的抑制较强。

(2)以Tessella图像分析LOG和Canny

Tessella图像是边缘信息丰富的棋盘格,灰度信息分布规律,只能取有限的几个值。观察比较图1-2-2和图2-2-1,可以发现,对于LOG算子,垂直信息丢失严重,垂直边缘普遍断开,水平边缘信息也比较宽,对噪声比较敏感,检测效果较差。对于Canny算子,可以发现边缘检测效果非常好,对于噪声点的抑制也表现的非常优异,只出现了一些零散的孤立噪声点。Canny算子虽然对各种边缘都有较好的检出率,但是检测出的边缘点与原始图像的位置有一定范围的误差。

四、 实验结论

从以上的检测结果中可以看出,相同尺度下的LOG算子总是能比Canny算子检测出更多的细节,而相对于此,Canny算子却总是能对真正比较显著地边缘给出检测。LOG边缘检测子是采用二阶导数过零点的检测方法,故对噪声更敏感一些,因此从抑制噪声方面来讲,Canny边缘检测子不容易受到噪声的干扰,而相同尺度下LOG算子却容易受到噪声的干扰,抑制噪声的能力要弱一些。另外,由于Canny边缘检测子采用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中,故而Canny算子更能检测出真正的弱边缘,但是Canny边缘检测子检测出的边缘的位置会有一定范围的误差,LOG边缘检测子相对比较容易受到噪声干扰,会检测出更多的细节,也容易检测出一些由于噪声引起的假边缘,但是LOG边缘检测子对边缘位置的检测还是很准确的。在大尺度上的算法都比较好的检测出树干的边缘,而对周围的纹理区域的刻画都失去了组织结构上的特征。

LOG算子容易受尺度的影响,不同尺度下的边缘点要用不同尺度的LOG算子检测,Canny 算子受尺度的影响不太明显,不同尺度下,边缘点的位置都有偏差,但几乎相同; LOG算子对噪声的抑制能力随着尺度的增加而增加,相同尺度下的Canny算子比LOG算子的抗噪声能力强,而LOG算子比Canny算子的边缘点准确;在尺度选择合适的情况下,LOG算子对图像边缘点检测的位置非常准确,能够保留边缘点比较细致的组织结构,而Canny算子对图像边缘检出率比较高,包括纹理区域,以及对比度很弱的边缘点,但是对这些边缘点的组织结构刻画得不是特别细致,边缘点的位置有小范围的偏差。

 

MATLAB程序http://download.csdn.net/detail/lk274857347/9577223

 

参考文献

1. D.Marr and E. Hildreth, Theory of Edge Detection, Proc. R. Soc. Lond. B207:187-217.

2. John Canny, A Computational Approach to Edge Detection, IEEE Trans. PAMI, 8(6):679-698.

3. James J. Clark, Authenticating Edges Produced by Zero-crossing Algorithms, IEEE T. PAMI, 11(1), 1989, pp.43-57.

4. Rafael, C, Gonzalez, Richard, E, Woods. 数字图像处理(第三版)[M]. 北京:电子工业出版社, 2011.

5. http://blog.csdn.net/humanking7/article/details/46606791

Log和Canny边缘检测(附Matlab程序)

标签:

原文地址:http://www.cnblogs.com/VictorLeeLk/p/5674264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!