几种常用边缘检测算法的比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对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 函数,那么就
定义灰度曲面在这个点是N 阶不连续,则线性边缘是0 阶不连续,阶梯形边缘是一阶不连续,而屋顶形边缘是二阶不连续。在实际中,单纯的阶跃和线性边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡形边缘,线性边缘变成屋顶形边缘。
边缘检测可分为滤波、增强、检测、定位四个步骤,由于微分边缘检测算法主要是基于图像强度的一阶和二阶导数,而导数的计算对噪声很敏感,噪声的存在可能会使检测到的边缘变宽或在某些点处发生间断,因此,需要使用滤波器来滤掉噪声。大多数滤波器在降低噪声的同时也会引起边缘强度的损失,增强图像边缘可以弥补损失,但增强边缘和降低噪声之间需要折衷。在边缘检测算法中,前三个步骤用得十分普遍,这是因为在大多数情况下,只需要边缘检测器指出边缘出现在图像中某一像素点的附近即可,而没有必要指出边缘的精确位置。
2 微分边缘检测算子
2.1一阶微分算子
2.1.1 Roberts 算子
Roberts 算子是一种利用局部差分算子寻找边缘的算子, 它由下式给出:
2
2])1
y
f
x
+
x
+
-
=y
f
x
y
x
g(1) f
x
f
y
y
)
[
])1
,1
(
,1
,
(
+
(
)
(+
-
)
,
+
,
(
[
其中,),(y x f、),1
(+
,1
+y
f分别为4领
f和)1
x
x
(y
f+、)1
,(+
y
x
域的坐标,且是具有整数像素坐标的输入图像。
Robert 算子是22⨯算子模板。图2所示的2个卷积核形成
了Roberts 算子。图像中的每一个点都用这2个核做卷积。
图2 Roberts 算
子
Roberts 算子边缘定位精度较高,但容易丢失一部分边
缘,同时由于没有经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应较好。
2.1.2 Sobel 算子
Sobel 算子是一种一阶微分算子,它利用像素临近区域
的梯度值来计算1个像素的梯度,然后根据一定的阈值来取
舍。它由下式给出:
22y x d d S += (2)
Sobel 算子是33⨯算子模板。图3所示的2个卷积核dx 、dy
形成Sobel 算子。一个核通常的垂直边缘响应最大,而另一
个核对水平边缘响应最大。2个卷积的最大值作为该点的输
出值。运算结果是一幅边缘幅度图像。
精品资料 图3 Sobel 算子
2.1.3 Prewitt 算子
Prewitt 算子由下式给出:
22y x p d d S += (3)
Prewitt 算子是33⨯算子模板。图4所示的2个卷积核dx 和dy 形成了Prewitt 算子。与Sobel 算子的方法一样,图像中的每个点都用这2个核进行卷积。取最大值作为输出值。Prewitt 算子也产生一副边缘幅度图像。
图4 Prewitt 算
子
2.1.4 Canny 算子
传统的Canny 算法是通过在22⨯邻域内求有限差分来计算梯度幅值。Canny 算子法实现的方式为:图像先用2D 高斯滤波模板进行卷积以消除噪声,再对滤波后图像中的每个像素计算其梯度的大小和方向。计算可采用以下22⨯大小的模板作为对x 方向和y 方向偏微分的一阶近似:
⎥⎦⎤⎢⎣⎡--=111121x G ⎥⎦⎤⎢⎣⎡--=111121y G 由此得到梯度的大小M 和方向θ: