夏琳琳,蒙 躍,王 策,劉瑞敏
(東北電力大學 自動化工程學院,吉林 132012)
近年來,基于視覺的同時定位與建圖(Visual Simultaneous Localization and Mapping, VSLAM)促進了實時三維重建技術的發展。在單目重建領域,VSLAM 利用視覺傳感器獲取圖像信息,可快速計算機器人相對運動位姿,使在線重建成為可能。與離線運動恢復結構(Structure From Motion, SFM)[1]思想相比,更具應用前景[2]。
對于基于VSLAM 的實時三維重建而言,提高圖像的輸入質量并處理是進行有效三維重建的前提[3],然而,室內場景普遍存在低光照、光照不均等問題,所獲取的圖像對比度低,極大地增加了VSLAM 前端特征點提取與匹配的難度。2016 年開源的單目稀疏直接法里程計(Direct Sparse Odometry, DSO)采用最小化光度誤差來尋求圖像中點與點的對應關系,在以連續幀取得同一物體成像的過程中,考慮對相機進行光度標定[4]。然而,突出的環境光強變化問題會影響到DSO 視覺子系統的工作。基于此,本文提出由基于入射-反射模型的Retinex 理論[5],構建一個自適應的圖像增強模型,針對室內光線不均、不平衡問題,對圖像不同區域進行OSTU 動態閾值分割判別,以圖像預處理思想替代DSO 的光度標定。
為了消除位姿漂移累積誤差的問題,本文旨在開發一類基于稀疏直接法單尺度Retinex 的SLAM 系統(Retinex DSO with loop closure detection, RDSOL)。設計上繼承了DSO 的主體框架。
主旨設計包括:一、對圖像進行光度矯正以解決光照不均帶來的影響,提高SLAM算法魯棒性的同時,避免傳統DSO 光度標定的時間消耗,提升三維重建的速度。二、提出一種閉環檢測策略,利用該策略對關鍵幀的圖像特征點進行提取并構建詞袋(Bag-of-Words,BoW),通過詞袋判斷兩幀之間的相似度,實現閉環檢測。三、進行全局位姿圖優化,減少機器人運動過程幀間遞推的累積誤差,最終構建出全局一致的三維稠密點云地圖。
所設計的RDSOL 系統框架如圖1 所示,整個系統可劃分為3 個模塊。在圖像預處理模塊,相機獲取新圖像時,首先對圖像進行OTSU 二值化處理并統計其灰度值,以判斷當前場景的光照是否均勻、是否需進行單尺度Retinex(Single Scale Retinex, SSR)圖像增強。

圖1 RDSOL 系統框架 Fig.1 RDSOL framework
后端模塊繼承了DSO 的典型功能,即使用一個由若干系統關鍵幀組成的滑動窗口(Sliding Window)[6]組成優化后端,采用邊緣化策略,對關鍵幀中的路標點和相機進行聯合優化,并將優化過程限制在有限的關鍵幀窗口中。
閉環檢測關系到估計的軌跡和地圖在長時間下的正確性[7]。在閉環檢測模塊,本文提出一種將ORB 特征與原始點選擇策略結合的匹配方法,并通過TUM數據集、KITTI 數據集及實際場景測試,驗證閉環軌跡效果。以下詳盡探討各模塊中算法的設計與實現。
室內場景存在明暗變化,在確保不形成局部圖像梯度的條件下,RDSOL 采集圖像特征點位置及像素灰度信息,利用直接法最小化特征塊重投影光度誤差來優化相機的位姿,其計算過程如下:
設Ii、Ij為相鄰兩幀圖像,若將第i幀中點p投影到第j幀,則其最小化光度誤差函數Epj為:


式中,R、t分別為相機的旋轉矩陣和平移向量,由兩幀之間計算可得;∏c、分別表示重投影、逆重投影變換。
室內場景需布置光源來確保光照。相機在圖像采集過程中,因環境光照不佳或物體表面采光不均等原因,常呈現圖像光照不均問題。直接法位姿估計以像素灰度值為參考,為確保灰度值準確性,DSO 采用光度標定來矯正光照不均[8]。然而,光度標定需固定場景,使相機在不同曝光時間下,重復拍照獲得一系列圖像,此過程耗時巨大,且僅在當前環境有效。即使基于精細的相機成像模型,若環境不同,或環境相同場景不同,都難以準確標定成像過程中的光度參數,實現圖像亮度值的校正。
由于 DSO 的光度標定實現條件苛刻,為使RDSOL 具有普遍適用性,本文采用分類判斷且有針對性的單尺度Retinex 圖像增強策略(因所獲圖像所有區域的光照并非都不均勻)用于圖像預處理階段。
圖像的分類判斷與處理基于全局二值化算法OTSU[9],即統計整個圖像的直方圖特性以自動選取二值化閾值。具體地,對圖像灰度級0~255 進行遍歷搜索,若灰度值為某個值的時候,前景和背景的方差最大(類間方差最大),則當前圖像灰度值便是所求閾值T。利用該閾值T對子圖像進行分類:當T>圖像灰度時,判定某區域圖像光照均勻;當T<圖像灰度時,判定某區域圖像光照不均,需進行Retinex 圖像增強。
Retinex 是一種以色感一致性為基礎的圖像增強方法,其目的是在獲取輸入圖像原始信息 I( x,y) 后,計算出光源照射的入射分量L( x,y),通過對L( x,y)的濾除來減少光照不平衡的影響,獲得被測物體原本的反射分量 R(x,y)。具體原理為:

式中,(x,y)為輸入圖像的每個點。
本文采用單尺度Retinex 算法求解R(x,y),即[10]:

式中,i表示第i個顏色通道,分為紅色、綠色和藍色三通道,分別代表物體對長波、中波和短波光線的反射能力;*表示卷積運算;F(x,y)為高斯平滑函數,其表達式為:

式中,K為歸一化常數,滿足∫∫F(x,y)dxdy=1;C是函數所選的尺度參數。
Retinex 算法通過形態學閉合的方式,彌補了圖像細節的損失,使得高質量的圖像輸出更利于后續SLAM 光流跟蹤及圖像特征提取。為便于說明,在此做了一組光照對比實驗,如圖2 所示。

圖2 室內圖像增強效果Fig.2 Indoor image enhancement results
圖2(a)為某實驗室的真實場景,由于光照不均勻,場景上存在明顯的背光現象。隨著相機的運動,由于無法將新的特征點加入到構建的地圖中,地圖無法隨相機視角的前移而進行拓展,SLAM 系統無法繼續運行。對圖2(a)紅色框選中的過亮(灰度值較高)部分進行還原,獲得單尺度Retinex 處理后的圖2(c),并分別繪制兩圖像的灰度分布直方圖,如圖2(b)、圖2(d)所示。可以看出,圖2(c)的亮度更為均衡,圖2(d)的像素個數隨亮度的分布呈現更為均勻,表明Retinex算法有效提高了低光照條件下室內圖像的顏色細節、保真度、對比度和清晰度,使得增強后的圖像視覺效果和梯度變換明顯改善,更利于SLAM 后端的像素追蹤與閉環檢測特征點提取。
本文將ORB-SLAM 中基于圖像特征描述子的閉環檢測策略與DSO 結合,提出一種將ORB 特征與原始點選擇策略結合的匹配方法,其核心思想是將原始圖像進行向下采樣得到不同分辨率的圖像金字塔,然后對不同層的圖像金字塔并行進行ORB 特征提取與DSO 梯度點提取,該方法在高效提取圖像梯度的同時,確保了所提取的特征匹配描述子的尺度不變性,提高了特征匹配的精度。當確定了相應的閉合環路特征描述子之后,計算歷史幀與閉環候選幀之間的位姿變換。將位姿轉換到相似變換群Sim(3)上,并利用相似變換位姿圖進行全局優化,進而分散累積誤差,消除其對系統的影響。RDSOL 閉環檢測框架如圖3 所示。

圖3 閉環檢測框架Fig.3 Designed loop closure detection framework
在閉環檢測模塊中,對每一個新的圖像幀進行預處理,篩選出關鍵幀和普通幀,結合前文所提到的直接法由關鍵幀估計相機位姿。同時,利用算法為每個關鍵幀計算ORB 描述符并將其轉化為詞向量,使用開源詞袋模型DBoW3 構建詞袋數據庫BoW,通過查詢BoW 為當前關鍵幀選取閉環匹配子(從被邊緣化的關鍵幀中選取)。對于每個匹配子,在獲得精確3D信息之后,將當前幀與窗口中所有關鍵幀進行匹配,最終得到地圖中3D 點和當前幀中2D點之間的匹配關系。本文利用EPnP 計算相機位姿,并采用隨機采樣一致性(RANSAC)算法[11]剔除離群點。在計算出初始 SE(3)變化后,建立閉環誤差模型,使用Gauss-Newton 法對其迭代優化,并將校正后Sim(3)上的位姿轉換至特殊歐式群SE(3)。所定義的閉環誤差項為:

式中,p'uv為當前幀中匹配點坐標,d-1為其逆深度值;puv為閉環候選幀中匹配點坐標;c∏為當前幀的重投影變換,為閉環候選幀的逆重投影變換;Scr為兩幀之間的相似變換。
本節設計了多組實驗,展示RDSOL 系統的閉環檢測精度、光度增強的速度優勢及低紋理環境下Retinex 光度增強對特征提取的積極效果。數據集及實際場景實驗均在PC機上采用Ubuntu16.04的環境運行,平臺參數如表1 所示。

表1 運行平臺Tab.1 Operating platform
開源單目數據集TUM-mono 包含50 個光度校準序列,提供光度標定圖和相機在閉環位置處的一段軌跡(無完整的實際地面軌跡),非常適合通過對累積漂移的估算,比較不同VSLAM 系統的準確性及魯棒性。
選取TUM-mono 中50 個序列的軌跡對齊誤差ealign表征 VSLAM 系統的累積漂移,分別考察ORB-SLAM 關/開閉環檢測線程及DSO/RDSOL 的ealign取值(每1 個序列運行十次),結果如圖4、圖5所示。
圖4 中X 軸為數據集序列號,圖中每一個色塊代表VO/SLAM 對齊軌跡間的絕對軌跡誤差ATE(作為ealign指標),VO代表ORB-SLAM關閉閉環檢測線程。可以看出,VO 在整體序列上的 ATE 要比下部ORB-SLAM 大的多,表明添加閉環檢測線程的VSLAM 能夠提供更高精度的定位支持。

圖4 ORB-SLAM 有/無回環下對齊誤差對比Fig.4 ORB-SLAM alignment error comparison with/without loop
圖5 給出了相同序列上DSO 及RDSOL 的測試結果對比,進一步驗證了添加閉環后的RDSOL 可有效消除VSLAM 累積誤差,有助于更好的跟蹤及地圖創建效果。

圖5 DSO 與RDSOL 對齊誤差對比Fig.5 Alignment error comparison between DSO and RDSOL
選取TUM-mono數據集的Sequence20序列,分別測試DSO/RDSOL(無/有閉環檢測線程)對實際室內場景中機器人位姿估計的影響,三維重建效果分別如圖6(a)、圖6(b)所示。

圖6 稠密三維重建效果Fig.6 Dense 3D reconstruction results
可以看出,兩系統的三維重建結果相類似,但DSO給出的閉環處(圖6(a)左下起點與終點處)存在較大偏差(即重影現象),表明起點與終點軌跡無法擬合,該累積誤差的產生將導致位姿漂移。而如圖6(b)左下部所示,軌跡在起點和終點處很好地擬合在了一起,表明RDSOL 通過閉環檢測有效地消除了軌跡累積誤差,能夠為機器人定位與三維地圖重建提供更精準的位姿約束,魯棒性好。
在計算速度方面,選取TUM數據集中具有不同圖像幀數的前10個序列Sequence01~Sequence 10,比較DSO與RDSOL的平均每幀耗時,結果如表2所示。由于添加了閉環檢測線程,RDSOL需對圖像關鍵幀進行特征檢測并對后端進行全局地圖維護,增加了每幀耗時,故在圖像數目較多、地圖場景更為復雜的Sequence 04及Sequence05中,平均每幀耗時高于DSO。但由于省去DSO計算相機光度參數的耗時,RDSOL 在幀數較少的情形中體現了更優的執行效率,前10個序列下對DSO的平均運行加速比達到了10.91%,實時性有保證。

表2 DSO與RDSOL平均每幀耗時對比Tab.2 Averagetime consumption/ framecomparison between DSOandRDSOL
TUM-mono數據集僅有一部分真實軌跡,無法對機器人實際運行的所有軌跡進行對比。為此,選取KITTI數據集中的Sequence07序列(兼顧大尺度場景、多種程度光照變化及軌跡閉環),繪制軌跡跟蹤效果圖,并做出定量分析。
圖7 為DSO 與RDSOL在KITTI 圖像序列上運行軌跡及真實軌跡(groundtruth 提供)情況。從圖中可以看出,DSO呈現較大的軌跡偏移誤差,產生此現象的原因是相機運動通過同一位置后并沒有將初始環境閉環,導致位姿漂移;而RDSOL 在初始位置處修正了位姿,故可以很好地恢復真實軌跡(圖8的x、y、z軸軌跡位置均更接近真實場景)。

圖7 DSO/RDSOL/真實軌跡對比Fig.7 The trajectory comparison of DSO/RDSOL/groundtruth

圖8 DSO/RDSOL/真實軌跡位置對比Fig.8 The trajectory position comparison of DSO/RDSOL/groundtruth
如圖9 所示,在歐拉角變化方面,盡管在初始0-10 s 階段,RDSOL 中翻滾角和偏航角出現了波動,但之后的追蹤過程RDSOL 都貼合了真實的歐拉角變化,追蹤精度優于DSO。

圖9 DSO/RDSOL/真實角度對比Fig.9 The Euler angle comparison of DSO/RDSOL/groundtruth
進一步對DSO 及RDSOL 在KITTI 上的表現做出量化分析。選取KITTI 上具有挑戰的10 個圖像序列Sequence 00~Sequence 09,給出DSO/RDSOL 在其上APE 的均方根誤差(RMSE)值,同時給出當前廣泛應用的ORB-SLAM2 的APE RMSE 以作比較,如圖10 所示。可以看出,RDSOL 與ORB-SLAM2 的表現相當,且在特征缺失的Sequence 01 與Sequence 06 序列中表現出更好的跟蹤精度,RDSOL 將平均APE RMSE 由60.22 m(DSO)大幅降為13.97 m,表明其在取得較好實時性的同時,準確性有保證。

圖10 DSO/RDSOL/ORB-SLAM2 的APE 比較Fig.10 The APE comparison of DSO/RDSOL/ORB-SLAM2
不同于數據集的固定場景及有限數據參考,實際場景測試可圍繞RDSOL 的兩個核心設計——單目Retinex 圖像增強、閉環檢測來開展。
選取ZED 系列雙目相機(單目工作模式)采集空曠的走廊場景(明顯弱紋理區且光照弱),圖像成像大小均為752×480。圖11 給出了對走廊3 個不同場景分別進行原始圖像特征提取及單目Retinex 圖像增強后特征提取的對比圖,可以看出,后者可使機器人提取到更多的ORB 特征點,使RDSOL 追蹤像素點的穩定性更高,該圖像預處理設計達到了稀疏直接法的魯棒性要求。

圖11 不同光照下的特征點匹配結果Fig.11 Feature point matching results under different lighting conditions
三維重建的閉環性測試需要機器人的運動軌跡構成一個閉環場景,故令機器人從實驗室前門出發,經過走廊繞行一周之后,再從實驗室后門到達初始位置,實驗場景如圖12 所示。

圖12 實驗室以及走廊場景Fig.12 The scene graphs of lab and corridor
RDSOL在實際場景測試中無相機真實位姿參考,可通過其創建的三維稠密點云地圖對軌跡閉環特性進行驗證。可以看出,RDSOL 部分還原了上述實驗室及走廊場景,如圖13所示。

圖13RDSOL的實際場景三維重建效果Fig.13Thereal scene3D reconstruction result by RDSOL
機器人行走一周之后回到下圖中的前門初始位置(見圖13左上部,給出相機去畸變及Retinex 預處理后第2022幀,即最后一幀的灰度圖),軌跡構成閉合。
針對室內弱光照、光照不均場景下機器人VSLAM三維重建問題,本文開發了一類基于稀疏直接法的RDSOL 系統,利用單尺度Retinex 圖像增強代替DSO光度標定,確保RDSOL 追蹤圖像像素點的穩定性;構建詞袋數據庫BoW,通過添加閉環檢測線程,消除位姿漂移累積誤差。開源數據集TUM-mono、KITTI 的實驗結果表明,RDSOL 能夠較好地解決DSO因缺少閉環檢測造成的跟蹤失敗,并縮短三維重建的平均耗時。弱紋理、弱光照的走廊實景測試則進一步驗證了Retinex 圖像增強策略可改善像素灰度,避免ORB特征缺失,更利于直接法三維稠密點云地圖的構建。所開發的RDSOL為單目VSLAM室內實時三維重建提供了一定的參考及技術支持。