哪款軟體可以實現基於多張二維圖像的三維重建?

我現在面臨的問題是,想要讓一個東西在電腦里是3D的,現在想採取的方法是對這個物體每隔20度照相,然後利用這些相片在電腦里對其進行3D重建。不知有沒有什麼軟體可以用,收費免費都可以,還有,如果有更好的技術路線,可否賜教?


準確的說是 123D Catch。因為 123D 家族還有其他如 123D Design,123D Make 等不同用處的軟體。

另外可以參考以下兩篇文章,分別使用了 VisualSFM 和 python 來進行三維重建。

打造離線版 123D Catch

使用 Python Photogrammetry Toolbox (PPT) 進行照片3D重建


日常場景,基於多視角Multi-view重建,不使用RGBD方式的話,就選SfM(Structure from Motion)+MVS(Multi View Stereo)+SR(Surface Reconstruction)+TM(Texture Mapping)套路啦,這是傳統基於多視幾何的路子,原理就是利用多張圖像間的特徵點匹配求解相機內外參數和三維空間點的位置,也就是稀疏點雲(一堆點),之後再讓它濃一點,變成連續的,再加點顏色和紋理,data flow大致是:

images——sparse point cloud——dense point cloud——mesh——mesh with texture

SfM MVS SR TM

當然做到dense點雲的話看起來就比較逼真了,想把點連起來變成連續多邊形網格(也就是表面)再加上紋理信息,就是可以各種玩的3D模型了。

商業軟體很多了,上面已經有一些不錯的例子,Pix4Dmapper是一款專門用於無人機航拍圖像重建的產品,效率質量驚人,當然用於地面場景應用也是可以的。如果不怕麻煩的話,這裡主要介紹一些research的例子:

SfM:大家比較熟悉的就是Changchang Wu的 VisualSFM 啦,這是個寫的比較溜的非開源福利,Changchang大神一致不公開源碼,是他一行行累出來的作品,其中的SiftGPU和PBA也是大神的作品。我也算用過一些不同的SfM代碼,各路大神寫的,包括一些大牛組的,講良心VSFM算是我見過魯棒性最好的 之一(嚴謹臉),極少出現數據量太大、數據質量(各種因素blabla)差造成的崩、卡、完、「就是沒結果」之類,雖說已有歲月包漿,但其精度和穩定性值得信賴的。非說槽點的話,也就是圖像匹配和BA的效率不高,各種改進此處略去,如果只是用一下的話還是包您滿意的。還有MVE、 OpenMVG (openMVG/openMVGCOLMAP(COLMAP - Structure-From-Motion and Multi-View Stereo),現在的框架都必須追求全面,所以稍微看下主頁就會發現MVS等功能都是打包的。(bundler還是要說的,但是用起來稍微麻煩,不推薦上手玩)

MVS:PMVS、CMVS,CMPMVS,以及OpenMVS,各種dense層出不窮,本人代碼能力有限,對於這塊還是望而生畏的(順吐一下,還是不要去自己編譯OpenMVS了。。可能新版本已改觀,未求證)。OpenMVS效果還是很贊的,雖說時常出現莫名的罷工,自帶了VSFM和OpenMVG的介面,貼心。

SR和TM:CV,CG,CCTV,好吧,其實OpenMVS都有啦,請自行觀看cdcseacave/openMVS。

另外,想自己翻來覆去把玩結果的話,Meshlab是很好的。

VisualSfM——OpenMVS,是一套比較簡潔的方案,也可以把OpenMVS替換成CMPMVS。另外做重建數據是非常重要的,自己拍的話請盡量量大出奇蹟,多一點視角,保證每次拍照位置的距離合適(基 線),實在懶的話就上視頻了,找個軟體或者自己opencv弄成幀再喂進去(感興趣的話opencv和matlab也可以自己寫重建演算法,有高質量庫和工程,例如普林的SfM相關課程)。一次拍的不好,可以多拍幾次,看下哪裡空洞補哪裡,新數據加進去再跑一次就好(特徵點檢測匹配等中間結果慎刪)。

想更多了解原理,推薦一本經典教材,《計算機視覺中的多視圖幾何》(Multiple View Geometry in Computer Vision),超級經典,反正我是沒好好讀完過。

自己從圖片一步步重建出逼真的model是一件很爽的事情,像創世一般,比如幾天重建個羅馬,幾天重建個世界啥的。。,如果之前沒接觸過一定會被演算法的能力震撼,那麼,歡迎入坑。

如果想用深度相機來做,那就是另一套路子,Kinect和Realsense都有相關的SDK可以用,還有PCL etc.了解粗淺這裡就不說了。


VisualSFM : A Visual Structure from Motion System VisualSFM,有windows安裝版。

http://www.gris.tu-darmstadt.de/projects/mvs-texturing/ MVS-texturing,加上紋理貼圖,更加逼真,需要自己編譯。

附:自己重建的一個石獅子用的是MVS-texturing的pipline。


有些人提到visualSFM,據我的了解,該軟體主要是用來提取圖像特徵點進行匹配,然後確定各個影像之間的相對位置以及姿態。你想要的三維重建,還需在這個基礎上繼續進行密集匹配(Dense Matching),生成密集3D點雲。最後還要基於點雲進行三角網構建和紋理映射。

能夠把以上流程全做完的軟體有Agisoft PhotoScan(一款俄羅斯人開發的軟體),Pix4D,暫時想到這麼多,其它攝影測量方面很多軟體也能做到。

本人專業數字攝影測量,同時學習過很多計算機視覺中三維重建的演算法。因為這兩個專業在這個領域有很多重疊的部分。


武漢大學張祖勛院士的Lensphoto多基線數字近景攝影測量系統。


免費得當然是推薦強大的自動桌子(Autodesk)推出的 123D(http://www.123dapp.com/) 它可以滿足你的需求。


空間首頁

無限3D網站,免費軟體,效果精細,速度快。


推薦一個冷門的 vi3dim,大家可以自己去搜一下。這個軟體神奇的地方在於可以輸入視頻得到三維模型,大家都知道視頻包含的信息遠遠多於單獨拍照片。


smart3d。百度一下你就知道。


R-3D-2

手機拍照-上傳-下載3D模型


補充一個:

如果打算重建後,做成一段類似於視頻動畫的效果展示的話,微軟的photosynth應該是效果最好的。

Photosynth - Capture your world in 3D. 這裡有很多實例,效果都還比較好。此外,在網站上的展示效果頁面按C鍵,可以進入調試模式,查看每張照片所對應的攝像頭的角度。另外,照片和點雲,以及攝像頭信息數據也是可以下載到本地的(但是目前官方沒有開放文件格式和SDK,所以本地無法展示效果),也可以分享/嵌入到自己的網站。

可惜這個已經一年左右沒有更新過了。也沒有發布相應的SDK可以進行二次開發。


visualSFM


你有這個東西的實物的話可以考慮用逆向工程的方法做,具體比較複雜


推薦閱讀:

3d和3維是一回事嗎?

TAG:數學 | MATLAB | 建模 | 三維設計軟體 | 三維 |