陳世文 丘威 房宜汕
摘 要: 針對傳統Canny算子在邊緣檢測中的不足,提出一種基于Canny算子圖像邊緣檢測的改進方法。傳統Canny算子的高低閾值一般是人為地設定固定值,這容易造成虛假邊緣。對此,利用最小交叉熵計算Canny算子的高低閾值,得到理想的邊緣后,利用數學形態學對結果進行后處理。實驗結果表明,改進后的算法具有自適應性,抑制噪聲能力較強,有效地提高了邊緣檢測的魯棒性。
關鍵詞: 邊緣檢測; Canny算子; 數學形態學; 最小交叉熵
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2014)08-33-04
Improvement of edge detection algorithm based on Canny operators
Chen Shiwen, Qiu Wei, Fang Yishan
(department of computer, Jiaying University, Meizhou, Guangdong 514000, China)
Abstract: The traditional Canny edge detection algorithm has the defects of losing details of the edge. In this paper an improved Canny-based edge detection algorithm is proposed.High and low threshold are given as an fixed value in traditional Canny operator, which may cause false edge information when the image's all gray level is concentrated on one region. A desired threshold value is given based on minimum cross entropy, and the obtained edge will be handled by mathematical morphology. The experiment results indicate that the algorithm improves the effect of edge detection in the case of noise disturbance, and has a good robustness and also a strong self-adaptability.
Key words: edge detection; Canny operator; mathematic morphology; minimum cross entropy
0 引言
邊緣信息是圖像中的一種基本特征,可以為圖像分析和圖像識別提供重要的信息,對圖像邊緣信息的研究是很有實際意義的。有著明顯變化的像素灰度值兩邊表現為階躍性邊緣;灰度值處在從增加到減少的變化轉折點表現為屋頂狀邊緣。傳統的邊緣檢測算法有:Robert算子、Prewitt算子、Sobel算子、LOG算子、Laplacian算子、Kirsch算子等。這些算子的基本特點是計算簡單、實現容易,但是由于邊緣本身的復雜性,這些算子在抗噪性能方面效果不夠理想。很多學者提出了改進的邊緣檢測方法[1-7]。
相對而言,Canny算子在邊緣檢測中具有較高的精度,因而得到了廣泛的應用。但是Canny算子有自身的不足:高低閾值需要人為確定,高斯濾波參數選擇困難,容易造成檢測中出現大量虛假邊緣。針對Canny算子的不足,本文提出一種融入最小交叉熵的邊緣檢測算法,利用最小交叉熵動態地計算圖像的高低閾值,解決圖像的灰度級集中在某一區域時的情況;提取圖像邊緣后再對結果用數學形態學方法進行后處理。通過實驗對比了本文算法與傳統Canny算法和文獻[7]的算法的檢測結果,結果表明,改進后的算法具有較強的自適應性和噪聲抑制能力,能檢測到更佳的圖像邊緣。
1 傳統Canny算法
Canny算子在邊緣檢測中基于以下最優準則:(a)信噪比準則,即將非邊緣點誤判為邊緣點或者將邊緣點誤判為非邊緣點的概率要低;(b)定位精度準則,即檢測出的邊緣位置盡可能地接近真正邊緣中心點;(c)單邊響應準則,即單一邊緣響應惟一,虛假邊緣響應受到最大的抑制。
利用二維高斯函數構造濾波器,如⑴式:
⑴
計算二維濾波器模板的一階偏導,得到兩個一維濾波器,用標準卷積得到高斯平滑。其中σ是高斯函數的標準差,控制著平滑圖像的程度。
圖像平滑后其梯度幅值和方向一般通過2×2鄰域內的一階導數的有限差分來計算。在x方向和y方向的偏導數分別為Px(x,y)和Py(x,y),則圖像的梯度幅值和梯度方向分別為:
⑵
⑶
對像素點的梯度幅值進行非極大值抑制,即判斷像素點的梯度值在其八鄰域內是否為最大值,如果是則是邊緣,如果否則為零。
經過非極大值抑制后,Canny算子采用雙閾值(高低閾值)方法檢測圖像邊緣。
2 傳統Canny算法的不足
如圖1所示,給圖1(a)加了0.01標準差的高斯噪聲,由實驗圖可見傳統的Canny算子檢測效果不夠好,對噪聲的抑制能力較差。高斯濾波參數σ的選取很重要,若σ選取較大時,高斯平滑模板變大,頻帶窄,抗噪能力較強,但是容易造成圖像的緩變邊緣丟失及過度光滑;若σ選取較小時,頻帶較寬,邊緣細節精度高,但是圖像平滑作用較小,抗噪聲能力較弱。
如圖2所示,圖2(a)為原始圖,圖2(b)為傳統Canny檢測結果,圖3為硬幣直方圖。傳統檢測效果較差,原因是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所示,橫坐標為圖像像元的灰度值i,縱坐標為像元鄰域平均灰灰值j,設閾值(S,T)(0≤S,T≤L-1)把二維直方圖分割成A、B、C、D4個區域,區域A和B分別代表目標和背景,區域C和D分別代表邊緣或噪聲,由于邊緣和噪聲較少,一般認為遠離對角線區域的C和D的分量近似為零。
圖4 二維直方圖區域劃分
如圖4,任意閾值向量(S,T)對圖像進行分割,可以得到目標和背景2類區域,分別標記為Ca和Cb,則2類區域的先驗概率分別表示為:
⑸
⑹
假設閾值為(S,T)時,目標和背景的類內均值分別表示為up(S,T)和uQ(S,T),其分別代表分割后目標和背景的灰度,則:
⑺
⑻
其中:
⑼
(10)
定義二維交叉熵函數為[5]:
最小交叉熵對應的最佳閾值向量就是:
(12)
最小交叉熵閾值法是圖像分割中計算閾值的方法,考慮了圖像中周圍像素的相關性,可以動態地計算圖像的分割閾值,用于計算Canny算子的高低閾值,滿足復雜圖像邊緣檢測的閾值要求。
4 濾波參數選取
對圖像進行平滑濾波有利于抑制噪聲,提高信噪比。高斯濾波器中高斯參數σ決定著濾波器抑制噪聲的能力。高斯參數σ偏大,抑制噪聲能力強,但是可能會把目標邊緣細節信息濾除掉,若高斯參數σ偏小,又容易出現虛假邊緣。這里,采用如下式子計算σ[6]:
(13)
(14)
Emin=min(E) (15)
σ=E/Emin (16)
其中,N為窗口大小,M、E分別為圖像的均值和方差,Emin為一幅圖像中的最小方差。當σ值較大時,改為:σ=kE/Emin,其中k=1/M,即為窗口內均值的倒數。采用方差計算σ,原因是方差能較好表征窗口內的像素變化特點,通常方差小的為非邊緣點或者是被噪聲污染的小區域。
5 數學形態學
假設A為圖像集合,B為結構元素,數學形態學運算是用B對A進行操作。其中結構元素本身也是一個圖像集合。對每個結構元素,指定一個原點,它是結構元素參與形態學運算的參考點。數學形態學有兩種基本的變換,即腐蝕和膨脹,形態學其他運算可以由這兩種運算復合而成。下面以二值形態學理論介紹腐蝕與膨脹。
膨脹的算符為,A用B來膨脹寫作AB,其定義為:
(17)
式(17)表明用B膨脹A的過程,先對B做關于原點的映射,再將其映像平移X,這里A與B映像的交集不為空集。
腐蝕的算符為Θ,A用B來腐蝕寫作AΘB,其定義為:
(18)
式(18)表明A用B腐蝕的結果是所有X的集合,其中B平移X后仍在A中。也就是說,用B來腐蝕A得到的集合是B完全包括在A中時B的原點位置的集合。
用改進的Canny算子提取圖像邊緣信息后,對結果進行數學形態學后處理,使邊緣信息更加豐富。
6 實驗結果及分析
在Matlab 7.1環境下,對三幅圖像進行仿真實驗,利用最小交叉熵算法計算高閾值Th,為了節省計算,Tl為高閾值的一半。實驗一為直方圖雙峰比較明顯的原始圖,如圖5所示;實驗二為加了0.01標準差的高斯噪聲的圖像,如圖6所示;實驗三為直方圖雙峰不明顯的圖像,如圖7所示(直方圖如圖3)。
實驗一結果顯示,當圖像直方圖雙峰比較明顯時,傳統Canny算法檢測的邊緣信息豐富,但也有相當一部分虛假邊緣,文獻[7]方法大體檢測出了邊緣信息,但是在單車的后輪邊緣信息丟失較嚴重,本文方法較好地檢測出了目標邊緣。實驗二結果顯示,當圖像被噪聲污染時,傳統Canny算法檢測效果不理想,抑制噪聲能力較差;文獻[7]抑制噪聲效果不錯,但仍有很多噪聲點,檢測非邊緣信息;本文方法抑制噪聲能力較好,仍然能夠檢測出目標的輪廓。實驗三結果顯示,當圖像灰度級集中時,即直方圖雙峰不明顯時,傳統Canny算法出現大量虛假邊緣,效果不理想,文獻[9]對單峰的直方圖的邊緣檢測效果亦不理想,本文方法雖然也丟失了一些邊緣信息,但是大體上檢測出了目標邊緣,結果仍算滿意。因此,本文方法相對具有一定優越性。
7 結束語
本文針對傳統Canny算法在邊緣檢測中的不足,提出了一種基于Canny算子圖像邊緣檢測的改進方法。本算法通過最小交叉熵來計算Canny的高低閾值,利用灰度值來計算高斯參數σ。檢測出邊緣輪廓后對結果進行數學形態學后處理。實驗證明,本算法抑制噪聲能力較強,對于灰度級集中在某一區域的圖像亦能檢測出大體輪廓,算法優于傳統Canny算法,具有一定魯棒性。
參考文獻:
[1] Zhang Bin, He Saixian.Improved edge detection method based on
Canny algorithm[J]. Infrared Technology,2006.28(3):165-169
[2] Lei Zhai, Shouping Dong, Honglian Ma.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 Jie, Wang Zhen-hua, D0U Li-hua. 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