1、第 38 卷第 5 期 光电工程 Vol.38, No.5 2011 年 5 月 Opto-Electronic Engineering May, 2011 文章编号: 1003-501X(2011)05-0127-06 一种自适应阈值的 Canny 边缘检测算法 唐路路1,张启灿1,胡 松2( 1. 四川大学 电子信息学院 光电系,成都 610065; 2. 中国科学院光电技术研究所,成都 610209 ) 摘要: 针对传统 Canny 算法阈值选择困难的问题,本文提出一种基于最大类间方差法的自适应同步搜索高低阈值的方法。该方法首先根据梯度直方图信息将对应的像素分为三类;其次基于改进的 Ot
2、su 算法定义评价函数,该评价函数描述了类间方差;最后依次搜索评价函数的一个最大值,自动获取 Canny 算子的高低阈值。该方法不需要人为设定任何参数。与传统 Canny 算法、直接 Otsu 算法的结果比较表明,本文方法对不同的图像都能较好地提取真实边缘,特别是在低对比度图像的边缘提取上,此方法更具有优势。 关键词: 边缘检测; Canny 算法;改进的 Otsu 算法;自适应阈值 中图分类号: TP391.41 文献标志码: A doi: 10.3969/j.issn.1003-501X.2011.05.023 An Improved Algorithm for Canny Edge De
3、tection with Adaptive Threshold TANG Lu-lu1, ZHANG Qi-can1, HU Song2( 1. School of Electronic and Information Engineering, Sichuan University, Chengdu 610065, China; 2. Institute of Optics and Electronics, Chinese Academy of Sciences, Chengdu 610209, China ) Abstract: To overcome the difficulty of t
4、hreshold selecting in Canny algorithm, an improved method based on Otsu algorithm is proposed to choose the threshold adaptively and simultaneously. Firstly, guided by the gradient histogram of the test image, all the pixels are divided into three classes. Secondly, based on the improved Otsu algori
5、thm, an evaluation function is defined to describe the mean square error among the three classes. Finally, both the high and low thresholds are selected adaptively and independently by searching the maximum values of the evaluation function. Artificial parameter setting is not necessary in this meth
6、od. Compared with the results from traditional Canny method and Direct Otsu method, the method shows great advantage in extracting the real edges from different images, especially low contrast ones. Key words: edge detection; Canny algorithm; improved Otsu algorithm; adaptive threshold 0 引 言 随着当前数字化
7、信息技术的发展,数字图像处理技术变得越来越重要,尤其在光电探测领域更是得到了广泛应用,主要内容之一就是实现图像目标边缘的精确定位。目前的边缘检测方法都是通过计算图像的某个特征值 (梯度或灰度 ),然后依据给定的特征值控制阈值对图像信息进行处理1。常用的边缘检测算子有 Sobel、 Prewitt、 Robert、 Log、 Canny1-2等,他们针对特定的图像都取得了较好的边缘检测结果,但由于其本身的局限性,对某些图像无法达到满意的效果。近年来在这些传统方法的基础上,相继发展出了一批新的边缘检测方法,如曲面拟合法、基于神经网络及数学形态学方法、基于自适应平滑滤波法、小波变收稿日期: 2010
8、-10-15; 收到修改稿日期: 2011-02-22 基金项目: “西部之光”计划项目 作者简介: 唐路路 (1986-),女 (汉族 ),重庆人。硕士研究生,主要研究工作是三维光电技术。 E-mail: 。 光电工程 2011年 5 月 128换法等。 在众多的图像边缘检测方法中, Canny 算子以其严格的边缘检测评价标准得到了广泛应用。然而传统Canny 算子高低阈值的比例是固定的,并且是人为确定的,这就造成了它在一些应用领域的失败。实际中图像易受光照、杂散光以及其他各种噪声的干扰,记录的图像对比度有高有低,含噪程度不一。在这些情况下,如果仍然简单地使用传统 Canny 算子进行边缘检
9、测,一方面难以确定高低阈值;另一方面对不同图像采用相同的阈值比例,可能导致边缘信息丢失或出现伪边缘等。针对传统 Canny 算子阈值确定的困难,人们提出了各种解决办法。比如在梯度差分直方图中寻找合适的过零点位置作为高阈值,再用此高阈值乘以一个比例系数 (比如 0.5)作为低阈值3;运用 Otsu 算法确定 Canny 算子的高阈值,再用此高阈值乘以一个比例因子作为其低阈值4;在梯度直方图中搜索像素数最大处对应的梯度值作为标准梯度,再计算整个区间的标准差,最后用标准梯度加上整个区间的标准差作为 Canny 算子的高阈值。高阈值确定后,在梯度直方图中忽略高阈值以后的梯度和像素,对剩下的梯度和像素重
10、复执行上面的操作,即用剩下区间的标准差加上原来的标准梯度作为 Canny 算子的低阈值5;还有一些方法是基于数理统计,通过定义有关概率的评价函数来确定高低阈值6-7。这些方法在一定程度上解决了 Canny 算子阈值确定的问题。 本文提出一种基于最大类间方差的自适应同步搜索高低阈值的方法。该方法较传统方法自适应性更强,不需要人为设定任何参数,根据图像自身的特征自动选取高低阈值,而且高低阈值的确定互不相关。通过对多幅不同的图像进行边缘提取,结果表明该方法较传统方法更能较好地提取出真实边缘。同时与文献 4中 Otsu 直接应用于 Canny 算法的方法做比较实验,结果表明本文方法更能有效地提取图像的
11、边缘。 1 Canny 算法简介 Canny 算法提出了三个严格的边缘检测标准: (a)好的信噪比; (b)高的定位精度; (c)单边缘响应。根据这三个准则, Canny 推导出最优边缘检测算子的一个近似实现,即边界点位于图像被高斯函数平滑后的梯度幅度极大值点上8。其具体过程包括: 1) 利用一维高斯函数,分别按行和列对图像进行低通平滑滤波。其高斯函数为 )2exp(21)(22xxG = (1) 2) 计算平滑后图像中各点的梯度值和梯度方向,记录于梯度幅值图和梯度方向图中 。 采用 22 邻域一阶偏导的有限差分,计算平滑后图像 I(x, y)的 x, y 方向的偏导数为 +=+=2/),11
12、,1,1,(,2/)1,1,1,1(,jiIjiIjiIjiIjiPjiIjiIjiIjiIjiPyx(2) 求出 x, y 方向的偏导以后,再利用二范数来计算梯度幅值 M、梯度方向 分别为 22, jiPjiPjiMyx+= (3) ),/,arctan(, jiPjiPjiyx= (4) 3) 对梯度幅值进行非极大值抑制,确定候选边缘点。在梯度幅值图中,如果某点梯度值与该点梯度方向上相邻两个像素的梯度值相比不是最大,则该点视为非边缘点被删除。抑制后得到的候选边缘点记录在图 edge 中。 4) 设置全局高低两阈值,选取边缘点。梯度幅值图的直方图分布中,像素点个数按梯度幅值递增方向累加,累加
13、个数达到总数的一定比例 (比如 80%)时,对应的梯度值作为高阈值,高阈值的一半或 40处为低阈值。在图 edge 中的候选边缘点中,梯度值大于高阈值的点作为边缘保留,梯度值小于低阈值的点则删除,梯度值介于两阈值间且与边缘点邻接的点作为边缘保留,否则删除。再判断保留点的八个方向中是否存在大于高阈值的边缘像素,如果存在则认为它就是边缘点,否则不是9。 由 Canny 算法流程可以看出阈值的选取是进行图像边缘提取的关键。 传统 Canny 算子需要人为预先设置高低阈值,这需要先验经验,可能反复多次试验才能找到合适的阈值。阈值设置过高可能导致边缘断裂、第 38 卷第 5 期 唐路路 等:一种自适应阈
14、值的 Canny 边缘检测算法 129不连续,从而丢失边缘信息。阈值设置过低可能导致提取的边缘中出现过多的伪边缘,甚至将噪声当做边缘提取。并且实际记录的图像易受光照、场景等不确定因素的影响,不同的图像其高低阈值比例不可能是一个固定的值。所以传统的 Canny 算子在阈值的确定上不具有自适应性。 2 自适应阈值的 Canny 算法 Otsu 算法是一种使类间方差最大的自动确定阈值方法。其基本思想是把图像像素分为背景和目标两类,通过搜索计算类间方差最大值,得到最优阈值10。选取的最佳阈值应当是用该阈值分割得到的两类间具有最好的分离性,类间分离性最好的判据是数理统计意义上的类间方差最大化或者类内特性
15、方差最小11。受 Otsu 算法的启示,针对传统 Canny 算子在阈值确定上的困难,本文提出一种基于梯度幅度直方图和类间方差最大法的自动阈值选取方法。 设图像中的总像素为 N,灰度级范围为 1,0 L ,灰度级 i 对应的像素数为iN ,其概率为 NNPii/= ( 1,.,2,1,0 = Li ) (5) 背景类 (Background)由灰度值在 0, T之间的像素组成,目标类 (object)由灰度值在 1,1 + LT 之间的像素组成。则背景和目标的灰度均值分别表示为 )()(b0bTwPiTuTii= ;)()(o11oTwPiTuLTii+= (6) 其中: =TiiPTw0b)
16、( ;+=11o)(LTiiPTw ; 1)()(ob=+ TwTw (7) 图像总的灰度均值定义为 )()()()(oobbTwTuTwTuu += (8) 图像背景和目标两类像素的类间方差定义为 2oo2bb2)()()()()( uTuTwuTuTwT += (9) 在 Ostu 算法中,让 T 在 1,0 L 范围内依次取值,使 )(2T 最大的 T 值即为 Ostu 算法的最佳阈值。 Ostu 算法实际上是以错分概率最小作为分割阈值的选取准则12。 受 Otsu 算法的启示,可以将 Canny 算子中非极值抑制后 edge 图中的像素划分为 D1, D2, D3三个类别。其中 D1包
17、含梯度幅值为 ,.,21 kttt 的像素,代表着原图中的非边缘点。 D2包含梯度幅值为,.,21 mkkttt+的像素,代表着原图中需要判断是否为边缘点的点。 D3包含梯度幅值为 ,.,21 lmmttt+的像 素,代表着原图中的边缘点。设原图中总的像素数为 N,灰度梯度为jt 对应的像素数为jn ,其概率为Nnpjj/= , ( lj ,.,2,1= )。则整个区间的梯度幅值期望为 =ljjjptE1(10) 发生在 D1, D2, D3类内的梯度幅值期望分别为 +=+=+=+=lmjjlmjjjmkjjmkjjjkjjkjjjpptmepptmkepptke113112111)(;),(
18、;)( (11) 并且定义: +=+=lmjjmkjjkjjpmppmkppkp111)(;),(;)( (12) 则可以定义评价函数 )()(),(),()()(),(2322212mpEmemkpEmkekpEkemk += (13) 即 +=+=+=+=mkjjljjjmkjjmkjjjkjjljjjkjjkjjjpptpptpptpptmk12111121112.)(.)(),( +=+=+= lmjjljjjlmjjlmjjjpptppt12111.)( (14) 光电工程 2011年 5 月 130对于一幅已知图,上式中的 tj, pj可以通过它的梯度直方图求出,梯度等级 l 可以
19、人为地确定,通常设置为 64 个等级。因此上式即为一个关于 k 和 m 的二元二次函数, k 在 1, l之间取值, m 在 k+1, l之间取值。 2(k, m)描述了类间方差,而类间方差最大化是数理统计意义上类间分离性最好的判据之一。因此可以搜索 2(k, m)的最大值,其最大值对应的 tm, pm的值即为 D1, D2, D3区间的分界点,也即为我们所求的 Canny 算子的高低阈值。则自适应阈值 Canny 算法的流程图如下。 3 实验结果与分析 以 MATLAB 7.8.0(R2009a)为实验平台选取不同的 4 幅图,分别采用传统的 Canny 算法 (高低阈值比例系数统一为 0.
20、8, 0.5,高斯参数统一为 1)、文献 4 中 Otsu 直接运用于 Canny 算法 (以 Otsu 算法确定的阈值作为 Canny 的高阈值, 0.5 倍高阈值作为 Canny 的低阈值 )以及本文自适应阈值的 Canny 算法进行边缘检测分析。图 2 中第一行为对比度较低的蔬菜水果图;第二行为经典的 Lena 图;第三行为复杂的电路板图;第四行为边缘信息较丰富的 Dragon 图片;其实验结果如图 2。 Select the thresholdInput source image Gaussian filter smoothing Finding gradients Double th
21、reshold Non-maximum suppression Edge tracking by hysteresis Divide pixels into three classesCalculate expectation Define evaluation functionSearch the maximum value图 1 自适应阈值 Canny 算法的流程图 Fig.1 Flow chart of Canny algorithm with adaptive threshold第 38 卷第 5 期 唐路路 等:一种自适应阈值的 Canny 边缘检测算法 131表 1 中的参数为采用
22、不同方法时 Canny 算子的高低阈值,是归一化后的灰度梯度幅值。由以上实验结果可以看出,本文自适应阈值的 Canny 算法可以有效地提取出图像的边缘,并且较传统方法以及直接用Otsu 算法确定 Canny 的高阈值这两种方法更有优势。从图 2 可以看出,在用前两种方法提取 Lena 图的边缘时, Lena 的帽顶、帽沿、脸庞处的线条有明显的断裂,而用本文方法提取时线条清晰连续;同样的,应用前两种方法时,蔬菜图中青椒表面、电路图的中部、 Dragon 的身体表面一些较明显的边缘被忽略掉了,而本文方法提取的边缘信息更加丰富有效。 4 结 论 本文提出了一种基于最大类间方差法的自适应同步搜索高低阈
23、值的方法,首先按梯度将其对应的像素分为三类,其次基于改进的 Otsu 算法定义评价函数,其评价函数描述了类间方差,再依次搜索寻找使评价函数值最大时对应的两个梯度 tk和 tm,确定为 Canny 算子的高低阈值。整个算法过程不需要人为设定任何参数,根据图像自身的特点自动确定 Canny 算法的高低阈值。这为传统 Canny 算法阈值确定问题提供了一个较好的解决方法。实验表明,该方法对不同的图像都能较好地提取出它们的真实边缘,并且本文方法较传统 Canny 算法以及直接用 Otsu 算法确定 Canny 的高阈值这两种方法更具有优势。 参考文献: 1 冈萨雷斯 . 数字图像处理:二版 M. 北京
24、:电子工业出版社, 2007: 463-491. Rafael C Gonzalez. Digital Image Processing: Second Edition M. Beijing: Publishing House of Electronics Industry, 2007:463-491. 2 冈萨雷斯 . 数字图像处理: MATLAB 版 M. 北京:电子工业出版社, 2005: 289-295. Rafael C Gonzalez. Digital Image Processing Using: MATLAB M. Beijing: Publishing House of E
25、lectronics Industry, 2005:表 1 实验参数统计 Table 1 Statistics of experiment parameters Lowthreshold TkHighthreshold TmClassical Canny Otsu Canny Threshold-adaptiveCanny Classical Canny Otsu Canny Threshold-adaptiveCanny Vegetable image 0.078 1 0.115 7 0.072 5 0.156 3 0.231 4 0.196 1 Lena image 0.085 9 0.1
26、09 8 0.059 6 0.171 9 0.219 6 0.155 3 Circuit diagram 0.101 6 0.107 8 0.068 6 0.203 1 0.215 7 0.168 6 Dragon image 0.101 6 0.094 1 0.058 8 0.203 1 0.188 2 0.172 5 图 2 Canny 边缘检测结果 第一列为原始图 ; 第二列为传统 Canny 算法边缘检测结果 ; 第三列为 Otsu 算法直接运用于 Canny 算法中的边缘检测结果 ; 第四列为本文自适应 Canny 算法边缘检测结果 Fig.2 The result of Canny
27、 edge detection Row 1: Original image; Row 2:The result of classical Canny edge detection; Row 3 : The result of Otsu thresholding method on Canny operator; Row 4 :The result of threshold-adaptive Canny edge detection 光电工程 2011年 5 月 132289-295. 3 雒涛,郑喜凤,丁铁夫 . 改进的自适应阈值 Canny边缘检测 J. 光电工程, 2009, 36(11)
28、: 106-111, 117. LUO Tao, ZHENG Xi-feng, DING Tie-fu. Improved Self-adaptive Threshold Canny Edge Detection J. Opto-Electronic Engineering, 2009, 36(11): 106-111, 117. 4 MEI Fang, YUE Guang-xue, YU Qing-cang. The Study on An Application of Otsu Method in Canny Operator C/ISIP09,Huangshan, China, Augu
29、st 21-23, 2009: 109-112. 5 WANG Zhi. Fast Adaptive Threshold for the Canny Edge Detector J. Proc. of SPIE(S0277-786X), 2005, 6044:60441Q1-60441Q8. 6 李钰 . 自适应双阈值 Canny 算子的图像边缘检测 J. 长春工程学院学报, 2007, 8(3): 44-46. LI Yu. Adaptive Binary Threshold for the Canny Edge Detection J. J. Changchun Inst. Tech, 2
30、007, 8(3): 44-46. 7 李牧 . 自适应 Canny算子边缘检测技术 J. 哈尔滨工程大学学报, 2007, 28(9): 1002-1007. LI Mu. Self-adaptive Canny operator edge detection technique J. Journal of Harbin Engineering Univerity, 2007, 28(9):1002-1007. 8 金刚 . 自适应 Canny 算法研究及其在图像边缘检测中的应用 D. 杭州:浙江大学, 2009: 22-24. JIN Gang. A Research on Adaptiv
31、e Canny Algorithm and Its Application in Image Edge Detection D. Hangzhou: Zhejiang University, 2009: 22-24. 9 John Canny. A Computational Approach to Edge Detection J. IEEE Trans. Pattern Analysis and Machine Intelligence(S0162-8828), 1986, 8(6): 679-698. 10 Otsu N. A threshold selection method fro
32、m gray-level histogram J. IEEE Transactions on system Man Cybernetics(S1083-4419), 1979, 9(1): 62-66. 11 唐良瑞,马全明 . 图像处理实用技术 M. 北京:化学工业出版社, 2002: 98-99. TANG Liang-rui, MA Quan-ming. Applied Technology of Image Processing M. Beijing: Publishing House of Chemistry Industry, 2002: 98-99. 12 Ping Sung Liao. A Fast Algorithm for Multilevel Thresholding J. Journal of Information Science and Engineering (S1016-2364), 2001, 17: 713-727.