韓松奇, 于微波, 楊宏濤, 王世程
(長春工業(yè)大學(xué) 電氣與電子工程學(xué)院, 吉林 長春 130012)
角點是圖像的重要局部特征,它既保留了圖像中的特征信息,又同時有效地減少了信息數(shù)據(jù)量。角點檢測在圖像匹配、光流計算、運動估計、形狀分析、相機標定、視覺的定位和測量等方面都有重要的應(yīng)用[1]。
當前的角點檢測技術(shù)可以分為兩類:第一類是基于圖像邊緣信息,此方法經(jīng)過三個步驟才能完成,分別為圖像預(yù)分割、輪廓鏈碼提取及角點檢測,如基于邊界小波變換的角點檢測[2]、基于邊界鏈碼的角點檢測[3]等;第二類是基于圖像灰度信息,此方法主要通過計算曲率及梯度通過計算邊緣曲率來判斷角點的存在性,如Harris算法和SUSAN算法等。在實際應(yīng)用中,前者角點過于依賴邊緣信息,當被檢測目標局部發(fā)生變化,可能會導(dǎo)致角點提取失敗,所以應(yīng)用范圍有限;后者可能會出現(xiàn)漏檢角點和偽角點等情況,其中Harris算法應(yīng)用最為廣泛,但是會出現(xiàn)精度不高、運算量大等問題。
針對Harris算法的不足,眾多學(xué)者對經(jīng)典的Harris算法進行了改進。毛雁明等[4]提出雙閾值算法,解決了不易設(shè)置閾值的問題。趙萌等[5]提出了一種自適應(yīng)參數(shù)算法,解決了因高斯參數(shù)固定導(dǎo)致的角點檢測不準確的問題。李鵬程等[6]提出了一種優(yōu)化算法,解決了原始算法實時性不好的問題。以上改進算法取得了一定成效,但是依舊存在檢測精度低和實時性差的問題。文中提出了一種改進算法,首先采用B樣條函數(shù)替代高斯窗口函數(shù),以提高角點定位精度,再對角點進行預(yù)篩選,以提高算法的實時性,最后在非極性最大值時,采用閾值自適應(yīng)方法以提高算法的自適應(yīng)性。
Harris角點檢測算法是由Harris等[7]提出的,其是在原有Moravec算法的基礎(chǔ)上改進的一種基于信號的點特征提取算法。Harris算法使用微分運算和自相關(guān)矩陣來進行角點檢測,具有運算簡單、提取的角點特征均勻合理、性能穩(wěn)定等特點。利用微分算子能夠反映像素點在任意方向上的灰度變化這一特點,有效地辨別角點和邊緣點,假設(shè)圖像像素點(x,y)的灰度為I(x,y),以像素點為中心的窗口沿x和y方向分別移動u和v的灰度強度變化的表達式為:
(1)
式中:Eu,v----窗口灰度值;

為有效提高抗干擾能力,對于微小的位移,可以忽略無窮小項O(u2,v2),有
(2)
將Eu,v(x,y)化為二次型有
(3)
其中
稱M為像素點的自相關(guān)矩陣。
則角點響應(yīng)函數(shù)CRF(Corner Response Function):
CRF=det(M)-k(tr(M))2
式中:det(M)----自相關(guān)矩陣M的行列式;
tr(M)----自相關(guān)矩陣M的跡;
k----一般取0.04~0.06。
當某像素點的角點響應(yīng)函數(shù)在其鄰域內(nèi)為最大值,同時大于設(shè)定的閾值時,則該像素點為角點。
Harris算法充分利用了角點的特征,適用于角點數(shù)目多且光源復(fù)雜的圖像,但存在以下不足:第一,Harris算法采用可調(diào)窗口的高斯函數(shù)對圖像進行圖像平滑處理,但實際應(yīng)用中高斯窗口的大小不易控制,當高斯窗口過小時,會有較多的偽角點產(chǎn)生;高斯窗口過大時,會使得角點位置出現(xiàn)偏移現(xiàn)象。第二,Harris算法的檢測效果過于依賴于閾值的設(shè)定,當設(shè)定的閾值較小時,會出現(xiàn)大量的偽角點;當設(shè)定閾值較大時,會有許多漏檢角點。為此,文中從以下三個方面進行改進:
1)針對高斯窗口大小不易選擇,角點定位不準確等問題,采用B樣條函數(shù)[8]替代原算法中的高斯窗口函數(shù),提高角點定位精度。
2)針對Harris算法的運算量較大、運行時間較長等現(xiàn)象,對角點進行預(yù)篩選處理,以圖像像素點為中心與其鄰域8個點的像素灰度值進行比較,剔除了大量的偽角點,提高了算法的實時性。
3)針對提取角點時所用的閾值是手動設(shè)定、調(diào)試復(fù)雜等問題,采用自適應(yīng)閾值的方法,提高自適應(yīng)能力。
利用B樣條函數(shù)具有局部性及仿射不變性等特性,將高斯窗口函數(shù)由B樣條函數(shù)替代。
N次B樣條函數(shù)定義為
(4)
式中:u(x)----階躍函數(shù);
n----B樣條函數(shù)的階數(shù)。
當n增加時,平滑效果會更好,且過濾效果更強,但是會產(chǎn)生延遲,且容易失去邊界信息;當n減少時,圖片細節(jié)能很好地保存下來,但去噪能力降低。
離散式數(shù)字圖像濾波公式為:
(5)
式中:f(i,j)----像素(i,j)處圖像灰度值;
Bk×l(x-i,y-j)----B樣條濾波算子。
濾波模板通常是一個(2m+1)×(2m+1)的矩陣,其中m=1,2,…,n。通過實驗證明,能抑制噪音的最佳平滑濾波器是三階B樣條函數(shù)[9]。所以文中采用三階B樣條函數(shù),取k=l=n=3,得到B樣條函數(shù)的3×3濾波模板,可以表示為
(6)
由B樣條函數(shù)局部性質(zhì),n次樣條函數(shù)空間的二維結(jié)構(gòu)為:
(7)
其中,Bn(x)可以表示為
(8)
經(jīng)過計算,得到B樣條函數(shù)在x和y方向上的微分模板:
(9)
設(shè)中心點像素的灰度值與鄰域任意一個像素點灰度值差的絕對值為Δ,設(shè)閾值為t,假如Δ≤t,則認為中心點與該點相似,同理可以判斷中心點與其鄰域內(nèi)其它點是否相似。本改進算法采用3×3的檢測窗口,需要考慮中心點與其8鄰域內(nèi)像素點的相似度。設(shè)中心點與其鄰域內(nèi)的點相似的個數(shù)為N(i,j)。

-1≤x≤1, -1≤y≤1,x≠0,y≠0
(10)
其中

根據(jù)上述可知,0≤N(i,j)≤8,下面對N(i,j)進行分析。
不符合候選點的情況如圖1所示。

(a) (b) (c) (d)
1)N(i,j)=0,表示中心點鄰域內(nèi)沒有與之相似的點,所以該中心點為孤立點或噪聲點,不能作為候選點,見圖1(a);
2)N(i,j)=7,有兩種情況,分別見圖1(b)和(c),圖1(b)可能的角點應(yīng)該是中心點的正上方的那個點,圖1(c)可能的角點應(yīng)該是中心點左上方的那個點,因此這種情況不能成為候選點;
3)N(i,j)=8,表示中心點鄰域內(nèi)的8個點全是相似點,不能成為候選點,見圖1(d);
4)1≤N(i,j)≤6,這種情況下中心點都可能為角點,因此可成為候選點,如圖2所示。

圖2 符合候選角點的情況
采用Harris算法對一副圖片進行角點提取時,需要通過設(shè)定一個固定閾值進行不斷調(diào)試,可以得到比較好的結(jié)果,但是所設(shè)置的閾值并不一定對其他圖片都適用,還要重新調(diào)試。考慮算法的通用性,需要算法本身有能力計算出合適的閾值。
本算法將閾值設(shè)定為角點響應(yīng)函數(shù)最大值的p倍,即:T=p×CRFmax。
其中p取經(jīng)驗值[0.005,0.015]時,基本會檢測出所有的角點,同時檢測到偽角點的數(shù)目較少。
為了驗證文中改進算法的有效性,使用標準圖像庫中的 “積木”圖片(大小為256×256)進行實驗,分別采用Harris算法和改進后的Harris算法對圖片進行角點檢測,實驗結(jié)果如圖3所示。

實驗數(shù)據(jù)結(jié)果對比見表1。

表1 實驗數(shù)據(jù)結(jié)果對比
可以看出,原始的Harris算法會檢測出很多偽角點,同時運行時間很長。而改進的Harris算法大大降低了程序的運行時間,從0.557 s縮減到0.153 s,效率提升了30%;檢測到的準確角點更多,偽角點數(shù)更少,從13個縮減到3個,準確率提高了23%。
針對Harris角點檢測算法運行時間長和精確度低等不足,提出了一種改進的Harris算法。首先采用B樣條函數(shù)替代高斯窗口函數(shù),提高角點定位精度,再對角點進行預(yù)處理,選出候選角點,最后在非極大值抑制時采用自適應(yīng)閾值,提高算法的自適應(yīng)性。實驗表明,改進的Harris算法不僅大大縮減了運算時間,提高了實時性,而且還提高了角點檢測的準確性,減少了偽角點數(shù)。