图像边缘检测原理及方法
图像边缘检测原理及方法
一、图像边缘检测原理
边缘是图像上灰度变化最明显的地方,传统边缘检测利用此特点,对图像 各像素点进行求微分或二阶微分来定位边缘像素点。由灰度变化特点,可将边 缘类型分为阶梯状、脉冲状和屋顶状三种[1]。对于阶梯状,图像边缘点对应一阶 微分图像的峰值和二阶微分图像的零交叉处;对于脉冲状和屋顶状边缘,边缘 点对应一阶导数的零交叉和二阶导数的峰值。如图 1-1 所示[2]。
0 0 0 -1 1 0 0 0 0
垂直边缘
0 -1 0 0 1 0 0 0 0
水平边缘
-1 0 0 0 1 0 0 0 0
对角线边缘
图 2-1 差分算法检测边缘的方向模板 差分边缘是基本且原始的方法,根据阶跃边缘情况原理,利用导数算子检测 边缘。这种算子要求方向性,计算繁琐,因此很少采用。 2、Roberts 算子 Roberts 边缘检测算子[6]利用局部差分算子寻找边缘的算子,采用对角线方 向相邻像素之差近似梯度幅值检测边缘, 原理是根据任意一对互相垂直方向上的 差分可计算梯度。
s x { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} s y { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)}
xf f (i, j ) f (i 1, j 1) xf f (i, j 1) f (i 1, j ) R (i, j ) 2x f 2y f 或 R (i, j ) x f y f
它们的卷积算子如下图 2-2 所示[7]。
(2-1) (2-2) (2-3)
1 1 1 1 2 1 1 1 1
1方向
1 1 1 1 2 1 1 1 1
2方向
1 1 1 1 2 1 1 1 1
3方向
1 1 1 1 2 1 1 1 1
[3]
1、差分边缘检测 在处理数字图像的离散域时,可用图像的一阶差分直接代替图像函数的导 数。 二维离散图像函数在 x 方向的一阶差分定义为: f ( x 1, y ) f ( x, y ) , 在y 方 向的一阶差分定义为: f ( x, y 1) f ( x, y ) [4]。 差分边缘检测通过求图像灰度迅速变化处的一阶导数算子的极值来检测奇 异点。某一点的值则代表该点的“边缘强度”,通过对这些值设定阈值进一步得到 边缘图像。同时,差分边缘检测要求差分方向与边缘方向垂直,此时需对图像不 同方向进行差分运算。边缘检测一般分为垂直边缘、水平边缘、对角线边缘, 各 [5] 自方向模版如图 2-1 所示 。
图 1-1 三种不同类型的边缘和对应的曲线
根据数字图像特点,处理图像时常采用差分代替导数运算。对于图像的简 单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不 具有普遍性。为了克服一阶导数的缺点,我们定义图像的梯度为梯度算子,它 是图像处理中最常用的一阶微分算法。图像梯度的最重要性质是梯度的方向是 在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化。
0 1 0 1 4 1 0 1 0
1 1 1 1 8 1 1 1 1
0 1 0 1 4 1 0 1 0
1 1 1 1 8 1 1 1 1
(2-11)
用 j 1 替换 j ,得:
2 f f (i, j 1) 2 f (i, j ) f (i, j - 1) x 2
上式是以点 (i, j ) 为中心的二阶偏导数近似表达式。同理得:
(2-12)
2 f f (i 1, j ) 2 f (i, j ) f (i 1, j ) y 2
2 2 G (i, j ) s x sy
(2-4)
(2-5) (2-6)
卷积算子如图 2-3 所示[9]。
1 2 1 sx 0 0 0 1 2 1
1 0 1 sy 2 0 2 1 0 1
图 2-3 Sobel 边缘检测算子
p x { f ( x 1, y 1) f ( x 1, y ) f ( x 1, y 1)} { f ( x 1, y 1) f ( x 1, y ) f ( x 1, y 1)} p y { f ( x 1, y 1) f ( x, y 1) f ( x 1, y 1)} { f ( x 1, y 1) f ( x, y 1) f ( x 1, y 1)} P (i, j )
s x 对垂直边缘的影响最大, sy 图像中的每个点都用图2-3中两个模板做卷积,
对水平边缘影响最大。两个卷积的最大值做为该点的输出,运算结果是一幅边缘 幅度图像。选取合适门限值TH,做判断,若 R (i, j ) TH ,则 (i, j ) 为阶跃状边缘 点, {R (i, j )} 为边缘图像。 Sobel 算子在空间上容易实现,能平滑噪声,可提供精确的边缘方向信息, 但也会检测出伪边缘,使得定位边缘精度较低。 4、Prewitt 算子 Prewitt 边缘算子[10]其中一种使用方法同Sobel 算子,对图像进行差分和滤 波运算,但所用模板不同。Prewitt 算子定义如下。
4方向
1 1 1 1 2 1 1 1 1
5方向
1 1 1 1 2 1 1 1 1
6方向
1 1 1 1 2 1 1 1 1
7方向
1 1 1 1 2 1 1 1 1
(a) 阶跃边缘
(b) 屋顶边缘
图2-7 Laplace两种边缘下不同检测模板 对阶跃边缘,边缘点即二阶导数零交叉处,交点两边二阶导函数符号相反。 由此,Laplace算子对 { f (i, j )} 的每个像素取x方向及y方向的二阶差分之和。对于 屋顶状边缘,边缘点即二阶导数极小值点,此时取 { f (i, j )} 的每个像素关于x方 向及y方向的二阶差分和的相反数。 由于Laplace算子为二阶差分,会双倍增强图像噪声,因此对图像噪声较敏 感。此外,Laplace算子容易产生双像素宽的边缘,且会丢失边缘方向信息。优 点是各向同性,对灰度突变敏感,定位精准,能检测出大多数边缘,且很少有伪 边缘。 6、LOG 算子 LOG (Laplacian of Gaussian)算子[13], 是利用图像信噪比得到检测边缘的最优 滤波器。首先,通过高斯函数对图像进行低通平滑滤波;然后通过Laplacia 算子 进行高通滤波,最后由二阶导数零交叉点检测图像的边缘。 高斯滤波函数为: 1 1 (2-15) G ( x, y , ) exp( 2 ( x 2 y 2 )) 2 2 2 其中, 为高斯滤波器标准方差,它反映图像的平滑程度。对图像 f ( x, y ) 进 行低通滤波,得到 f ( x, y ) * G ( x, y, ) ,然后用Laplacian 算子进行处理,得到:
1 0 x f 0 1
0 1 y f 1 0
图 2-2 Roberts 边缘算子
y f 后, 知道 x f 、 则可计算 Roberts 的梯度幅值 R (i, j ) , 适当取门限值 TH,
做判断,若 R (i, j ) TH ,则 (i, j ) 为阶跃状边缘点, {R (i, j )} 为边缘图像。 Roberts 边缘检测算子是一种最简单的算子,其检测垂直边缘的效果好于斜 向边缘,在水平和垂直方向效果较好,定位精度高,但对噪声敏感。 3、Sobel 算子 Sobel 算子[8]是滤波算子的形式,用于提取图像边缘。对数字图像 { f (i, j )} 的 每个像素,考察它上、下、左、右四邻域灰度值的加权差,与之接近的邻域的权 最大。据此,Sobel 算子定义如下。
两式相加得:
(2-13)
2 f ( x, y ) f ( x 1, y ) f ( x, y 1) f ( x, y 1) 4 f ( x, y )
ห้องสมุดไป่ตู้
(2-14)
拉普拉斯算法通过各种模板卷积实现。模板要求对应中心像素系数为正, 对 应临近像素系数为负,且所有系数和为零,使之避免灰度偏移。实现拉普拉斯运 算的两种估算模板如图2-7所示。
8方向
图2-5 Prewitt边缘检测算子模板 8个算子样板对应的边缘方向如下图2-6所示.[11]
图2-6 样板方向 选取合适门限值TH,并判断,若 P (i, j ) TH ,则 (i, j ) 为阶跃状边缘点,
{P (i, j )} 为边缘图像。
5、Laplacian 算子 Laplacian 算子[12]是一个二阶微分算子,它利用边缘点处的二阶导函数出现 零交叉的原理检测边缘。Laplacian 算子具有各向同性的性质,其定义为:
2 f ( x, y )
2 f ( x, y ) 2 f ( x, y ) x 2 y 2
(2-10)
使用差分方程对x 和y 方向上的二阶偏导数近似如下。
2 f Gx ( f (i, j 1) f (i, j )) f (i, j 1) f (i, j ) x 2 x x x x f (i, j 2) 2 f (i, j 1) f (i, j )
卷积算子如图 2-4 所示。
2 2 px py
(2-7)
(2-8) (2-9)