該文檔總結了使用筆者multi view stereo (MVS)的方法對相機進行rectify, 生成深度圖的過程, 但願能給以後的同窗一些幫助。git
Multi View Stereo, 是對於多視圖三維重建一系列方法的總稱, 簡而言之, 就是利用多個相機拍攝的多張照片, 來重建出照片中的場景。github
學習multi view stereo的流程有如下一些經典的資源, 能夠點擊下面表格裏的連接進行下載。macos
內容 | 描述 |
---|---|
multiview stereo a tutorial | mutli view stereo的經典教程, 強烈推薦閱讀。 |
pixelwise... MVS | colmap團隊寫的論文 |
structure from motion | 理解structure from motion很是好的材料, 一本書中的一個章節, 專門介紹sfm |
完整的multi view stereo pipeline 會有如下的步驟編程
sfm的流程能夠用一下這張圖來表示windows
如前文所述, MVS pipeline主要有四個步驟, SFM, MVS, SR和TM, 這幾個步驟分別有如下的開源工具能夠參考, 點擊連接能夠直接轉到相應工程中app
SFM:iview
MVS函數
SR && TM工具
Default 通常visual sfm, colmap都自帶了SR, TM的工具, 能夠用默認的工具學習
meshlab 提供了mesh simplify, smooth, SR等mesh相關的功能, 對於triangular mesh有很好的結果。 建議初學者下載meshlab安裝包使用, 若是想deep dive細節, 能夠下載vcglib(mesh lab基於這個lib開發的), 編譯源碼, vcglib用了不少元編程的理念, 仍是很好玩的, 不過流程比較複雜, 慎入。
在這個章節中, 筆者介紹colmap的使用教程。
colmap建議下載pre built binary, 是十分穩定的, 若是想要用dense reconstruction, 請自行安裝cuda。
mac系統請點擊 macos
windows系統請點擊 windows
點完後直接運行, 安裝完成。
colmap的流程以下圖
第一步是sfm, 須要把全部輸入的圖片放到一個文件夾下, 而後點擊
進行特徵提取和匹配, 提取後的結果能夠在database management中進行可視化。
以後點擊start reconstruction和bundle adjustment進行稀疏重建。
值得一提的是, 在extras->model statistic裏有重投影偏差等評判相機參數好壞的參數, 通常比較好的結果在0.5一下。
在進行稀疏重建後, 能夠把model導出到txt文件裏。
包括了
能夠經過scripts 裏提供的腳本讀取相應參數。
若是須要進一步rectify, 能夠把參數輸入opencv的stereoRectify()
函數, 以後initUndistortRecifyMap()
, 最後使用remap()
進行rectify。
在下面的界面中按照undistoriont, stereo, fusion ,poisson的流程進行重建
![image-20200229173820634](/Users/edward/Library/Application Support/typora-user-images/image-20200229173820634.png)
![image-20200229172613454](/Users/edward/Library/Application Support/typora-user-images/image-20200229172613454.png)
dense reconstruction的深度圖由上圖所示, 對於texture不是很豐富的圖片, 建議增長 windows_radius和下降filter_min_ncc來提高深度圖的準確度。
PMVS能夠參考這篇博客安裝https://blog.csdn.net/moneyhoney123/article/details/78454837
須要注意的一個坑點是, 若是圖片太少, 會報pmvs2 crash not enough memory須要修改PMVS的配置文件nv.ini, 把minImageNum改成2