孫曉明,任 磊
(浙江理工大學信息學院,浙江杭州 310018)
三維重建是計算機視覺、計算機圖像學領域的研究熱點,旨在從二維圖像數據集或場景視頻中獲得三維數據模型,以三維立體信息展示。隨著科技的發展,智能手機硬件集成度不斷提高,尤其是相機小型化、集成化,使移動端擁有良好的場景信息采集能力。高效、準確的三維重建技術在眾多領域得到應用,如虛擬現實(Virtual Reality,VR)、增強現實(Augmented Reality,AR)、智慧城市、軍事作戰、文物保護和地圖構建等。基于RGB-D 的三維重建技術不僅限于靜態場景重建,在動態重建方面也取得長足進展。
Roberts[1]在1963 年首次使用計算機視覺方法從二維圖像中獲取三維信息,從此三維重建技術不斷發展,成果顯著。基于移動端的三維重建利用智能手機的傳感器同時進行慣性測量單元(Inertial Measurement Unit,IMU)數據、RGB 圖像和深度圖像采集,實時重建三維立體場景。2010 年,微軟開始使用Kinect 進行相關開發,之后,陸續出現Intel RealSense、PrimeSense Carmine、Google Tango 等類似深度相機。RGB-D 的實時重建在計算機視覺領域及計算機圖像學領域引起巨大反響。此后,在靜態、動態場景重建方面涌現出眾多切實有效的算法。
隨著計算機視覺技術的不斷發展,采用深度相機進行動作識別、場景、建模等相關應用越來越多。彩色相機拍攝的圖片得到相機視角內的場景顏色信息并記錄下來,卻不包括深度信息,而深度相機能夠獲取場景的深度信息,解決了該問題。通過獲取的深度圖像,人們能準確知道圖像中每個點與相機的距離(景深),附加該點2D 圖像中對應的(x,y)坐標就可計算得到圖像中每個點的空間坐標,建立截斷符號距離函數(Truncated Signed Distance Function,TSDF)體素模型,從而實現場景的三維重建[2]。
目前主流的深度相機方案分為3 種,其性能如表1 所示。
(1)基于結構光(Structured Light)的深度相機。通過近紅外激光器將具有一定結構特征的光線投射到被拍攝物體上,再由專門的紅外攝像頭進行采集[3]。具備一定結構的光線會因拍攝物體的不同深度區域而采集不同的圖像信息,然后通過運算單元換算成深度信息,以此獲得三維結構。
(2)基于光飛行時間(Time-Of-Flight)的深度相機。通過測量光飛行時間來測量距離[4]。其工作原理是通過向目標連續發射激光脈沖,然后通過傳感器接收反射光線,通過探測光脈沖的飛行往返時間得到目標距離。
(3)基于雙目立體視覺(Binocular Stereo Vision)的深度相機。基于視差原理并利用成像設備從不同的位置獲取被測物體的兩幅圖像,通過計算圖像對應點間的位置偏差獲取物體的三維幾何信息[6]。

Table 1 Comparison of camera performance of different depths表1 不同深度相機性能比較
IMU 模塊數據包括3 軸陀螺儀、3 軸加速度計以及磁力計等傳感器。慣性傳感器之間相互獨立且不易相互影響,并可相互校正。但加速度計和陀螺儀數據精確性常受到隨機噪聲影響,且積分求解位移及旋轉時,隨著時間的推移誤差累積較大,數據僅在短時間內穩定可靠。而磁力計易受當地環境影響,需要預先校正。因此,一般不采用直接積分計算位姿的方法。
多傳感器融合的方法可以得到較好的位姿計算結果[6]。目前,位姿計算主要采用視覺傳感器組合IMU 傳感器的融合方案。視覺傳感器在特征點明顯、豐富的場景下效果較好,但遇到像玻璃、白墻等特征點較少的環境時基本無法工作;IMU 傳感器長時間使用有非常大的累積誤差,優點是短時間內相對位移數據精度很高,所以采用視覺傳感器和IMU 數據融合可相互彌補不足,得到較好的位姿計算結果。
基于濾波器的緊耦合方法(Filter-based Tightly Cou?pled Method),將圖像的特征向量加入系統狀態向量中聯合求解。基于濾波器的經典緊耦合算法有MSCKF[7]、ROVIO[8]等,基于濾波器的松耦合方法(Filter-based Loose Coupled Method)則不將圖像的特征點向量加入系統狀態向量,而將圖像作為單獨部分計算位姿,與IMU 數據求解結果進行融合,聯合求解最優位姿。
靜態場景重建與同時定位、地圖構建(Simultaneous Lo?calization and Mapping,SLAM)相類似,但SLAM 更加注重機器人在未知環境中的導航問題[9]。在計算機圖形學中,通過3D 密集重建生成高質量的三維場景[10],大多數方法都基于Curless 等[11]的基礎研究,開創了體素融合的先河,從而為第一個實時RGB-D 重建方法提供了基礎[12]。
RGB-D 相機所獲得的深度圖噪聲包括相機中心到目標物體的距離,以及深度圖中像素點的位置與RGB 圖像位置的偏移等[13],而雙邊濾波可以保持邊緣降噪平滑,對深度圖進行噪聲消除[14]。將深度圖像素點投影到相機空間坐標,獲取3D 點云[15]:

其中,(u,v)表示深度圖中的像素坐標,d 表示該點對應的深度值,K 為相機的內參矩陣,(X,Y,Z)是(u,v)表對應的點云坐標。
相機位姿估計可獲得相機運動的旋轉矩陣和平移矩陣。位姿估計需計算點云的法向量,存儲法向量信息的點云作為輸入參數求解位姿。
Besl[16]與Chen 等[17]最先采用基于迭代最近點(Itera?tive Closest Points Algorithm,ICP)的Frame-to-Frame 算法。通過相鄰幀的ICP 匹配算法計算從前一幀Tt-1到當前幀Tt的位姿相對變化:

通過開發快速且有效的ICP 算法,使手持掃描設備能實時反饋[18]。實時反饋使用戶在重建過程中能及時修補重建缺失部分并確定重建是否完成,但基于相鄰幀的ICP算法在長時間的掃描過程中會引起漂移積累問題。
為了減少漂移問題,實時RGB-D 重建采用Frame-to-Model 跟蹤策略[19-20]。Frame-to-Model 算法利用當前幀點云數據與匹配后的模型上一幀位姿的點云數據進行ICP 匹配。Frame-to-Model 算法相對于Frame-to-Frame 算法有兩個顯著優點:①通過當前重建狀態合成渲染深度圖代替最后一幀來確定重建結果,大大減少了時間跟蹤漂移;②采用Point-to-Plane 距離矩陣,通過穩定模型法向來定義切平面,取代帶有噪聲的法向輸入,從而獲得更高的跟蹤準確性,增加重建系統魯棒性。
盡管Frame-to-Model 算法顯著減少了時域跟蹤漂移,但卻沒有很好地解決局部追蹤誤差積累,局部追蹤誤差仍會累計到三維重建過程。為了克服上述問題,基于全局位姿優化方法首次應用于非實時3D 重建方法,通過使用手持消費級傳感器生成高質量的重建結果,其核心方法是通過保留局部細節并結合全局位姿優化在場景中平均對齊誤差。Dai 等[21]的BundleFusion 方法實現了基于實時集束調整策略和表面重積分技術的全局一致性實時重建。
基于Frame-to-Frame、Frame-to-Model 或全局優化相機跟蹤算法大多需要匹配對應點,將對應點輸入優化方法中計算出最佳的整體對齊變換。根據匹配方式分為稀疏匹配和密集匹配,稀疏匹配采用主要特征點進行匹配,密集匹配則希望找到所有或大部分點的對應關系。
稀疏匹配通常將當前顏色和深度輸入值的特征點與先前幀或模型中的特征點進行匹配來計算一組稀疏對應關系。Zhou 等[22]以及Henry 等[23]提出的3D 場景重建方法采用SIFT 進行特征采集和特征匹配。稀疏特征描述還可采用SURF、ORB 等描述。密集匹配方法通過Point-to-Plane 誤差度量測量空間點的距離接近程度,Point-to-Plane度量可以作為到目標物體表面距離的一階近似值。
3D 模型主要有兩種方式表示獲取的RGB-D 數據:①規則或分層3D 體素網格;②3D 點云。
Curless 等最先采用體素融合方法表示3D 模型,使用規則網格存儲符號距離函數(Singed Distance Function,SDF)的離散值,這種方式被Rusinkiewicz 采用從而第一次實現了實時重建算法,此后被Newcombe 等采用實現實時重建系統。基于體素的模型表示方法通常使用SDF 隱式存儲模型曲面,曲面的外部、內部體素分別存儲最近曲面的正、負距離值,而幾何曲面被定義為SDF 中的過零點。附加屬性值比如顏色值等,通常存儲在每個體素屬性中。在重建方法中人們更關心的是模型表面附近的體素值,因此常采用TSDF 方法。
規則體素網格需要預先定義體素和分辨率。在實時場景重建方面,大多數算法都很依賴現代圖像處理器(Graphics Processing Unit,GPU)的計算能力,而體素網格表示的空間范圍以及分辨率通常受到GPU 內存限制。
另一種模型的有效表示方法是采用有層級的體素(Volumetric)表示,如八叉樹結構,其中TSDF 可在實際曲面附近以稀疏形式編碼;Zeng 等[24-25]使用固定4 層分層結構存儲TSDF,將八叉樹分為頂層、分支層、中間層和數據層,僅將TSDF 存儲在最高級;Chen 等[26]提出應有固定分辨率的類似三層結構存儲表示。
除了基于體素的表示方法之外,Keller 等[27]和Whelan等[28]的重建方法都是基于稀疏點云表示的重建方法。點云附加信息,例如點的大小、直徑、顏色和其他信息都存儲在每個點的屬性中。將一組新的點數據加入點云模型時,需要在新加入點和模型點中間建立明確的對應關系。如果使用視覺反饋,那么單個點的簡單渲染會產生帶有孔洞的不完整渲染圖像。為了渲染密集圖像,通常應用Point-Splatting 技術,即將每個3D 點都以一定的半徑圓投影到2D圖像上,從而得到密集圖像。
高質量非剛性運動物體三維重建是一項極具挑戰的課題,尤其是在要求實時重建的目標情況下。動態場景重建在計算機視覺、人機交互、生物學以及醫學等眾多領域有重要意義。
動態場景重建技術在虛擬現實(VR)和增強現實(AR)等領域也得到應用。Keller 等[27]基于動態場景計算分割前景并在計算相機位姿時排除在外,從而在大部分場景運動時得到魯棒的相機追蹤效果。
動態場景重建一個重要課題是使重建方法相對于運動對象具有魯棒性。基于隱式距離函數的體素融合方法,如KinectFusion,僅限于靜態場景表面實時重建。如果場景中含有多個運動物體,就要使用幾個相互獨立的體素模型進行跟蹤與重建。Jaimez 等[29]將場景分為靜態部分和動態部分進行重建;Dou 等[30]假定預先掃描場景為靜態場景,對相機進行實時在線追蹤,將場景的動態部分進行分割并分別重建。
Newcombe 等[31]的Dynamic Fusion 方法首次實現了無模板實時三維重建,使用單一消費級深度相機(MicrosoftKi?nect)實時重建了物體幾何運動;Guo 等[32]使用基于密集反射率一致性數據來取代顏色一致性假設。基于密集反射率一致性可以更好地處理光源變化,并在大尺度剛性、非剛性運行時獲得更穩定的跟蹤。
Slavcheva 等[33]提出Killing Fusion 方法,解決了物體快速運動和拓撲變化問題。該方法對輸入幀TSDF 和當前模型TSDF 進行融合迭代。
本文從傳感器、靜態場景重建、動態場景重建以及工作流程等方面對基于RGB-D 的三維重建工作進行總結。在過去數年中,基于RGB-D 相機的實時三維場景重建得到極大發展,在許多實際場景中得到應用,但有幾個方向值得關注:
(1)復雜情況下的三維重建。由于重建場景環境影響,基于RGB-D 的三維重建仍然困難,陰影、遮擋、光照等條件對重建效果有很大影響。
(2)計算復雜度、實時性。基于RGB-D 的三維場景重建實時性得益于現代計算機技術的發展,在較高的硬件條件(GPU)下才能實現。降低算法復雜度,在有限計算資源下實現實時重建是未來的一個重要發展方向。(3)目前,基于RGB-D 相機的三維重建在靜態場景實時重建方面已經表現良好,但在動態場景重建方面仍有欠缺。(4)移動終端的移植、發展。智能手機的發展使相機集成度不斷加強,如何實現移動智能終端高質量的實時三維場景重建是值得研究的課題。