ubuntu16.04+openMVG+openMVS实现三维重建

简介

常用三维重建系统总结网址来自:http://leohope.com/解问题/2018/03/06/compare-re3d-system/
如图所示:
三维重建系统.png
openMVG与openMVS的好处是开源、稳定、有官方说明文档,且两者互补,共同构建了一套完整的三维重建系统。

openMVG

编译

Github地址:https://github.com/openMVG/openMVG/blob/master/BUILD.md
注:

  1. 此过程注意相关路径即可,不必在意文档中的make test,编译过程无报错即可。
  2. 编译成功后安装时要加sudo,即sudo make install

openMVS

编译

Github地址:https://github.com/cdcseacave/openMVS/wiki/Building
此处必须安装几个如图所示必要的库,且Eigen的版本一定是3.2的版本。
Screenshot from 2020-04-05 23-02-15.png
注:

  1. 我在编译安装openMVS的时候,即执行make && sudo make install 的时候,出现了cmake版本不匹配的问题,自己的版本是3.5,而要求是3.8,此时,不要卸载自己的版本,再安装一个新版本即可,可参考链接:https://blog.csdn.net/qq_34935373/article/details/90266958

openMVG+openMVS实现三维重建demo

理解:
从简介里那张图可以看出openMVG实现的功能是將二维图像转换为point cloud 和 dense cloud,而openMVS则是將点云重建为surface和textured。
Github:https://github.com/cdcseacave/openMVS/wiki/Usage
Github:https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/

第一步(openMVG):

  1. 找到tutorial_demo.py文件,同级目录下执行 $ python tutorial_demo.py 此处留下我自己的路径方便大家参考/home/x/catkin_ws/src/openMVG/openMVG_Build/software/SfM/tutorial_demo.py
  2. 此时目录下新出现两个文件夹,ImageDataset_SceauxCastle和tutorial_out,前者是由tutorial_demo.py文件运行后下载的此demo所需要的输入图片数据,后者是由openMVG经reconstruction_global和reconstruction_sequential这两种方式产生的输出数据。
  3. 我们以reconstruction_global为例。
    在tutorial_out/reconstruction_global/目录下找到 sfm_data.bin,这就是我们此demo所需要的最重要的一个文件。因为我们即将对它进行一系列的处理并可视化每一步的结果。

注:此时openMVG的任务完成,产生了sfm_data.bin文件。

第二步(openMVS):

  1. 將openMVG产生的sfm_data.bin文件copy到openMVS/build/bin/目录下,此目录下有众多openMVS的可执行文件。
  2. 此目录下终端执行$ openMVG_main_openMVG2openMVS -i sfm_data.bin -o scene.mvs 产生了可可视化的scene.mvs文件,即將openMVG产生的数据转换成了openMVS可操作的数据类型。
  3. 执行$ ./Viewer scene.mvs 稀疏特征点云图
    稀疏点云.png
  4. 执行$ ./DensifyPointCloud sence.mvs 得到如下文件:
    稠密点云文件.png
    执行$ ./Viewer scene_dense.mvs 得到稠密点云图:
    Screenshot from 2020-04-06 00-15-35.png
  5. 同理,建立粗网格:$ ./ReconstructMesh scene_dense.mvs ,产生了scene_dense_mesh.mvs
    可视化粗网格:$ ./Viewer scene_dense_mesh.mvs
  6. 建立精致网格:$ ./RefineMesh scene_mesh.mvs
  7. 建立混合网格: $ ./TextureMesh scene_dense_mesh.mvs
    都可得到对应的.mvs文件,再使用Viewer查看即可。第7步得到的是最终的三维重建图,如下:
    Screenshot from 2020-04-06 00-29-54.png

注:每一步产生的.ply文件,如scene_dense.ply,也可以用Viewer打开,只是少了图中的网色网格线。

posted @ 2021-08-25 17:06  feifanren  阅读(854)  评论(0编辑  收藏  举报