實戰 | 手把手教你跑三維重建代碼!

點擊上方AI算法與圖像處理”,選擇加"星標"或“置頂”

重磅乾貨,第一時間送達

OpenMVS是三維重建的一個成熟開源框架,綜合重建效果和性能,該算法是目前MVS(Multi-View Stereo)相關的所有開源庫中最好的一個。該算法的框架如下所示

用OpenMVS重建的結果如下所示:

計算機視覺life對該代碼進行了詳細註釋(持續更新), 歡迎star,代碼地址:

https://github.com/electech6/openMVS_comments

想要得到上述的重建結果,那麼如何編譯運行OpenMVS源碼呢?下面是詳細教程:

依賴項

OpenMVS 依賴的幾個開源庫,有兩個是可選的可以先不安裝.

  • Eigen version 3.2 (or higher on Windows only)
  • OpenCV version 2.4 or higher
  • Ceres version 1.10 or higher (可選)
  • CGAL version 4.2 or higher
  • Boost version 1.56 or higher
  • VCG
  • GLFW(可選)

安裝說明

工具:

  • CMake
  • git
  • C/C++ compiler like Visual Studio or GCC

Linux 編譯

Ubuntu 16.04

#準備一個空閒的機器安裝:
sudo apt-get update -qq && sudo apt-get install -qq
sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev

#安裝Eigen (必需)
git clone https://gitlab.com/libeigen/eigen.git --branch 3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..

#安裝Boost (必需)
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

#安裝OpenCV (必需)
sudo apt-get -y install libopencv-dev

#安裝CGAL (必需)
sudo apt-get -y install libcgal-dev libcgal-qt5-dev

#安裝VCGLib (必需)
git clone https://github.com/cdcseacave/VCG.git vcglib

#安裝Ceres (可選)
sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver
mkdir ceres_build && cd ceres_build
cmake . ../ceres-solver/ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j2 && sudo make install
cd ..

#安裝GLFW3 (可選)
sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

#安裝OpenMVS
git clone https://github.com/electech6/openMVS_comments.git openMVS
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/path to vcglib/vcglib"

#如果想生成共享庫,可以在cmake加如下命令:
#-DBUILD_SHARED_LIBS=ON

#生成 OpenMVS 庫文件:
sudo make -j2 && sudo make install

可能存在的編譯問題

  1. opencv中部分函數未定義

    先卸載:

    sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4

    再源碼安裝,可以安裝比如4.1.1版本。

  2. boost報錯

    解決方法:升級boost==1.6.3

使用說明

OpenMVS可執行文件生成在openMVS/openMVS_build/bin/裏面,在openMVS_build文件夾下打開終端,按照順序執行如下命令:(-w 設置的是數據的路徑,-i 是輸入的文件名,-o是輸出的文件名)。

注意:colmap/openmvg計算的位姿可以通過作者提供的InterfaceCOLMAP,InterfaceVisualSFM轉成稠密重建輸入的*.mvs文件。這裏我們主要關注mvs重建過程,未給位姿這個配置介紹(後面如果大家需求可以補充)。大家先根據提供的數據測試。

  1. 稠密重建

     ./bin/DensifyPointCloud -w /home/**/data/openMVS_sample -i scene.mvs -o test_dense.mvs

    輸出log:


    得到的稠密點雲test_dense.ply:


  2. 曲面重建

    ./bin/ReconstructMesh -w /home/data -i test_dense.mvs -o test_mesh.mvs

    輸出的log :


    生成的網格模型test_mesh.ply:

  3. 網格優化

    ./bin/RefineMesh -w /home/data -i test_mesh.mvs -o test_refinemesh.mvs

    輸出的log :


    優化的模型test_refinemesh.ply:

  4. 紋理貼圖

    ./bin/TextureMesh -w /home/data -i test_refinemesh.mvs -o test_texture.mvs

    輸出的log:


    輸出的結果 test_texture.ply test_texture.png:

至此,恭喜你,大功告成!


本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章