田 斌 ,張偉鋒 ,劉永剛 ,王 丹
(1.洛陽師范學院信息技術(shù)學院,河南洛陽 471022;2.河南科技大學河南省機械設計及傳動系統(tǒng)重點實驗室,河南洛陽 471003;3.洛陽市洛龍區(qū)教育局,河南洛陽 471000)
邊緣是圖像最基本的特征,人們對邊緣檢測展開了大量的研究,并取得了一系列成果。經(jīng)典的邊緣檢測算法認為邊緣主要表現(xiàn)為圖像局部特征的不連續(xù)性,從而關于邊緣檢測算子的研究主要集中于灰度圖像梯度的研究。在階躍狀邊緣中兩邊的灰度值有明顯的變化;而屋頂狀邊緣中邊緣位于灰度增加與減少的交界處。傳統(tǒng)的邊緣檢測算子如Roberts、Sobel、Prewitt、Kirsch和Lap lacian等算子都是局域窗口梯度算子[1-3],這些算子簡單易于實現(xiàn),具有很好的實時性,但對噪聲較敏感,邊緣不夠精細,所以在實際圖像處理中效果并不理想。1986年,Canny提出邊緣檢測算子應滿足以下3個判斷準則:信噪比準則;定位精度準則;單邊緣響應準則。并由此推導出了最佳邊緣檢測算子——Canny算子[4]。Canny算子在邊緣檢測方面獲得了良好的效果,很快就成為評價其它邊緣檢測方法的標準。近年來,很多學者提出了基于 Canny算子的改善算法[5-11],然而在實際應用中發(fā)現(xiàn),圖像中存在噪聲及模糊的邊緣。在這種情況下,如果簡單地使用Canny算子進行邊緣檢測,一方面很難設定高、低閾值等參數(shù),另一方面無法消除局部噪聲干擾,在檢測出偽邊緣的同時還會丟失一些變化緩慢的弱邊緣。為此,提出一種自適應Canny邊緣檢測算法,該算法可以根據(jù)圖像梯度信息的分布特征自適應地生成高、低閾值,提出的計算梯度幅值的新方法還具有噪聲抑制的能力,利用慣性原理進行邊緣跟蹤可以得到更加光滑的邊緣,并在實際應用中獲得了較好的效果。
Canny邊緣檢測算法的基本思想[2-3]是:首先對圖像進行平滑濾波;然后采用非極大值抑制(Nonmaxima Suppression)技術(shù),對平滑后的圖像處理,得到最后的邊緣圖像。根據(jù)Canny定義,中心邊緣點為算子與圖像f(x,y)的卷積在邊緣梯度方向上區(qū)域中的最大值,這樣Canny邊緣檢測算子的檢測步驟為:
(1)平滑圖像。(2)用一階偏導數(shù)的有限差分均值來計算平滑后的圖像I(x,y)的梯度幅值和梯度方向,其中x和y方向的偏導數(shù)Px[i,j]和Py[i,j]分別用式(1)和式(2)來計算:
像素的梯度幅值用直角坐標到極坐標的坐標轉(zhuǎn)化公式(3)來計算,用二階范數(shù)來計算梯度幅值為:
(3)對梯度幅值進行非極大值抑制。(4)用雙閾值算法[7-8]檢測和連接邊緣:雙閾值算法是設定兩個閾值high和lower,對非極大值抑制圖像進行雙閾值化,可得到一個高閾值檢測結(jié)果和一個低閾值檢測結(jié)果。然后在高閾值檢測結(jié)果中連接邊緣輪廓,連接到端點時,到低閾值檢測結(jié)果中尋找邊緣點,直到高閾值檢測結(jié)果所有間隙連接起來為止。
Canny算法存在以下缺陷:(1)對噪聲過于敏感,容易檢測出偽邊緣,實驗效果不是很好。(2)需要人為設定高、低閾值,沒有顧及梯度圖像中的信息特征,不具有自適應能力,自動化程度低,且目標物體的輪廓邊緣不連續(xù),使分割效果受到影響。(3)沒有考慮邊緣的走向,容易使邊緣粗糙不光滑。
針對傳統(tǒng)Canny算法在梯度幅值計算上的缺陷,提出了一種新的計算梯度幅值的算法。用式(5)、式(6)來計算梯度值,待檢測點不參與運算,梯度幅值和梯度方向仍然用式(3)和式(4)計算。
下面通過幾個例子來說明兩種算法的不同,4種直線邊緣和噪聲如圖1所示。
圖1 4種邊緣和噪聲
它們的中心點代表待檢測點I[i,j],第1行是I[i-1,j-1],I[i-1,j],I[i-1,j+1];第2行是I[i, j-1],I[i,j],I[i,j+1];第3行是I[i+1,j-1],I[i+1,j],I[i+1,j+1]。其中黑色塊的灰度值是‘0,,白色塊是‘255,。用式(1)和式(2)計算舊的Px[i,j]和Py[i,j],用式(5)、式(6)計算新的Px[i,j]和Py[i,j],然后把它們代入式(3)計算傳統(tǒng)梯度幅值M舊[i,j]和新梯度幅值M新[i,j],計算結(jié)果見表1。
表1 兩種算法梯度幅值的比較
由表1可知:對于4種直線邊緣M新[i,j]均大于等于M舊[i,j],這說明新算法檢測邊緣的能力要強于傳統(tǒng)算法;對于噪聲M新[i,j]等于‘0,,而M舊[i,j]則比較大,這說明新算法具有抑制噪聲的能力,而傳統(tǒng)算法則對噪聲非常敏感。后面的實驗進一步證實了新算法的優(yōu)越性。
針對傳統(tǒng)Canny算法需要指定高、低閾值方面的缺陷,提出了一種根據(jù)非極大值抑制圖像內(nèi)容自適應生成高、低閾值的方法,具體方法如下:
根據(jù)先驗知識可知:在非極大值抑制圖像中邊緣像素所占的比例遠遠小于非邊緣像素所占的比例,將梯度直方圖中擁有最多像素數(shù)的梯度值稱為像素最值梯度 Hmax(根據(jù)先驗知識可知 Hmax一般是非邊緣點的梯度值),計算圖像內(nèi)全部像素的梯度相對于 Hmax的方差稱之為像素最值梯度方差 σmax。文獻[5]用式(7)計算σmax,用式(8)計算高閾值high:
其中:K為像素數(shù)不為0的梯度的最大值;N為像素總數(shù);Hi梯度值為i的像素梯度值。
式(7)只考慮那些界于梯度值為 0和K之間的梯度值與Hmax的方差,未考慮具有該種梯度值的像素個數(shù),因為不同的梯度圖像,完全可以有相同的Hmax,從而得到相同的high,顯然對不同的圖像使用相同的高閾值是不合適的。故本文使用式(9)計算σmax,用式(10)計算high,用式(11)計算低閾值lower:
其中:Ni梯度值為Hi的像素數(shù)目;不同的圖像就會具有不同的像素最值梯度方差。
當經(jīng)過非極大值抑制后的圖像,梯度直方圖只存在單峰的時候,像素的梯度值都集中在最值梯度Hmax附近,像素最值梯度方差 σmax很小,當梯度直方圖不但存在非邊緣像素梯度的單峰,還存在邊緣像素梯度的分布時,邊緣像素梯度分布在距離最值梯度 Hmax相對較遠的位置,因此像素最值梯度方差 σmax很大,所以可以據(jù)此設定高、低閾值。
高閾值用式(10)計算,低閾值用式(11)計算:
其中 0<β<1,β為閾值調(diào)整因子。
因為high等于Hmax加上(1+β)倍的σmax,它必然在非邊緣區(qū)域以外,從而可以避免偽邊緣的產(chǎn)生,而lower等于Hmax加上(1-β)倍的σmax,它應該在弱邊緣附近,從而可以有效地修補高閾值的邊緣??梢愿鶕?jù)實際需要調(diào)整 β的大小,一般 β取0.5左右即可,在本文后面的實驗中取 β=0.2。
從物理學中的慣性原理知:物體在不受外力的情況下總是趨于保持原來的狀態(tài)(勻速直線運動或靜止狀態(tài))。根據(jù)經(jīng)驗可知:物體或圖像的邊緣在方向和強度上總要維持一定的長度(或緩慢地改變)。所以在跟蹤邊緣時應該注意邊緣原來的方向。在 3×3鄰域中邊緣的方向無外乎 8種情況,如圖2所示。
圖2 邊緣的方向
傳統(tǒng) Canny算法[7-8]容易把一條邊緣線段分成多段,且沒有考慮邊緣的方向,檢測出的邊緣粗糙不光滑。本文邊緣跟蹤步驟如下:
(1)在非極大值抑制圖像中找到一個梯度值大于等于 high且它的 3×3鄰域的8個相鄰點中只有一個點梯度值大于lower,(注:此點是一條線段的始點),將該點輸出到邊緣圖像中,轉(zhuǎn)(2)開始跟蹤(這樣不至于將一條線段分為兩段或多段);如果找不到這樣的點,則在整個圖像中找到一個梯度值大于等于high的點,(注:此點是一條封閉環(huán)路中的一點);將該點輸出到邊緣圖像中,轉(zhuǎn)(2);如果不存在這樣的點,則整個圖像跟蹤結(jié)束。
(2)在該點的 3×3鄰域的 8個相鄰點中找一個梯度值最大的點,如果該點的梯度值小于等于lower,則說明該條線段或封閉環(huán)路已經(jīng)結(jié)束,轉(zhuǎn)(1);否則將該點輸出到邊緣圖像中,然后,根據(jù)上次處理過的點和本次搜索到的點標記邊緣方向,轉(zhuǎn)(3)。
(3)根據(jù)慣性原理,跟蹤處理的先后次序規(guī)定如下:首先,如果箭頭正對的那個點的梯度值大于lower,則它輸出到邊緣圖像中,邊緣方向保持不變,重復(3);其次,在箭頭兩邊的兩個點中選擇一個梯度值大的點,如果該點的梯度值大于lower,則把它輸出到邊緣圖像中,然后修改邊緣方向,重復(3);再次,說明正在跟蹤邊緣到了終點或者遇到了尖銳的角點,為了使邊緣盡可能連續(xù),需要擴大搜索范圍,故轉(zhuǎn)(2)繼續(xù)跟蹤。
這種邊緣跟蹤算法可以保證邊緣直線盡可能直、曲線盡可能平滑且邊緣盡可能連續(xù)不間斷。
用Lenna圖像作為實驗圖像,不進行去噪處理,分別用傳統(tǒng)Canny算法和新算法處理,為了使實驗結(jié)果看的清楚,對結(jié)果圖像都取部分內(nèi)容進行放大,實驗結(jié)果及其右下部內(nèi)容的放大圖像如圖3所示。
圖3 實驗1結(jié)果
由圖3b、3c可知:傳統(tǒng)Canny算法圖像中左邊白色柱子的邊緣相對于改進算法該部分而言要粗糙的多,且產(chǎn)生了許多偽邊緣,而改進算法中該部分邊緣則比較光滑,這說明文中定義的計算梯度幅值的新方法具有比原Canny算法更優(yōu)良的性能,因而,說明定義的計算梯度幅值的新方法是合理的。另外,由圖3e、3f可見,傳統(tǒng)Canny算法這一部分的噪聲點比較多,改進算法的噪聲點則只有少數(shù)幾個,且從各圖片中箭頭所指的那部分內(nèi)容的邊緣來看,傳統(tǒng)Canny算法中這部分邊緣凸凹不平,而改進算法這部分邊緣則光滑的多,這說明文中算法利用物理學中的慣性原理進行邊緣跟蹤是有效的,也是合理的。
對Lenna原圖像加入均值μ=0,標準方差σ=20的高斯白噪聲,不進行去噪處理,重做上述實驗,結(jié)果如圖4所示。
由圖4可得,傳統(tǒng)Canny算法的邊緣圖像中噪聲點非常多,幾乎淹沒了圖像內(nèi)容,而改進算法的噪聲點則少的多,對比圖3和圖4可知:傳統(tǒng)Canny算法增加的噪聲點非常多,而文中算法這一部分只增加了少數(shù)幾個噪聲點,與前面理論分析結(jié)論相一致,這更進一步說明了它的優(yōu)越性。
圖4 實驗2結(jié)果
由此可見,改進算法的邊緣要比傳統(tǒng)Canny算法的邊緣光滑細膩的多,且具有一定的抑制噪聲的能力。
改進算法比傳統(tǒng)Canny算法效果好,可以從以下3點分析得到答案:(1)待檢測點在傳統(tǒng)Canny算法直接參與梯度值計算,在改進算法中不參與梯度值計算,故改進算法具有一定的抑制噪聲的能力;(2)傳統(tǒng)Canny算法在連接邊緣時,沒有考慮邊緣的方向性,比改進算法利用慣性原理進行邊緣跟蹤,考慮了邊緣的方向,故邊緣細膩光滑的多;(3)傳統(tǒng)Canny算法需要人為指定高、低閾值,沒有考慮梯度圖像的信息特征,而改進算法則根據(jù)梯度圖像信息特征自適應地生成高、低閾值,產(chǎn)生的高、低閾值更合理。
文中算法得到的是單像素邊緣,由于進行了非極大值抑制,圖像邊緣沒有偏移,定位準確;如果先進行去噪處理,再進行邊緣檢測其效果可以與文獻[9-10]中效果相媲美,文中算法提取到的邊緣用于圖像目標識別、目標定位以及用于文獻[11]中所說的‘檢驗圖像目標是否合格,等特殊場合都是可以的。
自適應Canny邊緣算法普遍適用于各類圖像的邊緣檢測,文中定義的計算梯度的新方法,沒有提高算法的復雜度,卻提高了抑制噪聲的能力,利用物理學中的慣性原理進行邊緣跟蹤,得到的邊緣更加光滑細膩;另外,重要的是本算法能夠根據(jù)圖像梯度信息特征,自適應地生成高、低閾值檢測圖像邊緣,自動化程度高,為實現(xiàn)自動匹配進行了有益的探索。該算法檢測效果也明顯優(yōu)于Sobel、Lap lacian等簡單算子。
[1] Gonzalez CRafael,Woods ERichard.數(shù)字圖像處理[M].2版.北京:電子工業(yè)出版社,2003:463-474.
[2] 李春雷,孫 俊,任 冰.基于DM 642的圖像邊緣檢測算法研究與實現(xiàn)[J].河南科技大學學報:自然科學版,2007, 28(6):50-52.
[3] 冉彥中,曹婧華,韋 軍.基于數(shù)學形態(tài)學的圖像邊緣檢測方法及應用[J].河南科技大學學報:自然科學版,2007, 28(5):40-42.
[4]Worthington P L.Enhanced Canny Edge Detection Using Curvature Consistency[C]//Proceedings of International Conference on Pattern Recognition,Los Alamitos.USA:IEEE,Computer SOC Press,2002:596-599.
[5] 王 植,賀賽先.一種基于Canny理論的自適應邊緣檢測方法[J].中國圖象圖形學報,2004,9(8):957-962.
[6] 余洪山,王耀南.一種改進型Canny邊緣檢測算法[J].計算機工程與應用,2004,40(20):27-29.
[7] 萬 力,易 昂,傅 明.一種基于Canny算法的邊緣提取改善算法[J].計算技術(shù)與自動化,2003,22(1):24-26.
[8] Meer P,Georgescu B.Edge Detection with Embedded Confidence[C]//IEEE Transctions on Pattern Analysis and Machine Intelligence.2001,23(12):1351-1365.
[9] Renyan Zhang,Guoling Zhao,Li Su.A New Edge Detection Method in Image Processing[C]//Communications and In formation Technology.IEEE International Symposium,2005,1:445-448.
[10] 康 牧,許慶功,王寶樹.一種Roberts自適應邊緣檢測算法[J].西安交通大學學報,2008,42(10):1240-1244.
[11] 左建中,尹 輝,陳賢青.小波變換在螺紋邊緣檢測中的應用[J].制造業(yè)自動化,2007,29(1):33-34.