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