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

温柔似野鬼°
906次浏览
2021年02月11日 14:37
最佳经验
本文由作者推荐

-

2021年2月11日发(作者:手工做贺卡)



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



摘要


:



边缘 是图像最基本的特征,边缘检测是图像分析


与识别的重要环节。基于微分算子的边缘检测 是目前较为常


用的边缘检测方法。


通过对


Roberts


,


Sobel


,


Prewitt


,


Canny


和


Log


及一种改进


Sobel


等几个微分算子的算法分析以及


MATLA B


仿真实验对比,结果表明,


Roberts


,


Sobel


和


Prewitt


算子的算法简单,但检测精度不高,


Canny


和


Log


算子的算法复杂,但检测精 度较高,基于


Sobel


的改进方法


具 有较好的可调性,可针对不同的图像得到较好的效果,但


是边缘较粗糙。在应用中应根据 实际情况选择不同的算子。



0


引言



边缘检测是图像分析与识别的第 一步,边缘检测在计算


机视觉、图像分析等应用中起着重要作用,图像的其他特征


都是由边缘和区域这些基本特征推导出来的,边缘检测的效


果会直接影 响图像的分割和识别性能。边缘检测法的种类很


多,如微分算子法、样板匹配法、小波检 测法、神经网络法


等等,每一类检测法又有不同的具体方法。目前,微分算子

< p>
法中有


Roberts


,


Sobel


,


Prewitt


,


Canny


,


Laplacian

< p>
,


Log


以及二阶方向导数等算子检测法,本文 仅将讨论微分算子法


中的几个常用算子法及一个改进


Sobel


算法。



1


边缘检测



在图像中,边缘是图像局部强度变化最明显的地方,它




主要存在于目标与目标、目标与背景、区域与区域


(


包括不


同色彩


)

之间。边缘表明一个特征区域的终结和另一特征区


域的开始。边缘所分开区域的内部 特征或属性是一致的,而


不同的区域内部特征或属性是不同的。边缘检测正是利用物


体和背景在某种图像特征上的差异来实现检测,这些差异包


括灰度、 颜色或纹理特征,边缘检测实际上就是检测图像特


征发生变化的位置。边缘的类型很多, 常见的有以下三种


:


第一种是阶梯形边缘,其灰度从低跳跃到高


;


第二种是屋顶


形边缘,其灰度从低逐渐到高然后慢慢减小


;


第三种是线性


边缘,其灰度呈脉冲跳跃变化。如图


1


所示。







(a)


阶梯形边缘




(b)


屋顶形边


缘





(b)


线性边缘




图像中的边缘是由许多边缘元组成,边缘元可以看作是


一个短的直线段,每一个边缘元 都由一个位置和一个角度确


定。边缘元对应着图像上灰度曲面


N


阶导数的不连续性。如


果灰度曲面在一个点的

< br>N


阶导数是一个


Delta


函数,那么就




定义灰度曲面在这个点是


N


阶不连续,则线性边缘是


0


阶不


连续,阶梯形边缘是一阶不连续,而屋顶形边缘是二阶不连


续。在实 际中,单纯的阶跃和线性边缘图像是很少见的,由


于大多数传感元件具有低频特性,使得 阶跃边缘变成斜坡形


边缘,线性边缘变成屋顶形边缘。



边缘检测可分为滤波、增强、检测、定位四个步骤,由


于微分边缘检测 算法主要是基于图像强度的一阶和二阶导


数,而导数的计算对噪声很敏感,噪声的存在可 能会使检测


到的边缘变宽或在某些点处发生间断,因此,需要使用滤波

< br>器来滤掉噪声。大多数滤波器在降低噪声的同时也会引起边


缘强度的损失,增强图 像边缘可以弥补损失,但增强边缘和


降低噪声之间需要折衷。在边缘检测算法中,前三个 步骤用


得十分普遍,这是因为在大多数情况下,只需要边缘检测器


指出边缘出现在图像中某一像素点的附近即可,而没有必要


指出边缘的精确位置。



2


微分边缘检测算子



一阶微分算子



2.1.1 Roberts


算子



Roberts


算子是一种利用局部差分算子寻找边缘的算< /p>


子


,


它由下式给出:



g

< br>(


x


,


y


)



[


f


(


x


,


y


)



f


(


x



1


,


y



1


)


]

< br>2



[


f


(


x



1


,


y


)



f


(


x


,


y



1


)


]


2


(1)



其中,


f


(


x


,


y


)


、


f


(


x



1

< br>,


y


)


、


f


(


x


,


y



1


)


和


f


(


x



1


,


y



1


)


分别为


4


领




域的坐标,且是具有整数像素坐标的输入图像。



Robert


算子是


2


< /p>


2


算子模板。图


2


所示的


2


个卷积核形成


了

< p>
Roberts


算子。图像中的每一个点都用这


2


个核做卷积。



1



0



0



-1



0



-1



1



0




图


2 Roberts


算子



Roberts


算子边缘定位精度较高,但容易丢失一部分边


缘,同时由于没有 经过图像平滑计算,因此不能抑制噪声,


该算子对具有陡峭的低噪声图像响应较好。



2.1.2 Sobel


算子



Sobel


算子是一种一阶微分算子,它利用像素临近区域


的梯度值来计算


1


个像素的梯度,然后根据一定的阈值来取


舍。 它由下式给出:



2


2


S



d


x


d


y


(2)



Sobel


算子是

< p>
3



3


算子模板。


图


3


所示的


2


个卷积核


dx


、


dy


形


成


Sobel


算子。一个核通常的垂直边缘响应最大,而另一个


核对水平边缘响应最大。

< p>
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


算子



传统的

< p>
Canny


算法是通过在


2



2


邻域内求有限差分来计


算梯度幅 值。


Canny


算子法实现的方式为:图像先用


2D


高斯


滤波模板进行卷积以消除噪声,再对滤波后图 像中的每个像


素计算其梯度的大小和方向。计算可采用以下


2< /p>



2


大小的模



0



1



0



1



1



1



0



-


1



1



1



0



-


0



1



0



-


1




板作为对


x


方向和


y


方向偏微分的一阶近似:



G


x



1


< p>


1


1






2



1


1






G< /p>


y



1



1


1



< p>



2




1



1


由此得到梯度的大小


M


和方向< /p>



:



2


2


M



G

< p>
x



G


y










Arc


tan





G


y



G


x


通过梯度的方向,可以找到这个像素梯度方向的邻接像


素:



3



0



1



2



x



2



1



0



3



最后通过非最大值抑制以及阈值化和边缘连接。


Canny


算子有信噪比准则、


定位精度准则和单边缘响应准则。

< br>Canny


算法的实质是用一个准高斯函数做平滑运算,然后以带方向

< p>
的一阶微分算子定位导数最大值,它可用高斯函数的梯度来


近似,在理论上 很接近


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



-


-


-


-


-




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



-


-


-


2



-


-


0



0



2



0



4



2



(4)


、


135



3



4



(3)


、


45



方向



方向




向模板



2



0



2



3



2



-


0



4



6



2



图


5


方


6



由一阶 梯度算子得到图像的梯度图像。一般来说,其边


缘较粗。若直接对梯度图像设定阈值进行 二值化,很难找到


合适的阈值,使得检测出来的边缘达到要求,这不便于边缘

< p>
连接与边缘特征提取等后期处理。因此在对图像梯度图像进


行二值化前,有 必要对所检测出来的梯度边缘进行细化处


理。细化处理可以通过找出像素点


(m


,


n)


某个邻域中的最 大




值


Ma x(m,n)


,根据


Max(m


,


n)


来局部设定阈值。按照该点梯


度值与阈 值的关系对该点进行取舍,这样就能达到将梯度图


细化的目的。计算式如下:

< p>









edge


(


m


,< /p>


n


)



Max< /p>


(


m


,


n


)







grade


(


m


,


n


)



a



Max


(


i


,


j


)














edge


(


m


,


n


)


< /p>


0












others



式中:


grade(m


,


n)


为像素 点


(m


,


n)


对应的梯度值;


Max(m


,


m)


为


(m


,


n)


点


8


邻域最大梯度值;

a


为控制因子,


0


,通< /p>


过选取不同的


a


值.可以控制边缘的宽度 。




二阶微分算子



2.2.1 Laplacian


算子



拉普拉斯 二阶零交叉


(zerocross)


算子是利用边缘点处


二阶导函数出现零交叉原理来检测边缘。


函数


f


(


x


,


y< /p>


)


的拉普拉


斯算子公式为:




2


f

< br>


2


f



f



2



2



x



y


2



使用差分方程对


x


和


y


方向上的二阶偏导数近似如下 :




2


f< /p>



G


x



(


f


[


i

< p>
,


i



1


]



f


[

i


,


j


])






2



x



x



x












f


[


i


,


j



1


]



f


[


i

< br>,


j


]






x



x


(


f


[


i


,


j



2


]



2


f


[


i


,

< br>j



1


])


f


[


i


,


j


]













这一近似式是以点


[i,j+1]< /p>


为中心的。用


j-1


替换


j,


得到


以点


[i,j]


为中心的二阶偏导数的理想近似式:



< /p>


2


f



(


f


[


i


,

< p>
j



1


]



2


f


[

i


,


j


])



f


[


i


,


j



1


]


(1)




x


2


-


-


-


-


-


-


-


-