数字图像边缘检测算法设计—LOG算子与Canny算子

数字图像边缘检测算法设计—LOG算子与Canny算子
数字图像边缘检测算法设计—LOG算子与Canny算子

摘要

边缘检测是数字图像处理中的一项重要内容。图像边缘是图像最基本的特征,边缘在图像分析中起着重要的用。所谓边缘(edge)是指图像局部特征的不连续性。灰度或结构信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结的突变。边缘是一个区域的结束,也是另一个区域的开始,利用该征可以分割图像。

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。其目的是提高信息的相对质量,以便提取有用信息。本次课设对图像边缘检测常用的两种算法LOG算子和Canny 算子进行了分析和比较,并用MATLAB实现这两个算法。最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。

关键词:图像处理;边缘检测;MATLAB

目录

1 课程设计目的和要求 (1)

1.1 设计目的 (1)

1.2 设计要求 (1)

2 边缘检测简介 (2)

2.1 边缘检测的定义 (2)

2.2 图像边缘检测算法的研究内容 (3)

3 边缘检测算子 (5)

3.1 Canny算子 (5)

3.1.1 Canny边缘检测基本原理 (5)

3.1.2 Canny边缘检测算法 (5)

3.2 Log算子 (7)

4 仿真程序 (9)

4.1 Log算子 (9)

4.2 Canny算子 (9)

4.3Canny算子和log算子的比较 (10)

5 结果分析 (11)

结束语 (13)

参考文献 (14)

1 课程设计目的与要求

1.1设计目的

数字图像出技术的迅猛发展,使其应用前景的得到了不可限量的扩展。如今各行各业都在积极发展与图像相关的技术,数字图像处理逐渐凸显出其魅力。其应用如医学影像,航天航空,无人驾驶,自动导航,工业控制,导弹制导,文化艺术等。边缘检测技术在图像处理和计算机视觉等领域起着重要的作用,是图像分析,模式识别,目标检测与分割等的前期处理。前期边缘检测的好坏,直接影响后期更高级处理的精度。在实际图像边缘检测问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。

图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。而边缘检测算法则是图像边缘检测问题中经典技术难题之一,它的解决对于我们进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题。

1.2 设计要求

设对图像边缘检测常用的两种算法LOG算子和Canny算子进行了分析和比较,并用MATLAB实现这两个算法。最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。

2 边缘检测简介

2.1 边缘检测的定义

图像边缘是图像最基本的特征,边缘在图像分析中起着重要的用。所谓边缘(edge)是指图像局部特征的不连续性。灰度或结构信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结的突变。边缘是一个区域的结束,也是另一个区域的开始,利用该征可以分割图像。当人们看一个有边缘的物体时,首先感觉到的便是边缘,如图

一条理想的边缘应该具有如图2.1(a) 所示模型的特性。每个像素都处在灰度级跃变的一个垂直的台阶上(例如图形中所示的水平线通过图像的灰度剖面图)。而实际上,诸如图像采集系统的性能、采样频率和获得图像的照明条件等因素的影响,得到的边缘往往是模糊的,边缘被模拟成具有“斜坡面”的剖面,如图2.1(b) 所示,在这个模型中不再有细线(宽为一个像素的线条),而是出现了边缘的点包含斜坡中任意点的情况。由此可以看到:模糊的边缘使边缘的“宽度”较大,面清晰的边缘使边缘的宽度较小。

图像的边缘有方向的幅度两个属性,沿边缘方向像素变化平缓,

垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检

测出来,通常用一阶导数或二阶导数来检测边缘,不同的是一阶导数

认为最大值对应边缘位置,而二阶导数以过零点对应边缘位置。实际上,对于图像中的任意方向上的边缘都可以进行类似的分析。图像边

缘检测中对任意点的一阶导数可以利用该点梯度的幅度来获得,二阶

导数可以用拉普拉斯算子得到。

2.2 图像边缘检测算法的研究内容

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。其目的是提高信息的相对质量,以便提取有用信息。图像边缘检测中的变换属于图像输入-图像输出模式,图像边缘检测是一种超越具体应用的过程,任何为解决某一特殊问题而开发的图像边缘检测新技术或新方法,几乎肯定都能找到其他完全不同的应用领域。

图像边缘检测的主要研究内容包括:

(1)图像获得和抽样,其中通过人眼观察的视野获取图像的问题有:最常用的图像获取装置——电视(TV)摄像机问题,对所获得信号进行独立的采样和数字化就可用数字形式表达景物中全部彩色内容;电荷-耦合装置,用作图像传感器,对景物每次扫描一行,或通过平行扫描获得图像;选择正确的分辨力或采样密度,一幅图像实质上是二维空间中的信号,所以适用于信号处理的法则同样适用于图像边缘检测,在放射学中常常需要高分辨力,要求图像至少达到2048像素×2048像素;灰度量化,图像强度也必须进行数字化,通常以256级(按1字节编码)覆盖整个灰度,一般一幅灰度分辨力为8位,空间分辨力为512像素×512像素的图像需0.25兆字节的存贮容量。

(2)图像分割,目的是把一个图像分解成它的构成成分,以便对每一目标进行测量。图像分割是一个十分困难的过程。但其测量结果的质量却极大地依赖于图像分割的质量。有两类不同的图像分割方法。一种方法是假设图像各成分的强度值是均匀的并利用这种均匀性;另一种方法寻找图像成分之间的边界,因而是利用图像的不均匀性。主要有直方图分割,区域生长,梯度法等。

(3)边界查索,用于检测图像中线状局部结构,通常是作为图像分割的一个预处理步骤。大多数图像边缘检测技术应用某种形式的梯度算子,可应用对水平方向、垂直方向或对角线方向的梯度敏感的梯度算子,用它们的复合结果可检测任意方向的边界。

(4)图像增强和复原,用于改进图像的质量。不同的增强技术可以用于不同的目的,这取决于应用的类型。如果打算直接观察图像,可以增强对比度。如果是为了进一步对图像作数字处理,可以选择分割(一种突出各图像成分之间的边界和线状结构的运算)。该技术可以是整体的或局部的,也可以在某个频域或者空间域中进行。图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的

部分。

(5)图像分类(识别),图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

(6)图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像边缘检测中也有着广泛而有效的应用。

3 边缘检测算子

3.1 Canny 算子

检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。图像边缘检测必须满足两个条件:一是必须能有效地抑制噪声;二是必须尽量精确确定边缘的位置。既要提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感。

3.1.1 Canny 边缘检测基本原理

(1)具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器,其采用一阶微分滤波器。采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部最大值,以此来确定图像边缘。根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny 边缘检测算子。

(2)类似与Marr (LOG )边缘检测方法,也属于先平滑后求导数的方法。

3.1.2 Canny 边缘检测算法

step1:用高斯滤波器平滑图象;

step2:用一阶偏导的有限差分来计算梯度的幅值和方向;

step3:对梯度幅值进行非极大值抑制;

step4:用双阈值算法检测和连接边缘。

其数学描述如下:

step1:

二维为高斯函数为:

),(y x G =221

πδ()???

? ??+-2222exp δy x 在某一方向n 上是),(y x G 的一阶方向导数为:

n G =n

G ??= n ▽G n=??????θθsin cos G ?=?????

??????

?????y G x G 式中:n 式方向矢量,▽G 是梯度矢量。

将图像),(y x f 与n G 作卷积,同时改变n 的方向,n G *),(y x f 取得最大值时的n 就是正交于检测边缘的方向。

step2:

X E =

*x G ??),(y x f , y E =y G ??*),(y x f ),(y x A =22Y X E E + ???

? ??=Y X

E E Arc tan θ ),(y x A 反映了图像(x,y)点处的边缘强度,θ是图像(x,y)点处的法向矢量。

step3:

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

解决方法:利用梯度的方向。

图示--非极大值抑制

四个扇区的标号为0到3,对应3*3邻域的四种可能组合。在每一点上,邻域的中心像素M 与沿着梯度线的两个像素相比。如果M 的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。

step4:

减少假边缘段数量的典型方法是对G(x,y)使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?

解决方法:双阈值算法进行边缘判别和连接边缘。

①首先是边缘判别: 凡是边缘强度大于高阈值的一定是边缘点;凡是边缘强度小于低阈值的一定不是边缘点;如果边缘强度大于低阈值又小于高阈值,则看这个像素的邻接像素中有没有超过高阈值的边缘点,如果有,它就是边缘点,如果没有,它就不是边缘点。

②其次是连接边缘: 双阈值算法对非极大值抑制图像作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图像G1(x,y)和G2(x,y)。由于G2(x,y)使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)

。双阈值

法要在G2(x,y)中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在G1(x,y)的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在G1(x,y)中收集边缘,直到将G1(x,y)连接起来为止。

实际上,还有多种边缘点判别方法,如:将边缘的梯度分为四种:水平、竖直、45度方向、135度方向。各个方向用不同的邻接像素进行比较,以决定局部极大值。若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比并不是最大的,那么将该像素置为零,即不是边缘。 此外,在实际应用中,检测效果还与滤波模板大小有关,当12+=σb N 时有较好的检测效果。

Canny 算子检测方法的优点:①低误码率,很少把边缘点误认为非边缘点;②高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;③抑制虚假边缘。

在这几种算法中除Roberts 算子外都使用了图像模板,模板运算是图像的一种处理手段——邻域处理,有许多图像增强效果都可以采用模板运算实现,如平滑效果,中值滤波,油画效果,图像的凹凸效果等等。在模板运算中,首先定义一个模板,模板的大小以3*3的较常见,也有2*2, 5*5或更大尺寸的。运算时,把模板中心对应到图像的每一个像素位置,然后按照模板对应的公式对中心像素和它周围的像素进行数学运算,算出的结果作为输出图像对应像素点的值。

这些经典的边缘提取算子,虽然各自不同,有不同的长处,但是它们也有共同的特点:每种算子对应的预定义的边缘是它们最适合使用的情形,也就是说它们有针对性。这一点在应用中是有优越性的,它们的针对性可以帮助我们完成特定的任务。同时这也是算子的局限性,对于一般的问题或者情况未知的问题,预定义边缘的方法可能不会达到最佳效果。

3.2 Log 算子

Log算法是基于二阶导数的边缘检测,这种方法是将高斯平滑滤波器和拉普

拉斯锐化滤波器结合了起来,先平滑掉噪声,再进行边缘检测。它是对图像进行滤波和微分的过程,是利用旋转对称的Log模板与图像做卷积,确定滤波器输出的零交叉位置。常用的Log算子是5×5的模板,如下所示

Log算法的特点是图像首先与高斯滤波器进行卷积,这样在平滑图像的同时降低了噪声,孤立的点噪声和较小的结构组织将被滤除。由于平滑会导致边缘的延伸,因此边缘检测只考虑那些具有局部梯度最大值的点为边缘点。正确地选用Log算子中的尺度参数是很重要的。直观上说,大的对应于更大的平滑范围,它有利于抑制噪声,但不利于定位精度;值小时,边缘定位精度高,但边缘细节变化多,信噪比低。因此应根据噪声水平和边缘定位精度的要求来决定的值。

4 设计过程

i=imread('fhx.jpg');%读取图像

a=rgb2gray(i);%将图像转换成灰度图像

BW1 = edge(a,'log');

BW2 = edge(a,'log',0);%敏感度阀值取0

BW3 = edge(a,'log',0.005); %敏感度阀值取0。005

BW4 = edge(a,'log',0.01); %敏感度阀值取0.01

BW5 = edge(a,'log',0.015); %敏感度阀值取0.015

Figure;

subplot(2,3,1);imshow(i);title('原图像');

subplot(2,3,2);imshow(BW1);title('log算子 thresh为默认');

subplot(2,3,3);imshow(BW2);title('log算子 thresh=0');

subplot(2,3,4);imshow(BW3);title('log算子 thresh=0.005');

subplot(2,3,5);imshow(BW4);title('log算子 thresh=0.01');

subplot(2,3,6);imshow(BW5);title('log算子 thresh=0.015');

i=imread('fhx.jpg'); %读取图像

a=rgb2gray(i); %将图像转换成灰度图像

BW1 = edge(a,'canny');

BW2 = edge(a,'canny',[0.001,0.005]); %敏感度阀值取[0.001,0.005]

BW3 = edge(a,'canny',[0.01,0.05]); %敏感度阀值取[0.01,0.05]

BW4 = edge(a,'canny',[0.05,0.1]); %敏感度阀值取[0.05,0.1]

BW5 = edge(a,'canny',[0.1,0.99]); %敏感度阀值取[0.1,0.99]

Figure;

subplot(2,3,1);imshow(i);title('原图像');

subplot(2,3,2);imshow(BW1);title('canny算子 thresh为默认');

subplot(2,3,3);imshow(BW2);title('canny算子 thresh=[0.001,0.005]'); subplot(2,3,4);imshow(BW3);title('canny算子 thresh=[0.01,0.05]'); subplot(2,3,5);imshow(BW4);title('canny算子 thresh=[[0.05,0.1]'); subplot(2,3,6);imshow(BW5);title('canny算子 thresh=[0.1,0.99]');

i=imread('fhx.jpg'); %读取图像

a=rgb2gray(i); %将图像转换成灰度图像

BW1 = edge(a,'log');

BW2 = edge(a,'canny');

Figure;

subplot(2,2,1);imshow(i);title('原图像'); subplot(2,2,3);imshow(BW1);title('Log算子'); subplot(2,2,4);imshow(BW2);title('Canny算子');

5 结果分析

图5.1 Log算子中敏感度阀值取值不同的图像对比

当敏感度阀值不断增大时,能检测到的边缘也不断减少,当敏感度阀值取0.005时,边缘检测效果比较好。

图5.2Canny算子中敏感度阀值取值不同的图像对比

当敏感度阀值取值范围不同时,检测到的边缘数量也不同,当取值在[0.05,0.1]时,边缘检测效果比较好,能够检测到大部分边缘

图5.3 Canny算子与Log算子的图像对比

由图5.3可以看出,Log算对噪声比较敏感,Canny此方法不容易受噪声的干扰,能够检测到真正的弱边缘。在edge函数中,最有效的边缘检测方法是Canny 方法。该方法的优点在于使用两种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。因此,这种方法不容易被噪声“填充”,更容易检测出真正的弱边缘。

LOG算子容易受尺度的影响,不同尺度下的边缘点要用不同尺度的LOG算子检测,Canny算子受尺度的影响不太明显,不同尺度下,边缘点的位置都有偏差,但几乎相同;LOG算子对噪声的抑制能力随着尺度的增加而增加,相同尺度下的Canny算子比LOG算子的抗噪声能力强,而LOG算子比Canny算子的边缘点准确;在尺度选择合适的情况下,LOG算子对图像边缘点检测的位置非常准确,能够保留边缘点比较细致的组织结构,而Canny算子对图像边缘检出率比较高,包括纹理区域,以及对比度很弱的边缘点,但是对这些边缘点的组织结构刻画得不是特别细致,边缘点的位置有小范围的偏差。Canny算子提取的边缘线性连接程度较好,对此类的边缘提取的比较完整,边缘细腻。Canny算子检测方法的优点:①低误码率,很少把边缘点误认为非边缘点;②高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;③抑制虚假边缘

结束语

本课题从理论上对两种经典的边缘检测算法Log算子和Canny算子进行分析,用MATLAB实现这些算法。并且使我了解相关知识图像局部特征的不连续性(相邻区域的交界)称为边缘。

Log算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到。Canny 算子也采用高斯函数对图像进行平滑处理,因此具有较强的去噪能力,但同样存在容易平滑掉一些边缘信息,其后所采用的一阶微分算子的方向性较Log算子要好,因此边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于,它使用2种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘相连时才将弱边缘包含在输出图像中,因此这种方法较其它方法而言不容易被噪声“填充”更容易检测出真正的弱边缘。通过对图的仿真实验结果可以看出,该算子在。边缘定位准确,连续性较好,虚假边缘少且边缘均具有单像素宽度。

最后,通过实例图像对不同边缘检测算法的效果进行分析,找出两种种算法的适用范围。通过本课题的研究拓宽了自己的知识面,为以后进一步学习数字图像处理打下了基础,提高了学生的独立工作能力和编程能力。

参考文献

[1] 张汗灵. MATLAB在图像处理中的应用[M]. 清华大学出版社,2008.

[2] 余成波. 数字图像处理及MATLAB实现[M]. 重庆大学出版社,2003.

[3] 何斌. Visual C++数字图像处理[M]. 人民邮电出版社,2002.

[4] 阮秋琦. 数字图像处理学[M]. 电子工业出版社,2001.

[5] 苏金明,,王永利. MATLAB图形图像[M]. 电子工业出版社,2005.

[6] 夏德深,傅德胜. 计算机图像处理及应用[M]. 东南大学出版社,2004.

[7] 贾永红. 计算机图像处理与分析[M]. 武汉大学出版社,2001.

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对Roberts,Sobel,Prewitt,Canny 和Log 及一种改进Sobel等几个微分算子的算法分析以及MATLAB 仿真实验对比,结果表明,Roberts,Sobel 和Prewitt 算子的算法简单,但检测精度不高,Canny 和Log 算子的算法复杂,但检测精度较高,基于Sobel的改进方法具有较好的可调性,可针对不同的图像得到较好的效果,但是边缘较粗糙。在应用中应根据实际情况选择不同的算子。 0 引言 边缘检测是图像分析与识别的第一步,边缘检测在计算机视觉、图像分析等应用中起着重要作用,图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘检测的效果会直接影响图像的分割和识别性能。边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法,本文仅将讨论微分算子法中的几个常用算子法及一个改进Sobel算法。 1 边缘检测

在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标、目标与背景、区域与区域( 包括不同色彩) 之间。边缘表明一个特征区域的终结和另一特征区域的开始。边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。边缘的类型很多,常见的有以下三种: 第一种是阶梯形边缘,其灰度从低跳跃到高; 第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小; 第三种是线性边缘,其灰度呈脉冲跳跃变化。如图1 所示。 (a) 阶梯形边缘(b) 屋顶形边缘 (b) 线性边缘 图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面N 阶导数的不连续性。如果灰度曲面在一个点的N 阶导数是一个Delta 函数,那么就

边缘检测

CSDN亲密携手阿里云重磅推出云邮箱服务HTML5群组诚募管理员,“活跃之星”活动火热进行中Canny边缘检测算法原理及其VC实现详解(一) 2011-10-20 21:39560人阅读评论(0)收藏举报图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。根据作者的理解和实践,本文对边缘检测的原理进行了描述,在此基础上着重对Canny检测算法的实现进行详述。 本文所述内容均由编程验证而来,在实现过程中,有任何错误或者不足之处大家共同讨论(本文不讲述枯燥的理论证明和数学推导,仅仅从算法的实现以及改进上进行原理性和工程化的描述)。 1、边缘检测原理及步骤 在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来

就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。 在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。 3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。 2、Canny边缘检测算法原理

经典图像边缘检测

经典图像边缘检测(微分法思想)——Sobel算子 2008-05-15 15:29Sobel于1970年提出了Sobel算子,与Prewitt算子相比较,Sobel算子对检测点的上下左右进一步加权。其加权模板如下: 经典图像边缘检测(微分法思想)——Roberts交叉算子 2008-05-14 17:16 如果我们沿如下图方向角度求其交叉方向的偏导数,则得到Roberts于1963年提出的交叉算子边缘检测方法。该方法最大优点是计算量小,速度快。但该方法由于是采用偶数模板,如下图所示,所求的(x,y)点处梯度幅度值,其实是图中交叉点处的值,从而导致在图像(x,y)点所求的梯度幅度值偏移了半个像素(见下图)。

上述偶数模板使得提取的点(x,y)梯度幅度值有半个像素的错位。为了解决这个定位偏移问题,目前一般是采用奇数模板。 奇数模板: 在图像处理中,一般都是取奇数模板来求其梯度幅度值,即:以某一点(x,y)为中心,取其两边相邻点来构建导数的近似公式:

这样就保证了在图像空间点(x,y)所求的梯度幅度值定位在梯度幅度值空间对应的(x,y)点上(如下图所示)。 前面我们讲过,判断某一点的梯度幅度值是否是边缘点,需要判断它是否大于设定的阈值。所以,只要我们设定阈值时考虑到加权系数产生的影响便可解决,偏导数值的倍数不是一个问题。 经典图像边缘检测(微分法思想)——Prewitt算子 2008-05-15 11:29 Prewitt算子 在一个较大区域中,用两点的偏导数值来求梯度幅度值,受噪声干扰很大。若对两个点的各自一定领域内的灰度值求和,并根据两个灰度值和的差来计算x,y的偏导数,则会在很

图像边缘检测各种算子MATLAB实现以及实际应用

《图像处理中的数学方法》实验报告 学生姓名:赵芳舟 教师姓名:曾理 学院:数学与统计学院 专业:信息与计算科学 学号: 联系方式: 梯度和拉普拉斯算子在图像边缘检测中的应用

一、数学方法 边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测。 1.(1)一阶导数:一阶导数即为梯度,对于平面上的图像来说,我们只需用到二维函数 的梯度,即:,该向量的幅值: ,为简化计算,省略上式平方根,得到近似值;或通过取绝对值来近似,得到:。 (2)二阶导数:二阶导数通常用拉普拉斯算子来计算,由二阶微分构成: 2.边缘检测的基本思想: (1)寻找灰度的一阶导数的幅度大于某个指定阈值的位置; (2)寻找灰度的二阶导数有零交叉的位置。 3.几种方法简介 (1)Sobel边缘检测器:以差分来代替一阶导数。Sobel边缘检测器使用一个3×3邻域的行和列之间的离散差来计算梯度,其中,每行或每列的中心像素用2来 加权,以提供平滑效果。 -1-21 000 121 -101 -202 -101

(2)Prewitt边缘检测器:使用下图所示模板来数字化地近似一阶导数。与Sobel检测器相比,计算上简单一些,但产生的结果中噪声可能会稍微大一些。 -1-1-1 000 111 -101 -101 -101 (3)Roberts边缘检测器:使用下图所示模板来数字化地将一阶导数近似为相邻像素之间的差,它与前述检测器相比功能有限(非对称,且不能检测多种45°倍数的边缘)。 -10 01 0-1 10 (4)Laplace边缘检测器:二维函数的拉普拉斯是一个二阶的微分定义: 010 1-41 010

matlab canny算子边缘检测函数代码

分享到: 2012-04-24 20:42网友采纳 clc clear all close all I = imread('cameraman.tif'); % 读入图像 imshow(I);title('原图') BW1 = edge(I,'canny'); % 调用canny函数 figure,imshow(BW1); % 显示分割后的图像,即梯度图像 title('Canny') 用Lena标准检测图像,图像与代码下面注明了是哪张图像。 一、没有噪声时的检测结果 1 原始图像 2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测 二、加入高斯噪声(μ=0,σ^2=0.01)检测结果 1 原始图像 2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测 三、加入高斯噪声(μ=0,σ^2=0.02)检测结果 1 原始图像 2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测 clear all; close all; warning off all; I = imread('lena.bmp'); %%如果是其他类型图像,请先转换为灰度图 %%没有噪声时的检测结果 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检测');

Sobel边缘检测算子

经典边缘检测算子比较 一 各种经典边缘检测算子原理简介 图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。灰度或结构等信息的突变处称为边缘。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能被检测出来,而检测出的边缘也不一定代表实际边缘。图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。 (a )图像灰度变化 (b )一阶导数 (c )二阶导数 基于一阶导数的边缘检测算子包括Roberts 算子、Sobel 算子、Prewitt 算子等,在算法实现过程中,通过22?(Roberts 算子)或者33?模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。拉普拉斯边缘检测算子是基于二阶导数的边缘检测算子,该算子对噪声敏感。一种改进方式是先对图像进行平滑处理,然后再应用二阶导数的边缘检测算子,其代表是LOG 算子。前边介绍的边缘检测算子法是基于微分方法的,其依据是图像的边缘对应一阶导数的极大值点和二阶导数的过零点。Canny 算子是另外一类边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。 1 Roberts (罗伯特)边缘检测算子 景物的边缘总是以图像中强度的突变形式出现的,所以景物边缘包含着大量的信息。由于景物的边缘具有十分复杂的形态,因此,最常用的边缘检测方法是所谓的“梯度检测法”。 设(,)f x y 是图像灰度分布函数; (,)s x y 是图像边缘的梯度值;(,)x y ?是梯度的方向。则有 [][]{} 1 2 22 (,)(,)(,)(,)(,)s x y f x n y f x y f x y n f x y = +-++- (1) (n=1,2,...) [][]{}1 (,)tan (,)(,)/(,)(,)x y f x y n f x y f x n y f x y ?-=+-+- (2)

数字图像课程设计报告:边缘检测算子的比较

数字图像处理课程设计报告题目数字图像课程设计—各边缘检测算子的对比 系别电气系 班级xxxxxxxxxxxxx学号xxxxxxxxxxxx 姓名xxxx指导老师xxxx 时间xxxxxxx

目录 一、课题设计的任务 (3) 1.1 课题选择 (3) 1.2 课题设计的背景 (3) 二、课题原理简介 (3) 三、经典边缘检测算子性能比较及程序 (6) 3.1MATLAB程序仿真 (6) 3.2实验结果的比较 (10) 四、实验结论 (11) 五、参考文献 (11)

一、课题设计的任务 1.1课题选择 各边缘检测的对比 1.2 课题设计的背景 我们感知外部世界的途径主要是听觉和视觉。而视觉主要是获取图像的信息,例如图片的特征和周围的背景区域的差别。这种灰度或结构等信息的突变,就称之为边缘。图像的边缘对人类视觉而言具有重要意义,有些差别很细微,人眼很难观察,这时就需要计算机图像处理技术,物体边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘。 本次我的课程设计就利用了MATLAB软件,通过实验,对各边缘检测算子进行了对比和研究,例如基于一阶导数的边缘检测算子Roberts算子、Sobel算子,基于二阶导数的拉普拉斯算子,canny边缘检测算子等。并且在4天内完成了课程设计作业,基本达到既定要求。 二、课题原理简介 边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。检测出的边缘并不等同于实际目标的真实边缘。图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。 (a)图像灰度变化(b)一阶导数(c)二阶导数 下面是一些主要的边缘检测算子的原理介绍 1 Roberts(罗伯特)边缘检测算子 景物的边缘总是以图像中强度的突变形式出现的,所以景物边缘包含着大量的信息。由于景物的边缘具有十分复杂的形态,因此,最常用的边缘检测方法 是所谓的“梯度检测法”。设(,) s x y是图像边缘的 f x y是图像灰度分布函数;(,) 是梯度的方向。则有 梯度值;(,) x y

canny边缘检测算法代码

canny算子代码 void CreatGauss(double sigma, double **pdKernel, int *pnWidowSize); void GaussianSmooth(SIZE sz, LPBYTE pGray, LPBYTE pResult, double sigma); void Grad(SIZE sz, LPBYTE pGray, int *pGradX, int *pGradY, int *pMag); void NonmaxSuppress(int *pMag, int *pGradX, int *pGradY, SIZE sz, LPBYTE pNSRst); void EstimateThreshold(int *pMag, SIZE sz, int *pThrHigh, int *pThrLow, LPBYTE pGray, double dRatHigh, double dRatLow); void Hysteresis(int *pMag, SIZE sz, double dRatLow, double dRatHigh, LPBYTE pResult); void TraceEdge(int y, int x, int nThrLow, LPBYTE pResult, int *pMag, SIZE sz); void Canny(LPBYTE pGray, SIZE sz, double sigma, double dRatLow, double dRatHigh, LPBYTE pResult); #include "afx.h" #include "math.h" #include "canny.h" // 一维高斯分布函数,用于平滑函数中生成的高斯滤波系数 void CreatGauss(double sigma, double **pdKernel, int *pnWidowSize) { LONG i; //数组中心点 int nCenter; //数组中一点到中心点距离 double dDis; //中间变量 double dValue;

经典边缘检测算子对比

经典边缘检测算子比较 张丽 南京信息工程大学信息与计算科学系,南京210044 摘要:图像边缘检测技术是图像分割、目标识别、区域形态提取等图像分析领域中十分重要的基础。本文简要介绍各种经典图像边缘检测算子的基本原理,用Matlab仿真实验结果表明各种算子的特点及对噪声的敏感度,为学习和寻找更好的边缘检测方法提供参考价值。 关键字:图像处理;边缘检测;算子;比较 引言 图像的边缘时图像最基本的特征之一。所谓边缘(或边沿)是指周围像素灰度有阶跃性变化或“屋顶”变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,因此它是图像分割依赖的重要特征。图像边缘对图像识别和计算机分析十分有用,边缘能勾划出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息(如方向、阶跃性质、形状等)。从本质上说,图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反应,它标志着一个区域的终结和另一个区域的开始。 边缘检测技术是所有基于边界分割的图像分析方法的第一步,首先检测出图像局部特性的不连续性,再将它们连成边界,这些边界把图像分成不同的区域,检测出边缘的图像就可以进行特征提取和形状分析。为了得到较好的边缘效果,现在已经有了很多的边缘检测算法以及一些边缘检测算子的改进算法。但各算子有自己的优缺点和适用领域。本文着重对一些经典边缘检测算子进行理论分析、实际验证并对各自性能特点做出比较和评价,以便实际应用中更好地发挥其长处,为新方法的研究提供衡量尺度和改进依据。 一各种经典边缘检测算子原理简介 图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。灰度或结构等信息的突变处称为边缘。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地

Canny边缘检测

Canny边缘检测 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。根据作者的理解和实践,本文对边缘检测的原理进行了描述,在此基础上着重对Canny检测算法的实现进行详述。 本文所述内容均由编程验证而来,在实现过程中,有任何错误或者不足之处大家共同讨论(本文不讲述枯燥的理论证明和数学推导,仅仅从算法的实现以及改进上进行原理性和工程化的描述)。 1、边缘检测原理及步骤 在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。 在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。

边缘检测算子比较

边缘检测算子比较 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者正在试图在边缘提取中加入高层的语义信息。 课题所用图像边缘与边界应该算是等同的。 在实际的图像分割中,往往只用到一阶和二阶导数,虽然,原理上,可以用更高阶的导数,但是,因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可以说明灰度突变的类型。在有些情况下,如灰度变化均匀的图像,只利用一阶导数可能找不到边界,此时二阶导数就能提供很有用的信息。二阶导数对噪声也比较敏感,解决的方法是先对图像进行平滑滤波,消除部分噪声,再进行边缘检测。不过,利用二阶导数信息的算法是基于过零检测的,因此得到的边缘点数比较少,有利于后继的处理和识别工作。 各种算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位; Roberts算子:边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。 Sobel算子:Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小。 Isotropic Sobel算子:加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。 在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的,另一个是检测垂直平边沿的。各向同性Sobel 算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel算子的处理方法。 由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们可以给出阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

图像边缘检测算子

课程设计任务书 学院信息科学与工程专业电子信息工程 学生姓名*** 班级学号09******* 课程设计题目图像边缘检测算子 课程设计目的与要求: 设计目的: 1.熟悉几种经典图像边缘检测算子的基本原理。 2.用Matlab编程实现边缘检测,比较不同边缘检测算子的实验结果。设计要求: 1.上述实验内容相应程序清单,并加上相应的注释。 2.完成目的内容相应图像,并提交原始图像。 3.用理论对实验内容进行分析。 工作计划与进度安排: 2012年 06月29 日选题目查阅资料 2012年 06月30 日编写软件源程序或建立仿真模块图 2012年 07月01 日调试程序或仿真模型 2012年 07月01 日结果分析及验收 2012年 07月02 日撰写课程设计报告、答辩 指导教师: 2012年 6月29日专业负责人: 2012年 6月29日 学院教学副院长: 2012年 6月29日

摘要 边缘检测是数字图像处理中的一项重要内容。本文对图像边缘检测的几种经典算法(Roberts算子、Sobel算子、Prewitt算子)进行了分析和比较,并用MATLAB实现这几个算法。最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。 关键词:图像处理;边缘检测;Roberts算子;Sobel算子;Prewitt算子

目录 第1章相关知识.................................................................................................... IV 1.1 理论背景 (1) 1.2 数字图像边缘检测意义 (1) 第2章课程设计分析 (3) 2.1 Roberts(罗伯特)边缘检测算子 (3) 2.2 Prewitt(普瑞维特)边缘检测算子 (4) 2.3 Sobel(索贝尔)边缘检测算子 (5) 第3章仿真及结果分析 (7) 3.1 仿真 (7) 3.2 结果分析 (8) 结论 (10) 参考文献 (11)

对人脸边缘检测的几种算子实验比对

第07卷2007盔第06期 06月 V01.7 June No06 2007 对人脸边缘检测的几种算子实验比对 王晓红熊盛武 摘要:对于图像处理的一个研究分支一人脸识别与检测,自美国“9.11”事件后被广泛重视,并正在从实验室走向商业化。在这个过程中,科技工作者们有着众多不同的尝试方式,本文就一些经典的算法公式,选择不同的算子,通过MATLAB语言表现出来。 关键词:模式识别图像处理人脸检测算子 中图分类号:TP391.41文献标识码:A文章编号:1006-7973(2007)06-0145-02 一、前言 纵观人类历史,从制造简单的工具,到钻木取火;从四大发明到蒸汽机的使用;作为万物之灵的人类还制造了汽车、飞机、无线电、太空船…..直到一九四六年第一台计算机的出现,人类所发明的工具才真正有了和人类自身大脑作比较的工具一电脑!人类一直梦想着更接近于人的电脑来沿伸人 类大脑的工作。这就有了“fifthgenerationcomputer'’,这是日本在上世纪八十年代初制定的国家十年计划的目标:听得懂话,可识别图像,可以自我学习、可以判断和思考等等具有智能的计算机。可是时间已经过去了二十多年了,这个目标还没有实现。说明还有许多技术上的瓶颈还有待突破。想要让计算机做到以前只能由人类才能做到的事情,具备人的智能,具有对各种事件进行分析、判断的能力,还有很多的路要走。下面仅从识别图像这个方向来探讨人脸的识别。 二、人脸识别的发展现状 生物特征的识别技术从20世纪末兴起,伴随计算机硬件和信息技术的飞速发展使得地球变成了“地球村”,经过使人震惊的“9?11”事件后,现代社会对身份识别提出了更多、更高的要求。生物识别在图像识另Ⅱ领域也受到了空前的重视。生物识别技术已经在商业方面有了许多应用,并有不断纵深的趋势。据国际生物集团(InternationalBiometricGroup,IBG)的统计:到2007年将达到40亿美元。并且美国在“9?11”遇袭事件后,连续签署了3个国家安全法案(爱国者法案、航空安全法案、边境签证法案),要求必须采用生物认证技术。这对生物识别技术的应用起到了推波助澜的作用。 所谓生物特征的识别(BiometricIdentificationTechnology),就是利用人所特有的生物特征,包括生理特征和行为特征,用这些特征来进行人的身份鉴别。常用的有:脸相、虹膜、指纹、掌纹等;常用的行为特征包括:声音、笔迹、步姿等。生物特征具有以下一些特点:比如说人都有手掌,但每个人的掌纹都不一样,且这种独有的唯一的特征并不随时间变化而变化;在实际的应用中,人类特有的这些特征是可采集的,人脸的识别正是符合了这样一些特点,并且人脸识别的特点是以人为准,最大程度地确保了鉴别的可靠性。 三、人脸识别与其它识别技术的区别 在这些识别技术中,人脸识别技术(FaceRecognitionTechniques,FRT)是采用人的面部特征来确定一个人身份的,是生物特征识别技术的一个主要方向。和其他生物特征比,人脸特征的提取更具有主动、友善、无打扰等优点,基于这些特点,人脸识别技术才成为被广泛使用的方法。但是,人脸不是一成不变的,同一个人在不同的年龄段会有变化,另外光线、姿势、面部表情、面部附属物(如胡子、眼镜)等变化的影响,人脸的识别的准确度会大打折扣。就目前而言,大多的人脸识别系统还远未达到人类婴幼儿的识别能力,因此,人脸识别还有许多工作可做。 四、人脸识别方法之一——人脸检测的边缘检测方法 人脸识另lj技术包涵的内容很多,如模式识别、图像处理、计算机视觉、计算机图形学、各种数学算法的引用等等。 对于人脸的识别其首要目的是能够在图片中检测出来人脸来,即人脸检测,而人脸的检测最重要的是对其边缘的提取。图像的边缘点产生的原因虽然不同,但归根结底都是由于图像的灰度不连续或者灰度急剧变化的所造成的,利用这个特性,我们可以采用微分运算,得到边缘点,从而得到人脸的轮廓。 边缘检测是根据图像的灰度值或者色彩的急剧变化的特点,采用各种微分运算进行边缘检测的。下面就几种微分法进行理论比较。 首先需要介绍微分的原理: Af(i,j)=[,(?+1,j)一f(i,j)】十[厂(j,J+1)一f(i,j)】 m¨=誓+熹 为方便编程离散化后的差分方程为: 收稿日期:2007—3—21 作者简介:王晓红女武汉理工大学硕士研究生武汉商业服务学院讲师熊盛武男武汉理工大学教授博导  万方数据

哈夫变换和Canny边缘检测算法及其实现代码

哈夫变换和Canny边缘检测算法 摘要在图象边缘检测中往往要求所检测到的边缘具有封闭特性,本文详细地分析了目前常用的两种算法:哈夫变换和Canny边缘检测算法,最后,探讨边缘算子应满足的准则。关键词边缘检测;闭合性;哈夫变换;Canny算子 1引言 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。在我们常用的几种用于边缘检测的算子中Laplace算子常常会产生双边界;而其他一些算子如Sobel算子又往往会形成不闭合区域。本文主要讨论了在边缘检测中,获取封闭边界区域的算法。 2 图象边缘检测的基本步骤 (1)滤波。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。 (2)增强。增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。 (3)检测。但在有些图象中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。 (4)定位。精确确定边缘的位置。 图1 边缘检测酸法的基本步骤 3 边界闭合的算法 3.1 哈夫变换[3] 由于噪声的存在,用各种算子得到的边缘象素不连续,但是由于边缘象素之间有一定的连续性,我们就可以根据边缘象素在梯度幅度或梯度方向上的连续性把他们连接起来。具体说来,如果象素(s,t)在象素(x,y)的领域且它们的梯度幅度与梯度方向在给定的阈值下满足: T是幅度阈值;A是角度阈值; 那么,如对所有的边缘象素都进行上述的判断和连接就可以得到一个闭合的边界。哈夫变换方法是利用图像得全局特性而对目标轮廓进行直接检测的方法,在已知区域形状的条

Canny边缘检测算法总结

一.Canny边缘检测算法原理 JohnCanny于1986年提出Canny算子,属于是先平滑后求导数的方法。其处理过程大体上分为下面四部分。 1. 对原始图像进行灰度化 Canny算法通常处理的图像为灰度图,因此如果获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RGB格式的彩图为例,通常灰度化采用的方法主要有: 方法1:Gray=(R+G+B)/3; 方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点) 至于其他格式的彩色图像,可以根据相应的转换关系转为RGB然后再进行灰度化;在编程时要注意图像格式中RGB的顺序通常为BGR。 2. 对图像进行高斯滤波 图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。 1)高斯核实现 上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。 上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。 在求得高斯核后,要对整个核进行归一化处理。 2)图像高斯滤波 对图像进行高斯滤波,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。 通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。实际工程经验表明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案。 3. 用一阶偏导的有限差分来计算梯度的幅值和方向

Sobel边缘检测算子

经典边缘检测算子比较 一 各种经典边缘检测算子原理简介 图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。灰度或结构等信息的突变处称为边缘。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能被检测出来,而检测出的边缘也不一定代表实际边缘。图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。 (a )图像灰度变化 (b )一阶导数 (c )二阶导数 基于一阶导数的边缘检测算子包括Roberts 算子、Sobel 算子、Prewitt 算子等,在算法实现过程中,通过22?(Roberts 算子)或者33?模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。拉普拉斯边缘检测算子是基于二阶导数的边缘检测算子,该算子对噪声敏感。一种改进方式是先对图像进行平滑处理,然后再应用二阶导数的边缘检测算子,其代表是LOG 算子。前边介绍的边缘检测算子法是基于微分方法的,其依据是图像的边缘对应一阶导数的极大值点和二阶导数的过零点。Canny 算子是另外一类边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。

数字图像处理几种边缘检测算子的比较

数字图像处理 几种边缘检测算子的比较 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图 像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。 这些包括:深度上的不连续、表面方向不连续、物质属性变化和场景照明变化。边缘 检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像边缘检测 大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结 构属性。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一 类和基于零穿越的一类。基于查找的方法通过寻找图像一阶导数中的最大和最小值 来检测边界,通常是将边界定位在梯度最大的方向。基于零穿越的方法通过寻找图 像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过 零点。 人类视觉系统认识目标的过程分为两步:首先,把图像边缘与背景分离出来;然后,才能知觉到图像的细节,辨认出图像的轮廓。计算机视觉正是模仿人类视觉的这个过程。因此在检测物体边缘时,先对其轮廓点进行粗略检测,然后通过链接规则把原来 检测到的轮廓点连接起来,同时也检测和连接遗漏的边界点及去除虚假的边界点。图 像的边缘是图像的重要特征,是计算机视觉、模式识别等的基础,因此边缘检测是图 象处理中一个重要的环节。然而,边缘检测又是图象处理中的一个难题,由于实际景 物图像的边缘往往是各种类型的边缘及它们模糊化后结果的组合,且实际图像信号存 在着噪声。噪声和边缘都属于高频信号,很难用频带做取舍。 这就需要边缘检测来进行解决的问题了。边缘检测的基本方法有很多,一阶的有Roberts Cross算子,Prewitt算子,Sobel算子,Canny算子, Krisch算子,罗盘算子;而二阶的还有Marr-Hildreth,在梯度方向的二阶导数过零点。现在就来 简单介绍一下各种算子的算法

Canny边缘检测算法总结

Canny边缘检测算法总结

一.Canny边缘检测算法原理 JohnCanny于1986年提出Canny算子,属于是先平滑后求导数的方法。其处理过程大体上分为下面四部分。 1. 对原始图像进行灰度化 Canny算法通常处理的图像为灰度图,因此如果获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RGB格式的彩图为例,通常灰度化采用的方法主要有:方法1:Gray=(R+G+B)/3; 方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点) 至于其他格式的彩色图像,可以根据相应的转换关系转为RGB然后再进行灰度化;在编程时要注意图像格式中RGB的顺序通常为BGR。 2. 对图像进行高斯滤波

图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。 1)高斯核实现 上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。 上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。 在求得高斯核后,要对整个核进行归一化处理。 2)图像高斯滤波 对图像进行高斯滤波,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参

数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。 通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。实际工程经验表明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案。 3. 用一阶偏导的有限差分来计算梯度的幅 值和方向 关于图像灰度值得梯度可使用一阶有限差分来进行近似,这样就可以得图像在x和y 方向上偏导数的两个矩阵。常用的梯度算子有如下几种: 1)Roberts算子

图像处理之四种边缘检测算子比较

数字图像处理 第三次作业 SpadesQ, Sun Yat-sen University 2017/4/27 1.边缘检测 边缘一般是指图像在某一局部强度剧烈变化的区域。强度变化一般有两种情况: ●阶跃变化 ●屋顶变化 边缘检测的任务: 找到具有阶跃变化或者屋顶变化的像素点的集合。 边缘检测基本原理: 既然边缘是灰度变化最剧烈的位置,最直观的想法就是求微分。 对于第一种情况:一阶微分的峰值为边缘点,二阶微分的零点为边缘点。 对于第二种情况:一阶微分的零点为边缘点,二阶微分的峰值为边缘点。

2.matlab内置函数

分析:通过对Roberts,Sobel,Prewitt,Log和Canny进行MATLAB 仿真实验对比,结果表明,Sobel,Prewitt和Roberts算子的算法简单,但检测精度不高,Log和Canny算子的算法复杂,但检测精度较高。在应用中应根据实 际情况选择不同的算子。

3.四种算子对比分析 3.1 Sobel算子 Sobel算子在边缘检测算子扩大了其模版,在边缘检测的同时尽量削弱了噪声。其模版大小为3×3,其将方向差分运算与局部加权平均相结合来提取边缘。在求取图像梯度之前,先进行加权平均,然后进行微分,加强了对噪声的一致。Sobel 算子所对应的卷积模版为: 图像中的每个像素点和以上水平和垂直两个卷积算子做卷积运算后,再计算得到梯度幅值G ( x,y),然后选取适当的阈值τ,若G ( x,y)>τ,则(i ,j)为边缘点,否则,判断(i,j)为非边缘点。由此得到一个二值图像{ g (i,j)},即边缘图像。Sobel 算子在空间上比较容易实现,不但产生较好的边缘检测效果,同时,由于其引入了局部平均,使其受噪声的影响也较小。若使用较大的邻域,抗噪性会更好,但也增加了计算量,并且得到的边缘比较粗。在对精度要求不是很高的场合下,

相关文档
最新文档