multi-view stereo文檔

multi view stereo文檔

該文檔總結了使用筆者multi view stereo (MVS)的方法對相機進行rectify, 生成深度圖的過程, 但願能給以後的同窗一些幫助。git

MVS簡介

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 會有如下的步驟編程

  • input images
  • structure from motion(SFM) => camera parameters, sparse point cloud
  • Muti view stereo(MVS) => depth map, dense point cloud
  • Surface reconstruction(SR) => poisson or delauny reconstruction, mesh
  • texture mapping(TM)=> get mesh with texture

sfm的流程能夠用一下這張圖來表示windows

MVS工具鏈

幾種開源工程的總結

如前文所述, MVS pipeline主要有四個步驟, SFM, MVS, SR和TM, 這幾個步驟分別有如下的開源工具能夠參考, 點擊連接能夠直接轉到相應工程中app

  • SFM:iview

    • visual sfm 很是robust的sfm工具, window下能夠直接下載打包好的binary, mac和Linux下若是手動編譯比較複雜(很是不推薦手工編譯, 筆者在這個問題上卡了好幾天, 妥協下用windows也是不錯的選擇)
    • open MVG 筆者沒有跑過這個工程, 效果未知, 能夠以後嘗試
    • colmap 界面簡潔好用, 可是隻能在windows下裝好cuda纔可使用dense reconstruction, 推薦使用
  • MVS函數

    • PMVS-CMVS 經典的MVS工具, 首先用CMVS對input image分類, 而後PMVS重建, 融合, 很是適合大規模的數據
    • colmap 比較方便生成深度圖
    • openMvs 筆者沒有跑過這個工程, 目測不太好跑, 不少人跑的過程當中遇到了問題。
  • 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的使用教程。

installation

colmap建議下載pre built binary, 是十分穩定的, 若是想要用dense reconstruction, 請自行安裝cuda。

mac系統請點擊 macos

windows系統請點擊 windows

點完後直接運行, 安裝完成。

structure from motion

colmap的流程以下圖

第一步是sfm, 須要把全部輸入的圖片放到一個文件夾下, 而後點擊

進行特徵提取和匹配, 提取後的結果能夠在database management中進行可視化。

以後點擊start reconstruction和bundle adjustment進行稀疏重建。

值得一提的是, 在extras->model statistic裏有重投影偏差等評判相機參數好壞的參數, 通常比較好的結果在0.5一下。

export model and rectify

在進行稀疏重建後, 能夠把model導出到txt文件裏。

包括了

  • 相機參數
  • 特徵點
  • 3d點雲信息

能夠經過scripts 裏提供的腳本讀取相應參數。

若是須要進一步rectify, 能夠把參數輸入opencv的stereoRectify()函數, 以後initUndistortRecifyMap(), 最後使用remap() 進行rectify。

dense reconstruction and depth map

在下面的界面中按照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教程

PMVS能夠參考這篇博客安裝https://blog.csdn.net/moneyhoney123/article/details/78454837

須要注意的一個坑點是, 若是圖片太少, 會報pmvs2 crash not enough memory須要修改PMVS的配置文件nv.ini, 把minImageNum改成2

相關文章
相關標籤/搜索