任克強,張 镕
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州341000)
邊緣是模式識別中的重要的低層次特征信息,它是基于局部特征識別的重要依據(jù)。邊緣信息對光照非常敏感,尤其當(dāng)物體表面被陰影遮擋或光照角度變化時,不容易檢測到完整的邊緣信息,會造成嚴(yán)重的識別錯誤。因此解決好光照給邊緣檢測帶來的問題,將會給社會生產(chǎn)、交通以及醫(yī)學(xué)影像等領(lǐng)域帶來重大意義[1-3]。
目前,常用的邊緣檢測算法有很多,傳統(tǒng)的邊緣檢測算法包括Roberts算子、Canny算子以及Sobel算子等[4-6]。隨著數(shù)學(xué)理論及技術(shù)的不斷發(fā)展,涌現(xiàn)了許多新的檢測算法,如基于小波變換、數(shù)學(xué)形態(tài)學(xué)、神經(jīng)網(wǎng)絡(luò)以及自適應(yīng)閾值選取的邊緣檢測算法等。近年來,研究人員開始對光照問題的數(shù)字圖像處理有了密切的關(guān)注[7-9],為解決光照不均的圖像邊緣檢測問題提供了不少新的思路。文獻[10]針對文本圖像在二值化時,光照不均導(dǎo)致文本圖像OCR識別率降低的問題,提出采用改進Roberts算子和分塊動態(tài)雙閾值相結(jié)合來削弱光照不均的影響;該方法在處理復(fù)雜文本時效果也很顯著,但是存在復(fù)雜度較高的不足。文獻[11]為了解決光照不均給準(zhǔn)確測量微米尺度條紋間距帶來的問題,先采用Retinex方法對原圖像進行增強,然后使用Ostu最佳閾值對圖像進行二次分割,克服了條紋邊緣存在凹陷的困難,使得光學(xué)顯微線條紋圖像中心線能夠準(zhǔn)確提??;但該方法在進行閾值分割時存在較大的噪聲,處理時間也比較長。文獻[12]提出一種IKDSIFT(Improve keypoint detection algorithm based-on SIFT)算法,它是針對非均勻光照下基于對象識別的關(guān)鍵點檢測算法,使用傳統(tǒng)SIFT方法、形態(tài)學(xué)操作以及Top-Hat過濾等方法實現(xiàn)預(yù)處理,然后比較數(shù)據(jù)集的關(guān)鍵點速率,檢測出一些峰值確定最佳閾值;該算法在處理不均勻圖像的檢測的效果比較顯著,但是過程太過繁瑣,效率較低。
針對上述方法處理劇烈光照變化導(dǎo)致的圖像不均勻光照現(xiàn)象所存在的不足,本文提出一種基于對數(shù)域梯度與改進Sobel算子的邊緣檢測方法,通過在對數(shù)域建立梯度場來消除光照影響,再結(jié)合改進的Sobel算子以及通過Bernsen算法確定閾值進行邊緣檢測,以提升邊緣檢測的效果。
光照條件的變化會對圖像像素灰度分布產(chǎn)生顯著的影響。由于光源發(fā)出光照射到物體,一部分光會經(jīng)物體表面反射,一部分光會穿透物體,還有一部分會被物體吸收形成熱能,因此只有反射光和透射光能刺激人眼產(chǎn)生視覺效果。圖像亮度一般用圖像輻照度來描述,輻照度對應(yīng)物體對光的表面的反射,所以物體的圖像亮度有兩個因素影響,一個是入射光照射,其次是物體表面反射光照射。入射光照射取決于物體相對于光源分布,而物體表面反射光取決于物體的表面光學(xué)特性。
一幅二維數(shù)字圖像可以用函數(shù)f(x,y)表示,用i(x,y)表示入射光量,用r(x,y)表示反射光量,可以表示為:
f(x,y)=i(x,y)×r(x,y)
0
(1)
由于反射光取決于物體表面的光學(xué)特性,可以認(rèn)定是圖像的光照不變特征。無論光照條件如何,一般可以認(rèn)為i(x,y)為圖像低頻部分,反射系數(shù)r(x,y)包含物體的各種細(xì)節(jié)可以認(rèn)為圖像高頻部分。如果可將兩者分開,然后削弱低頻部分,增強高頻部分,就能達到對光照不均的補償目的。
對圖像進行邊緣檢測,梯度信息受不均勻光照影響較大。為克服光照不均的影響,先將圖像變換到對數(shù)域(僅對非零灰度值的像素變換到對數(shù)域,為零灰度值的像素直接取對應(yīng)位置梯度取代),再采用梯度計算。幅度公式和梯度方向公式分別表示為:
(2)
(3)
假設(shè)i(x,y)分量是緩慢變化的,即i(x+1,y)≈i(x,y),i(x,y+1)≈i(x,y)。在此基礎(chǔ)上可以證明對數(shù)域梯度變換只與反射分量r(x,y)有關(guān),從而完成上述分離兩分量,并削弱低頻成分的目的。證明如下:
(4)
同理可證:
(5)
由式(4)、(5)的證明,可知圖像邊緣的對數(shù)域梯度的變化,近似反映為反射分量的變化,而與入射分量無關(guān),所以對數(shù)域梯度場對光照具有不變性。最后對式(2)~(5)進行整合,可以將對數(shù)域梯度幅值和方向表示為:
(6)
(7)
Sobel算子作為基于模板檢測的一階導(dǎo)數(shù)算子,在使用小模板時,能夠獲得較高質(zhì)量的邊緣像素集合。Sobel算子含有包括橫向和縱向2個方向的3×3模板,在進行圖像處理過程中,圖像的每個點與兩個方向的模板進行領(lǐng)域卷積,從而達到檢測出水平和垂直邊緣的目的,卷積運算表示為:
(8)
(9)
式中:A代表原始圖像,Lx、Ly分別代表橫向與縱向邊緣檢測圖像灰度值,假設(shè)圖像函數(shù)為f(x,y),則具體計算如式(10)、(11)所示。
將Lx、Ly進行合成梯度,梯度幅值與梯度
Lx=[f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)]-
[f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)],
(10)
Ly=[f(x+1,y+1)+2f(x+1,y)+f(x+1,y-1)]-
[f(x-1,y+1)+2f(x-1,y)+f(x-1,y-1)],
(11)
方向角分別表示為:
(12)
θ(x,y)=arctan(Ly/Lx).
(13)
考慮到梯度方向具有對稱性,經(jīng)典的sobel算子2個梯度模板能構(gòu)成4個方向。為了同時能保證灰度圖像的檢測效果與效率,在水平梯度和垂直梯度的基礎(chǔ)上,改進的Sobel算子另外增加了45°和135°方向的梯度計算,這樣在進行檢測時能達到8個方向,能有效提高檢測效果。增加的梯度模板如圖1所示。
圖1 Sobel算子模板Fig.1 Sobel operator template
圖像函數(shù)f(x,y)的3×3窗口:
(14)
將Sobel算子0°、45°、90°和135°模板分別與f(x,y)卷積:
(15)
梯度幅值用無窮范數(shù)表示為:
(16)
經(jīng)典Sobel算子是在卷積得到梯度幅值后,通過選取人工設(shè)定的閾值進行邊緣提取,這樣檢測到的邊緣效果較差。Bernsen算法作為一種局部二值化算法是將圖像分割成塊,然后分別計算閾值,通過比較選出最佳閾值。一般算法通常會忽略掃描框?qū)χ苓呄袼氐拈撝颠x取,從而造成邊緣斷點或缺失,因此該方法可以抑制不均勻光照給圖像帶來的影響。
設(shè)定當(dāng)前像素為Y(i,j),以Y(i,j)為中心做一個邊長為2w+1的(2w+1)×(2w+1)窗口,w為窗口寬度參數(shù),然后計算每個窗口的閾值TY(x,y):
(17)
原始Bernsen算法得出來的閾值TY(i,j),若經(jīng)強制處理則會無法避免噪聲點,在細(xì)節(jié)上會變得極其敏感,故結(jié)合高斯濾波進行改進得出新的閾值TG(i,j),然后將TY(i,j)與TG(i,j)進行線性組合,通過調(diào)節(jié)線性參數(shù)a來確定最適閾值T(i,j)。
經(jīng)高斯濾波后的Bernsen算法閾值TG(i,j):
(18)
由于得出來的閾值容易產(chǎn)生偽影現(xiàn)象,故在線性組合確定最佳閾值之前,先對TY(i,j)與TG(i,j)進行平滑處理:
(19)
(20)
線性組合確定最佳閾值:
(21)
(22)
(23)
(24)