彙總|三維重建算法

三維重建是指獲取真實物體的三維外觀形貌,並建立可複用模型的一種技術。它是當下計算機視覺的一個研究熱點,主要有三個方面的用途:1)相比於二維圖像,可以獲取更全面的幾何信息;2)在VR/AR中,建立真實和虛擬之間的紐帶;3)輔助機器人更好的感知世界。

 

KinectFusion

1、深度數據獲取---去躁;
2、生成點雲---計算攝像機座標系的深度信息,進而變換到全局座標系,計算法向量;
3、預測3D模型;
4、結合2,3計算當前深度場景和預測模型的位姿---(ICP最小二乘法計算變換矩陣,法向量誤差);
5、點雲融合(TSDF,晶體網格化)---另一種是三角網格化;
6、可視化(場景渲染,三角網格(Gouraud着色));
7、紋理貼圖(RGB圖像->點雲數據的映射矩陣M)。
 

ElasticFusion

1、基於 RGB-D 稠密的三維重建,一般使用網格模型融合點雲,ElasticFusion 是爲數不多使用 surfel 模型表示的算法。 
2、傳統的 SLAM 算法一般通過不斷優化相機軌跡或者特徵點的方式,來提高軌跡估計或者重建的精度,這篇文章採用不斷優化重建的 map 的方式,提高重建和位姿估計的精度。 
3、優化採用 deformation graph 的形式,和 DynamicFusion 中優化的方式如出一轍。 
4、融合了重定位算法(當相機跟丟時,重新計算相機的位姿)。 
5、算法使用 OpenGL 對點雲進行更新、融合、顯示和投影。 
6、算法融合 RGB-D 圖像進行位姿估計,對於 RGB 圖像通過顏色一致性約束計算位姿,對於點雲通過 ICP 算法計算位姿,ElasticFusion 融合了二者。 
7、適合重建房間大小的場景,代碼沒有做優化,重建較大場景時,代碼不能適用。

DynamicFusion

1、首先將每幀獲取到的動態變化的場景(要重建的對象)通過某種變換,轉換到一個canonical 空間中,即在該空間中創建一個靜態的物體表面模型;

2、而每幀都有個對應的 volumetric warp field 的東西,能夠將canonical空間中的模型還原到live frame中(可想而知,這個還原過程可能經歷了旋轉平移和形變)。

我們可以注意到兩個關鍵的變換,一個是從實時的深度圖到canonical空間,並且在該空間中更新表面建模;另一個是從canonical空間轉換到live frame下,即volumetric warp field的求算。

DynamicFusion系統的核心是:建立一個關鍵幀(canonical frame)下的模型,之後場景發生的變化都可以通過幾何變換對應到這個模型上;每一次新讀取了深度圖都通過幾何變換之後再融合到模型當中,這裏變換的過程相當於取消了場景的變換;就這樣場景逐漸的變得真實豐滿。

其系統兩部分構成:重建的三維場景(reconstructed scene geometry),記爲V。體翹曲場(a dense volumetric 6D warp(motion) field),記爲W。重建的三維場景V使用TSDF模型表示,類似於KinectFusion中的模型表示方法。體翹曲場W可以簡單的理解爲:記錄了V中點與深度圖像D中點想換轉換的矩陣,D中數據經過W的變換之後才能融合到V中。

 每一幀深度圖讀取進入系統之後,需要進行的流程如下:

1、估算W;(Estimation of the volumetric model-to-frame warp field parameters )

2、根據W,將D融合到V中;(Fusion of the live frame depth map into the canonical space via the estimated warp field )

3、擴展W。(Adaptation of the warp-field structure to capture newly added geometry  )
 

Kintinuous

先講下 KinectFusion 算法的不足:

KinectFusion 算法使用固定體積的網格模型表示重建的三維場景,這就造成重建的時候只能重建固定大小的場景。

而且 KinectFusion 中使用的 TSDF 模型將整個待重建的空間劃分成等大小的網格,當重建體積較大,或者網格的空間分辨率較高時很消耗顯存。

而且 KinectFusion 算法沒有迴環檢測和迴環優化,這也造成當相機移動距離大時,不可避免的會有累積誤差(雖然 KinectFusion 算法使用 frame-to-model 的形式配準會減小累積誤差,但是當移動距離大時,重建的三維場景也會飄起來),累積誤差造成重建場景的漂移。

Kintinuous這篇文章的作者做了幾年工作,纔有了當前的 Kintinuous 算法,這個算法是個比較完備的三維重建系統。

位姿估計結合了 ICP 和直接法,用 GPU 實現,位姿估計的精度魯棒性都相對其它算法如 InfiniTAM 也較好

而且 Kintinuous 融合了迴環檢測和迴環優化

並且史無前例的在實時三維剛體重建中用 deformation graph 做非剛體變換,根據迴環優化的結果,更新點的座標,使得迴環的地方兩次重建的可以對齊。

Kintinuous的工作主要有以下三個亮點:

1.利用基於GPU的3D循環緩存技巧將深度圖(depth map)的fusion擴展到無界空間區域(unbounded spatial region);

2.同時利用稠密的幾何(geometric)相機位姿約束和光度(photometric)相機位姿約束,克服了大場景下相機位姿估計不準確的限制;

3.根據場景識別(place recognition)和隨後的閉環限制(loop closure constraint),使用儘可能剛性(但其實是非剛性)的空間變形(space deformation)來更新建好的地圖。

DoubleFusion

DoubleFusion是清華大學劉燁斌老師課題組在2018年發表在CVPR上的一篇優秀的動態重建文章,它可以實現單個RGBD攝像頭重建實時運動人體的功能,重建結果較好,運行幀率33幀,可以在TitanX及以上電腦上實時運行,魯棒性較強。 

簡單地講,DoubleFusion的原理是這樣的,一般深度攝像頭的動作捕捉來源於深度數據,因此可以構建人身體的表面形狀(即包含衣服在內的外形數據),但這種方案難以在有遮擋的情況下實現捕捉,爲了補足深度捕捉的缺憾,DoubleFusion將它和估算骨架模型的方案融合了起來,因此形成了一個“雙層表面表示”,外層是深度數據得到的表面重建的數據,內層則是骨架模型數據,最終計算得到最合理的動作數據。我們看到的完整的身體模型,實際上是內外兩層數據相互制約、相互融合的結果。

具體來說,DoubleFusion的輸入只有捕獲的深度數據,而輸出是捕捉目標的雙層表面。在骨架估計方面,它採用最近出現的基於Mask-RCNN的模型SMPL,可以非常迅速的得到比較完美的骨架模型,在外表數據方面,採用同樣是近年來提出的捕獲方法DynamicFusion。外表數據生成一個節點圖,主要用於判斷姿勢變化方式,骨架數據同樣形成節點圖,主要用作判據,儘量避免姿勢變化中違法骨骼連接的情況。

DoubleFusion方案比單方面骨架模型估計的方案效果更好,例如與BodyFusion相比較, 後者即使較緊身的衣服也會對結果產生影響,而前者捕捉的結果更爲乾淨、完整;另外DoubleFusion的每幀最大誤差更小,而且平均誤差也較小,在捕捉快速運動期間表現也要更好,還有,實時重建的身體形狀和顯示的目標穿着看起來也要更合理一些。

從性能上來說,測試環境中,DoubleFusion每一幀執行6次ICP迭代,進行關節運動跟蹤需要21毫秒,9毫秒用於體積形狀和身體姿態的優化;另外,輸入的深度數據屬於異步運行處理,算上運行時間不到1毫秒,綜合下來基本是每幀32毫秒。

然而,這種解決方案還是存在限制,例如,當用戶穿着較厚的衣服時,這個方案在捕捉過程中會將衣服的厚度都當成人的身體來計算,導致身體建模的誤差出現;另外,目前的方案還無法處理人物對象之間的交互,不過按照論文的說法,這將會在未來的研究中得到解決。

BodyFusion

BodyFusion:Real-time Capture of Human Motion and Surface Geometry Using a Single Depth Camera

本文提出一種新穎的實時幾何融合方法—BodyFusion,該方法可以通過單個消費級深度相機,完成對人體非剛性表面運動行爲的跟蹤和重建任務。

作者利用人體行爲的內部鉸接運動先驗,來降低表面圖節點上非剛性形變參數化的模糊性,並提出了一種骨架嵌入式表面融合(SSF)的方法。本文提出方法的關鍵點是:基於骨架和圖形節點之間的附帶信息來共同解決骨骼和圖形節點的形變問題。附帶信息基於融合的表面幾何形狀和形變計算進行逐幀更新。總而言之,隨着深度幀的融合,本文方法可以實現逐漸去噪,精細化和完整表面重建的任務,並完成骨架和附帶信息的更新。實驗結果表明,與現有融合方法相比,本文的方法能夠顯着提高非剛性運動融合的性能和跟蹤的魯棒性。作者還提供了一個單深度相機數據集,可以對基於融合動態場景重建算法進行定量評估。

 

MonoFusion

 

 

MobileFusion

 

 

BundleFusion

 

 

FlowFusion

 

 

OpticalFusion

 

 

Co-Fusion

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章