基于改进canny算法的单峰直方图边缘检测
2014-02-06陈世文谭建斌
陈世文,丘 威,谭建斌
(1.嘉应学院计算机学院,广东 梅州 514015;2.佛山职业技术学院 电子信息系,广东 佛山 528237)
边缘是图像中的一种基本特征,可以为图像分析和图像识别提供重要的信息,是一个非常重要的研究课题.像素灰度值两边有着明显的变化表现为阶跃性边缘;灰度值处在从增加到减少的变化转折点表现为屋顶状边缘.传统的边缘检测算法有:Robert算子、Prewitt算子、Sobel算子、LOG算子、Laplacian算子、Kirsch算子等.这些算子的基本特点是计算简单、实现容易,但是由于边缘本身的复杂性,这些算子在抗噪性能方面效果不够理想.很多学者提出了改进的边缘检测方法[1~7].
相对而言,canny算子在边缘检测中具有较高的精度,因而得到了广泛的应用.但是由于canny算子自身的不足:高低阈值需要人为确定、高斯滤波参数选择困难,容易造成检测中出现大量虚假边缘.特别是图像直方图成单峰状态时,传统canny算法边缘检测不够理想.针对canny算子的不足,本文提出一种融入最小交叉熵的边缘检测算法,利用最小交叉熵动态地计算图像的高低阈值,解决图像的灰度级集中在某一区域时的情况.实验结果表明,该算法边缘检测效果较好,噪声抑制能力较强.
1 传统canny算法
Canny算子在边缘检测中基于以下的最优准则:(a)信噪比准则,即将非边缘点误判为边缘点或者将边缘点误判为非边缘点的概率要低;(b)定位精度准则,即检测出的边缘位置尽可能地接近真正边缘中心点;(c)单边响应准则,即单一边缘响应唯一,虚假边缘响应受到最大的抑制.
利用二维高斯函数构造滤波器,如(1)式
(1)
计算二维滤波器模板的一阶偏导,得到两个一维滤波器,用标准卷积得到高斯平滑.其中σ是高斯函数的标准差,控制着平滑图像的程度.图像平滑后其梯度幅值和方向一般通过2×2邻域内的一阶导数的有限差分来计算.在x方向和y方向的偏导数分别为Px(x,y)和Py(x,y),则图像的梯度幅值和梯度方向分别为:
(2)
θ(x,y)=arctan(Py(x,y)/Px(x,y)).
(3)
对像素点的梯度幅值进行非极大值抑制,即判断像素点的梯度值在其八邻域内是否为最大值,如果是则是边缘,如果否则为零.经过非极大值抑制后,Canny算子采用双阈值(高低阈值)方法检测图像边缘.
2 传统Canny算法的不足
如图1所示,(a)为原始图,(b)传统canny检测结果,图2为硬币直方图.由图可见,检测效果较差,原因是传统的canny算法采用确定的高低阈值,当图像的灰度级集中在某一区域时,直方图没有明显双峰,固定的高低阈值无法满足检测要求.高低阈值的选取很重要,高阈值关系到边缘检测的起始点,当高阈值Th较小时,检测到的边缘信息较多,但是虚假也随之增多;当高阈值Th较大时,抑制噪声能力增强,但是容易丢失实际边缘信息.低阈值Tl关系到边缘检测的中止点,Tl选择越小保留的边缘信息越多,随着Tl的增大,目标边缘信息不断减少,容易导致边缘的断裂.
3 最小交叉熵阈值法
假若一幅图像的尺寸为M×N,其灰度级为L,图像上某一像素点的灰度值表示为f(x,y)(1≤x≤M,1≤y≤N),计算每个像素点在其K×K邻域的平均灰度值,得到一幅平滑的图像g(x,y),其灰度级也为L.通常L取为255,K取为3,即8邻域模板.f(x,y)与g(x,y)组成二元组记为(i,j),设图像中灰度级为i邻域平均灰度级为j的像素点个数为r(i,j),定义二元组(i,j)在图像和其邻域平滑图像中出现的概率为
(4)
定义二维直方图如图4所示,横坐标为图像像元的灰度值i,纵坐标为像元邻域平均灰灰值j,设阈值(S,T)(0≤S,T≤L-1)把二维直方图分割成A、B、C、D4个区域,区域A和B分别代表目标和背景,区域C和D分别代表边缘或噪声,由于边缘和噪声较少,一般认为远离对角线区域的C和D的分量近似为零.如图3所示,任意阈值向量(S,T)对图像进行分割,可以得到目标和背景2类区域,分别标记为Ca和Cb,则2类区域的先验概率分别表示为:
图3 二维直方图区域划分
(5)
(6)
假设阈值为(S,T)时,目标和背景的类内均值分别表示为up(S,T)和uQ(S,T),其分别代表分割后目标和背景的灰度,则
(7)
uQ(S,T)=
(8)
其中
(9)
(10)
定义二维交叉熵函数为[5]:
(11)
最小交叉熵对应的最佳阈值向量就是:
(12)
最小交叉熵阈值法是图像分割中计算阈值的方法,考虑了图像中周围像素的相关性,可以动态地计算图像的分割阈值,用于计算canny算子的高低阈值,满足复杂图像边缘检测的阈值要求.
4 实验结果及分析
在Matlab 7.1环境进行仿真实验,对两幅图像进行实验,利用最小交叉熵算法计算高阈值Th,为了节省计算,T1为高阈值的一半.实验一为直方图双峰不那么明显的图像进行实验,如图4所示;实验二为直方图成单峰状态的图像进行实验,如图5所示.实验一结果所示,当图像直方图双峰不那么明显时,传统canny算法检测的边缘信息过于丰富,有相当一部分虚假边缘,本文方法较好地检测出了目标边缘.实验二结果所示,当图像灰度级集中时,即直方图双峰不明显时,传统canny算法出现大量虚假边缘,效果不理想,本文方法虽然也丢失了一些边缘信息,但是大体上检测出了目标边缘,结果仍算满意.因此,本文方法相对传统canny算法具有一定优越性.
5 结论
本文针对传统canny算法在边缘检测中的不足,提出了一种图像直方图成单峰状态时的边缘检测算法.算法通过最小交叉熵来计算canny的高低阈值,从而得到较理想的阈值.实验证明,本文算法对于灰度级集中的图像能较好地检测出图像的轮廓,算法优于传统canny算法.
[1] ZHANG B,HE S.Improved edge detection method based on canny algorithm[J]. Infrared Technology, 2006,28 (3): 165-169.
[2] LEI Z, S DONG, MA H.Recent methods and applications on image edge detection[C]. International Workshop on Education Technology and Training & International Workshop on Geo science and Remote Sensing, 2008:332-335.
[3] CHEN J, WANG Z H, D0U L H. Scale adaptive Canny edge detection method[J]. Opto-Electronic Engineering,2008,35 (2) 79-84.
[4] 黄剑玲,郑雪梅.一种改进的基于canny 算子的图像边缘提取算法[J].计算机工程与应用,2008,44(25):170-172.
[5] LI C H,LEE C K. Minimum cross entropy threshold[J].Pattern Recognition,1993,26(4):617-625.
[6] 薛丽霞,李涛,王佐成.一种自适应的Canny边缘检测算法[J].计算机应用研究,2010,27(9):3588-3590.
[7] 陈世文,刘越畅.一种基于最小交叉熵的canny边缘检测算法[J].电视技术,2013,37(1):165-168.