文档库 最新最全的文档下载
当前位置:文档库 › Sobel边缘检测算子

Sobel边缘检测算子

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)

式(1)与式(2)可以得到图像在(x,y )点处的梯度大小和梯度方向。 将式(1)改写为:

{}

1

2

22

(,)g x y =+ (3)

(,)g x y 称为Roberts 边缘检测算子。式中对(,)f x y 等的平方根运算使该处理类似于人类视觉系统的发生过程。事实上Roberts 边缘检测算子是一种利用局部差分方法寻找边缘的算子,Robert 梯度算子所采用的是对角方向相邻两像素值之差,所以用差分代替一阶偏导,算子形式可表示如下:

(,)(,)(1,1)

(,)(1,)(,1)x y

f x y f x y f x y f x y f x y f x y ?=---????=---?? (4)

上述算子对应的两个22?模板如图(A )所示。实际应用中,图像中的每个像素点都用这两

个模板进行卷积运算,为避免出现负值,在边缘检测时常提取其绝对值。

(a )

(b ) 图(A )Robert 算子模板

2 Sobel (索贝尔)边缘检测算子

该算子是由两个卷积核1(,)g x y 与2(,)g x y 对原图像(,)f x y 进行卷积运算而得到的。其数学表达式为:

121111(,)(,)(,),(,)(,)M N M N

m n m n S x y MAX f m n g i m j n f m n g i m j n ====??

=----????

∑∑∑∑(5)

实际上Sobel 边缘算子所采用的算法是先进行加权平均,然后进行微分运算,我们可以

用差分代替一阶偏导,算子的计算方法如下:

[][][][]

(,)(1,1)2(,1)(1,1)(1,1)2(,1)(1,1)(,)(1,1)2(1,)(1,1)(1,1)2(1,)(1,1)x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y ??=-++++++---+-++-???=--+-+-+-+-+++++?? (6)

Sobel 算子垂直方向和水平方向的模板如图(B )所示,前者可以检测出图像中的水平方向的边缘,后者则可以检测图像中垂直方向的边缘。实际应用中,图像中的每一个像素点都用这两个卷积核进行卷积运算,取其最大值作为输出。运算结果是一幅体现边缘幅度的图像。

(a ) (b ) 图(B )Sobel 算子模板

3 Prewitt (普瑞维特)边缘检测算子

Prewitt 边缘检测算子就是一种利用局部差分平均方法寻找边缘的算子,它体现了三对像素点像素值之差的平均概念,因为平均能减少或消除噪声,为此我们可以先求平均,再求差分,即利用所谓的平均差分来求梯度。用差分代替一阶偏导可得算子形式如下:

[][][][]

(,)(1,1)(,1)(1,1)(1,1)(,1)(1,1)(,)(1,1)(1,)(1,1)(1,1)(1,)(1,1)x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y ??=+++++-+-+-+-+--???=--+-+-+-+-+++++?? (7) Prewitt 边缘检测算子的两个模板如图(C )所示,它的使用方法同Sobel 算子一样,图像中的每个点都用这两个核进行卷积,取得最大值作为输出。Prewitt 算子也产生一幅边缘图像。

(a ) (b )

图(C )Prewitt 算子模板

4 Laplacian (拉普拉斯)边缘检测算子

对于阶跃状边缘,其二阶导数在边缘点出现过零交叉,即边缘点两旁的二阶导数取异号,据此可以通过二阶导数来检测边缘点。拉普拉斯边缘检测算子正是对二维函数进行二阶导数运算的标量算子,它的定义是:

22

2

22(,)(,)(,)f x y f x y f x y x y

???=+?? (8)

用差分代替二阶偏导时,与前述三个一阶导数算子不同,拉普拉斯算子的形式可表示如下:

22(,)(1,)(1,)(,1)(,1)4(,)(,)(1,1)(,1)(1,1)(1,)(1,)(1,1)(,1)(1,1)8(,)

f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y ??=++-+++--???=--+-++-+-++??+-++++++-

(9)

拉普拉斯边缘检测算子的模板如图(D )所示,模板的基本特征是中心位置的系数为正,其余位置的系数为负,且模板的系数之和为零。它的使用方法是用图中的两个点阵之一作为卷积核,与原图像进行卷积运算即可。拉普拉斯算子又是一个线性的移不变算子,它的传递函数在频域空间的原点为零,因此,一个经拉普拉斯滤波过的图像具有零平均灰度。拉普拉斯检测模板的特点是各向同性,对孤立点及线端的检测效果好,但边缘方向信息丢失,对噪声敏感,整体检测效果不如梯度算子。因此,它很少直接用于边缘检测。但注意到与Sobel 算子相比,对图像进行处理时,拉普拉斯算子能使噪声成分得到加强,对噪声更敏感。

(a ) (b ) 图(D )Laplace 算子模板

5 Marr-Hildreth (马尔)边缘检测算子

实际应用中,由于噪声的影响,对噪声敏感的边缘检测点检测算法(如拉普拉斯算子法)可能会把噪声当边缘点检测出来,而真正的边缘点会被噪声淹没而未检测出。为此Marr 和Hildreth 提出了马尔算子,因为是基于高斯算子和拉普拉斯算子的,所以也称高斯-拉普拉斯(Laplacian of Gaussian,LoG )边缘检测算子,简称LoG 算子。该方法是先采用高斯算子对原图像进行平滑又降低了噪声,孤立的噪声点和较小的结构组织将被滤除由于平滑会导致边缘的延展,因此在边缘检测时仅考虑那些具有局部最大值的点为边缘点,这一点可以用拉普拉斯算子将边缘点转换成零交叉点,然后通过零交叉点的检测来实现边缘检测。所谓零交叉点就是:如果一个像素处的值小于一0θ,而此像素8-连通的各个像素都是大于0θ (0θ是一个正数),那么这个像素就是零交叉点。这样还能克服拉普拉斯算子对噪声敏感的缺点,减少了噪声的影响。二维高斯函数为

22

2

(,)()2x y h x y exp σ+=-

(10) 则连续函数(,)f x y 的LoG 边缘检测算子定义为

[]2(,)(,)(,)G x y h x y f x y =-?*

2

(,)*(,)h x y f x y ??=-???

(,)*(,)H x y f x y = (11)

2222

4

2(,)(,)exp()2r r H x y h x y σσσ

-=-?=- (12) 其中222

,r x y σ=+是标准差。算子(,)H x y 是一个轴对称函数,其横截面如图(E )所示。

由于它相当的平滑,能减少噪声的影响,所以当边缘模糊或噪声较大时,利用(,)H x y 检测过零点能提供较可靠的边缘位置。

图(E )H (x,y )的截面图

LoG 算子在(x,y )空间具有以原点为中心旋转的对称性,LoG 滤波器具有如下三个显著特点:

? 该滤波器中的高斯函数部分对图像具有平滑作用,可有效地消除尺度远小于高斯分布因子σ的噪声信号。

? 高斯函数在空域和频域内都具有平滑作用。 ? 该滤波器采用拉普拉斯算子2?可以减少计算量。

马尔算子用到的卷积模板一般比较大(典型半径为8-32个像素),不过这些模板可以分解为一维卷积来快速计算。常用的LoG 算子是55?模板,如图(F )。与其他边缘检测算子一样,LoG 算子也是先对边缘做出假设,然后再这个假设下寻找边缘像素。但LoG 算子对边缘的假设条件最少,因此它的应用范围更广。另外,其他边缘检测算子检测得到的边缘时不连续的,不规则的,还需要连接这些边缘,而LoG 算子的结果没有这个缺点。对于LoG 算子边缘检测的结果可以通过高斯函数标准偏差σ来进行调整。即σ值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测的性能;σ值越小,又有可能平滑不完全而留有太多的噪声。因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的σ值。一般来说,使用大σ值的滤波器产生鲁棒边缘,小的σ值的滤波器产生精确定位的边缘,两者结合,能够检测出图像的最佳边缘。数学上以证明,马尔算子是按零交叉检测阶跃状边缘的最佳算子。但在实际图像中要注意到,高斯滤波的零交叉点不一定全部是

边缘点,还需要进一步对其真伪进行检验。

图(F )LoG 算子是55?模板

6 Kirsch (凯西)边缘检测算子

Kirsch 边缘检测算子由8个卷积核组成,图像中的每个像素点都用这8个核进行卷积运算,即须求出(,)f x y 8个方向的平均差分。像素与不同卷积核卷积运算的结果给出了相应特定边缘方向的响应。从所有方向相应中找出一个最大值,就给出了经过该点的边缘幅度图像的输出值。使输出最大的卷积核的序号既是边缘方向的编码。该算子还可以较好地抑制边缘检测的噪声。假设原始图像的33?子图像如图(G )所示。

图(G )33?子图像示意图 则边缘的梯度大小为

(,)max 1,max(54:0,1,...7)k k G i j s t k =?-=??? (13) 式中

12347

...k k k k k k k k s a a a t a a a +++++=++=+++ (14)

式(14)中的下标超过7就用8去除并取余数。k=0,1,...,7实际上就是使用了8个模板, 8个方向的模板如图(H )所示

图(H )Kirsch 算子的8方向模板

从上面的8个方向模板可以看出,每两个卷积核(模板)之间的夹角为45度。 对于图像T ,模块为k W (k=1,2,...,8),则边缘强度在点(x,y )处为:

{}(,)max k E x y W T =? {k=1,2,...,8} (15) 其中,以?表示点乘运算。如果取最大值的模作为边缘强度,同时用考虑最大值符号的方法来确定相对应的边缘方向,则考虑到各模板的对称性,只需要前四个模板即可。对于Kirsch 算子也有几种不同的形式,如图(I )所示8方向的55?模板就是一种比较常用的方式。

图(I)8方向

Kirsch

算子的前4个

如果对图像进行二值化分析,可以发现图像中非边缘点往往低于阈值,而大多数边缘点则往往高于该阈值。Kirsch方向算子正是利用了这种现象,在进行边缘的检测时,首先用一个中偏低的灰度阈值对梯度图像进行二值化,从而检测出物体与背景,物体与背景被处于阈值之上的边界分开。随着阈值的不断提高,也促使物体和背景的一同增长,当达到接触而又不合并的临界状态时,就可以用接触点来定义边缘。

确定了处于边缘的像素点之后,理想的情形是这些边缘点都是连续的,把各个点连接起来就构成了区域的边缘,各个区域也就分割开来了。但是,在很多情况下,边缘点或边缘线端之间会有间断。所以通常情况下,如果边缘点很稀疏,那么就要用分段线性或高阶样条曲线来拟合这些点,从而形成一条可以用来分割区域的适用边界。总之,虽然Kirsch方向算子的计算开销比较大,但却可以产生出最大的梯度边界。与之类似的另一种比较常用的方向算子是由12个55

?卷积核组成的Nevitia方向算子,其每两个卷积核之间的夹角为30度,该算子充分利用了各位置的权值来调整边缘的方向。

7 canny(凯尼)边缘检测算子

前面介绍的边缘检测算子都是局域窗口梯度算子,由于它们对噪声敏感,所以在处理实际图像时效果并不是十分理想。根据边缘检测的有效性和定位的可靠性,Canny研究了最优边缘检测器所需的特性,给出了评价边缘检测性能优劣的三个指标:

①高的准确性,在检测的结果里应尽量多的包含真正的边缘,而尽量少的包含假边缘。

②高的精确度,检测到的边缘应该在真正的边界上。

③单像素宽,要有很高的选择性,对每个边缘有唯一的响应。

针对这三个指标,Canny提出了用于边缘检测的一阶微分滤波器'()

h x的三个最优化标准则,即最大信噪比准则、最优过零点定位准则和单边缘响应准则。具体如下:

(a )信噪比准则

SNR =

(16)

式中,()G x 为边缘函数;()h x 为带宽为W 的低通滤波器的脉冲响应;σ是高斯噪声的均方差。

(b )定位精确度准则

L 为边缘的定位精度,定义如下:

L =

(17)

式中,'()G x 和'()h x 为()G x 和()h x 的一阶导数;L 是对边缘定位精确程度的度量,L 越大定位精度越高。

(c )单边缘响应准则

要保证对但边缘只有一个响应,检测算子的脉冲响应导数的零交叉点平均距离应该满

足:

'

()zca D f = (18)

式中,''()h x 是()h x 的二阶导数;'f 是进行边缘检测后的图像。

这三个准则是对前述边缘检测指标的定量描述。抑制噪声和边缘精确定位是无法同时得到满足的,即边缘检测算法通过图像平滑算子去除噪声,势必增加边缘定位的不确定性;反之,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。因此,在实际应用中只能寄希望于再抑制噪声和提高边缘定位精度之间实现一个合理的折衷。 值得庆幸的是,有一个线性算子可以在抵抗噪声与边缘检测之间获得一个最佳的折衷,这个算子就是高斯函数的一阶导数。高斯函数与原图的卷积达到了抵抗噪声的作用,而求导数,则是检测景物边缘的手段。

对于阶跃形的边缘,Canny 推导出的最优边缘检测器的形状与高斯函数的一阶导数类似,因此Canny 边缘检测器就是高斯函数的一阶导数构成的。我们知道,高斯函数是圆对称的,因此,Canny 算子在边缘方向上是对称的,在垂直于边缘的方向上是反对称的。这就意味着该算子对最急剧变化方向上的边缘特别敏感,但在沿边缘方向上是不敏感的。

设二维高斯函数为 22

22

1

(,)exp()22x y G x y πσσ+=

- (19) 其中,σ是高斯函数的分布参数,可用以控制对图像的平滑程度。

最优阶跃边缘检测算子是以卷积*(,)G f x y ?为基础的,边缘强度为*(,)G f x y ?,而边缘方向为*(,)*(,)

G f x y G f x y ρ?=

?。

从高斯函数的定义可知,该函数是无限拖尾的,在实际应用中,一般情况下是将原始模板截断到有限尺寸N

。实验表明,当1N =+时,能够获得较好的边缘检测结果。下面给出Canny 算子的具体实现。

利用高斯函数的可分性,将G ?的两个滤波卷积模板分解为两个一维的行列滤波器:

22

1222(,)exp()exp()()()22G x y x y kx h x h y x σσ?=--=? (20)

22

1222(,)exp()exp()()()22G x y y x ky h y h x y σσ

?=--=? (21) 其中

22

1122()exp(),()exp()22x y h x h y σσ=-=-,

22

2222()),()),22x y h x h y σσ

=-=- 可见, 1212()(),()()h x xh x h y yh y ==,k 为常数。 然后把这两个模板分别与(,)f x y 进行卷积,得到 (,)(,)*;*x y G x y G x y E f E f x y

??=

=?? (22) 令

(,)(,)(,)arctan

(,)

y x E i j A i j a i j E i j =

= (23)

则(,)A i j 反映边缘强度,(,)a i j 为垂直于边缘的方向。

根据Canny 的定义,中心边缘点为算子n G 与图像(,)f x y 的卷积在边缘梯度方向上的区域中的最大值。这样,就可以在每一点的梯度方向上判断此点强度是否为其领域的最大值

来确定该点是否为边缘点。当一个像素满足以下三个条件时,则被认为是图像的边缘点。 1)该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度; 2)与该点梯度方向上相邻两点方向差小于45°;

3)以该点为中心的33?领域中的边缘强度极大值小于某个阈值。

此外,如果1)和2)同时被满足,那么在梯度方向上的相邻像素就从候选边缘点中取消,条件3)相当于区域梯度最大值组成的阈值图像与边缘点进行匹配,这一过程消除了许多虚假的边缘点。

Canny 边缘检测算子步骤如下:

Step1:用高斯滤波器对图像进行滤波消噪;

Step2:用一阶偏导的有限差分来计算梯度的幅值和方向; Step3:对梯度幅值进行非极大值抑制; Step4:用双阈值算法检测和连接边缘。

二 各种经典边缘检测算子性能比较

由上述边缘算子产生的边缘图像看来很相似。它们看起来像一个绘画者从图片中做出的

?算子,对具有陡峭的低噪声图像响应最好。Sobel算子,Prewitt 线条画。Roberts算子是22

?算子,对灰度渐变和噪声较多的图像处理得较好。使用两个掩算子,Kirsch算子都是33

模板组成边缘检测器时,通常取较大的幅度作为输出值。这使得它们对边缘的走向有些敏感。取它们的平方和的开方可以获得性能更一致的全方位响应。这与真实的梯度值更接近。值得?的Sobel算子和Prewitt边缘算子可扩展成八个方向,并且可以像使用Kirsch 注意的是33

算子一样获得边缘方向图。

1 MATLAB程序仿真

为了分析上述几种算子的效果,我们用MATLAB对lenna原始图像以及分别加入高斯噪声和椒盐噪声后的lenna图像进行检测。仿真实验结果如下(程序见附录):

Lenna原始图像

(一)各算子对lenna原始图像的处理效果如下所示:

(二)对lenna原始图像加入高斯噪声:

加入高斯噪声的lenna图像

各算子对加入高斯噪声的lenna图像的处理效果如下所示:

(三)对lenna原始图像加入椒盐噪声:

加入椒盐噪声的lenna图像

各算子对加入椒盐噪声的lenna图像的处理效果如下所示:

2实验效果比较

由于Roberts算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易丢失一部分边缘,同时由于没经过图像平滑计算,因此不能抑制噪声,但该算子对具有陡峭的低噪声图像响应最好。

Prewitt算子和Sobel算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗噪能力是通过像素平均来实现的,所以图像产生了一定的模糊,而且还会检测出一些伪边缘,所以检测精度比较低,该算子比较适合用于图像边缘灰度值比较尖锐且图像噪声比较小的情况。

LoG算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到,比外高斯分布因子σ的选择对图像边缘检测效果有较大的影响,σ越大,检测到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提高,但边缘精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。

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

表一各种经典边缘检测算子的优缺点比较

三结论

目前,边缘检测技术在很多领域中都得到了广泛的应用。如对医学图像的边缘特征提取、车牌识别、人脸检测技术等。本文讨论和比较了几种常用的经典边缘检测算子。可以看出它们都不是具有绝对优势的方法,在图像的抗噪声、图像边缘的定位情况、图像部分边缘是否可以检测出,以及算法运行的速度等方面,各自存在优缺点。所以对于图像的边缘检测,要根据不同的系统,针对不同的环境条件和要求,选择合适的算子。希望本文总结的各种算法的优缺点及适用范围,能为今后人们使用这些算子以及研究更好的边缘检测算子方法提供参考价值。

附录

附录(1)

各算子对lenna原始图像处理的仿真程序:function jingdian

I=imread('lenna.jpg');

B1=edge(I,'roberts');

B2=edge(I,'sobel');

B3=edge(I,'prewitt');

B4=edge(I,'canny');

B5=edge(I,'log');

B6=DetectContour(I,0.3);

subplot(2,3,1);

imshow(B1);title('roberts算子检测');

subplot(2,3,2);

imshow(B2);title('sobel算子检测');

subplot(2,3,3);

imshow(B3);title('prewitt算子检测');

subplot(2,3,4);

imshow(B4);title('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

subplot(2,3,6);

imshow(B6);title('kirsch算子检测');

附录(2)

各算子对加入高斯噪声lenna图像处理的仿真程序:function jingdian

I=imread('lenna.jpg');

I1=imnoise(I,'gaussian');

B1=edge(I1,'roberts');

B2=edge(I1,'sobel');

B3=edge(I1,'prewitt');

B4=edge(I1,'canny');

B5=edge(I1,'log');

B6=DetectContour(I1,0.3);

subplot(2,3,1);

imshow(B1);title('roberts算子检测');

subplot(2,3,2);

imshow(B2);title('sobel算子检测');

subplot(2,3,3);

imshow(B3);title('prewitt算子检测');

subplot(2,3,4);

imshow(B4);title('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

subplot(2,3,6);

imshow(B6);title('kirsch算子检测');

附录(3)

各算子对加入椒盐噪声lenna图像处理的仿真程序:function jingdian

I=imread('lenna.jpg');

I2=imnoise(I,'salt & pepper');

B1=edge(I2,'roberts');

B2=edge(I2,'sobel');

B3=edge(I2,'prewitt');

B4=edge(I2,'canny');

B5=edge(I2,'log');

B6=DetectContour(I2,0.3);

subplot(2,3,1);

imshow(B1);title('roberts算子检测');

subplot(2,3,2);

imshow(B2);title('sobel算子检测');

subplot(2,3,3);

imshow(B3);title('prewitt算子检测');

subplot(2,3,4);

imshow(B4);title('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

subplot(2,3,6);

imshow(B6);title('kirsch算子检测');

附录(4)

DetectContour函数:

function [contourImage]=DetectContour(I,k) grayImage = imread('lenna.jpg');

[m n d]=size(grayImage);

work_img(1:m,1:n)=0;

img=double(grayImage);

r(1:8)=0;

for i=2:m-1

for j=2:n-1

blk=img(i-1:i+1,j-1:j+1);

p0=blk(1,1);p1=blk(1,2);p2=blk(1,3);

p7=blk(2,1);p3=blk(2,3);

p6=blk(3,1);p5=blk(3,2);p4=blk(3,3);

r(1)=(5/8)*(p0+p1+p2)-(3/8)*(p3+p4+p5+p6+p7);

r(2)=r(1)+p7-p2; r(3)=r(2)+p6-p1; r(4)=r(3)+p5-p0;

r(5)=r(4)+p4-p7;r(6)=r(5)+p3-p6;r(7)=r(6)+p2-p5; r(8)=r(7)+p1-p4;

maxR=8*k*max(r);

if maxR>255

maxR=255;

end

if maxR<0

maxR=0;

end

work_img(i,j)=255-maxR;

if work_img(i,j)>150

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

几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对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 函数,那么就

经典图像边缘检测

经典图像边缘检测(微分法思想)——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的偏导数,则会在很

边缘提取不同算子方法的分析比较

目录 摘要....................................................................... I 1简介. (1) 1.1MATLAB 简介 (1) 1.2数字图像处理简介 (1) 2边缘检测 (3) 2.1边缘的含义 (3) 2.2边缘检测的含义 (3) 2.3边缘检测的步骤 (3) 3常用的边缘检测算子 (5) 3.1微分算子 (5) 3.1.1 Sobel算子 (5) 3.1.2 robert算子 (6) 3.1.3 prewitt算子 (6) 3.2 Laplacian算子 (6) 3.3 Log算法 (7) 3.4 Canny边缘检测法 (7) 4程序设计 (8) 5运行结果 (10) 6边缘检测结果比较 (12) 7心得体会 (13) 参考文献 (14)

摘要 边缘检测是利用边缘增强算子,突出图像中的局部边缘,然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。本设计利用MATLAB软件分析几种应用于数字图像处理中的边缘检测算子,根据它们在实践中的应用结果进行研究,主要包括:Robert 边缘算子、Prewitt 边缘算子、Sobel 边缘算子、LoG边缘算子以及Laplacian 算子等对图像边缘检测,根据实验处理结果对几种算子进行比较。 关键词:Matlab边缘检测算子

1简介 1.1MATLAB简介 Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其它程序和语言接口的功能。随着Matlab语言功能越来越强大,不断适应新的要求并提出新的解决方法,可以预见,在科学运算,自动控制与科学绘图领域,Matlab语言将长期保持其独一无二的地位。 Matlab 的特点如下: (1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; (2) 具有完备的图形处理功能,实现计算结果和编程的可视化; (3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握; (4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具. Matlab的优势如下: (1)友好的工作平台和编程环境 (2)简单易用的程序语言 (3)强大的科学计算机数据处理能力 (4)出色的图形处理功能 (5)应用广泛的模块集合工具箱 (6)实用的程序接口和发布平台 (7)应用软件开发(包括用户界面) 1.2数字图像处理简介 数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。从处理的目的来讲主要有:

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

经典边缘检测算子对比

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

边缘检测算子比较

边缘检测算子比较 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者正在试图在边缘提取中加入高层的语义信息。 课题所用图像边缘与边界应该算是等同的。 在实际的图像分割中,往往只用到一阶和二阶导数,虽然,原理上,可以用更高阶的导数,但是,因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可以说明灰度突变的类型。在有些情况下,如灰度变化均匀的图像,只利用一阶导数可能找不到边界,此时二阶导数就能提供很有用的信息。二阶导数对噪声也比较敏感,解决的方法是先对图像进行平滑滤波,消除部分噪声,再进行边缘检测。不过,利用二阶导数信息的算法是基于过零检测的,因此得到的边缘点数比较少,有利于后继的处理和识别工作。 各种算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位; 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算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们可以给出阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

sobel算子边缘检测

源程序如下:#include #include #include #include #include #include #include #include #define ff(x,y) pBmpBuf0[256*(y)+(x)] #define gg(x,y) pBmpBuf9[256*(y)+(x)] //--------------------------------------------------------------------------------------- unsigned char *pBmpBuf;//读入图像数据的指针 int bmpWidth;//图像的宽 int bmpHeight;//图像的高 RGBQUAD *pColorTable;//颜色表指针 int biBitCount;//图像类型,每像素位数 //------------------------------------------------------------------------------------------- //读图像的位图数据、宽、高、颜色表及每像素位数等数据进内存,存放在相应的全局变量中 bool readBmp(char *bmpName) { FILE *fp=fopen(bmpName,"rb");//二进制读方式打开指定的图像文件 if(fp==0) return 0; //跳过位图文件头结构BITMAPFILEHEADER fseek(fp, sizeof(BITMAPFILEHEADER),0); //定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中 BITMAPINFOHEADER head; fread(&head, sizeof(BITMAPINFOHEADER), 1,fp); //获取图像宽、高、每像素所占位数等信息 bmpWidth = head.biWidth; bmpHeight = head.biHeight; biBitCount = head.biBitCount;//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)

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

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

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

第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 作者简介:王晓红女武汉理工大学硕士研究生武汉商业服务学院讲师熊盛武男武汉理工大学教授博导  万方数据

图像边缘检测算子

课程设计任务书 学院信息科学与工程专业电子信息工程 学生姓名*** 班级学号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)

Sobel边缘检测算子

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

基于Sobel算子的数字图像边缘检测

基于S o b e l算子的数字图像边缘检测 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

信号处理综合 设计报告 综合设计名称:基于Sobel算子的数字图像边缘检测学员:学号: 培养类型:技术类年级: 2013级专业:电子工程所属学院: 指导教员:职称:教授实验室: 305-507 实验日期:-2016.9.2

一、综合设计目的 (1)掌握数字信号处理的基本概念、基本理论和基本方法; (2)了解边缘检测的算法和用途,学习利用 Sobel 算子进行边缘检测的程序设计方法; (3)完成图像边缘处理系统的设计和实现,分析处理性能; (4)学会TMS320VC5509A DSP的程序设计方法。 二、综合设计要求 (1)在Matlab上独立编程实现通过Sobel算子的边缘检测; (2)读懂DSP-CCS平台例程,自选图像修改例程实现边缘检测,对比Matlab仿真和DSP-CCS平台处理的结果。 (3)完成实验思考题 三、详细设计过程 1.设计原理分析; Sobel边缘检测算子: 图像中的每个点都用这连个核做卷积,一个核对通常的垂直边缘相应最大,另一个对水平边缘相应最大。两个卷积的最大值作为该点的输出位(下文我们统称为梯度)。 Prewitt边缘检测算子: 以上两个卷积核形成了Prewitt算子。使用方法和Sobel算子一致,区别是系数不同。 2.设计方案和过程。 总体方案:

(1)选择图像灰度处理 这是程序运行的预处理,需要注意的Matlab仿真时,图像选取限制较小,在DSP-CCS平台处理时,注意图像选择要满足例程的空间要 求,一般选择80*80尺寸图像。 (2)卷积计算得出梯度 把图像与Sobel算子的两个模板分别进行卷积,取卷积后较大值为 该点的梯度。 上图显示了在只考虑水平边缘或垂直边缘的情况下的检测效果与实际效果的对比。 (3)二值处理计算阈值 把计算出的梯度归一化,然后带入Matlab中的graythresh函数,采用最大类间方差法获得阈值。 (4)高于阈值设为1,低于阈值设为0。把二值图像显示出来即为边缘检测的最终结果。 3.改进与创新 (1)八方向Sobel算子 在原有中两个模板的基础上,又增加六个方向的模板,即45°,135°,180°,225°,270°,315°。这样可以更加有效地检测图像多个方向边缘,使边缘信息更加完整。 (2)抗噪性能分析 通过在原图像中加入不同信噪比的高斯白噪声,观察边缘检测图像的变化,分析差别。

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

数字图像处理 第三次作业 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 算子在空间上比较容易实现,不但产生较好的边缘检测效果,同时,由于其引入了局部平均,使其受噪声的影响也较小。若使用较大的邻域,抗噪性会更好,但也增加了计算量,并且得到的边缘比较粗。在对精度要求不是很高的场合下,

边缘检测效果对比

图像边缘检测算法效果对比 目录 一、引言 二、边缘检测 2.1 Roberts 梯度算子 2.2 Prewitt算子 2.3 Sobel算子 2.4 Laplace 算子 2.5 Canny 算子 三、几种算子的比较 3.1 基于Matlab 的边缘检测算法实现 3.2 算法比较 四、最小二乘支持向量机在边缘检测中的应用 五、结束语 六、参考文献

摘要:边缘是图像最基本的特征,包含图像中用于识别的有用信息,边缘检测是数字图像处理中基础而又重要的课题。文章具体考察了5 种经典常用的边缘检测算子以及最小二乘支持向量机提取边缘检测算子,并运用Matlab 进行图像处理结果比较。梯度算子简单有效, LOG 算法和Canny 边缘检测器能产生较细的边缘。最小二乘支持向量机结合图像的梯度和零交叉信息,选取一定的参数条件,可以获得比Canny 方法更好的性能。

一、引言 图像边缘是图像最基本的特征之一,往往携带着一幅图像的的大部分的信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处。这些点给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘。而边缘检测算法则是处理问题中经典技术难题之一,它的解决对于进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质级好的效果的边缘检测算子的问题。 由于边缘检测在图像处理系统中占有重要的作用,所以其效果直接影响着后续图像处理效果的好坏。许多数字图像处理直接或间接地依靠边缘检测算法的性能,并且在模式识别、机器人视觉、图像分割、特征提取、图像压缩等方面都把边缘检测作为最基本的工具。但实际图像中的边缘往往是各种类型的边缘以及它们模糊化后结果的组合,并且在实际图像中存在着不同程度的噪声,各种类型的图像边缘检测算法不断涌现。早在1965 年就有人提出边缘检测算子,边缘检测的传统方法包括Kirsch, Prewitt, Sobel, Roberts,Robins, Mar -Hildreth边缘检测方法以及Laplacian-Gaussian (LOG)算子方法和Canny 最优算子方法等。 本文主要讨论其中5 种边缘检测算法以及最小二乘支持向量机进行图像边缘处理算法的性能,并使用Matlab7.8 图像处理工具以

拉普拉斯算子、prewitt算子、sobel算子对图像锐化处理.doc

《数字图像处理作业》 图像的锐化处理 ---拉普拉斯算子、prewitt算子、sobel算子性能研究对比 完成日期:2012年10月6日

一、算法介绍 1.1图像锐化的概念 在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。 为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。

考察正弦函数,它的微分 。微分后频率不变,幅度上升2πa倍。空间频率愈高,幅度增加就愈大。这表明微分是可以加强高频成分的,从而使图像轮廓变清晰。最常用的微分方法是梯度法和拉普拉斯算子。但本文主要探究几种边缘检测算子,Laplace、Prewitt、Sobel算子以下具体介绍。 图像边缘检测:边缘检测是检测图像局部显著变化的最基本运算,梯度是函数变化的一种度量。图像灰度值的显著变化可用梯度的离散逼近函数来检测,大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。边缘检测可分为两大类基于查找一类和基于零穿越的一类。基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点。 1.2拉普拉斯算子

关于MATLAB边缘检测sobel算子

关于MATLAB边缘检测sobel算子 一、sobel介绍 索贝尔算子是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以代表原始图像,及分别代表经横向及纵向边缘检测的图像,其公式如下: 图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。 然后可用以下公式计算梯度方向。 在以上例子中,如果以上的角度等于零,即代表图像该处拥有纵向边缘,左方较右方暗。 二、程序 例1 clear all; close all; f=imread('dsy.jpg'); u=rgb2gray(f); F=double(f); U=double(u); [H,W]=size(u); uSobel=u; % ms=0; % ns=0;

for i=2:H-1 for j=2:W-1 Gx=(U(i+1,j-1)+2*U(i+1,j)+F(i+1,j+1))-(U(i-1,j-1)+2*U(i-1,j)+F(i-1,j+1)); Gy=(U(i-1,j+1)+2*U(i,j+1)+F(i+1,j+1))-(U(i-1,j-1)+2*U(i,j-1)+F(i+1,j-1)); uSobel(i,j)=sqrt(Gx^2+Gy^2); % ms=ms+uSobel(i,j); % ns=ns+(uSobel(i,j)-ms)^2; end end % ms=ms/(H*W); % ns=ns/(H*W); subplot(1,2,1);imshow(f);title('原图'); subplot(1,2,2);imshow(im2uint8(uSobel));title('Sobel处理后'); % S=[ms ns]; 程序运行结果: 例2 hg=zeros(3,3); %设定高斯平滑滤波模板的大小为3*3 delta=0.5; for x=1:1:3 for y=1:1:3 u=x-2; v=y-2; hg(x,y)=exp(-(u^2+v^2)/(2*pi*delta^2)); end

几种边缘检测算子比较

常用的检测算子有: (1)微分算子 (2)拉普拉斯高斯算子 (3)canny算子 微分算子 Sobel算子, Robert算子,prewitt算子比较 Sobel算子是滤波算子的形式来提取边缘。X,Y方向各用一个模板,两个模板组合起来构成1个梯度算子。X方向模板对垂直边缘影响最大,Y方向模板对水平边缘影响最大。 Robert算子是一种梯度算子,它用交叉的差分表示梯度,是一种利用局部差分算子寻找边缘的算子,对具有陡峭的低噪声的图像效果最好。 prewitt算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行地同滤波,所以prewitt算子对边缘的定位不如robert算子。 源程序: i=imread('tanke.jpg'); i2=im2double(i); ihd=rgb2gray(i2); [thr,sorh,keepapp]=ddencmp('den','wv',ihd); ixc=wdencmp('gbl',ihd,'sym4',2,thr,sorh,keepapp); figure,imshow(ixc),title('消噪后图像'); k2=medfilt2(ixc,[7 7]); figure,imshow(k2),title('中值滤波'); isuo=imresize(k2,0.25,'bicubic'); %sobert、robert和prewitt算子检测图像边缘 esobel=edge(isuo,'sobel'); erob=edge(isuo,'roberts'); eprew=edge(isuo,'prewitt'); subplot(2,2,1); imshow(isuo);title('前期处理图像'); subplot(2,2,2); imshow(esobel);title('sobel算子提取'); subplot(2,2,3); imshow(erob);title('roberts算子提取'); subplot(2,2,4);

相关文档