各类边缘检测算子的比较
摘要:边缘检测是图像处理和计算机视觉中的基本问题,其目的标识数字图像中亮度变化明显的点。
图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。
有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于搜索和基于零交叉。
基于搜索的边缘检测算子有:Roberts算子,Prewitt算子,Sobel算子,Canny算子,罗盘算子。
基于零交叉的边缘检测算子有Marr-Hildreth边缘检测器。
本篇论文分析了各种检测算子的特点,并对各种边缘检测算法的检测结果进行了比较。
关键词:边缘检测;图像处理;算子
0 引言
图像边缘是图像的重要特征,是计算机视觉、模式识别等的基础,因此边缘检测是图像处理中一个重要的环节。
然而,图像边缘受很多因素的影响。
这些包括(i)深度上不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。
目前,常用的边缘检测算法没有哪一种具有绝对的优越性。
因此,对各种边缘检测算子的性能进行比较分析,根据图像边缘的特征选择比较合理的边缘检测显得尤为重要。
1 基于搜索的边缘检测算子
基于搜索的边缘检测方法首先计算边缘强度,通常用一阶导数表示,例如梯度模;然后,用计算估计边缘的局部方向,通常采用梯度的方向,并利用此方向找到局部梯度模的最大值。
1.1 Roberts算子
Roberts算子【1】是一种利用局部差分算子寻找边缘的算子,它由下式给
出 :
g ( x , y) = [ f ( x , y) - f ( x + 1 , y + 1) ]2 +[ f ( x + 1 , y) - f ( x , y + 1) ]2(1)
其中 f ( x , y ) 、 f ( x + 1 , y ) 、 f ( x , y + 1) 和 f ( x + 1 , y + 1) 分别为 4领域的坐标,且是具有整数像素坐标的输入图像。
Roberts算子是2X 2 算子模板。
图1所示的2个卷积核形成了Roberts算
子。
图像中的每一个点都用这2个核做卷积。
图1 Roberts算子
1.2 Prewitt算子
Prewitt 算子由下式给出:
SP = ( dx2 + dy2) 1/2 (2)
Prewitt 算子是 3 ×3 算子模板。
图 3 所示的2个卷积dx 、dy形成了Prewitt 算子。
与 Sobel 算子的方法一样 ,图象中的每个点都用这 2 个核进行卷积,取最大值作为输出值。
Prewitt 【2】算子也产生1 幅边缘幅度图象。
图2 Prewitt算子
1.3 Sobel算子
Sobel 【3】算子是一种一阶微分算子,它利用像素邻近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍。
它由下式给出:
S = ( dx2 + dy2) 1/2 (3)
Sobel算子是3×3 算子模板。
图 2 所示的 2个卷积核dx、dy形成Sobel 算子。
一个核对通常的垂直边缘响应最大,而另一个核对水平边缘响应最大。
2个卷积的最大值作为该点的输出值。
运算结果是1 幅边缘幅度图象。
1 2 1
0 0 0
-1 -2 -1
图3 Sobel算子
1.4 Canny算子
Canny 【4】边缘检测算子是近年来在数字图像处理中广泛应用的边缘算子,它是应用变分原理推导出的一种用高斯模块导数逼近的最优算子。
通过 Canny 算子的应用,可以计算出数字图像的边缘强度和边缘梯度方向,为后续边缘点判断提供依据。
公式:Gn = n?G(4)
式中
n 就是边缘方向,?G是梯度矢量,而边缘强度由 |?G * f (x, y)| 决定。
在 Canny 算子计算实现过程中,为了提高速度,同样可以采用分解的方法,把?G 的滤波模块分解为二个一维的行列滤波器。
即
(5)
(6)
将(4)(5)分别与图像 f (i,j)卷积,得到:
(7)
(8)
式中 A(i, j) 反映了图像上(i, j) 点处的边缘强度,α(i, j) 是图像(i, j) 点处的法向方向(正交于边缘方向)。
当一个像素满足以下 3 个条件时,则认为是图像的边缘点:
(1) 该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度;
(2) 与该点梯度方向上相邻两点的方向差小于 0 45 ;
(3) 以该点为中心的 3x3 领域中的边缘强度极大值小于某个阈值;
条件(1)(2)的作用是将在梯度方向上的两个相邻像素从候选边缘点中剔除,条件(3)的作用是消除虚假的边缘点。
2 基于零交叉的边缘检测算子
基于零交叉的方法找到由图像得到的二阶导数的零交叉点来定位边缘.
2.1Marr-Hildreth 边缘检测算子
Marr-Hildreth 边缘检测算子是将高斯算子和拉普拉斯算子结合在一起而形
成的一种新的边缘检测算子,先用高斯算子对图像进行平滑,然后采用拉普拉斯算子根据二阶微分过零点来检测图像边缘,因此该算子也可称为 LOG(Laplacian of Gaussian)算子。
(9)
式中,G(x, y,σ ) 为高斯函数, x, y 为图像的横坐标和纵坐标。
在数字图像中实现图像与模块卷积运算时,运算速度与选取的模块大小有直
接关系,模块越大,检测效果越明显,速度越慢,反之则效果差一点,但速度提高很多。
因此在不同的条件下应选取不同大小的模块。
在实际计算过程中,还可以通过分解的方法提高运算速度,即把二维滤波器分解为独立的行、列滤波器 [2]。
常用 5x5 模块的 Marr-Hildreth 算子为
-2 -4 -4 -4 -2
-4 0 8 0 -4
-4 8 24 8 -4
-4 0 8 0 -4
-2 -4 -4 -4 -2 图4 Marr-Hildreth算子
2 几种算子的比较
在数字图像处理中,衡量边缘检测好坏的标准有:运算速度、边缘定位能力以及噪声抑制能力。
首先,运算速度方面,对于一个N*N的图像,其运算量如下:
表1 各种算子运算量对比
由表1知,Canny算子和Marr-Hildren算子的运算量都比较大。
对于边缘定位能力和噪声抑制能力是相互矛盾的,不可兼得。
下面是各种算子的此类特点:
(1) Roberts 算子:Roberts 算子利用局部差分算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,同时由于没经过图像平滑计算,因此不能抑制噪声。
该算子对具有陡峭的低噪声图像响应最好。
(2) Sobel 算子和 Prewitt 算子:都是对图像进行差分和滤波运算,差别只是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现伪边缘。
同时这 2 个算子边缘定位比较准确和完整,但容易出现边缘多像素宽。
该类算子对灰度渐变和具有噪声的图像处理的较好。
(3) Canny 算子:该算子同样采用高斯函数对图像作平滑处理,因此具有较强的去噪能力,但同样存在容易平滑掉一些边缘信息。
同时其后所采用的一阶微分算子的方向性较 M-H 算子要好,因此边缘定位准确性较高。
通过实验结果可以看出,该算子是传统边缘检测算子中效果较好的算子之一。
(4) Marr-Hildreth 算子:该算子首先通过高斯函数对图像作平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到。
此外高斯函数中方差参数σ 的选择,对图像边缘检测效果有很大的影响。
σ 越大,检测到的图像细节越丰富,但对噪声抑制能力相对下降,易出现伪边缘;反之,则抗噪声性能提高,但边缘定位准确性下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。
参考文献:
【1】《数字图像中边缘算法的实验研究》[J].微计算机信息,2004(5).
【2】冈萨雷斯.数字图像处理.第三版.电子工业出版社,2011.
【3】刑军.基于Sobel算子数字图像的边缘检测[J].微机发
展,2015,15(9):48-52.
【4】林卉,赵长胜,舒宁.基于 Canny算子的边缘检测及评价[J].黑龙江工程学院学报,2003,17(2):3-6.
继续阅读。