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