本文簡要介紹三維重建的基本流程,列舉若幹常見系統,給出項目和文檔地址,比較它們的工作管線,為深入鑽研系統結構作為鋪墊。
三維重建概述
我們知道,照相機/攝像機的原理是将一個三維場景或物體投影到二維平面上,過去是膠片,現在是經過感光元件再記錄到存儲器。降維的過程通常不可避免地會存在信息的損失,而所謂的重建(Reconstruction),顧名思義就是要從獲取到的二維圖像中複原原始三維場景或物體。
相對照相機的誕生,三維重建的概念本身說年輕也算年輕;但相比從2012年開始比較火的深度學習、神經網絡等概念,三維重建也算是古老的研究領域了,因為第一個基于圖像的三維重建系統誕生于1992年(CMU的Tomasi等人的工作)。
三維重建的流程大緻如下:首先,通過多角度拍攝或者從視頻中提取得到一組圖像序列,将這些圖像序列作為整個系統的輸入;随後,在多視角的圖像中,根據紋理特征提取出稀疏特征點(稱為點雲),通過這些特征點估計相機位置和參數;在得到相機參數并完成特征點匹配後,我們就可以獲得更稠密的點雲(這些點可以附帶顔色,從遠處看就像還原了物體本身一樣,但從近處能明顯看出它們隻是一些點);最後根據這些點重建物體表面,并進行紋理映射,就還原出三維場景和物體了。
圖中從左至右的過程依次是從原始圖像到稀疏點雲、重建稠密點雲、重建表面和紋理映射。對應列的綠色代表該系統具備此功能,紅色反之。
VisualSFM: A Visual Structure from Motion System
是否開源:否
文檔:小規模 (5k詞左右)
兼容性:兼容OS X/Windows/Linux
主要特性:完成從圖像到稠密點雲的重建過程,值得注意的是,VSFM系統的輸出可以放入CMP-MVS(Multi-View Reconstruction Preserving Weakly-Supported Surfaces, CVPR 2011),MVE(by Michael Goesele’s research group),SURE(by Mathias Rothermel and Konrad Wenzel), MeshRecon(by Zhuoliang Kang)等系統中進行後處理。
視頻中展示的稠密點雲精度比較高,但構建速度較慢(講解者在重構一個人形塑像時用了1小時40分鐘)。
Meshlab: the open source system for processing and editing 3D triangular meshes.
是否開源:是
文檔:無詳細文檔,但有視頻教程
兼容性:兼容OS X/Windows/Linux
主要特性:從稠密點雲進行表面重建,并完成紋理映射。
附加:可選取感興趣的區域(Region of Interest, ROI)進行編輯,比如降低面片數量、删除區域外的稀疏點等。
此外,諸多其他系統的點雲結果可在本系統内查看。(下圖紅色區域為用戶選擇的非感興趣區域,可進行删除)
Colmap: a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface.
是否開源:是
文檔:有詳細說明,共13章節
兼容性:兼容OS X/Windows/Linux
主要特性:輸入多視角圖像,輸出稀疏點雲并估計相機參數,後續步驟需基于CUDA實現。
實際體驗效果:
可見重建精度還是不錯的,并且整體操作上比較快。
Bundler: Structure from Motion (SfM) for Unordered Image Collections
是否開源:是
文檔:小規模(5k詞左右),無詳細接口說明
兼容性:雖然已發布windows版本,但開發和測試主要集中在Linux平台
主要特性:輸入多視角圖像,輸出稀疏點雲并估計相機參數,與Colmap類似,視頻顯示在實際處理中Bundler速度更快(30-40min)。雖然精度和點雲密度不如colmap和visualSFM高,但本系統可以計算相機參數,因此可放入下面的CMVS系統中進行後處理。
下圖為bundler處理後的結果(在meshlab中查看),能夠明顯看到點雲密度不高。
CMVS: Clustering Views for Multi-view Stereo
是否開源:是
文檔:小規模,無接口說明
兼容性:有windows版本,linux為命令行版本
主要特性:将SfM系統的輸出(稀疏點雲)作為本系統的輸入,本系統可将輸入圖像分解成一組可管理大小的圖像集群。之後可以使用MVS軟件獨立并且并行地處理每個集群。本系統應該與SfM軟件(例如Bundler)和MVS軟件(例如PMVS2)結合使用。
不過視頻作者的例子中,bundler的輸出放在本系統中作為輸入可能會存在問題,使用時還需注意。(下圖為meshlab中查看的處理結果,細節丢失較嚴重)
MVE: a complete end-to-end pipeline for image-based geometry reconstruction.
是否開源:是
文檔:中等規模,有示例,有管線說明。
兼容性:windows/OS X均可運行,文檔說更推薦用OS X系統。
主要特性:包含了SfM, 點雲重建,表面重建。基本上能夠完成三維重建的整個流程。
實際體驗:已編譯運行,未進行完整操作流程。下圖為MVE的用戶界面
MVS-Texturing: 3D Reconstruction Texturing
是否開源:是
文檔:小規模,有用法說明。
兼容性:命令行程序
主要特性:能夠完成大規模圖像輸入的紋理映射。特别是能夠在縮放、模糊、遮擋物、曝光變化的情況下完成高質量的紋理映射。最後的效果比較幹淨。
OpenMVG: open Multiple View Geometry
是否開源:是
文檔:大規模,分8個章節。
兼容性:三大平台
主要功能:精确解決多視圖幾何中的常見問題;保證代碼可讀性和易用性。
OpenMVS: open Multi-View Stereo reconstruction library
是否開源:是
文檔:中等規模,分5節,邏輯比較順暢。
兼容性:三大平台均可編譯
主要功能:稠密點雲重建、表面重建、表面細化、紋理映射。
值得注意的是表面細化(mesh refinement)這一步,是其他系統中比較少見的,效果如下:
雖然OpenMVS和上面的OpenMVG并不是同一個團隊所作,但這兩個系統恰好一起完成了三維重建的整個流程,可以協同使用。
小結:對比現有若幹系統後,我決定從文檔較規範的系統入手,仔細挖掘其中的關鍵函數和對應的作用,試着逐漸理解。比如可視化程度比較好的meshlab,更适合OS X平台的MVE,以及能夠配套使用的完整庫OpenMVG和OpenMVS。順便挖一些有價值的論文一起啃。未來幾個月的任務仍然艱巨,不可懈怠。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!