霍智豪,苗艷松
(1.山東大學 信息科學與工程學院,山東青島,266237;2. 魯東大學 教育科學學院,山東煙臺,264025)
視覺SLAM在實現過程中,目前公認的經典框架包含三個主體部分,分別是前端的視覺里程計,后端的非線性優化和回環檢測,如圖1所示 。

圖1 經典SLAM框架
在視覺SLAM技術框架中,傳感器信息是由運動相機采集到的有效幀經過預處理后的可用數據;視覺里程計利用這些數據估計相機的運動與局部地圖的大致輪廓;后端優化對視覺里程計估計的相機位姿進行優化,并且接受回環檢測的重復信息;本文將會對視覺里程計環節進行具體實驗與優化。
我們在此次設計中使用RGB-D 相機,在基本彩色圖像素獲取之外,還可以通過結構光(如Kinect相機)或飛行時間法(Tine-of-Flight,ToF)主動獲取深度信息,彩色圖像素的獲取與深度信息的獲取方式是不同的,我們先來闡述基本的針孔相機模型。
我們得到了相機模型的基本幾何約束:

設像素坐標系下N′點的坐標為,在齊次坐標系下表示式(1)(2)的約束條件:

我們定義上式中的運算矩陣為K,定義為相機的內參矩陣,完整的相機模型[2]敘述為:

引入與中心距離有關的高次多項式函數進行糾正,得到三維空間點最終映射到像素平面的完整模型:

r表示與中心坐標的距離。

我們通過結構光(如Kinect相機)或飛行時間法(Tine-of-Flight,ToF)主動獲取深度信息。

圖3 結構光
結構光法基于光學三角測量原理,根據攝像頭采集到的光信號變化來計算物體的位置與深度。飛行時間法是計算接收到紅外光的相位差,進而還原出深度信息。
我們將會使用ORB[3](Oriented Fast and Rotate BRIEF)算法進行特征點的處理并提出優化算法。
我們遍歷灰度圖像中的像素點,并將其與圓周上的16個像素點進行像素值的比較,篩選出連續差值超過規定閾值的點,作為FAST角點[4]:

我們判斷特征點就是對N進行比較。

圖4 FAST特征點提取

圖5 改進的特征點提取
我們通過構建圖像金字塔來來賦予特征點“尺度不變性”,優化后的特征點是每幀縮放圖像中的特征點集。我們通過灰度質心法使特征點具有方向:

另外,我們提出將圖像劃分網格的改進思想,共隨機抽取若干個網格進行ORB處理,保證得到的有效特征點既可以滿足匹配的需要,又可以提高運算效率,滿足實時性的要求。
定義操作Q比較點對之間的灰度值:

BRIEF描述子就是Q值的二進制排列[5]。
我們提出改進的描述子選擇方法,以關鍵點和特征點的質心連線為X軸建立二維取點坐標系。
我們在兩幀連續圖像的點集Qt,Qt+1中計算每兩個特征點的漢明距離:

漢明距離小于指定閾值的特征點是匹配的特征點,這種方法是暴力匹配[6]。
我們提出隨機一致性采樣(RANSAC,Random Sample Consensus)優化算法,對匹配之后的點對進行再次篩選。
定義齊次坐標下的計算M和S:

我們計算誤差來保留正確匹配和剔除錯誤匹配。

圖6 RANSAC改進的匹配
我們對ICP算法提出改進,在全局上描述兩幀之間相機的運動:在使用RANSAC估計[7]的變換矩陣T進行變換之后,計算實際點集與估計點集誤差,由其最小值計算出精確的相機運動參數。

圖7 優化匹配
我們定義該誤差平均數e:

每一次迭代中,使用變換矩陣nT的估計值去新源數據集np中的每一個點:

重新計算新的源數據集 1np+與目標數據集Q之間的誤差ne,當滿足設定的閾值時,結束迭代,并將此時的nT作為相機運動的最優解。

圖8 相機運動的ICP優化
我們使用張氏標定法[8],對所使用的的相機進行參數的標定。
圖9,圖10分別是相機坐標系和世界坐標系的視圖。

圖9 相機坐標系

圖10 世界坐標系
最終標定得到的相機內參:

對標定得到的相機內參矩陣K進行誤差分析可知,每個角點的像素誤差均不超過±0.5,標定所得的內參正確。
4.2.1 測試walking.xyz數據集
該場景中,相機的運動主要是平移和較小的旋轉,干擾項是視頻中兩位走動的研究者(見圖11)。

圖11 特征點提取
在相機的連續拍攝畫面中,特征點的匹配完成度較好,大部分幀場景下不會出現特征點丟失的現象。但是因為研究者的走動,過程中出現了追蹤失敗的現象(見圖2)。

圖2 針孔相機模型
使用數據集包含的evaluate_ate工具對本算法的位姿估計值進行誤差分析,如圖13~14所示。

圖13 ATE
ATE誤差的值較小, RPE誤差卻可以保持在1以內,說明本算法可能會存在地圖的誤差,但是相機的運動估計比較準確。
4.2.2 測試sitting_static數據集
在該測試場景中,兩位研究者不運動,相機也沒有較大幅度的運動,特征點提取壓力相對較小。
由圖15~16中的實驗現象,我們發現,在相機運動幅度很小并且視頻中畫面相對變化不大的情況下,本算法的卷對誤差與相對誤差都較小,說明本算法在寬容條件中的準確性較高。

圖12 追蹤失敗

圖14 RPE

圖15 ATE

圖16 RPE
4.2.3 測試walking_halfsphere數據集
該場景中,相機的運動主要是大幅度的旋轉和較小的平移,同樣兩位研究者的移動會給特征點的提取帶來壓力。
測試的結果為;RPE的值偏大,可知本算法對旋轉情況下的估計性能略差與平移情況下的性能,我們需要對運動的估計做出優化。
4.2.4 測試walking_static數據集
在該場景中,相機的位姿基本固定,畫面中兩位研究者不斷運動,給特征點的匹配帶來壓力。
該項測試的結果量誤差都是較小的值,可知在相機運動幅度較小的情況下,本算法的誤差較小。
比較四個數據集測試得到的均方根誤差、均值誤差、中值誤差和標準差,如表1所示。

表1 測試誤差比較
從表格數據可以看出,當相機與拍攝的圖像變化不大時,該算法誤差較小,但是當相機運動較大特別是在旋轉場景下時,該算法的誤差較大。
如圖17所示,在光影變化顯顯著的場景下,以灰度值為特征的ORB算法不穩定甚至失效。

圖17 特征點匹配失敗
但是,當拍攝者走進光影變化較小的場景中,本算法就可以正常的提取特征點,以完成位姿的估計。
總的說來,在缺少后端優化[9]的條件下,盡管存在著無法應對光影對比顯著場景的缺陷,視覺里程計的運動估計功能基本實現。

圖18 陰影場景中匹配成功
本設計基于RGB-D相機,完成了SLAM框架的前端視覺里程計的設計,研究并優化了傳統的SLAM算法,分別實現了ORB特征點提取的“網格化處理”、特征點匹配的RANSAC改進以及相機位姿的ICP優化等,最終通過PCL輸出局部點云地圖;室外環境下表現較弱,光線陰影變化的地方特征點的提取和匹配算法會出現較大的誤差。后續研究可以結合深度信息提取與語義信息對特征點提取與跟蹤進行優化。