孫新成,劉勝蘭,趙雪冬
(南京航空航天大學機電學院, 江蘇 南京 210016)
圖像特征提取與匹配屬于機器視覺的基礎研究內容,在位姿估計、三維重建、特征跟蹤以及地圖構建等應用中占據著重要的地位。目前常用的特征提取算法有SIFT[1](scale-invariant feature transform)、SURF[2](speeded-up robust features)、ORB[3](oriented FAST and rotated BRIEF)等,其中用SIFT和SURF算法提取的特征具有尺度、光照以及旋轉不變性的優良性質[4],但提取特征耗時長,難以在無人機導航定位、增強現實等實時性要求比較高的場合使用。而ORB算法由改進的FAST[5]檢測子和二進制描述子BRIEF[6]組合而成,它不僅具有旋轉和尺度不變的性質,而且能夠縮短特征提取的耗時,滿足實時性的要求,因此廣泛應用于視覺即時定位與地圖構建(vision simultaneous localization and mapping,VSLAM)等領域。但是在某些局部紋理豐富的場景下,采用ORB算法提取的特征會出現局部特征密集而造成特征冗余,從而影響特征點匹配的準確性且容易丟失大量圖像信息。
在ORB特征點匹配過程中,由于噪聲、遮擋以及圖像中存在相似紋理等因素的影響易導致誤匹配[7]。如果將錯誤的數據關聯信息保留下來,將會導致后續運動估計的結果不精確或者失敗,因此需要剔除掉誤匹配的特征點,常用的誤匹配剔除方法有距離閾值法、交叉驗證法以及隨機抽樣一致(random sample consensus,RANSAC) 算法[7-8]等。距離閾值法操作簡單,但是效果往往難以滿足要求。交叉驗證法是通過互換查詢集和訓練集來保證特征點匹配的唯一性,具有速度快、耗時少的優點,但是它并不能夠完全剔除誤匹配點對。RANSAC算法則是根據基礎矩陣或單應性矩陣對初始匹配結果采用迭代方法找出最佳匹配點集,該算法能夠有效地剔除誤匹配,保證匹配結果的準確性,但是當初始匹配點存在較多的誤匹配時,將會造成算法迭代次數過多,耗時較長,不滿足實時性的要求。因此,可綜合應用交叉驗證法和RANSAC算法,既保證了匹配速度,又有較好的準確性。
目前,視覺與慣性測量單元(inertial measurement unit,IMU)組合在導航定位領域得到越來越多的應用,其可以將慣性導航儀獲得的信息補充進來,進一步提高抽樣一致性算法的效率。由于IMU與視覺傳感器固聯在一起,因此有相等的相對旋轉矩陣。IMU包含加速計和陀螺儀兩個組成部分,陀螺儀可以測得載體在運動過程中的三軸角速度的變化,通過對匹配圖像幀之間的角速度測量值進行積分,獲得匹配圖像幀之間的旋轉矩陣,從而只需要兩組匹配點對就能夠求解出基礎矩陣[9],降低RANSAC算法的迭代次數,加速誤匹配剔除的速度。但是陀螺儀的測量值包含噪聲和零漂,導致積分求解出的旋轉矩陣與實際矩陣有偏差,將部分正確的匹配點對判定為誤匹配,導致正確匹配點數量較少。
針對上述存在的問題,本文工作如下:1)針對ORB特征的冗余現象,基于網格化思路,采用改進的ORB特征算法[10]去除冗余特征,保證提取的特征在圖像上分布均勻;2)采用暴力匹配方法獲得相鄰圖像幀的粗匹配結果,通過交叉驗證法對初始匹配進行過濾,保證特征匹配的唯一性,再結合陀螺儀的先驗信息,采用兩點RANSAC算法獲得正確匹配點集,然后根據該匹配點集來重新計算本質矩陣,并獲得在該本質矩陣下的匹配特征點,最后設計實驗對本文算法進行了驗證。
ORB算法分為關鍵點和描述子兩部分,其中關鍵點采用改進的FAST角點,通過灰度質心法[3]使得ORB特征具備旋轉不變形,同時對原始圖像進行降采樣構建圖像金字塔并在每一層圖像上檢測角點,以保證ORB特征具有尺度不變性。但是ORB算法在特征提取過程中采用統一的閾值,而且對所有特征采用非極大值抑制處理,容易造成角點分布不均、特征冗余現象。
為了消除傳統ORB算法存在的特征冗余問題,本文首先采用網格化方法提取特征,然后基于四叉樹數據結構對所提取的特征點進行過濾,最后將過濾后的特征點輸出。網格化是將圖像按照一定的尺寸進行分塊處理,使每一個小塊區域能夠自適應地選取角點,提取閾值,從而保證每一小塊區域都能夠提取到足夠多的特征點。自適應閾值的選擇標準是:首次以最大閾值進行特征提取,如果沒有提取到特征,則以較小的閾值進行特征提取,當完成所有區域的特征提取后,再基于四叉樹結構對局部區域的冗余特征進行剔除,流程如圖1所示。
圖中,樹根L0層表示初始提取的特征點在圖像上的分布位置,Ln層表示第n次的劃分結果,具體的操作步驟如下。

圖1 基于四叉樹結構的特征點篩選
Step1,將L0層即根節點中所有特征點按照像素坐標位置分成4組,分別對應L1層的4個節點。
Step2,統計L1層每個節點的特征點數量,如果該節點的特征點數量為1,則該節點不參與劃分;如果該節點的特征點的數量為0,則直接將該節點從樹結構中刪除;如果該節點中包含的特征點數量大于1,則將該節點中的特征點按照圖像坐標位置進行4等分劃分。當L1層中的所有節點執行完上述操作后即可以得到L2層,后續采用迭代的方式對L2,L3,…,Ln-1層執行相同的操作。
Step3,當滿足下面3個判斷條件中的任意一個時則迭代循環結束:1)Ln層不存在特征數量大于1的節點;2)Ln層的最小邊界尺寸小于5個像素(保證不會出現局部特征密集現象);3)Ln層的所有節點個數加上L1~Ln-1層沒有孩子的節點個數大于或等于設定的特征點數量。
Step4,若是第1)種情況,直接返回特征數量為1的節點,并輸出對應特征點;若是第2)種和第3)種情況,對Ln層中特征點數量大于1的節點采用非極大值抑制的方法進行特征篩選,只保留Harris響應值[11]最大的特征點,然后同樣輸出特征數量為1的節點。
采用改進的ORB算子對兩幀圖像進行特征提取,然后通過暴力匹配方法計算第一幀圖像中每一個特征點的描述子向量與第二幀圖像中所有特征點的描述子向量的漢明距離,漢明距離值越小表明兩個特征點越相似,將漢明距離值最小的一組判為匹配點。然而由于噪聲、遮擋以及圖像紋理相似性等因素的影響,初始匹配點集中存在錯誤匹配的點對,需采用RANSAC算法進行誤匹配剔除。
傳統RANSAC算法通常基于基礎矩陣采用八點對法[12]進行迭代求解,具體的求解步驟如下:
Step1,從初始匹配點集中隨機抽取8組匹配點。
Step2,根據兩視圖的對極幾何性質,采用Step1中抽取的8組匹配點構建的線性方程:
(1)

(2)
式中:K為相機的內參矩陣;E為本質矩陣,只與兩幀圖像之間的旋轉矩陣R和平移向量t有關;[·]×為叉乘算子。在本文應用場景下相機內參矩陣K已離線標定,因此采用奇異值分解法(singular value decomposition,SVD)求解本質矩陣E。
Step3,根據Step2中求解出的本質矩陣E,對初始匹配點集中所有特征點進行內、外點判斷,得到滿足該本質矩陣E的一致集(內點集)。內、外點的判定條件為:
(3)


Step4,統計Step3求出的一致集的內點數量,判斷它是否為最優一致集,如果是,則更新當前最優一致集,否則不更新。
Step5,判斷是否滿足迭代終止條件,若滿足,則退出迭代循環并輸出最大內點集,否則跳到Step1繼續執行。迭代過程中置信度設置為p,匹配集中內點所占的比率為w,w等于每次迭代過程中最優一致集的內點總數/初始匹配集中匹配點對總數,迭代更新時每次抽取樣本的個數為k,則在該置信度下所需要的迭代次數N可以通過下式計算:
(4)
式中:傳統RANSAC算法中k設置為8。
針對暴力匹配法獲得的初始匹配點集存在較多誤匹配點對,導致RANSAC算法迭代的次數明顯增加的問題,有兩種加速算法迭代速度的解決方法,一是對初始匹配點集進行粗剔除,降低外點比例;二是降低每次抽取樣本的特征點個數。本文采用組合方法由粗到精地剔除外點,提高誤匹配剔除的效率。首先采用交叉驗證法進行粗剔除,然后采用兩點RANSAC方法進行精剔除,最后根據精剔除后的內點重新估計本質矩陣,從匹配點集中篩選出滿足該本質矩陣的一致集,并輸出本質矩陣和正確匹配的特征點。
交叉驗證法首先以第一幅圖像幀F1中的特征點作為查詢集,第二幅圖像幀F2中的特征點作為訓練集,完成兩幀圖像之間的特征點匹配,如圖2中實線箭頭所示;然后以F2中的特征點作為查詢集, F1中的特征點作為訓練集,得到兩幀圖像特征點的匹配關系如圖2中虛線箭頭所示;最后將兩次匹配結果一致的判定為內點,否則為外點。匹配示意圖如圖2所示。

圖2 交叉驗證法示意圖
從圖中可知,特征點1的兩次匹配結果不一致,因此采用交叉驗證法將特征點1判定為外點,從而保證圖像幀F1與F2中特征點匹配的唯一性。但是對于特征點4和特征點5的誤匹配現象,則無法通過交叉驗證法對其進行剔除,針對這樣的問題,本文接下來將采用改進的兩點RANSAC算法進行精剔除。
傳統RANSAC算法在迭代過程中每次需要隨機抽取8組點對,但本文應用場景只需要抽取2組匹配點對。由于通過對匹配圖像幀之間的陀螺儀測量值積分可計算出IMU旋轉變換矩陣,而IMU傳感器和相機固聯在一起,因此相機和IMU在運動過程中滿足下列關系:
(5)


(6)
式中:exp(·)表示旋轉向量到旋轉矩陣的指數映射關系;n為匹配圖像幀之間的角速度測量數據個數;bg為陀螺儀的零漂,可通過離線標定;Δt為采樣時間間隔。在獲得匹配圖像幀之間的旋轉矩陣后,考慮對極幾何約束關系,將匹配集中的一組匹配特征點x1,x2投影到單位球面上,得到單位化坐標向量p1,p2,有‖p1‖=‖p2‖=1,如圖3所示。

圖3 對極幾何約束關系
(7)


圖4 平移變換
t=r[s(θ)·c(φ),s(θ)·s(φ),c(θ)]T
(8)
式中:s(·)和c(·)分別表示三角函數sin、cos;θ為方位角;φ為極角;r為平移向量的模長,即球坐標的徑向距離。r取任意非零常量并不改變式(7)的約束關系,因此在實際工程中通常對其進行歸一化處理,即令r=1。則本質矩陣E′為:
E′=[t]×=

(9)
p0,p2的坐標分別為[x0,y0,z0]T和[x2,y2,z2]T,結合式(7)和(9)可將對極約束方程展開成如下形式:
(y2c(θ)-z2s(θ)s(φ))x0+(-x2c(θ)+z2s(θ)c(φ))y0+(x2s(θ)s(φ)-y2s(θ)c(φ))z0=0
(10)

(11)
為了便于表達,在式(12)中定義了中間變量a,b,c,d,e,f:
(12)
求解出θ,φ值后,將其代入式(9)計算出E′矩陣,則初始匹配圖像幀的本質矩陣為:
(13)
由此可見,兩點RANSAC算法降低了迭代過程中每次抽取樣本時所需的特征點對個數,達到減少迭代次數、加速算法收斂速度的目的。
結合陀螺儀先驗信息獲得匹配圖像幀之間的旋轉矩陣,采用兩點RANSAC算法提高誤匹配剔除效率。但是陀螺儀測量的數據存在噪聲,在實際誤匹配剔除過程中,采用兩點RANSAC算法會將部分正確的匹配點判定為外點,導致內點的數量明顯減少。針對這樣的問題,本文對兩點RANSAC算法獲得的匹配結果重新估計本質矩陣,從而獲得精確的本質矩陣,再從初始匹配點集中尋找該本質矩陣的最大一致集。

(14)
其中
e=[e11,e12,e13,e21,e22,e23,e31,e32,e33]
(15)
式中:e11,e12,…,e33為本質矩陣中的元素,下標表示各元素在本質矩陣中的坐標。
將式(14)簡寫為Aie=0,其中Ai表示式(14)左邊1×9的矩陣,e表示由本質矩陣中的元素構成的9維向量,則對Sn點集采用式(14)計算可獲得n個等式,表示為:
Ae=0
(16)
式中:A是由Ai構成的n×9矩陣,A矩陣的秩為8。通過對ATA矩陣進行SVD分解,得到其最小特征值所對應的特征向量即為本質矩陣E,然后根據第2節中Step3計算出滿足該本質矩陣的最大一致集,即為正確匹配結果。
本文實驗采用Windows10 64位操作系統,Intel(R) CoreTM i3-3240 CPU @ 3.4 GHz, 8 GB內存,運行環境為Visual Studio 2017平臺,并基于開源計算機視覺庫(OpenCV)編寫C++程序。采用的視覺慣性數據采集設備為MYNTAI公司的小覓雙目攝像頭,它集成了一個六軸IMU傳感器和全局曝光的雙目攝像頭。實驗過程中將相機的采集幀率設置為20 fps,相機采集的圖像為單通道灰度圖像,分辨率為752像素×480像素;IMU傳感器的采集頻率設置為500 Hz,可以測得載體自身三軸加速度和三軸角速度值。實驗數據分別通過手持攝像頭和無人機機載方式采集,其中無人機飛行速度為3 m/s,飛行高度為10 m。
針對本文改進的ORB算法進行實驗測試時,將傳統ORB算法和改進ORB算法的特征篩選閾值都設置為20,而改進ORB算法二次篩選閾值設置為10,實驗提取的特征數量設置為500,圖像金字塔層數設置為3,金字塔圖像之間的尺度參數設置為1.2。特征點的提取結果如圖5,6所示,圖5為室內樓道場景的特征提取結果,圖6為花壇場景的特征提取結果。

圖5 樓道場景特征提取結果

圖6 花壇場景特征提取結果
由圖5,6可知,采用傳統ORB算法提取角點時出現特征冗余,而采用改進ORB算法提取的角點分布均勻,有效地避免了特征冗余。對于特征提取耗時,通過1 000次實驗求平均值方式進行統計,特征提取的耗時結果對比見表1。由表可知,改進ORB算法在特征提取耗時相比原算法僅增加了5 ms,依然能夠保證ORB算法的實時性能。

表1 不同算法的特征提取耗時 ms
為驗證改進誤匹配剔除算法剔除外點時的性能,本文首先采用改進的ORB算法提取特征點,接著采用暴力匹配法(BF)對特征點進行匹配,獲得初始的匹配結果,然后分別采用交叉驗證法、傳統RANSAC算法、交叉驗證法與傳統RANSAC組合算法以及本文算法進行外點剔除實驗。RANSAC算法的初始迭代次數都設置為1 000,置信度設置為0.99,閾值δ設置為1.5像素,匹配圖像幀采樣頻率為1 Hz,實驗結果如圖7,8所示,圖7和圖8的三軸角度變化值分別為(-23.602°,2.143°,6.286°)、(0.088 5°,-0.123 3°,-0.039 8°)。

圖7 樓道場景下的不同算法獲得匹配結果

圖8 花壇場景下的不同算法獲得匹配結果
由圖7,8可知,交叉驗證法雖然能夠保證特征點匹配的唯一性,但是仍存在著大量誤匹配。相比較而言,其他3種算法都能有效地剔除外點,其中傳統RANSAC算法還存有少量誤匹配點,而交叉驗證法+傳統RANSAC算法和本文算法基本無外點存在,保證了特征匹配的正確性,為后續的位姿估計或三維重建等提供可靠的數據關聯關系。對上述不同算法的耗時和內點數量進行了統計,結果分別見表2和表3。由表2,3可知,交叉驗證法+傳統RANSAC算法的耗時比傳統RANSAC算法少,表明采用交叉驗證法進行粗剔除能夠有效地減少算法迭代耗時;本文算法的耗時最少,表明兩點RANSAC算法能夠有效地減少耗時,驗證了本文算法的可行性和魯棒性。

表2 樓道場景下不同算法的匹配結果

表3 花壇場景下不同算法的匹配結果
為了避免偶然因素的影響,本文對無人機飛行過程中采集的100幀圖像進行不同算法性能對比實驗,采樣頻率為5 Hz。首先采用改進ORB算法進行特征提取,接著采用暴力匹配法對特征點進行匹配,然后分別采用傳統RANSAC算法、交叉驗證法+傳統RANSAC算法和本文算法獲得匹配結果,交叉驗證法獲得的結果外點過多不參與評估,最后對不同算法的匹配耗時和內點結果進行統計分析,結果見表4,繪制的不同算法耗時和內點數量曲線如圖9和圖10所示。

表4 連續100幀圖像不同算法的匹配結果

圖9 不同算法的耗時曲線

圖10 不同算法的內點數量曲線
由圖9可知,本文算法的耗時明顯少于另外兩種算法;由圖10可知,本文算法獲得的內點數量和交叉驗證法+傳統RANSAC算法幾乎一致,都能夠有效將誤匹配的點對進行剔除并獲得足夠多的正確匹配特征點。由表4可知,本文算法平均耗時只有傳統RANSAC算法的1/10,是交叉驗證法+傳統RANSAC算法的1/5,驗證了本文算法的魯棒性和實時性。
本文采用改進的ORB算法結合由粗到精的誤匹配剔除算法,對基于視覺慣性傳感器采集的圖像進行特征點的提取與匹配,得到以下結論:
1)采用基于網格化的ORB改進算法進行特征點的提取,可以有效地減少特征的冗余。
2)針對初始匹配點存在的大量誤匹配點對,本文提出的由粗到精的誤匹配剔除算法,保證了算法的運行速度,且有較好的匹配準確度。
3)實驗結果表明,本文算法能夠獲得與傳統RANSAC算法相同的匹配結果,且耗時只有傳統RANSAC算法的1/10,說明本文算法有較好的魯棒性和實時性。