几种常用边缘检测算法的比较
-
几种常用边缘检测算法的比较
摘要
:
边缘
是图像最基本的特征,边缘检测是图像分析
与识别的重要环节。基于微分算子的边缘检测
是目前较为常
用的边缘检测方法。
通过对
Roberts
,
Sobel
,
p>
Prewitt
,
Canny
和
Log
及一种改进
Sobel
等几个微分算子的算法分析以及
MATLA
B
仿真实验对比,结果表明,
Roberts
,
Sobel
和
Prewitt
算子的算法简单,但检测精度不高,
Canny
和
Log
算子的算法复杂,但检测精
度较高,基于
Sobel
的改进方法
具
有较好的可调性,可针对不同的图像得到较好的效果,但
是边缘较粗糙。在应用中应根据
实际情况选择不同的算子。
0
引言
边缘检测是图像分析与识别的第
一步,边缘检测在计算
机视觉、图像分析等应用中起着重要作用,图像的其他特征
都是由边缘和区域这些基本特征推导出来的,边缘检测的效
果会直接影
响图像的分割和识别性能。边缘检测法的种类很
多,如微分算子法、样板匹配法、小波检
测法、神经网络法
等等,每一类检测法又有不同的具体方法。目前,微分算子
法中有
Roberts
,
Sobel
,
Prewitt
,
Canny
,
Laplacian
,
Log
以及二阶方向导数等算子检测法,本文
仅将讨论微分算子法
中的几个常用算子法及一个改进
Sobel
算法。
1
边缘检测
在图像中,边缘是图像局部强度变化最明显的地方,它
主要存在于目标与目标、目标与背景、区域与区域
(
包括不
同色彩
)
之间。边缘表明一个特征区域的终结和另一特征区
域的开始。边缘所分开区域的内部
特征或属性是一致的,而
不同的区域内部特征或属性是不同的。边缘检测正是利用物
p>
体和背景在某种图像特征上的差异来实现检测,这些差异包
括灰度、
颜色或纹理特征,边缘检测实际上就是检测图像特
征发生变化的位置。边缘的类型很多,
常见的有以下三种
:
第一种是阶梯形边缘,其灰度从低跳跃到高
;
第二种是屋顶
形边缘,其灰度从低逐渐到高然后慢慢减小
;
第三种是线性
边缘,其灰度呈脉冲跳跃变化。如图
1
所示。
(a)
阶梯形边缘
(b)
屋顶形边
缘
(b)
线性边缘
图像中的边缘是由许多边缘元组成,边缘元可以看作是
一个短的直线段,每一个边缘元
都由一个位置和一个角度确
定。边缘元对应着图像上灰度曲面
N
阶导数的不连续性。如
果灰度曲面在一个点的
< br>N
阶导数是一个
Delta
函数,那么就
定义灰度曲面在这个点是
N
阶不连续,则线性边缘是
0
阶不
p>
连续,阶梯形边缘是一阶不连续,而屋顶形边缘是二阶不连
续。在实
际中,单纯的阶跃和线性边缘图像是很少见的,由
于大多数传感元件具有低频特性,使得
阶跃边缘变成斜坡形
边缘,线性边缘变成屋顶形边缘。
边缘检测可分为滤波、增强、检测、定位四个步骤,由
于微分边缘检测
算法主要是基于图像强度的一阶和二阶导
数,而导数的计算对噪声很敏感,噪声的存在可
能会使检测
到的边缘变宽或在某些点处发生间断,因此,需要使用滤波
< br>器来滤掉噪声。大多数滤波器在降低噪声的同时也会引起边
缘强度的损失,增强图
像边缘可以弥补损失,但增强边缘和
降低噪声之间需要折衷。在边缘检测算法中,前三个
步骤用
得十分普遍,这是因为在大多数情况下,只需要边缘检测器
指出边缘出现在图像中某一像素点的附近即可,而没有必要
指出边缘的精确位置。
p>
2
微分边缘检测算子
一阶微分算子
2.1.1
Roberts
算子
Roberts
算子是一种利用局部差分算子寻找边缘的算<
/p>
子
,
它由下式给出:
g
< br>(
x
,
y
)
[
f
(
x
,
y
)
p>
f
(
x
1
,
y
1
)
]
< br>2
[
f
(
x
1
,
y
)
f
p>
(
x
,
y
1
)
]
2
(1)
其中,
p>
f
(
x
,
y
)
、
f
(
x
1
< br>,
y
)
、
f
(
x
,
y
1
)
和
p>
f
(
x
1
,
y
1
)
分别为
4
领
域的坐标,且是具有整数像素坐标的输入图像。
Robert
算子是
2
<
/p>
2
算子模板。图
2
所示的
2
个卷积核形成
了
Roberts
算子。图像中的每一个点都用这
2
个核做卷积。
1
0
0
-1
0
-1
1
0
图
2
Roberts
算子
Roberts
算子边缘定位精度较高,但容易丢失一部分边
缘,同时由于没有
经过图像平滑计算,因此不能抑制噪声,
该算子对具有陡峭的低噪声图像响应较好。
p>
2.1.2
Sobel
算子
Sobel
算子是一种一阶微分算子,它利用像素临近区域
的梯度值来计算
1
个像素的梯度,然后根据一定的阈值来取
舍。
它由下式给出:
2
2
S
d
x
d
y
(2)
Sobel
算子是
3
3
算子模板。
图
3
所示的
2
个卷积核
dx
、
dy
形
成
Sobel
算子。一个核通常的垂直边缘响应最大,而另一个
核对水平边缘响应最大。
2
个卷积的最大值作为该点的输出
值。运算结果是
一幅边缘幅度图像。
-
1
-
2
0
1
0
2
1
0
-
2
0
-
2
1
1
0
-
-
1
0
1
图
3
Sobel
算子
2.1.3
Prewitt
算子
Prewitt
算子由下式给出:
2
2
S
p
<
/p>
d
x
d
y
1
(3)
Prewitt
算子是
3
3
算子模板。图
4
所示的
2
个
卷积核
dx
和
dy
形成了
Prewitt
算子。与
S
obel
算子的方法一样,图像中的
每个点都用这
2
个核进行卷积。取最大值作为输出值。
Prewi
tt
算子也产生一副边缘幅度图像。
-
1
-
1
-
1
图
4
Prewitt
算子
2.1.4
Canny
算子
传统的
Canny
算法是通过在
2
2
邻域内求有限差分来计
算梯度幅
值。
Canny
算子法实现的方式为:图像先用
2D
高斯
滤波模板进行卷积以消除噪声,再对滤波后图
像中的每个像
素计算其梯度的大小和方向。计算可采用以下
2<
/p>
2
大小的模
0
1
0
1
1
1
0
-
1
1
1
0
-
0
1
0
-
1
p>
板作为对
x
方向和
y
方向偏微分的一阶近似:
G
x
1
1
1
2
1
1
G<
/p>
y
1
1
1
2
1
1
由此得到梯度的大小
M
和方向<
/p>
:
2
2
M
G
x
G
y
p>
Arc
p>
tan
p>
G
y
G
x
通过梯度的方向,可以找到这个像素梯度方向的邻接像
素:
3
0
1
2
x
2
1
0
3
p>
最后通过非最大值抑制以及阈值化和边缘连接。
Canny
算子有信噪比准则、
定位精度准则和单边缘响应准则。
< br>Canny
算法的实质是用一个准高斯函数做平滑运算,然后以带方向
的一阶微分算子定位导数最大值,它可用高斯函数的梯度来
近似,在理论上
很接近
k
个指数函数的线性组合形成的最佳
< br>边缘算子。它是一阶传统微分中检测阶跃性边缘效果最好的
算子之一,它比
Prewitt
算子、
Sobel
算子的去噪能力都要
强,
但它也容易平滑掉一
些边缘信息,
其检查方法较为复杂。
2.1.5
一种改进的
Sobel<
/p>
算子
基于
So
bel
算子,
。为了能够更准确地描述出图像边缘
点,减少噪声对检测结果的影响,提高算子的抗噪能力,重
新构造了
4
个
5
×
5
大小
的模板,模板中各个位置的权重是由
该位置到中心点的距离以及该位置在模板中所在的方
位决
定的,等距离的点,具有相同的权重。最后选择有最高输出
模板所对应边缘梯度值来作为像元的边缘梯度强度。改进
Sobel
算子如图
5
所示:
2
3
0
3
3
4
0
4
6
6
0
6
3
4
0
4
2
3
0
3
-
2
-
3
-
6
-
3
-
2
-
p>
-
-
-
-
2
3
6
3
2
3
4
(1)
、
x
水平方向
0
0
直方向
-
-
0
2
2
-
3
0
4
3
4
-
2
-
6
0
4
2
6
4
-
6
-
2
-
3
0
2
6
2
3
2
0
-
2
-
6
-
2
-
6
-
-
3
-
4
-
-
2
-
3
4
-
3
6
-
6
6
0
-
4
-
3
4
0
-
3
-
2
3
(2)
、
y
垂
0
p>
-
-
-
2
-
-
0
0
2
0
4
2
(4)
、
135
3
4
(3)
、
45
方向
方向
向模板
2
0
2
3
2
-
0
4
6
2
图
5
方
6
由一阶
梯度算子得到图像的梯度图像。一般来说,其边
缘较粗。若直接对梯度图像设定阈值进行
二值化,很难找到
合适的阈值,使得检测出来的边缘达到要求,这不便于边缘
连接与边缘特征提取等后期处理。因此在对图像梯度图像进
行二值化前,有
必要对所检测出来的梯度边缘进行细化处
理。细化处理可以通过找出像素点
(m
,
n)
某个邻域中的最
大
值
Ma
x(m,n)
,根据
Max(m
,
p>
n)
来局部设定阈值。按照该点梯
度值与阈
值的关系对该点进行取舍,这样就能达到将梯度图
细化的目的。计算式如下:
p>
edge
(
m
,<
/p>
n
)
Max<
/p>
(
m
,
n
)
grade
(
m
,
n
)
a
Max
(
i
,
j
p>
)
edge
(
m
,
n
)
<
/p>
0
others
式中:
grade(m
,
n)
为像素
点
(m
,
n)
对应的梯度值;
Max(m
,
m)
p>
为
(m
,
n)
p>
点
8
邻域最大梯度值;
a
为控制因子,
i
1
]
f
[
i
,
j
])
2
x
x
p>
x
p>
f
[
i
,
j
1
]
f
[
i
< br>,
j
]
x
x
(
f
[
p>
i
,
j
2
]
2
f
[
i
,
< br>j
1
])
f
[
i
,
j
]
这一近似式是以点
[i,j+1]<
/p>
为中心的。用
j-1
替换
j,
得到
以点
[i,j]
p>
为中心的二阶偏导数的理想近似式:
<
/p>
2
f
(
f
[
i
,
j
1
]
2
f
[
i
,
j
])
f
[
i
,
j
1
]
p>
(1)
x
2