陶 卓,黃衛(wèi)華,b,c,章 政,b,c,姚 藝,何佳樂
(武漢科技大學 a.機器人與智能系統(tǒng)研究院;b.冶金自動化與檢測技術教育部工程研究中心;c.信息科學與工程學院,武漢 430081)
視覺同時定位與地圖構建(Simultaneous Localization And Mapping,SLAM)是實現(xiàn)無人機自主定位與導航的關鍵技術之一,其工作原理是通過跟蹤地圖中的關鍵幀及其特征點建立地圖[1]。由于受到機載圖像處理模塊性能的限制,基于視覺SLAM的無人機系統(tǒng)對圖像匹配算法的復雜性、實時性以及魯棒性等方面提出了更高要求[2]。
2011年Rublee E等[3]提出了一種定向二進制簡單描述(Oriented FAST and Rotated BRIEF,ORB)算法。相比于常用的尺寸不變特征變換(Scale-Invariant Feature Transform,SIFT)算法和(Speeded Up Robust Features,SURF)算法,ORB算法具有運算速度快、計算量低等優(yōu)點。但是,由于ORB算法提取的圖像特征點不具備尺度不變性,易產(chǎn)生圖像匹配精度低、特征點提取魯棒性差等缺點[4]。齊乃新等[5]將光流信息引入ORB算法中,采用多尺度分層跟蹤的方法對前后幀圖像進行關聯(lián),將數(shù)據(jù)關聯(lián)的精度提高到了亞像素級。郝志洋等[6]針對ORB算法缺失尺度不變性問題,將具有尺度不變特性特點的SURF算法與ORB算法相結合,通過漸近樣本一致性(Progressive Sampling Consensus,PROSAC)算法剔除誤匹配點,由此提高匹配精度。於小杰等[7]利用金字塔估計下一幀點集坐標,采用快速最近鄰逼近搜索匹配規(guī)則和前后雙向雙追蹤策略進行精度匹配,提高算法實時性和匹配精度。
稀疏光流法常用于求解空間運動物體在觀察成像平面上的像素運動的瞬時速度,是一種計算速度快、頻率高的算法,廣泛應用于基于視覺的無人機實時定位[8]??紤]到無人機運動、機載攝像頭圖像采集效果、信號傳輸以及環(huán)境變化等因素,本文將稀疏光流法引入機載視覺獲取圖像的ORB特征點匹配算法中,達到提高圖像特征點的檢測速度、匹配精度以及魯棒性的目的。
設無人機采集的第k-1時刻圖像和第k時刻圖像分別為圖像A、圖像B,其中k≥1。本文所設計的一種改進的ORB特征匹配算法結構如圖1所示。
圖1 改進ORB算法流程
主要包括3個部分:
(1)圖像預處理??紤]到機載攝像頭所采集圖像易受無人機運動的影響,從而導致圖像存在噪聲的問題,在進行圖像匹配之前,采用高斯濾波對無人機采集的圖像信息進行平滑處理。
(2)特征點提取。采用FAST算法檢測特征點??紤]到FAST算法提取的特征點聚集度較高,易形成特征塊,采用Harris算子剔除特征點中偽角點,提高圖像特征點的質(zhì)量。
(3)特征點匹配。為了有效解決傳統(tǒng)ORB依靠暴力匹配法導致匹配算法計算量較大的問題,將K-means++算法、稀疏光流法與ORB特征匹配算法相結合,并采用RANSAC算法對所得到的匹配結果進行優(yōu)化,提高圖像的匹配效率和精度。
一般而言,ORB算法常采用FAST算法實現(xiàn)特征點的快速檢測[9]。FAST算法根據(jù)圖像像素的亮度檢測角點,它是一種快速的角點提取算法。
將預處理后的圖像A轉(zhuǎn)化為灰度圖像,從中選取一個像素點為P,亮度為IP。以P點為圓心,在半徑為3個像素的圓上提取16個像素點,亮度為Ii,i=1,2,…,16。設閾值為T,若圓周上有連續(xù)N個點的亮度滿足:
|Ii-IP|>T,i=1,2,…,N
(1)
則點P為FAST角點,由文獻[10]可知,當N=12時,圖像特征點的提取效果較好。
根據(jù)式(1)對預處理后圖像A的像素點進行遍歷檢測。由于閾值T的選取具有不確定性,會導致檢測出的角點相對集中在特征豐富的區(qū)域,從而造成偽角點和真實角點聚集一起形成角點聚簇的現(xiàn)象,并且偽角點對后續(xù)的特征點匹配造成干擾,影響匹配精度。因此,本文采用Harris算子[11]辨別偽角點,即利用Harris算子對式(1)遍歷的特征點結果進行優(yōu)化,由此得到圖像A的較精確的特征點集,記為PA。
一般而言,ORB常采用二進制特征描述符BRIEF描述子[12]作為特征描述子。BRIEF描述子屬于二進制描述算法,即用0和1描述特征,二值化分段函數(shù)τ定義為:
(2)
式中,I(x)和I(y)分別是圖像I中像素點x和y的像素灰度值。
以PA中一點pa為例說明特征點匹配的過程。以特征點pa為中心,設S為半徑,生成領域范圍為S×S的窗口。一般而言,在窗口內(nèi)常隨機選取對像素點,記為(xi,yi),1≤i≤128。對每對像素點的灰度值比較,由式(2)生成的二值化值構成一個128維二進制特征描述符f128(A),即為pa的ORB特征。
f128(A)=∑1≤i≤1282i-1τ(A;xi,yi)
(3)
特征匹配是無人機定位的關鍵。一般而言,ORB常采用暴力匹配算法[13]進行兩張圖片的特征點匹配,即對每個特征點測量與所有的待匹配的特征點描述子的距離(漢明距離),排序后取最近的一個作為匹配點。
設圖像B的特征點集為PB,Pak為特征點pa的第k維特征向量,Pjk為圖像B中特征點Pj(Pj∈PB)的第k維特征向量。由式(3)可定義兩個特征點之間的漢明距離Daj為:
(4)
當Daj的值越小則說明2個特征越相似,保留距離最近的特征點作為pa的匹配特征點。
考慮到隨著無人機的移動,機載攝像頭采集的圖像背景具有復雜性和不規(guī)則性,采用遍歷的特征匹配方式易產(chǎn)生計算量大且耗時較長等問題。鑒于K-means++算法能有效地選取初始聚類中心特點,本文采用K-means++算法對特征點集PA進行聚類分析,從而減少暴力匹配的數(shù)量和匹配范圍,實現(xiàn)加快特征點匹配速度的目的。
從PA中隨機選取一個特征點作為初始聚類中心Pc1。遍歷PA中每個特征點x,基于式(4)計算其與當前已有聚類中心之間的最短漢明距離。設特征點初始聚類中心點集為PC={Pc1},d(x,Pc1)為特征點與聚類中心點之間的距離,則每個特征點x被選為下一個聚類中心的概率p(x)為:
(5)
設x*為最大概率值對應的特征點,則有:
(6)
由此可得,特征點初始聚類中心點集PC為:
PC=PC∪{x*}
(7)
重復計算式(5)和式(6)直到選擇出共K個聚類中心。在此基礎上,由式(4)計算特征點與中心點距離,將所有的特征點劃分到距離最近的一個聚類中,計算每個聚類的平均值作為新的中心點,迭代直到K個聚類中心點不再發(fā)生變化,記錄并存儲分類結果為classi(Pci,Pi,j)A(i=1,2,…,K),其中,Pci為圖像A每個聚類的中心點,Pi,j為每個類內(nèi)的特征點,j為每個分類中特征點數(shù)量,與i相關。
將稀疏光流法引入無人機的圖像特征匹配過程。采用稀疏光流法對特征點跟蹤,估計出特征點在待匹配圖像中的二維坐標位置,剔除偏離聚類中心較遠的特征點匹配對,由此提高了匹配精度的同時保證了算法的實時性。
設t時刻位于(x,y)處的像素為I(x,y,t),在dt時刻后,特征點運動到(x+dx,y+dy)處,基于稀疏光流法的灰度值不變原則,有:
I(x,y,t)=I(x+dx,y+dy,t+dt)
(8)
采用泰勒級數(shù)將式(8)進行展開,保留其一階項,可得:
(9)
由此可得:
(10)
(11)
(12)
對式(12)求導,可得:
(13)
將式(9)和式(11)帶入式(13)中,并進行泰勒級數(shù)展開,保留前一項可得:
(14)
簡化后則有:
(15)
令▽I=[IxIy],代入式(15)中可得:
(16)
(17)
vflow=-bG-1
(18)
|da1-db1|<Δ
(19)
時,Pa1和Pb1納入為候選的匹配點對。
綜上所述,本文所設計的基于稀疏光流法的改進ORB特征匹配算法步驟如下:
步驟1:無人機在飛行過程中,對機載攝像頭采集的相鄰幀圖像A和B進行高斯濾波后,再進行ORB特征提取,并由Harris算法剔除后得到對應的特征點。
步驟2:基于K-means++聚類算法,由式(5)~式(7)對圖像中特征點集聚類,得到圖像A的K個的聚類中心以及分類特征點信息。
步驟3:基于暴力匹配算法對圖像A的K個聚類中心與圖像B匹配,得到圖像B的K個聚類中心點。
步驟4:由式(12)構建圖像A中除聚類中心點之外的特征點的最小化函數(shù)ε(d),由式(18)求得速度矢量vflow與離散采樣時間得到光流向量d,預估出其在圖像B中的位置信息。
步驟5:由式(19)約束光流的預估位置信息,將滿足的點對納入候選匹配點對。
步驟6:利用RANSAC算法對候選點對進行幾何校驗,得到的匹配信息作為圖像A與圖像B的最終匹配結果。
無人機機載圖像處理器為Nvidia Jetson TX2,其CPU為Denver64bit的ARMv8多路處理器,8 G內(nèi)存,操作系統(tǒng)為64位的Ubuntu 16.04。選取無人機在自然場景下采集的某實驗箱圖像數(shù)據(jù)進行實驗,選取傳統(tǒng)ORB特征匹配算法的閾值為T=30,特征點提取的個數(shù)為500。
特征點提取的實驗結果如圖2所示。無人機采集的圖像如圖2a、圖2b所示,由于無人機在運動過程中機身的抖動以及距離的變化,使得采集圖像具有一定的模糊性。從圖2a、圖2b和圖2c的匹配結果可以看出,在實驗箱上的文字處、右下角棱角處和邊緣卡口處,傳統(tǒng)ORB方法提取特征點時出現(xiàn)了3處具有大量重疊的特征點,且偽角點和真實角點聚集一起形成了角點聚簇的現(xiàn)象。對比圖2a、圖2b與圖2d的匹配實驗結果可以看出,相較于傳統(tǒng)的ORB算法,本文所設計的改進ORB算法提取的角點信息更加均勻和準確,減少了偽角點對后續(xù)特征點匹配的影響。
(a) 圖像A(b) 圖像B
(c) 傳統(tǒng)ORB特征點提取
(d) 改進ORB算法特征點提取圖2 特征點提取效果圖
表1 特征點提取算法性能對比
由表1可知,雖然在特征點提取時間上,改進ORB算法高于傳統(tǒng)ORB算法,但是在聚集度和提取的特征點準確度上前者優(yōu)于后者:聚集度減少了27.3%,特征點數(shù)減少了58.3%。特征點的數(shù)量減少降低了后續(xù)特征點匹配的運算量,有利于滿足無人機機載視覺系統(tǒng)對實時性的需求。
改進ORB算法與傳統(tǒng)ORB算法匹配效果圖如圖3所示。對比圖3a和圖3b可知,相較于傳統(tǒng)ORB算法,改進ORB算法匹配效果更加清晰,匹配的特征點對分布更加均勻。
(a) 傳統(tǒng)ORB算法
(b) 改進ORB算法圖3 特征點匹配效果圖
為衡量特征點匹配的精確度,定義匹配正確率為CMR,則:
(20)
式中,M為圖像間匹配點對數(shù),MC為模型擬合后符合條件的內(nèi)點數(shù)。改進ORB算法和傳統(tǒng)ORB算法特征點匹配結果對比如表2所示。
表2 特征點匹配結果對比
由表2可知,傳統(tǒng)ORB的初始匹配誤差為16.6%,本文所設計的改進ORB算法與RANSAC算法相結合后,圖像特征點的匹配誤差為3.5%,相較于傳統(tǒng)ORB算法匹配正確率提升了11.666%。實驗結果表明,本文所設計的ORB算法可以穩(wěn)定地跟蹤特征點,并可以得到較好的匹配效果,有效提高了特征點提取的實時性和準確性。
先對圖2a圖像A的特征點采用K-means++算法聚類后的結果如圖4所示,聚類中心個數(shù)K=8。
圖4 K-means++聚類結果圖
基于圖4所示的聚類結果,采用稀疏光流法對圖2a所示的圖像A進行特征點跟蹤,由此得到特征點預估位置的效果圖如圖5所示。
圖5 基于稀疏光流法的預估位置圖
選取圖像A中的兩點為例,基于圖5稀疏光流法的預估位置信息,由式(19)剔除錯誤信息示意圖如圖6所示,圖6a為圖像A的一個聚類點與本類的一個特征點位置信息,圖6b為與圖像B匹配的聚類中心點與特征點位置信息。圖6a中紅色點為圖像A的聚類中心點,藍色點為本類的特征點;圖6b中紅色點是由式(4)暴力匹配法得到的圖像B的聚類中心點,藍色點為稀疏光流法預估的待匹配點信息。根據(jù)式(19)比較圖6a、圖6b中藍色點與紅色點的距離da1,db1,不滿足條件|da1-db1|<Δ,則剔除藍色匹配點對,以此提高匹配精度。且每一對匹配點只與本類聚類重點作比較,縮小了匹配范圍,減少了暴力匹配算法的運算量。對剔除后匹配結果采用RANSAC算法優(yōu)化后最終特征匹配結果。
(a) 圖像A聚類中心點 與本類特征點 (b) 圖像B匹配的聚類 中心點與待匹配點
本文針對無人機機載視覺導航系統(tǒng)的圖像特征匹配問題,提出了一種基于稀疏光流法的改進ORB特征匹配算法。首先,采用K-means++聚類方法減少了特征點匹配的計算量;在此基礎上,基于稀疏光流法得到的光流矢量預估出特征點在下一幀圖像的二維坐標位置,然后根據(jù)聚類中心點與其本類特征點之間的歐式距離約束得到特征點匹配點集,并利用RANSAC優(yōu)化匹配結果。實測后實驗結果證明,相比于傳統(tǒng)的ORB算法,本文所設計的改進ORB算法可有效滿足于無人機快速移動對算法的實時性和精確性要求較高等問題,具有較快的特征點提取速度和提取質(zhì)量,以及較好的匹配精度,有效保證了圖像特征點匹配的實時性和魯棒性。