段振云, 楊丹, 趙文輝
(沈陽(yáng)工業(yè)大學(xué)機(jī)械工程學(xué)院,沈陽(yáng)110870)
圖像的邊緣是圖像最基本的特征[1]。圖像的邊緣包含了圖像用于識(shí)別的有用信息。圖像中的邊緣類型通常可以分為階躍型邊緣、雙階躍邊緣、雙屋脊邊緣、斜坡邊緣、三角型屋脊邊緣、方波型屋脊邊緣、樓梯邊緣等[2]。在經(jīng)典的邊緣檢測(cè)方法中,一般根據(jù)模板的大小和元素值的不同可分為不同的微分算子。常用的微分算子有Sobel算子、Roberts算子、Prewitt算子等[3]。這些算子具有簡(jiǎn)單、易于實(shí)現(xiàn)、實(shí)時(shí)性好的優(yōu)點(diǎn),同時(shí)也具有對(duì)噪聲較敏感、抗噪聲性能差、邊緣的精度不高等缺點(diǎn)。和傳統(tǒng)的微分算子相比,基于最優(yōu)化算法的Canny算法[4],因具有良好的檢測(cè)精度和信噪比而被廣泛應(yīng)用[5],并成為評(píng)價(jià)其他邊緣檢測(cè)方法優(yōu)劣的標(biāo)準(zhǔn)[6-7]。但是傳統(tǒng)的Canny算法仍然不能滿足單像素級(jí)的檢測(cè)要求,因?yàn)楸桓鞣N干擾因素影響,仍有誤檢、漏檢的問(wèn)題。本文在分析了傳統(tǒng)Canny檢測(cè)算法的原理后,對(duì)Canny算法在計(jì)算梯度幅值和高、低閾值選取以及連接邊緣上做了一定的改進(jìn),提高了Canny算法的邊緣定位精度和準(zhǔn)確度,并使算法具有了一定的自適應(yīng)性。
1)對(duì)圖像進(jìn)行高斯濾波。
設(shè)所選高斯函數(shù)[8]為

其中,σ為高斯濾波器參數(shù),控制著平滑去噪的程度,因此要根據(jù)實(shí)際情況選取σ的值。
2)求解梯度的幅值和方向。濾波之后的數(shù)據(jù)陣列I(x,y)的梯度幅值及其方向,在原始的Canny算法中是使用2×2鄰域內(nèi)一階偏導(dǎo)數(shù)的有限差分來(lái)計(jì)算的[9]。
3)對(duì)梯度幅值采取非極大值抑制。
針對(duì)梯度幅值圖像G[i,j]上的全部像素點(diǎn),使用插值法算出當(dāng)前像素點(diǎn)的梯度方向上相鄰兩像素點(diǎn)的梯度幅值,若當(dāng)前像素點(diǎn)的梯度幅值是它們中的最大值,那么當(dāng)前像素點(diǎn)可能是邊緣點(diǎn)。反之,該點(diǎn)不是邊緣點(diǎn),刪除。
4)用雙閾值檢測(cè)和連接邊緣。
選取高閾值Th和低閾值Tl。首先對(duì)每個(gè)圖像邊緣點(diǎn)(i,j)的梯度幅值 G(i,j)進(jìn)行檢測(cè),高于高閾值,該點(diǎn)判定為邊緣點(diǎn)。低于低閾值,該點(diǎn)判定為非邊緣點(diǎn)。當(dāng)G(i,j)介于高、低閾值之間時(shí),則根據(jù)該點(diǎn)和周圍點(diǎn)的聯(lián)通性來(lái)判斷,如果該點(diǎn)周圍的像素點(diǎn)中有邊緣點(diǎn),該點(diǎn)也為邊緣點(diǎn),否則認(rèn)為該點(diǎn)為非邊緣點(diǎn)。
雖然在實(shí)際應(yīng)用中,Canny算法的檢測(cè)效果優(yōu)于Sobel算子、Log算子等邊緣檢測(cè)算子,但Canny算法也存在一些缺陷[10]。
1)原始Canny算子在2×2的鄰域范圍內(nèi),采用有限差分均值的方法來(lái)計(jì)算出各像素點(diǎn)的梯度幅值,雖然此方法能夠得到邊緣較為準(zhǔn)確的位置信息,但是噪聲對(duì)其影響較大,比較容易檢測(cè)到不真實(shí)邊緣或丟掉一些真實(shí)邊緣細(xì)節(jié)方面的信息,實(shí)驗(yàn)效果不佳。
2)傳統(tǒng)Canny算法在檢測(cè)邊緣時(shí),兩個(gè)高低閾值Th和Tl完全由人為根據(jù)經(jīng)驗(yàn)設(shè)定,不具有自適應(yīng)性,檢測(cè)效率較低,無(wú)法滿足大型圖像庫(kù)中圖像邊緣自動(dòng)檢測(cè)的要求。
經(jīng)典Canny算子在2×2的鄰域內(nèi)求有限差分來(lái)計(jì)算出梯度幅值,本文采用3×3的Sobel邊緣算子模板計(jì)算梯度幅值。
圖 1(a)和圖 1(b)分別是 Sobel算子垂直方向和水平方向的兩個(gè)模板[11],圖2為一幅3×3的圖像區(qū)域。
當(dāng)采用Sobel算子計(jì)算圖2所示的3×3區(qū)域的梯度時(shí),可得U5像素點(diǎn)水平方向和垂直方向的梯度分量分別為式(2)和式(3)所示。


圖1 Sobel算子模板

圖2 3×3的圖像區(qū)域
梯度直方圖描述的是圖像邊緣的強(qiáng)度信息,本文利用梯度直方圖來(lái)獲取高閾值,以便解決原始Canny算法不能自動(dòng)選擇高低閾值的問(wèn)題。高閾值Th的選取原則:在一幅圖像中,非邊緣點(diǎn)的數(shù)目與總像素?cái)?shù)目的比為H,依據(jù)圖像的梯度直方圖,按照從低到高的順序逐步累積圖像點(diǎn)個(gè)數(shù),當(dāng)累積個(gè)數(shù)為像素總數(shù)的H倍時(shí),該時(shí)刻的梯度值取為高閾值Th,根據(jù)大量實(shí)驗(yàn),H一般取0.7或0.8,本文取0.7,把高閾值與一個(gè)比例因子的積取為低閾值Tl,L代表該比例因子,低閾值Tl可表示為T(mén)l=L·Th。本文L取為0.5。圖3為本文實(shí)驗(yàn)圖像的梯度直方圖。
步驟1:在包含邊緣的圖像區(qū)域中,逐行掃描每個(gè)像素點(diǎn)的梯度值,若遇到某一像素的梯度幅值大于高閾值Th時(shí),則把該點(diǎn)作為輪廓的起始點(diǎn),開(kāi)始追蹤同時(shí)對(duì)其進(jìn)行標(biāo)記,避免重復(fù)追蹤。追蹤過(guò)程如圖4所示,設(shè)輪廓起始點(diǎn) P0的坐標(biāo)為(i,j),G(i,j)為它的梯度值。

圖3 梯度直方圖
步驟2:比較該起始點(diǎn)周圍8鄰域內(nèi)像素點(diǎn)的梯度值,找出它們中的最大值,標(biāo)記為下一邊緣點(diǎn),并以此像素點(diǎn)為起點(diǎn)繼續(xù)跟蹤。在圖4中我們假設(shè)下一邊緣點(diǎn)的坐標(biāo)為P1(i+1,j-1),根據(jù)現(xiàn)有的兩個(gè)邊緣點(diǎn)P0(i,j)、P1(i+1,j-1)和單像素邊緣的特點(diǎn),可知下一邊緣點(diǎn)不可能為 P2(i,j-1)和P8(i+1,j),因此可以將這兩個(gè)點(diǎn)的梯度值清零,在以P1(i+1,j-1)為中心,比較其八鄰域內(nèi)像素點(diǎn)的梯度,找出最大值,并標(biāo)記為下一邊緣點(diǎn),這時(shí)只需比較P9至P13五個(gè)像素點(diǎn)的梯度值,大大減小了運(yùn)算量。

圖4 邊界跟蹤示意圖
步驟3:當(dāng)尋找到的像素點(diǎn)的梯度值小于低閾值Tl時(shí),認(rèn)為到了輪廓端點(diǎn),結(jié)束搜索,跳至步驟1,否則繼續(xù)步驟2。
為了驗(yàn)證本文算法的有效性,使用本文算法和傳統(tǒng)Canny算法分別提取20 mm量塊如圖5所示的部分邊緣,提取到的邊緣如圖6所示。
從對(duì)量塊部分邊緣的提取效果來(lái)看,傳統(tǒng)Canny算法提取出的邊緣有一些偽邊緣和不連續(xù)邊緣,且提取出的邊緣并非直線,而本文算法的處理結(jié)果輪廓清晰,邊緣連續(xù)且呈直線,可以提取單像素精度的邊緣輪廓,所反映的邊緣信息與實(shí)際物體邊緣的物理特性基本符合。從實(shí)驗(yàn)結(jié)果可知,本文算法的檢測(cè)精確度、準(zhǔn)確度、邊緣的細(xì)化程度等方面的性能都好于原始的Canny算法,并且對(duì)于不同的圖像不依賴人工設(shè)定高低閾值,就有很好的處理效果,具有一定的自適應(yīng)性。

圖5 量塊圖像

圖6 量塊部分邊緣提取圖像
本文針對(duì)傳統(tǒng)Canny算法的不足,對(duì)梯度幅值的計(jì)算、高低閾值的選取以及邊緣的連接部分做了改進(jìn)。實(shí)驗(yàn)結(jié)果表明,相比于傳統(tǒng)Canny算法,本文提出的改進(jìn)自適應(yīng)Canny算法提取出的圖像邊緣是單一連續(xù)的,符合單像素級(jí)的要求,有效地實(shí)現(xiàn)了圖像真實(shí)邊緣的檢測(cè),同時(shí)實(shí)現(xiàn)了高低閾值的自動(dòng)化選擇,具有一定的自適應(yīng)性,為工業(yè)零件的邊緣檢測(cè)提供了參考。
[1] 厲丹,錢(qián)建生,蘆楠楠,等.圖像邊緣檢測(cè)技術(shù)的改進(jìn)[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(18):164-166.
[2] 靳鵬飛.一種改進(jìn)的Sobel圖像邊緣檢測(cè)算法[J].應(yīng)用光學(xué),2008,29(4):625-628.
[3] 韓曉軍.數(shù)字圖像處理技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2009:43-47.
[4] Canny J.A computational approach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,8(6):679-698.
[5] 余洪山,王耀南.一種基于樹(shù)結(jié)構(gòu)的立體圖像特征提取算法[J].計(jì)算機(jī)應(yīng)用,2004,24(10):78-81.
[6] Panetta K A,Wharton E J,Agaian S S.Logarithmic edge detection with applications[J].Journal of Computers,2008,3(9):3346-3351.
[7] Zhang Y,Rockett P I.The Bayesian operating point of the Canny edge detector [J].IEEE Transactions on Image Processing,2006,15(11):3409-3416.
[8] 賈云德.機(jī)器視覺(jué)[M].北京:科學(xué)出版社,2002:556-560.
[9] 蘇恒陽(yáng),袁先珍.一種改進(jìn)的Canny的圖像邊緣檢測(cè)算法[J].計(jì)算機(jī)仿真,2010,27(10):242-245.
[10] Wang Zhi,He Saixian.An Adaptive Edge-detection Method Based on Canny Algorithm[J].Journal of image and graphics,2004,9(8):957-961.
[11] 黃世震,郭光寶.基于Sobel邊緣檢測(cè)和雙線性算法的圖像縮放實(shí)現(xiàn)[J].中國(guó)集成電路,2013,9(9):45-49.