計算機視覺方向簡介 | 深度相機室內實時稠密三維重建
來自專欄計算機視覺life
有什麼用?
室內場景的稠密三維重建目前是一個非常熱的研究領域,其目的是使用消費級相機(本文特指深度相機)對室內場景進行掃描,自動生成一個精確完整的三維模型,這裡所說的室內可以是一個區域,一個房間,甚至是一整棟房屋。此外,該領域注重(一般是GPU上)實時重建,也就是一邊掃描就可以一邊查看當前重建的結果。如下所示。
主要的應用包括室內的增強現實遊戲、機器人室內導航、AR傢具展示等。
什麼原理?
在介紹原理前,先簡單了解一下歷史發展。
1、發展歷史
在消費級深度相機出現之前,想要採用普通相機實現實時稠密三維重建比較困難。微軟2010年發布了Kinect之後,基於深度相機的稠密三維重建掀起了研究熱潮。早期比較有代表性的工作是2011年微軟的Newcombe(單目稠密重建演算法DTAM 的作者)、Davison等大牛發表在SIGGRAPH上的KinectFusion演算法,算是該領域的開山之作。KinectFusion演算法首次實現了基於廉價消費類相機的實時剛體重建,在當時是非常有影響力的工作,它極大的推動了實時稠密三維重建的商業化進程。下圖所示是幾款消費級深度相機。
KinectFusion之後,陸續出現了Kintinuous,ElasticFusion,InfiniTAM,BundleFusion等非常優秀的工作。其中2017年斯坦福大學提出的BundleFusion演算法,可以說是目前基於RGB-D相機進行稠密三維重建效果最好的方法了。本文主要以該演算法為基礎進行介紹。值得一提的是,目前室內三維重建和語意理解結合的研究越來越多,這方面暫不做介紹。2、基本原理
BundleFusion是目前效果最好的開源演算法框架,其概覽圖如下所示。
我們先來看一下輸入輸出是什麼。
- 輸入:RGB-D相機採集的對齊好的color+depth的數據流,這裡使用的是structure sensor+iPad輸出的30Hz,解析度為640x480的序列圖像。
- 輸出:重建好的三維場景。
輸入的color+depth的數據流首先需要做幀與幀之間的對應關係匹配,然後做全局位姿優化,將整體的漂移校正過來(上圖下方所示),整個重建過程中模型是在不斷動態更新的。
上面只是一個概括的介紹,我們深入看一下。演算法具體流程圖如下:
雖然看起來很複雜,其實思想還是非常直觀的。下面分別介紹一下。
在匹配方面,這裡使用的是一種sparse-then-dense的並行全局優化方法。也就是說,先使用稀疏的SIFT特徵點來進行比較粗糙的配准,因為稀疏特徵點本身就可以用來做loop closure檢測和relocalization。然後使用稠密的幾何和光度連續性進行更加細緻的配准。下圖展示了sparse+dense這種方式和單純sparse的對比結果。
在位姿優化方面。這裡使用了一種分層的 local-to-global 的優化方法,如下圖所示。總共分為兩層,在最低的第一層,每連續10幀組成一個chunk,第一幀作為關鍵幀,然後對這個chunk內所有幀做一個局部位姿優化。在第二層,只使用所有的chunk的關鍵幀進行互相關聯然後進行全局優化。為什麼要分層這麼麻煩呢?或者說這樣分層有什麼好處呢?因為可以剝離出關鍵幀,減少存儲和待處理的數據。並且這種分層優化方法減少了每次優化時的未知量,保證該方法可擴展到大場景而漂移很小。
在稠密場景重建方面。一個關鍵的點在於模型的對稱型更新:若要增加更新的一幀估計,需先去掉舊的一幀,然後在新的位姿處重新整合。這樣理論上來說,隨著幀越來越多,模型會越來越精確。
作為純視覺的演算法,其魯棒性非常重要,因此該演算法在特徵匹配對篩選方面還是做了不少工作。特徵點對需要經歷如下三種考驗才能通關:
第一種是直接對關鍵點本身分布的一致性和穩定性進行考驗。如下圖所示,綠色部分才是符合一致性的對應關係。
第二道關卡是對特徵匹配對跨越的表面面積進行考驗,去掉特別小的,因為跨越面積較小的的話很容易產生歧義。第三道關卡是進行稠密的雙邊幾何和光度驗證,去掉重投影誤差較大的匹配對。如下圖所示兩個同樣的顯示屏導致了左右的錯誤匹配,是通不過這道關卡的。
此外在chunk內外如何進行局部和全局的處理,以及具體的位姿優化能量函數方面的細節就不介紹了,可以參考文末給出的論文和代碼。
效果怎麼樣?
1、演算法優點
先來總結下演算法的優點:
- 使用持續的local to global分層優化,去除了時域跟蹤的依賴。
- 不需要任何顯示的loop closure檢測。因為每一幀都和歷史幀相關,所以其實包含了持續的隱式的loop closure。
- 支持在GPU上實時魯棒跟蹤,可以在跟蹤失敗時移動到重建成功的地方進行relocalization,匹配上後繼續跟蹤。
2、重建效果
實驗表明該方法確實是目前該領域效果最好的方法,口說無憑,看圖說話。下圖是和其他方法的對比,方框內是細節的對比,重建優勢還是很明顯的。
具體看一下重建細節如下圖所示,還是挺精細的。
另外在loop closure方面該演算法做的也不錯,在紋理比較豐富的情況下誤差基本都能校正回來。如下圖所示。
3、運行速度
關於運行速度,目前可以做到在兩塊GPU上實時。在演示視頻中,structure sensor是卡在iPad上,將採集到的數據通過無線網路傳給台式機(帶GPU),匹配、優化和重建工作都是在台式機上運行,重建的結果再通過無線網路傳到iPad上顯示。下圖是使用兩塊GPU(GTX Titan X + GTX Titan Black)的運行時間分配。
下圖是使用一塊GPU的運行時間分配。
4、問題及改進方向
- 由於成像感測器存在噪音,稀疏關鍵點匹配可能產生小的局部誤匹配。這些誤匹配可能會在全局優化中傳播,導致誤差累積。
- 上述效果圖片都是在作者提供的公開數據集上的效果,該數據集採集的場景紋理比較豐富,光照也比較適中。而實際重建時效果和所使用深度相機的性能、待重建場景的紋理豐富程度關係很大。對於辦公室這種簡潔風格的場景效果會下降很多,還有很多可改進的地方。
- 目前演算法需要兩塊GPU才能實時運行,演算法的優化和加速非常有意義。
有什麼參考資料?
項目網址:
http://graphics.stanford.edu/projects/bundlefusion/
code:
https://github.com/niessner/BundleFusion
放一個彩蛋。最近在中國科技大學舉辦的GAMES(計算機圖形學與混合現實研討會)2018大會上,MSRA的童欣研究員系統梳理了室內三維重建和理解方面的研究現狀,感興趣的可以點擊下面視頻學習。
2.童欣 室內三維場景的理解與建模_騰訊視頻彩蛋2:溫馨提示:本文中提到的論文我都給你準備好了,在下面公眾號菜單欄回復「室內重建」即可獲取。
彩蛋3:另外,計算機視覺life公眾號關聯的知識星球上線了,完全免費,微信一鍵登錄!星球內所有成員都可以發布問題、解答問題,支持上傳文件、點贊、留言、讚賞、收藏、匿名等功能,互動交流更方便!所有內容都可以沉澱,能分類可檢索,詳情見《歡迎加入我的免費知識星球!》,長按下圖識別二維碼加入吧!
https://t.zsxq.com/FQz3rvn (二維碼自動識別)
推薦閱讀:
※白雪鵬的哈雷摩托車創作分享終於出了
※Smart3D系列教程(3)---小物件的三維重建
※告訴你SOLIDWORKS MBD如何在獨立許可證環境中運行
※雨後辦公樓,表現詳解,各種3Dmax小技巧讓你快人一步
TAG:計算機視覺 | 三維建模 | 同時定位和地圖構建SLAM |