前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战 | 手把手教你跑三维重建代码!

实战 | 手把手教你跑三维重建代码!

作者头像
AI算法与图像处理
发布2021-04-21 14:48:19
2.4K0
发布2021-04-21 14:48:19
举报
文章被收录于专栏:AI算法与图像处理
代码语言:javascript
复制

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

代码语言:javascript
复制
#准备一个空闲的机器安装:
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中部分函数未定义

先卸载:

代码语言:javascript
复制
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重建过程,未给位姿这个配置介绍(后面如果大家需求可以补充)。大家先根据提供的数据测试。

稠密重建

代码语言:javascript
复制
 ./bin/DensifyPointCloud -w /home/**/data/openMVS_sample -i scene.mvs -o test_dense.mvs

输出log:

得到的稠密点云test_dense.ply:

曲面重建

代码语言:javascript
复制
./bin/ReconstructMesh -w /home/data -i test_dense.mvs -o test_mesh.mvs

输出的log :

生成的网格模型test_mesh.ply:

网格优化

代码语言:javascript
复制
./bin/RefineMesh -w /home/data -i test_mesh.mvs -o test_refinemesh.mvs

输出的log :

优化的模型test_refinemesh.ply:

纹理贴图

代码语言:javascript
复制
./bin/TextureMesh -w /home/data -i test_refinemesh.mvs -o test_texture.mvs

输出的log:

输出的结果 test_texture.ply test_texture.png:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 依赖项
  • 安装说明
  • Linux 编译
  • 可能存在的编译问题
  • 使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档