王慧穎吳琦鳴王兆強
(1.中國消防救援學院基礎(chǔ)部,北京 102202;2.火箭軍工程大學基礎(chǔ)部,陜西 西安 710025)
視覺SLAM 技術(shù)可以實現(xiàn)智能機器對場景環(huán)境的觀測確定自身的運動軌跡,同時構(gòu)建出場景地圖[1]。 SLAM 技術(shù)的實現(xiàn)方式與難度和傳感器的形式與安裝方式密切相關(guān)。 比較成熟的視覺SLAM 系統(tǒng)有ORB-SLAM[2]、LSD-SLAM[3]、DSO[4]等。 基于目前的視覺SLAM 在靜態(tài)環(huán)境下技術(shù)已發(fā)展較成熟[5],但離實際應用還存在著距離,因為往往在實際場景中,尤其是室外存在著可移動的人、汽車和自行車等,那么針對于靜態(tài)環(huán)境的SLAM 應用于動態(tài)場景中會被誤認為是相機在運動,從而大大降低了其定位和構(gòu)圖的精度。 動態(tài)場景中的運動物體會打破視覺SLAM 的靜態(tài)環(huán)境假設(shè),因此動態(tài)場景下提高視覺SLAM 精度成為一個重要的研究方向[6]。
運動著的物體行為相對比較復雜和具有不可預測性,目前研究對動態(tài)場景中的運動物體進行建模是先找出場景中動態(tài)區(qū)域,然后在位姿估計中濾除這部分。 因此動態(tài)場景區(qū)域的正確分割對于視覺SLAM 在動態(tài)場景下的定位與構(gòu)圖精度的提升是非常重要。 動態(tài)場景區(qū)域的分割往往采用多傳感器融合或者單個視覺傳感器來完成。 然而多傳感器融合[7-8]可以增加數(shù)據(jù)的維度,但在數(shù)據(jù)融合、傳感器標定、搭載小型設(shè)備等方面還存在多個難題。 單個視覺傳感器方案中存在運用深度學習檢測運動物體[9-10],但深度學習方法僅僅能夠識別出移動的人,無法與同樣移動的椅子進行區(qū)分,該方法對計算機硬件有著較高的要求。
動態(tài)場景下,稠密光流算法也可以對動態(tài)場景進行分析[11-12]。 歐陽玉梅[13]將稠密光流法應用于運動物體檢測,采用Gunner Farneback 稠密光流法計算各像素點位移矢量的光流矩陣,從而檢測運動物體,但該算法的計算量大,難以實現(xiàn)實時計算。
掩模[14]是指用選定的圖像、圖形或物體,對處理的圖像(全部或局部)進行遮擋,來控制圖像處理的區(qū)域或處理過程。 用于覆蓋的特定圖像或物體稱為掩模。 掩模可以用于提取感興趣區(qū)域、屏蔽某些區(qū)域或結(jié)構(gòu)特征提出等用途。
基于上述分析,本文提出動態(tài)場景下基于圖像掩模技術(shù)的雙目SLAM 算法,該算法可以保證實時性,其硬件成本低,便于攜帶,并方便搭載在其他設(shè)備上。 動態(tài)區(qū)域掩模分割算法不受視覺SLAM 定位結(jié)果影響。
本文提出的改進的ORB-SLAM 算法采用雙目視覺SLAM 系統(tǒng),利用ORB-SLAM 算法檢測出運動物體提取動態(tài)特征點,將檢測出的運動物體區(qū)域作為圖像掩模并對該區(qū)域進行分割,然后剔除特征匹配中動態(tài)特征點,保證相機的定位和構(gòu)圖不受動態(tài)場景中的運動物體的影響。 算法流程如圖1 所示。
圖1 基于圖像掩模技術(shù)的雙目SLAM 算法
式中:σ0,σ1分別為前景和背景的像素數(shù)目在整個圖像像素數(shù)目中的占比;ω0,ω1分別為前景和背景的平均視差值;h 的最大值為分割閾值。 前景和背景分割如2(b)。 將錯誤分類的靜態(tài)點剔除后,得到動態(tài)特征點檢測結(jié)果,使用白色點標出,如圖2(c)。并將動態(tài)特征點所在區(qū)域視為運動物體區(qū)域,這里將運動物體區(qū)域作為圖像掩模。
圖2 運動物體檢測
運用圖像分割方法(simple linear iterative clustering,SLIC)[15]和SPS(slanted plane smoothing)[16]算法,對場景區(qū)域進行分割,目的是為了獲得前景所有動態(tài)掩模區(qū)域。 對于視差圖初始值的計算,利用SGBM(semi-global matching)算法可以得到更快速計算的方案,時長可以從2 s/frame 提升到80 ms/frame,滿足實時的計算要求。
輸入雙目圖像。 利用超像素分割算法對圖像初始分割,如圖3(a)。 為了彌補RGB 圖像色彩分布不均的情況,將RGB 轉(zhuǎn)為Lab 色彩空間圖像。 每個像素i,利用其顏色(Li,ai,bi)和坐標(xi,yi)得到一個5 維向量(Li,ai,bi,xi,yi),每兩個像素的相似性可由它們的向量距離來度量,距離越大,相似性越小。 該算法首先初始化種子點,然后每個種子點的周圍空間里搜索距離該種子點最近的若干像素,將它們歸為與該種子點一類,通過多次迭代直到所有像素點都歸類完畢。 如圖3(a)分割結(jié)果,其中圖像的分割邊界對物體輪廓的描述較好。
圖3 場景區(qū)域的超像素分割
以總代價函數(shù)作為目標函數(shù),采用塊坐標下降算法優(yōu)化該目標函數(shù)求解最小值,經(jīng)迭代最終給出每個超像素塊對應的斜面視差模型和邊界類型,邊界類型有相互遮擋型、共面型以及鉸鏈型,共3 種類型。 建立總代價函數(shù),如下:
①當前像素的顏色與分割塊中的平均顏色越接近,則其代價值Ccolor越小,其計算公式為:
式中:?l為當前像素p在當前分割塊l上的斜面參數(shù),?i=(Ai,Bi,Ci),fp為當前像素p的局外點所在的位置,如果符合當前分割塊的斜面參數(shù),則fp=0;如果不符合則fp=1,視差代價為λd。
④相鄰間的分割塊lp與lq像素點的數(shù)量越少則邊界長度代價Cbou越小,其計算公式:
如果兩個分割塊li和lj邊界為共面或鉸鏈型,則邊界上像素p的視差值可以近似由斜面參數(shù)?i和?j得出相鄰的兩個分割塊li和lj的視差值;如果兩個分割塊li和lj邊界為遮擋型,其遮擋塊的視差值大于被遮擋塊的視差值,這里γpen=0。
場景分割優(yōu)化結(jié)果如圖3(b)所示,圖中標的分割線為場景分割后的遮擋邊界,可以看出場景中主要區(qū)域輪廓都能得到正確分割。
基于上述成果,接下來圖像進行動態(tài)區(qū)域掩模分割,本文利用種子點生長的方法,把運動物體的特征點與區(qū)域輪廓進行關(guān)聯(lián),用矩形框標記出運動物體所在的區(qū)域,該關(guān)聯(lián)算法如算法1 所示。
算法1 Rectangular box of dynamic region selection
算法將場景動態(tài)區(qū)域掩模與區(qū)域中的動態(tài)特征點進行對應實現(xiàn)關(guān)聯(lián),結(jié)果如圖4(a)所示,其中圓點和三角點是動態(tài)特征點和生長交點,分割線為場景分割后的遮擋邊界。 本文通過動態(tài)特征點和生長交點來擬合最小多邊形,給出最小包圍矩形框,進而得到場景區(qū)域中動態(tài)區(qū)域掩模分割結(jié)果,如圖4(b)所示,白色框為動態(tài)區(qū)域掩模。
圖4 動態(tài)區(qū)域掩模分割
提升動態(tài)場景中雙目SLAM 算法定位和構(gòu)圖的精度,本文在ORB-SLAM 算法中引入場景中動態(tài)區(qū)域掩模分割和剔除動態(tài)區(qū)域的功能,從而降低場景中運動物體對算法精度的影響。
ORB-SLAM 算法主要使用跟蹤、地圖構(gòu)建、閉環(huán)檢測三個線程[17-18]。 ORB-SLAM 算法將ORB 特征點輸入,利用光束平差法剔除誤差較大的特征點,從而減少場景中較遠的運動物體的影響,但此方法對離相機較近的運動物體,其動態(tài)特征點較多對相機位姿的估計精度會大大降低。 因此,本文在跟蹤線程中,為每一幀場景圖像都建立圖像掩模,那么ORB-SLAM 在輸入關(guān)鍵幀時也將與其對應的圖像掩模保存下來,運用這些關(guān)鍵幀形成點云地圖時,便可以利用圖像掩模將動態(tài)區(qū)域剔除,從而繪制出靜態(tài)背景環(huán)境,最后利用靜態(tài)特征點進行場景定位和構(gòu)圖,該操作大大降低了運動物體對雙目視覺SLAM系統(tǒng)的影響。
通過實驗來驗證本文提出算法的定位和構(gòu)圖的精準度。 采用室外雙目相機和pioneer 移動機器人小車一體化實驗平臺在某小區(qū)獲取實拍數(shù)據(jù)。 采用計算機硬件為惠普筆記本電腦(CPU 為Intel i7-4720HQ,主頻最高為2.6 GHz,內(nèi)存8G,Windows 系統(tǒng))對雙目實拍場景圖片進行處理實現(xiàn)室外機器人移動狀態(tài)下的動態(tài)區(qū)域掩模分割,例如對行走的人、行駛的車或其他運動物體,算法能夠?qū)崟r用矩形框?qū)鼍皡^(qū)域中動態(tài)區(qū)域掩模完整框選出。
圖5(a)為實拍室外場景中出現(xiàn)行走的人(左)和靜止的人(右),圖5(b)為實拍室外場景中出現(xiàn)騎車的人。 采用本文算法對實拍室外場景圖5 進行動態(tài)區(qū)域掩模分割,算法檢測結(jié)果采用白色框標出,黑色框為手動標出真實動態(tài)區(qū)域。 從圖中可以得出本文提出的算法能夠準確標注出場景區(qū)域中的動態(tài)區(qū)域掩模部分。
圖5 室外動態(tài)場景的動態(tài)區(qū)域掩模分割
本文設(shè)計3 個實驗將雙目相機的場景定位和構(gòu)圖的實驗結(jié)果看作改進SLAM 算法精度提升的檢驗標準。 實驗一設(shè)計雙目機器人處于靜止狀態(tài),雙目相機視野中存在運動物體(行人)。 實驗二設(shè)計的方案是雙目機器人直線行走,視覺場景中始終有運動物體(行人)。 實驗三設(shè)計的方案是雙目機器人行走軌跡是一個12 m×10 m 的矩形軌跡。 通過上述實驗來驗證本文提出的改進SLAM 算法在動態(tài)場景下的效果。
實驗一設(shè)計的方案是行人在靜止的雙目機器人前方來回行走。 如圖6(a)所示,由于場景中動態(tài)特征點導致相機定位軌跡出現(xiàn)漂移,場景構(gòu)建誤差大,跟蹤481 幀,平移RMSE 為0.128 7 m。 圖中場景構(gòu)建中黑色點為稀疏地圖,灰色點為雙目相機當前位置,灰色曲線為漂移軌跡,場景構(gòu)建失真且存在動態(tài)特征點。 如圖6(b)所示,通過本文算法采取動態(tài)區(qū)域掩模分割和完全剔除動態(tài)特征點,并利用環(huán)境中靜態(tài)特征點進行定位,可以得到相對較準確的定位結(jié)果,顯然圖中點云地圖與場景環(huán)境相符。
圖6 雙目相機靜止條件下的定位誤差對比圖
實驗二設(shè)計的方案是雙目機器人直線行走,視覺場景中有持續(xù)運動物體(行人)。 圖7(a)為相機在動態(tài)場景下分別采用ORB-SLAM 算法和本文算法進行直線運動軌跡的定位結(jié)果,圖中給出的真實數(shù)據(jù)是以導航系統(tǒng)RTK(real-time kinematic)信號輸出的定位結(jié)果并作為參考數(shù)據(jù);圖中ORB-SLAM 算法定位的結(jié)果,從圖7(b)中重建出的點云地圖出現(xiàn)較多雜點,相機定位產(chǎn)生嚴重漂移,該算法受到運動物體的影響較大;圖中本文算法定位軌跡,其定位軌跡漂移現(xiàn)象大幅度減少,圖7(c)中地圖重建雜點較少,點云地圖創(chuàng)建較準確。 兩種算法直線定位軌跡絕對誤差如表1 所示。
圖7 室外機器人在實驗1 中定位結(jié)果
表1 直線定位軌跡的絕對誤差
從實驗一中,本文算法在動態(tài)場景中的定位精度能夠提高76.1%,該值的計算公式如下:
式中:κ為定位精度提高值,τ和m分別為ORBSLAM 算法和本文算法在實驗一中的定位誤差。
實驗三設(shè)計的方案是雙目機器人行走軌跡為12 m×12 m 的矩形軌跡,視覺場景中有持續(xù)運動的多目標(行人)。 根據(jù)本文提出的算法需要將動態(tài)場景中的動態(tài)區(qū)域掩模分割,然后剔除ORB 特征點,如圖8 所示。
圖8 實驗二動態(tài)區(qū)域處理結(jié)果
為了更好的驗證本文算法的可靠性,實驗對動態(tài)場景下雙目機器人行走定位軌跡進行5 次重復測量,如圖9 所示。 圖中“Δ”為軌跡真實數(shù)據(jù),黑色粗線(本文算法)定位軌跡相比黑色細線(ORB-SLAM算法)的定位軌跡誤差小,定位更準確。
圖9 本文算法與ORB-SLAM 算法的重復5 次實驗定位軌跡對比
利用本文提出的改進SLAM 算法對雙目機器人在動態(tài)場景下采集的前后幀圖像的處理時間進行測試。 測試步驟包括:①動態(tài)特征點檢測;②場景區(qū)域分割;③動態(tài)區(qū)域掩模分割。 算法運行時間測試結(jié)果如表2 所示,總體平均下來耗費時間為85.2ms,該算法在跟蹤線程上處理速度可達4.7 frame/s。
表2 改進SLAM 算法圖像處理時間測試結(jié)果
本文提出了基于圖像掩模技術(shù)的雙目SLAM 算法能夠提高室外定位和構(gòu)圖精度。 該方法以前后幀的特征點到極線的距離與閾值之間關(guān)系作為動態(tài)特征點的判斷依據(jù),從而在圖像中得出動態(tài)特征點,再者利用圖像分割法和SPS 算法對場景區(qū)域進行分割,融合上述圖像處理成果,通過計算在圖像中準確標出動態(tài)區(qū)域掩模分割框,再利用圖像掩模剔除圖像中動態(tài)特征點,利用得到的靜態(tài)環(huán)境來獲得場景定位及構(gòu)圖結(jié)果。 通過對改進算法的實驗測試結(jié)果得出,在雙目相機按照設(shè)定軌跡移動的情況下,在動態(tài)場景中的定位精度提高76.1%,構(gòu)圖精度顯著提高,改進SLAM 算法圖像處理整體耗費時長符合實時性要求。 因此,本文提出的改進SLAM 算法在動態(tài)場景下是有效的。