夏克付
(安徽電子信息職業(yè)技術(shù)學(xué)院,安徽 蚌埠 233030)
目標(biāo)識別是指利用計算機技術(shù)實現(xiàn)人類的視覺功能,其主要任務(wù)是從圖像或視頻中識別出指定的目標(biāo)。目標(biāo)識別技術(shù)一直是國際學(xué)術(shù)研究的熱點,許多優(yōu)秀的目標(biāo)識別算法不斷涌現(xiàn),并已廣泛應(yīng)用于無人飛行、精確制導(dǎo)、智能交通、視頻監(jiān)控、醫(yī)學(xué)分析等軍事與民用的各個領(lǐng)域[1-2]。目標(biāo)識別的關(guān)鍵在于特征點的提取與匹配,傳統(tǒng)的目標(biāo)識別方法大多基于目標(biāo)的全局特征,這些特征計算簡單,但在目標(biāo)存在噪聲、發(fā)生形變或被遮擋等情況時識別誤差較大。與全局特征相比,基于局部特征的目標(biāo)識別方法由于描述能力強,穩(wěn)定性好,能有效克服以上不足[3-4]。
尺度不變特征變換(SIFT)算法是一種局部特征檢測算法[5-6],它所提取的特征點對尺度、旋轉(zhuǎn)、光照等變化具有不變性,可以較好地應(yīng)用于圖像匹配,能夠在目標(biāo)發(fā)生遮擋、平移、旋轉(zhuǎn)等變化時具有良好的識別效果。SIFT算法優(yōu)勢明顯,但也存在不足,其特征描述的高復(fù)雜度使得特征匹配計算量大,耗時較長,并且存在一定的誤匹配。本文在SIFT算法的基礎(chǔ)上,利用特征點的主方向性質(zhì)對SIFT算法進行改進,提出了一種基于改進SIFT的目標(biāo)識別方法。首先分別提取原圖像與目標(biāo)圖像的特征點,并計算其特征點對的主方向差值,然后利用此差值來剔除差異較大的特征點對,以減少特征匹配階段的運算量,降低誤匹配率。
高斯尺度空間是不同尺度的二維高斯核函數(shù)與圖像卷積生成的圖像序列,對該空間中每組的相鄰兩層做差值運算就可快速構(gòu)建高斯差分尺度空間(DOG)。設(shè)每組相鄰兩層的比例系數(shù)為k,則DOG算子可通過下式定義。
D(x,y,σ)=L(x,y,kσ)-L(x,y,σ)
(1)
其中L(x,y,σ)為二維圖像I(x,y)的尺度空間,G(x,y,σ)為二維高斯核函數(shù),計算方法分別如式(2)和(3)。
L(x,y,σ)=G(x,y,σ)*I(x,y)
(2)
(3)
其中(x,y)是圖像像素坐標(biāo),σ是尺度空間因子。
高斯差分尺度空間構(gòu)建完畢后,將該空間中的每個像素點分別與其同層的8個相鄰點和上下兩層的18個相鄰點進行比較,若其值為最大或最小,則可判定該點為極值點。由于對比度較低的極值點對噪聲比較敏感,位于邊緣的極值點又難于精確定位,為提高關(guān)鍵點的抗噪能力與穩(wěn)定性,需要對DOG算子進行曲線擬合,剔除對比度低與邊緣響應(yīng)較強的極值點,精確確定關(guān)鍵點的位置與尺度??赏ㄟ^式(4)剔除邊緣極值點。
(4)
其中H為極值點所在尺度空間的2×2階Hessian矩陣,Tr(H)為矩陣對角線元素之和,Det(H)為矩陣行列式的值,r為矩陣中最大特征值與最小特征值的比值。
關(guān)鍵點的方向利用其鄰域內(nèi)各個像素點的梯度分布特性確定。對于每個關(guān)鍵點,首先計算以其為中心的鄰域窗口內(nèi)所有像素的梯度方向與幅值,然后以此計算其鄰域的梯度方向直方圖。此直方圖有36個方向,每個方向10°,共360°。梯度方向直方圖的最高峰值所對應(yīng)的方向為該關(guān)鍵點的主方向。關(guān)鍵點所在尺度空間L(x,y,σ)上的任一像素點(x,y)的梯度方向與幅值計算如式(5)和式(6)。
(5)
(6)
確定關(guān)鍵點的主方向后,對于每個關(guān)鍵點可以得到三個信息:位置、尺度與方向。
關(guān)鍵點描述符用于描述關(guān)鍵點附近鄰域的梯度信息。為確保旋轉(zhuǎn)不變性,首先以關(guān)鍵點為中心,將坐標(biāo)軸旋轉(zhuǎn)為關(guān)鍵點的主方向,并選取關(guān)鍵點周圍的16×16鄰域作為采樣窗口,然后利用式(5)和式(6)計算窗口中每個像素點的梯度方向與幅值,最后在每4×4的窗口上計算8個方向上的梯度直方圖,同時計算每個梯度方向的累加值,形成一個種子點。每個關(guān)鍵點由16個種子點組成,每個種子點表示8個方向的向量信息,這樣一個關(guān)鍵點就可以形成128維向量的特征描述符。
對于待識別的兩幅圖像,在通過以上步驟提取其特征點后,可采用歐式距離來度量特征點的相似性。兩個特征點的歐氏距離越小,則其相似度越高,若該距離小于給定的閾值,則可以判定為匹配成功。兩個特征點P和Q的歐式距離可通過下式計算。
(7)
其中P=(p1,p2,…,pn)和Q=(q1,q2,…,qn)分別表示兩個特征點向量。
兩幅圖像特征點匹配的具體過程為:首先通過式(7)計算出原圖像中某個特征點P與目標(biāo)圖像中全部特征點之間的歐式距離,之后找出其中的最小距離(設(shè)對應(yīng)的特征點為Q)與次小距離,并計算其比值,若該比值小于給定的閾值,則判定特征點P與特征點Q為一對匹配點。以此類推,直至原圖像中全部特征點匹配完成。
SIFT算法中通過搜索計算特征點間歐式距離來檢測匹配點的方法,實現(xiàn)簡單,但搜索計算量較大,運行時間較長,并會產(chǎn)生一定的誤匹配,因此,本文提出一種基于特征點主方向的方法[7-9],在計算歐氏距離前,通過特征點主方向的差值來消除部分錯誤匹配點,減少SIFT特征匹配的運算量,提高匹配精度。
為了使特征點具備旋轉(zhuǎn)不變性,SIFT為每個特征點都分配了主方向。若P和Q為兩幅圖像中的一對正確匹配特征點,則它們各自鄰域像素的梯度方向與幅值一定是相似或一致的,因此它們的主方向也一定是相似或一致的。反之,若P和Q是一對錯誤匹配點,則它們的主方向一定會有較大差異。因此,在進行SIFT特征匹配時,可以利用特征點的主方向性質(zhì)過濾掉主方向差異較大的特征點,提高特征匹配效率。具體計算方法為:
對于原圖像與目標(biāo)圖像中第i對特征點的主方向值θ1i與θ2i,計算其差值的絕對值,若此值大于給定的閾值r,則認(rèn)為這對特征點是錯誤匹配點并直接舍棄,對于小于閾值r的特征點對,則進一步計算其歐氏距離,直至找出兩幅圖像中的全部正確匹配點。
改進后的SIFT算法實現(xiàn)目標(biāo)識別的具體步驟如下:
(1)特征點提取。對原圖像與目標(biāo)圖像分別構(gòu)建高斯差分尺度空間,檢測特征點,確定特征點的位置、尺度和主方向。
(2)特征點描述。為原圖像與目標(biāo)圖像中提取到的每個特征點,分別建立128維的特征向量描述符。
(3)特征點對主方向差值計算。計算原圖像特征點Mi與目標(biāo)圖像特征點Nj的主方向差值gi。
(4)特征點舍棄。若gi的絕對值大于給定的閾值r,則舍棄特征點對
(5)歐式距離計算。若gi的絕對值不大于給定的閾值r,則利用式(7)計算特征點對
(6)特征點匹配。找出N中與Mi最小的兩個距離,若他們之間的比值小于給定的閾值,則判定Mi與N中距離最小的點為一對正確匹配點。
(7)識別完成。若已找出M與N中的全部匹配點,則停止計算,目標(biāo)識別完成,否則轉(zhuǎn)到3)繼續(xù)執(zhí)行。
實驗選取了如圖1所示的兩組原圖像與目標(biāo)圖像,分別從尺度、遮蓋、旋轉(zhuǎn)等視角來驗證本文目標(biāo)識別算法的應(yīng)用效果。實驗平臺為Win 7+MATLAB R2015b。
(a)圖像尺度不同 (b)圖像旋轉(zhuǎn)
首先利用原始SIFT算法進行特征提取與匹配。圖1所示a、b兩組圖像中,提取到的特征點個數(shù)從左至右依次為490,1876,87,528,獲得的匹配點對個數(shù)分別為160與45,如圖2所示。從圖示可以看出,采用原始SIFT算法匹配的特征點存在明顯的誤匹配。
(a)160對匹配點 (b)45對匹配點
采用本文改進后的SIFT算法對圖1所示的兩組圖像進行特征提取與匹配,獲得的匹配點對個數(shù)分別為114與31,如圖3所示。可以看出本文改進后的算法由于在進行SIFT特征匹配之前剔除了主方向差異較大的特征點對,因此不僅減少了特征匹配的運算量,也提高了識別準(zhǔn)確率。
為了驗證本文方法在識別精度和運行時間上的改進效果,實驗選取了一幅大小為185×265的原圖像,以及每類10幅,共4類40幅不同大小和視角的目標(biāo)圖像,分別采用原始SIFT算法和本文改進的SIFT算法來進行特征點提取與匹配。實驗得到的平均識別精度與平均運算時間如表1所示。從表中對比數(shù)據(jù)可以看出,改進后的SIFT算法大幅提高了目標(biāo)識別的精度,減少了運行時間,效果較好。
(a)114對匹配點 (b)31對匹配點
表1 改進前后的SIFT算法識別精度和運行時間比較
本文針對SIFT算法在特征匹配階段搜索計算量大、運行時間較長、誤匹配率高等問題,利用特征點的主方向性質(zhì)對SIFT算法進行改進,提出了一種基于改進SIFT的目標(biāo)識別方法。該方法通過特征點主方向的差值來剔除差異較大的特征點對,減少了特征匹配階段的運算量,降低了誤匹配率,提高了執(zhí)行效率。通過與原始SIFT算法的對比實驗表明,該方法運行時間少,識別精度高,是一種穩(wěn)定性強、效果較好的目標(biāo)識別方法。