點擊上方“3D視覺工坊”,選擇“星標”
乾貨第一時間送達
作者:robot L | 來源:知乎
https://zhuanlan.zhihu.com/p/149349921
本文僅做學術分享,如有侵權,請聯繫刪除。
主要內容
從粗到精的相機自運動估計流程:基於相鄰兩幀之間的約束進行幀幀位姿估計(相機頻率),優化當前幀位姿,得到粗糙的位姿估計;在滑動窗內執行BA,利用窗口內所有約束優化窗口內所有幀的位姿(0.25-1Hz),得到準確的位姿估計。最後融合上述兩種估計得到相機頻率的準確位姿估計。
亮點
分別使用稀疏LiDAR點雲/深度圖片和三角化獲得特徵點的深度。
對於有深度和無深度的特徵點,構建兩種不同約束共同用於位姿優化。
J. Zhang, M. Kaess, S. Singh. Real-time Depth Enhanced Monocular Odometry. IEEE/RSJ International Conference on Intelligent Robots and Systems, 4973-4980, 2014.
J. Zhang, M. Kaess, S. Singh. A real-time method for depth enhanced visual odometry. Autonomous Robots, 41(1), 31-43, 2017.
摘要
視覺里程計可以由RGB-D相機/LiDAR提供的深度增強。但是這種深度是有限/稀疏的。有些像素的信息得不到。因此,我們提出一種利用上述稀疏深度恢復相機運動的方法。此外,該方法使用了無深度的特徵點,以及通過之前運動三角化得到額外的深度。方法核心是通過BA精修運動。
1 介紹
背景:視覺里程計是給定一系列相機圖片來估計自運動。一般,單目是不夠的,因爲沿着光軸運動會導致視覺特徵運動得不充分,從而導致估計問題退化。另外,使用單個相機[1]-[4],平移不能得到尺度。一般通過假設非完整運動約束[5],或整合來自IMU的測量來解決該問題。但是,額外測量的質量需要被考慮。此外,通過多相機也能獲得尺度。但是,這犧牲了視場大小,因爲只有不同相機共同觀測的區域被使用。小基線會導致遠處的深度不準確;大基線會導致相機標定很困難。因此,本文專注解決相機+稀疏深度的自運動估計問題。
本文方法介紹:與摘要內容相同。
本文方法適用情形:具有(稀疏)深度信息的傳感器組合,例如:RGB-D相機;相機+3D LiDAR;雙目相機。
圖1. 圖片幀中跟蹤的特徵。綠色點表示深度由深度圖/LiDAR點雲得到;藍色點表示深度由三角化得到;紅色點表示無深度的特徵點。
2 相關內容
基於視覺的方法現在常用於運動估計[11][12]。
雙目:跟蹤和匹配圖片幀之間的時間特徵[13][14]。特徵的深度由固定基線的兩張圖片的三角形幾何得到。Paz等人[15]只使用離相機較近(深度較淺)的像素,這有助於恢復平移估計的尺度。Konolige等人[8]使用BA時限雙目里程計,同時加入了IMU。
RGB-D相機:Huang等人[20]使用RGB-D相機提供深度的視覺特徵計算運動估計。Henry等人[21]整合視覺特徵到ICP方法中[22],通過最小化組合的2D和3D特徵匹配誤差來實現運動估計。另一種方法是稠密跟蹤[23][24],該方法通過使用環境的稠密3D模型最小化光度誤差。但是,上述方法[20]-[24]依賴充足的深度信息。這限制了這些方法應用的環境,比如在深度信息十分缺乏的空曠的環境中可能會失效。
問題:很少RGB-D VO方法能夠處理不充足的深度信息。例如Hu等人提供一種啓發式轉換,能夠選擇在RGB-D和單目VO之間切換[25]。
我們的方法:我們提供一種處理稀疏深度信息的單目VO方法,通過組合有深度和沒有深度的特徵。從實驗結果來看,該方法比[20]和[23]更魯棒。
3 記號和任務描述
我們使用右上標 來表示相機幀。定義相機系統 是一個3D座標系統,原點在相機光心。x軸指向左方,y軸指向上方,z軸指向前方並作爲相機的主軸。
我們使用有和無深度的特徵。令 爲一組特徵點。對於每個特徵 ,若有深度,則在 中的特徵被記爲 ;若無深度,則座標被歸一化使得z座標等於1,記作 。有了上述記號,我們的視覺VO問題可以被定義如下:
問題:給定一系列圖片幀 和特徵 ,計算相機在兩個連續幀 和 之間的運動,如果特徵已知深度,則已知使用 ,否則使用深度 , 。
4 系統綜述
A 傳感器硬件
提出的方法在三種不同的傳感器系統中進行了驗證。前兩種傳感器如圖2所示;第三種使用KITTI基準數據集的配置。
圖2. 評估的傳感器配置。(a) RGB-D相機 (b)相機和3D LiDAR組合。
B 軟件系統綜述
圖3展示了軟件系統的示意圖。首先,視覺特徵在Feature Tracking模塊被跟蹤。然後在Depth Map Registration模塊,深度圖片/點雲和RGB圖片對齊,並且關聯深度和視覺特徵。接着,具有深度/沒有深度的特徵被傳到Frame to Frame Motion Estimation模塊,輸出粗糙高頻位姿(相機頻率)。特徵和位姿傳送到BA模塊,進一步精修位姿,輸出精確低頻位姿(0.25-1Hz)。最後整合兩種位姿,得到精確高頻位姿。
圖3. 視覺VO的框圖
5 幀幀運動估計
A 數學推導
我們從幀幀運動估計的推導開始,對應算法在下一節討論。記得 和 爲在 和 跟蹤的特徵。定義 和 爲兩幀間的旋轉矩陣和平移向量,我們可以建模相機運動如下:
(1)
接着,我們討論具有深度的特徵。在 幀時刻, 幀的深度圖已經可用,並且 的深度已經被關聯,具體深度關聯過程見5.C節。記得 是 的歸一化項,我們重寫(1)爲
(2)
等式(2)包括三行,消去 後得到
(3)(4)
其中 和 是 和 的第 行。
對於未知深度的特徵,我們重寫(1)如下:
(5)
消去 和 後,我們得到
(6)
假設我們公有 個已知深度的特徵和 個未知深度的特徵。組合(3)(4)和(5)我們共同得到 行等式:
(8)
其中 是 殘差向量,並且 是待優化的平移和旋轉分量。 相對 的雅克比記作 。(8)可以被解決通過LM算法 [26],
(9)
其中, 是LM方法中的一個尺度因子。
B 運動估計算法
幀幀運動估計的僞代碼如算法1所示。
算法1. 幀幀運動估計僞代碼。
C 特徵深度關聯
本節的目的是得到k-1到k幀被跟蹤的特徵在k-1幀中的深度。首先將維護的深度圖投影到k-1幀的單位球座標系中(距離歸一化球面,球上所有點到k-1幀相機光心都是單位距離),然後均勻採樣深度圖。對於k-1幀中每個被跟蹤的特徵點,在採樣後的深度圖中尋找離該特徵點距離最近的三個點。如果三個對應點在3D空間中距離足夠近,則根據該三個深度點插值得到該特徵點的深度。過程詳見robot L:【論文閱讀13】Laser-visual-inertial odometry and mapping的5.3節。
6 集束調整
上一節的相機幀幀運動估計被集束調整精修,其中從前40相機幀中取出8幀進行精修,這樣做的目的是保證再下次選擇新的幀進行精修之前上次集束調整已經結束。
這裏,我們定義特徵的另一種表示 ,其中x和y座標是歸一化座標,z座標表示深度。對於沒有深度的特徵, 被設置爲缺省值。令 表示待優化的圖片幀集合, 是集合中的首幀。初始化後,所有特徵被投影到 ,被記作 。定義 爲從 到 的變換,其中 是集合中的其他幀, 。BA最小化下述函數:
(11)
其中 表示特徵 在幀 中的觀測, 是信息矩陣,前兩項爲給定的常數值,第三項對於具有深度的像素取較大值,三角化得到深度的項像素取較小值,無深度的像素取零值。
7 實驗
該方法使用KLT方法[31]跟蹤Harris角點[26]。特徵跟蹤和BA各佔一個核,幀幀運動估計和深度配準共同佔一個核。
A 使用作者收集的數據集測試
實驗環境如圖6所示共4種:會議室,大堂,雜亂的道路和平坦的草坪。難度依次遞增,因爲環境越來越開闊,深度信息越來越稀疏。圖6的第2行和第4行展示了4個場景某幀的深度收斂圖,左圖是RGB-D相機的收斂結果;右圖是LiDAR的收斂結果。對於RGB-D相機來說,四個場景的像素深度收斂率從94%降低到23%。對於LiDAR來說,四個場景的深度收斂率從89%降低到47%。
圖6. 作者收集的數據集的軌跡對比和深度收斂圖。
與兩個流行的RGB-D視覺里程計方法進行了比較。Fovis估計了相機的運動通過跟蹤相機特徵,特徵的深度從深度圖片中獲得[20]。DVO是一個稠密跟蹤方法,最小化整張圖片的光度誤差[23]。每個場景的起點和終點相同,使用估計的起點和終點位置差與整條軌跡的長度比值作爲相對位置差異,定量結果如表1所示。
表1. 不同方法在不同場景中的相對位置差異。
從結果來看,我們的方法在四個場景中的表現都不錯。在深度信息較多的場景(Room),其餘兩種對比方法表現良好,但是在其他深度信息不足的場景中,Fovis經常不生成位姿估計由於內點特徵不夠;而DVO一直產生位姿估計,但是漂移很大。
B 使用KITTI數據測試
圖7展示了三個環境的結果。第一行中,提出的使用BA和不使用BA的結果和真值軌跡進行對比。在中間一行,圖片和對應激光點雲被展示,激光點使用深度染色。完整的11個序列的結果如表2所示。
表2. KITTI測試集的設置和結果。
進一步地,爲了探究BA的影響,我們比較了在三種環境(市區,高速,鄉村)中的準確度,結果如圖8所示。
圖8. 在三種場景的相對位值誤差。黑色,藍色和紅色分別表示100%,75%和中值。
本文僅做學術分享,如有侵權,請聯繫刪文。