zoukankan      html  css  js  c++  java
  • 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打开,只是少了图中的网色网格线。

  • 相关阅读:
    [Java]如何把当前时间插入到数据库
    [Java]Get与Post,客户端跳转与服务器端跳转
    [Java]MyBatis框架
    [Java]Java分层概念(转)
    [Java]Spring框架
    [Java]JavaScript在这里学习
    [Java]Servlet&JSP
    [Java]jdbc[转]
    [工具]GitHub上整理的一些工具[转]
    [Java] 集合框架
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/15185955.html
Copyright © 2011-2022 走看看