实战 | 手把手教你跑三维重建代码!
点击上方“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:
至此,恭喜你,大功告成!