李翔宇,張雪芹
(華東理工大學信息科學與工程學院, 上海 200237)
三維模型已經越來越多地被應用于各種領域,例如醫療、電影、建筑業和虛擬現實(Virtual Reality,VR)等,其中三維重建是制作三維模型的重要手段之一。三維重建是指通過對真實世界的掃描繪制三維模型。早期的三維重建有主動式掃描重建和被動式掃描重建,這些方法通過采集環境或物體數據,然后進行離線重建。同步定位與重建系統(Simultaneous Localization and Mapping, SLAM)在一定程度上克服了離線重建的局限性[1]。Izadi 等[2]提出首個在線三維表面重建SLAM 算法Kinect Fusion,該算法基于RGB-D 相機和 TSDF(Truncated Signed Distance Function)方法實現了實時重建。隨后,Endres等[3]提出RGBDSLAM_V2 算法,該算法綜合了圖像特征提取、閉環檢測、點云、octomap 等技術,在ICL-NUIM 數據集的4 個起居室序列kt0~kt3 上的實驗結果表明絕對位姿誤差(Absolute Trajectory Error,ATE)的均方根誤差(Root Mean Square Error,RMSE)平均值為0.121 m。但該算法的實時性較差,相機必須慢速運動。Whelan 等[4]提出的Kintinuous算法是對KinectFusion的改進,該算法的位姿估計采用迭代最近點法(Iterative Closest Point,ICP)和直接法,并首次使用變換圖,在閉環檢測時,對三維剛體重建做非剛體變換,使得閉環中兩次重建的結果能夠重合。該算法在ICL- NUIM 數據集的4 個起居室序列中,平均ATE RMSE 為0.111 m。之后,Whelan 等[5]提出Elastic Fusion 算法,該算法基于實時密集視覺RGBD SLAM 進行表面重建,其傳感器估計算法采用不斷優化重建地圖的方式,提高重建和位姿估計的精度。其在ICL- NUIM 數據集的4 個起居室序列上的實驗表明,其平均ATE RMSE 達到0.035 m。然而RGBDSLAM_V2 和Elastic Fusion 輸出的都是三維點云模型,而不是mesh 模型,無法直接作為三維模型應用,kintinuos 能夠輸出三維mesh 模型,但是位姿誤差較大。同時,上述方法都無法實現有移動物體干擾情況下的場景有效重建。
為了解決具有移動物體干擾下的場景在線重建問題,一部分研究者提出結合SLAM 與深度學習/網絡的重建方法。Zhang 等[6]提出了一個三維點云重建方法FlowFusion,該算法使用光流殘差與深度學習網絡結合來描述點云中動態物體的語義,可以同時完成場景中動態和靜態物體分割、相機運動估計以及靜態背景點云重建。在TUM 數據集中walking_static與walking_xyz 兩個動態序列上的實驗結果表明,其ATE 的RMSE 平均值為0.194 m。Scona 等[7]提出了一種魯棒RGB-D SLAM 方法StaticFusion,該算法在估計RGB-D 相機位姿的同時分割當前幀圖片中的靜態像素,將當前幀像素的靜態概率當做一個連續的變量,和位姿一起聯合優化,用于構建靜態場景的面元地圖,在檢測運動物體的同時實現了背景的點云重建。在TUM 數據的6 個動態序列上的實驗表明,ATE 的RMSE 平均值為0.083 m。Long 等[8]在StaticFusion 識別動態物體基礎上提出了RigidFusion方法,該方法將所有動態部分視為一個剛性部分,同時使用動態和靜態部分的特征計算位姿,在自制數據集上的實驗結果表明ATE 的RMSE 平均值為0.0795 m。隨著基于深度學習的目標檢測[9]和實例分割技術的發展,Mask RCNN[10]與RGB-D SLAM 結合的系統Mask Fuison[11]被提出。Mask Fusion 能夠識別和分割場景中的不同對象,并給它們分配語義類標簽,實現了跟蹤和點云重建。在TUM 數據的6 個動態序列上的實驗表明,ATE 的RMSE 平均值為0.055 m。上述方法在一定程度上解決了具有移動物體干擾場景下的在線重建問題,但是精度不夠高,同時其輸出的是點云,而非構造完整的三維模型。Li 等[12]提出了一個基于實例分割的三維重建框架SplitFusion。該方法使用一階實例分割網絡YOLACT分割移動物體與背景,使用非剛性ICP 進行位姿追蹤,并對兩者分別進行模型重建,在TUM 數據集的兩個動態序列上ATE 的RMSE 平均值為0.129 m。
目前針對具有移動物體干擾的三維場景重建系統的研究仍然較少。針對該問題,本文提出一個全新的在線三維重建框架ORBTSDF-SCNet,該框架采用深度相機或雙目相機獲取重建物體及場景的深度圖與RGB 圖,基于ORB_SLAM2 實時獲取位姿信息,將表面重建算法TSDF 與深度圖相結合,實現了在線三維模型重建;為了消除場景中移動物體對場景重建的干擾,提出基于SCNet 實例分割網絡摳除移動物體,實現了移動物體干擾下的高精度場景三維重建。
ORB-SLAM2[13]系統是目前主流的SLAM 系統,在位姿估計中具有很高的精度。SLAM 具有3 個線程:實時跟蹤特征點的Tracking 線程、局部BA(Bundle Adjustment)優化線程和全局Pose Graph 的回環檢測與優化線程。其中,Tracking 線程主要負責提取當前幀的ORB(Oriented Fast and Rotated Brief)特征點,與最近的關鍵幀進行比較、計算特征點的位置并估計相機位姿。本文提出的方法主要采用ORB_SLAM2 的Tracking 線程實現高精度位姿估計,Tracking 線程的基本組成如圖1 所示。

圖1 Tracking 線程的基本組成Fig.1 Basic composition of tracking thread
當ORB 系統獲取RGBD 圖像后,進行Oriented FAST 角點特征選取,然后根據提取的特征進行ORB 匹配。ORB 特征匹配需要先計算Oriented FAST角點的BRIEF (Binary Robust Independent Elementary Feature)描述子,特征點的匹配與關聯通過重投影進行。匹配時,將圖像中的像素點根據初始位姿投影至當前幀獲得投影點,并把在該投影點附近搜索得到的與原ORB 特征點的BRIEF 描述子的漢明距離最近的點作為特征匹配點。在ORB 系統得到當前幀與前一幀或者局部地圖的匹配點對后,使用圖優化框(General Graph Optimization,g2o)優化相機位姿,若判斷成功則輸出位姿,反之,跟蹤失敗則回到最開始重新獲取RGBD 圖像。
TSDF 是一種利用結構化點云數據并以參數表達表面的表面重建算法,可以高效準確地實現在線三維重建。其原理如圖2 所示。
圖2 中,TSDF 首先在一個全局三維坐標中建立格式化體素立方體,每一個立方體都包括值與權重兩個量。TSDF 遍歷深度圖,根據像素點坐標、深度值及相機內參與位姿得到每個像素點對應的體素立方體坐標,并根據式(1)~式(3)計算該立方體的權重與值。

圖2 當前幀表面點云映射到立體體素Fig.2 Depth map to TSDF mesh
式中:下標i為當前幀;i?1 為上一幀;Wi(x,y,z) 為體素立方體的權重;max weight 為最大權重,默認為2;sd fi為根據深度數據計算得到的體素立方體到物體表面的真實距離;max truncation為截斷范圍,默認為0.06mdi(;x,y,z)為到物體表面的真實距離除以截斷范圍的體素值;Di(x,y,z)為帶有權重信息的最終體素立方體的值。
計算得到Wi(x,y,z) 與Di(x,y,z) 后,提取體素立方體中Wi(x,y,z) 大于體素權重閾值Wmin,且Di(x,y,z)等于0 的等勢面,即可得到重建的mesh 模型。
SCNet 是Vu 等[14]提出的一個基于Mask RCNN、Cascade RCNN[15]與HTC(Hybrid Task Cascade)[16]架構改進而來的實例分割網絡,具有良好的分割性能和較好的運行速度。SCNet 由Backbone、區域生成網絡(RPN)和級聯網絡構成,其網絡結構如圖3 所示。
圖3 中示出的“G”、“Pool”、“B”、“FR”、“M”分別指代全局一致模塊、全局池化層、Box 分支、FR(Feature Relay)模塊和Mask 分支。SCNet 采用Restnet 50 作為Backbone,在RPN 前引入全局一致模塊,以充分利用全局上下文信息分類、檢測和分段子任務之間的相互關系。與HTC 相比,SCNet 的級聯結構只在最后一個池化層才輸出Mask 分支,使得SCNet 速度更有優勢。FR 模塊將Box 特征與Mask 特征緊密耦合,改善Mask 預測性能,彌補速度提高降低的準確度。最后,三級Box 分支通過FR 模塊、Mask 分支和全局一致模塊融合得到最終結果。

圖3 SCNet 網絡結構Fig.3 Network structure of SCNet
針對有動態物體干擾的高精度在線三維場景重建容易出現重建失敗、重建出現拖影、重建精度不高等問題,本文提出結合ORB_SLAM2、TSDF 與SCNet 網絡的ORBTSDF-SCNet 系統框架,結構圖如圖4 所示。其中,藍色部分為ORBTSDF 模塊,包括ORB_SLAM2、TSDF 系統,主要用于獲取位姿和重建模型;黃色部分為SCNet 模塊,主要用于檢測和分割出移動物體;綠色部分為中間數據處理模塊,主要用于傳輸和處理ORBTSDF 與SCNet 之間的RGBD 圖像,摳除移動物體。

圖4 ORBTSDF-SCNet 結構圖Fig.4 Structure of ORBTSDF-SCNet
ORBTSDF-SCNet 的工作原理如下:
(1)來自深度相機的RGBD 圖像流,將RGB 圖像流傳給SCNet 網絡,將RGBD 圖像流傳給中間數據處理模塊。
(2)SCNet 對輸入的RGB 圖像進行移動目標檢測與實例分割,得到含有多個檢測目標的Mask 圖合集。
(3)Mask 圖合集傳給中間處理模塊,對分割實例進行膨脹并做摳圖處理,摳除實例后的RGBD 圖傳給ORB-SLAM2 與TSDF。
(4)ORB-SLAM2 對RGB 圖進行ORB 特征選取與匹配,計算得到位姿。
(5)TSDF 將RGBD 圖經過位姿參數與相機內參運算轉化,計算得到體素立方體數據,生成三維重建結果。
由于通常出現在室內的移動物體是人,因此本文將人作為重建現場的移動物體。
針對SLAM 系統只能輸出點云,不能直接生成三維模型,本文提出結合ORB-SLAM2 和TSDF 的三維重建算法ORBTSDF。ORBTSDF 的重建過程流程圖如圖5 所示。

圖5 ORBTSDF 整體三維重建流程圖Fig.5 Flow chart of 3D reconstruction of ORBTSDF
ORBTSDF 接收RGBD 圖像,分別傳給ORB_SLAM2 與TSDF 模塊。ORBTSDF 采用ORB_SLAM2 Tracking 線程的ORB 特征檢測與匹配算法進行特征提取和匹配,計算圖像流中各幀與第一幀的位姿差,然后傳給TSDF 模塊。
TSDF 首先對RGBD 圖做一個簡單閾值濾波,過濾掉距離深度圖中過遠的像素飛點。然后將其經過位姿處理后生成新增體素數據,按照式(1)~式(3)將新增數據融合進總體素數據合集。為了解決后期模型上色問題,在TSDF 體素數據中,增設一個顏色變量,保存每個體素立方體的RGB 圖顏色。體素數據和顏色變量一并存入顯存。
為了得到帶顏色的三維重建場景,將體素數據中滿足權重閾值Wmin的體素立方體以及與其對應的顏色變量分別從顯存中提出,保存為.bin 的mesh 文件和.ply 的點云文件。mesh 文件主要用于三維模型生成,點云文件主要用于預覽點云效果和存儲顏色信息。重建模型時,采用isosurface 勢面提取算法,基于mesh 文件生成三維模型;采用meshlab 三維幾何處理軟件,基于點云文件對三維模型進行上色處理,最終得到帶顏色蒙皮的三維重建模型。
為了進一步解決因SCNet 算法精度問題而引起RGB 圖檢測和實例分割誤差,以及由于深度相機內部原因而引起的深度圖和RGB 圖對準誤差,在中間處理模塊對Mask 合集圖像進行膨脹處理。
首先對二值化的Mask 合集圖像使用5×5 的描述子(膨脹大小)進行3 次膨脹處理;為了平滑毛刺點,再使用3×3 與1×1 的描述子分別進行1 次膨脹。將膨脹后的Mask 圖像渲染為白色,同時將Mask 圖像對應的RGB 圖中相應區域的像素值設為255(顏色變為白色),深度值設為0,即從RGBD圖中摳除了移動物體。摳除移動物體的RGBD 圖傳給ORBSLAM2 和TSDF,消除了移動物體對ORB 的特征提取與匹配,以及對重建造成的干擾。
本文提出的ORBTSDF_SCNet 場景三維重建算法流程如圖6 所示。

圖6 ORBTSDF-SCNet 算法流程圖Fig.6 Flow chart of ORBTSDF-SCNet algorithm
實驗采用的處理器為 AMD R7 3700X@3.6 GHz,內存為 16 GB,操作系統為64 位Ubuntu16.04,運行環境為 python 3.7,GPU 為NVIDIA GeForce GTX 1080 顯存為 8 G,硬盤大小為 1 TB。
靜態數據集為Imperial College London[17]發布的ICL-NUIM 數據集。該數據集提供的起居室場景具有 3D 實況深度圖、相機姿勢以及高精度雷達重建的ground truth,適合在靜態場景中評估相機軌跡的精準度。本文選取了起居室場景中的4 個片段:kt0、kt1、kt2、kt3。
動態數據集為TUM 數據集[18]中的辦公室場景,該數據集提供有相機移動位姿的ground truth,適合在動態場景中評估相機軌跡的精準度。本文選擇TUM 數據集中含有移動物體的6 個數據子集:sitting_static、sitting_xyz、sitting_halfsphere、walking_static、walking_xyz、walking_halfsphere,后續實驗中分別簡稱為sit_static、sit_xyz、sit_hsp、walk_static、walk_xyz、walk_hsp。
這6 個數據子集均由手持攝影機拍攝,場景中都包含有移動的測試人員。測試人員一直保持在相機前方移動,在sitting 子集中,兩名測試人員坐在凳子上,僅有細微的移動;在walking 子集中,兩名測試人員圍繞辦公桌走動兩圈,移動速度約為1 m/s。static 表示相機一直朝向前方拍攝,僅隨拍攝人員的手有輕微抖動,x、y、z表示相機沿著x、y、z軸移動,halfsphere(hsp)表示相機沿著一個直徑約1 m 的半球移動。
位姿精度是評估重建精度的一個重要指標。位姿誤差越低,重建誤差越低。本文從ATE 和相對位姿誤差(RPE)兩個方面來評價算法重建性能。
(1)ATE 絕對軌跡誤差是估計位姿和真實位姿的直接差值,通常用于評估SLAM 算法精度和軌跡全局一致性。
絕對位姿誤差通常以均方根誤差RMSE 表示:
式中:N為數據個數;Yi為ground truth 提供的真實值;f(xi) 為重建得出的位姿值。均方根誤差的單位為mm。
(2)RPE 相對位姿誤差主要描述相隔固定時間差 ? 的兩幀的位姿相比真實位姿的差值,通常用于評估SLAM 里程計的誤差。第i幀的RPE 定義如下:
式中:Qi為ground truth 提供的真實位姿;Pi為重建完成后的估計位姿,下標i代表時間或幀。
相對位姿同樣以均方根誤差RMSE 表示,如式(6)所示:
實驗中,ORB 參數使用默認設置:nFeatures=1000,scaleFactor=1.2,nlevels=8,iniThFAST=20,minThFAST=7。在靜態場景重建時,設TSDF 的權重閾值Wmin=0,即只要當一個點出現在一個體素立方體內一次就取為重建點。在有移動物體干擾的場景中重建時,設TSDF 權重閾值Wmin=100,即當一個點在100 幀中連續出現在一個體素立方體的同一位置時,將這個點作為重建的點,以避免出現大量的拖影,減小誤差。SCNet 基于COCO 數據集作預訓練,所有實例分割網絡的檢測閾值設為0.8。
3.3.1ORBTSDF 對比實驗 本實驗用于驗證ORBTSDF 的重建精度,并與7 種重建算法進行對比。對比實驗選取文獻[19]所提DVOSLAM(DS)、文獻[3]所提RGBDSLAM_V2(RSV2)算法、文獻[20]所提MRSMap(MRS)、文獻[4]所提Kintinuous(KS)算法、文獻[5]所提ElasticFusion(EF)算法和ElasticFusionFrame-to-model(FTM)算法和文獻[13]所提ORB_SLAM2(OS2)算法。為了進行對比實驗,依據上述文獻,實驗使用ICL-NUIM 數據集,評價指標采用ATERMSE。實驗結果如表1 所示。
表1 中,average 表示平均ATERMSE。由表1可見,本文所提ORBTSDF 算法的平均ATERMSE最低,在kt0 和kt3 上有明顯優勢。FTM、RSV2、DS、KS 這4 種重建算法的平均ATERMSE 為ORBTSDF的3~6 倍,MRS 重建算法的平均ATE RMSE 是ORBTSDF 的約15 倍,EF 和OS2 在4 個序列上整體重建效果比較均衡,平均ATERMSE 略高于ORBTSDF,KS 重建算法在序列kt1 和kt2 中誤差最低。總體而言,本文所提ORBTSDF 重建算法是有效的。

表1 在ICL-NUIM 數據集上的ATE RMSE 對比實驗結果Table 1 Comparative results of ATE RMSE on ICL-NUIM dataset
3.3.2SCNet 膨脹及優化實驗 為了驗證采用SCNet 網絡以及進行膨脹處理的有效性,在TUM 數據集中6 個序列上進行重建測試。不同方法的RMSE 實驗結果如表2 所示。表中,OF 代表僅使用ORBTSDF方法,SM 代表使用ORBTSDF+SCNet 方法,SD 代表使用ORBTSDF+SCNet+膨脹處理方法。
從表2 中ATE RMSE 實驗結果可以看出,與OF 方法相比,當采用SM 方法時,除sit_xyz 序列外,在其他5 個序列上ATE RMSE 都有減小;SD 方法的ATE RMSE在除了sit_xyz 外的5 個序列上分別下降約90%、64%、96%、21%、13%,平均下降約89%;SD方法與SM 方法相比較,在walk_hsp、walk_xyz 和sit_hsp 這3 個序列上ATE RMSE 分別下降了約62%、14%、12%。在sit_xyz 序列上,SM 和SD 方法的誤差略低于OF 方法,是因為在該序列上人僅有小幅運動,近似為靜態場景。
從表2 中RPE RMSE 實驗結果可以看出,SM 方法相較于OF 方法,誤差降低了約68%,SD 方法相較于SM 方法,誤差降低了約27%。總體而言,本文所提重建算法使用SCNet 網絡在膨脹下是有效的。

表2 TUM 數據集上不同方法的RMSE 實驗結果Table 2 Comparative results of RMSE on TUM dataset with different methods
3.3.3分割網絡對比實驗 為了驗證采用SCNet 網絡的有效性,將ORBTSDF 方法分別與MaskRCNN、CascadeMaskRCNN 和HTC 結合(分別命名為MR、CMR 和HTC),與本文所提ORBTSDF-SCNet 方法進行對比,實驗結果如表3 所示。
從表3 中實驗結果可以看出,在static 序列下,因為相機移動幅度很小,所以4 個網絡的分割誤差相差不明顯。但在xyz 序列和hsp 序列下,隨著相機移動幅度加大,本文方法的誤差相較其他網絡有較為明顯的降低。在walk_xyz 序列下,本文方法相較于MR、CMR 和HTC,其ATE RMSE 分別下降了約35%、0、12%,RPERMSE 分別下降了約30%、34%、2%;在sit_xyz 序列下,其ATERMSE 分別下降約25%、28%、42%,RPERMSE 分別下降約26%、9%、42%。在walk_hsp 序列下,ORBTSDF-SCNet 相較于MR、CMR 和HTC,其ATE RMSE 分別下降了約63%、46%、21%,RPE RMSE 分別下降了約73%、64%、0。在sit_hsp 序列下,相較于MR 和HTC,ORBTSDF-SCNet 的ATERMSE 分別下降了約16%和38%,RPERMSE 分別下降了約9%和7%,但高于CMR 的對應值。總體來看,在6 個序列中,ORBTSDF-SCNet 的ATE RMSE 平均值分別下降了約55%、37%、24%,RPE RMSE 平均值分別下降了約59%、50%、7%。可見,本文所提重建方法ORBTSDF結合使用SCNet 網絡是有效的。

表3 TUM 數據集上不同實例分割網絡RMSE 實驗結果Table 3 Comparative results of RMSE on TUM dataset with different instance segmentation networks
3.3.4ORBTSDF-SCNet 對比實驗 為了驗證所提出的 ORBTSDF-SCNet 模型的重建有效性,將ORBTSDF-SCNet 算法分別與文獻[5]所提Elastic Fusion(EF)算法、文獻[7]所提StaticFusion(SF)方法、文獻[11]所提MaskFusion(MF)方法、文獻[6]所提Flow Fusion(FF)方法、文獻[11]所提VO-SF(VS)方法,文獻[21]所提Co-Fusion(CF)方法和文獻[22]所提PoseFusion(PF)方法進行對比。
根據文獻,SF、FF 和PF 方法使用TUM 數據集中的兩個序列進行測試,因此與上述方法對比時使用相同的兩個序列。實驗結果如表4 所示。而VS、EF、CF 和MF 使用TUM 數據集中的6 個序列進行測試,因此與上述方法比較時使用相同的6 個序列。實驗結果如表5 所示。

表5 在TUM 數據集六個序列上RMSE 對比實驗結果Table 5 Comparative results of RMSE on six sequences of TUM dataset
從表4 可以看出,本文提出的ORBTSDF-SCNet方法在walk_sta 和walk_xyz 序列上的平均誤差都為最低,平均ATERMSE 比SF、FF、PF 算法分別降低了約95%、84%和66%,PRERMSE 分別降低了約94%、87%和75%。

表4 在TUM 數據集兩個序列上RMSE 對比實驗結果Table 4 Comparative results of RMSE on two sequences of TUM dataset
在表5 TUM 數據集的6 個序列上的對比實驗可見,使用了Mask-RCNN 的MF 相對于EF,在walk_hsp、walk_static 和walk_xyz 動態序列上的ATE RMSE 有較大的下降。本文所提RBTSDF-SCNet 方法的ATE RMSE 與PRE RMSE 在所有序列上平均值都是最低的,相對方法VS、EF、CF、MF,其平均ATE RMSE分別下降約84%、72%、86%和56%,其PRE RMSE分別下降約80%、65%、83%和45%。可見,本文所提方法在有動態物體干擾的情況下重建是有效的。
3.3.5速度性能對比實驗 為了說明ORBTSDFSCNet 的重建速度,在TUM 數據集上與MF 方法進行了對比。MF 是目前在有動態物體干擾下重建位姿精度最高的在線RGB-DSLAM 方法。實驗中,MF 使用默認參數設置,速度單位為fps(FramesPer Second)。
從圖7 中可以看出,由于在hsp 序列中相機存在大幅度移動,因此MF 重建失敗,而ORBTSDFSCNet 能夠實現成功重建,平均速度為2.8fps。在walk_static和walk_xyz 兩序列中,MF 的速度分別為2.5 fps 與2.3 fps,而ORBTSDF-SCNet 的速度均為2.8fps。可見,當物體移動幅度較大時,ORBTSDFSCNet 的速度性能超過MF。但是,在sit_static,sit_xyz序列中,由于物體移動幅度不大或者靜止,ORBTSDFSCNet 的速度小于MF。總體而言,ORBTSDFSCNet 無論在相機移動、物體移動或靜止情況下重建速度相對保持穩定。

圖7 TUM 數據集6 個序列運行速度對比Fig.7 Comparative results of running speed on six sequences of TUM dataset
3.3.6靜態重建效果展示 為了更直觀地展示ORBTSDF 方法,特別是基于TSDF 進行靜態場景三維重建的效果,在ICL- NUIM 數據集進行ORBTSDF重建,以第1 序列kt0 為例,重建效果如圖8 所示。
圖8(a)所示為ICL- NUIM 數據集的Ground truth,圖8(b)所示為kt0 序列經過ORBTSDF 重建得到的帶有顏色的點云,圖8(c)所示為ORBTSDF 重建得到的不帶顏色的TSDF Mesh 模型,圖8(d)所示為得到的帶顏色的三維重建模型。
對比圖8(a)與8(c)可以看出,本文所提ORBTSDF重建方法具有較高精度。對比圖8(b)與8(d)可以看出,文本所提重建方法還能夠較好地對顏色與細節進行重建。

圖8 ORBTSDF 重建效果圖Fig.8 Reconstruction effect of ORBTSDF
3.3.7動態重建效果展示 為了更直觀地展示ORBTSDF-SCNet 方法在有移動干擾物下的三維重建效果,以TUM-NUM 數據集walk_xyz 序列與walk_hsp 序列為例,與EF、MF 方法的重建效果進行對比,結果分別如圖9、圖10 所示。
在walk_xyz 序列中,兩名測試人員從辦公椅上站起來,繞著辦公桌走了多圈,最后坐下。在walk_hsp序列中,兩名測試人員從辦公椅上站起來,繞辦公桌走了1 圈后并坐下,1 名測試人員站起來繼續繞圈,另外1 名測試人員有各種動作。
從圖9(a)中可以看到,由于EF 沒有動態物體檢測與剔除功能,所以畫面中測試人員坐在辦公桌前被重建,且左側出現藍色衣服測試人員的殘影,同時由于動態物體的干擾,對比圖9(c)可以發現EF 點云重建內容不夠完整,細節不能有效重建。從圖9(b)中看出,MF 在有動態物體的干擾下,幾乎無法實現場景的重建,除了電腦部分外,其他部分已經基本無法辨認。因此采用本文所提方法有效排除了動態物體干擾,實現了場景的有效重建。

圖9 walk_xyz 序列動態重建效果對比圖Fig.9 Dynamic reconstruction effect comparison on walk_xyz sequence
從圖10(a)中可以看到,由于EF 在動態物體測試人員的干擾下,非常明顯地出現了位姿估計錯誤,導致重建了兩個相交的辦公桌,兩個平行辦公椅,并且在左側也錯誤地重建了測試人員。由圖10(b)可見,MF 在有動態物體的干擾下,幾乎無法實現場景的重建,但采用本文所提方法(圖10(c)、(d))有效排除了動態物體干擾,實現了場景的有效重建。

圖10 walk_hsp 序列動態重建效果對比圖Fig.10 Dynamic reconstruction effect comparison on walk_hsp sequence
為了實現在線重建并端到端輸出三維模型,本文提出基于ORB-SLAM2 和TSDF 的重建算法ORBTSDF。同時針對高精度三維重建系統遇到動態干擾物體時容易重建失敗或精度大幅下降的問題,結合SCNet 框架與ORBTSDF,提出ORBTSDFSCNet 方法,對移動的目標進行檢測與實例分割,并通過對檢測對象進行膨脹處理,降低RGB 圖分割誤差與深度圖配準誤差,實現對移動物體的有效摳除。在多個數據集上的對比實驗結果表明,本文所提出方法對有移動物體干擾的場景能夠實現有效重建。在未來,可以結合高精度分割網絡,實現對多個移動目標物體進行追蹤與高精度重建。