點擊上方“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
可能存在的編譯問題
-
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版本。
-
boost報錯
解決方法:升級boost==1.6.3
使用說明
OpenMVS
可執行文件生成在openMVS/openMVS_build/bin/
裏面,在openMVS_build
文件夾下打開終端,按照順序執行如下命令:(-w 設置的是數據的路徑,-i 是輸入的文件名,-o是輸出的文件名)。
注意:colmap/openmvg計算的位姿可以通過作者提供的InterfaceCOLMAP,InterfaceVisualSFM轉成稠密重建輸入的*.mvs文件。這裏我們主要關注mvs重建過程,未給位姿這個配置介紹(後面如果大家需求可以補充)。大家先根據提供的數據測試。
-
稠密重建
./bin/DensifyPointCloud -w /home/**/data/openMVS_sample -i scene.mvs -o test_dense.mvs
輸出log:
得到的稠密點雲test_dense.ply:
-
曲面重建
./bin/ReconstructMesh -w /home/data -i test_dense.mvs -o test_mesh.mvs
輸出的log :
生成的網格模型test_mesh.ply:
-
網格優化
./bin/RefineMesh -w /home/data -i test_mesh.mvs -o test_refinemesh.mvs
輸出的log :
優化的模型test_refinemesh.ply:
-
紋理貼圖
./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源創計劃”,歡迎正在閱讀的你也加入,一起分享。