• colmap+openMVS稠密重建


    简要记录一下colmap+openMVS稠密重建相关使用

    openMVS的sample使用

    1. 测试数据集下载
      链接:https://pan.baidu.com/s/13T04aKJ2OB6_RX7IMMGhpg 提取码:oxkp
    2. 运行测试
      将data放在OPENMVS/路径下。
    cd ~/Documents/OPENMVS/openMVS/openMVS_build
    
    # 稠密重建及可视化
    ./bin/DensifyPointCloud -w ../../data/ -i scene.mvs -o test_dense.mvs
    
    # 网格重建及可视化
    ./bin/ReconstructMesh -w /home/juling/Documents/OPENMVS/demo/ -i demo_dense.mvs -o demo_mesh.mvs 
    ./bin/Viewer ../../demo/demo_mesh.mvs
    
    # 网格优化
    ./bin/RefineMesh -w /home/juling/Documents/OPENMVS/demo/ -i demo_mesh.mvs -o demo_refinemesh.mvs
    ./bin/Viewer ../../demo/demo_refinemesh.mvs
    
    # 纹理贴图
    ./bin/TextureMesh -w /home/juling/Documents/OPENMVS/demo/ -i demo_refinemesh.mvs -o demo_texture.mvs
    ./bin/Viewer ../../demo/demo_texture.mvs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    生成的稠密点云结果如下所示:
    稠密点云结果
    纹理贴图结果如下所示:
    在这里插入图片描述

    colmap稀疏重建导出SFM参数

    windows下的稠密重建教程:colmap稠密三维重建

    colmap进行稀疏重建主要有以下几个步骤:

    • 项目文件夹下包括images文件夹、sparse文件夹、dense文件夹
    • 新建项目、db文件、选择images文件夹
    • Feature extraction:其中默认相机模型为SIMPLE_RADIAL,修改成PINHOLE,openMVS只支持PINHOLE模型。
    • Feature matching:默认
    • Start Reconstuction:进行稀疏重建
    • 导出txt文件:File→Export model as txt→选择sparse文件夹,可以看到sparse文件夹下有cameras.txt、images.txt、points3D.txt这三个文件,即为所需的位姿参数。

    稀疏重建结束,可以看到SFM的结果如下:
    在这里插入图片描述

    注:我使用SIMPLE_RADIAL相机模型导出了cameras.txt,在cameras.txt中将所有SIMPLE_RADIAL直接修改为PINHOLE后保存,再使用openMVS重建,得到的效果非常奇怪,最后重新跑了一遍稀疏重建,相机模型选择PINHOLE,得到的重建结果正常。

    openMVS稠密重建

    1. 将colmap位姿转换成openMVS格式
    • 项目目录结构:
      在这里插入图片描述

    • openMVS/openMVS_build/bin,有InterfaceCOLMAP接口。

    • box文件夹下有images和sparse两个文件夹,其中images为图片,sparse下为SFM生成的3个txt文件。

    • cd openMVS/openMVS_build

    • ./bin/InterfaceCOLMAP -i /home/juling/Documents/OPENMVS/box -o box.mvs

    • -i 是包含images和sparse文件夹的目录。

    • -o 是生成.mvs文件保存的路径。-o box.mvs表示在openMVS_build目录下生成box.mvs。

    注:生成.mvs文件的路径貌似不能设置保存到自定义路径,设置保存到自定义路径是可以保存成功的,但在进行稠密点云重建时会出现路径错误,无法读取图片。所以默认设置-o box.mvs在openMVS_build目录下生成box.mvs,然后将这个文件复制到box下使用,就不会出现稠密重建读不到图像的问题。

    1. openMVS稠密重建
    • cd ~/Documents/OPENMVS/openMVS/openMVS_build
    • 稠密重建:./bin/DensifyPointCloud -w ../../box/ -i box.mvs -o box_dense.mvs,会在box目录下生成深度图、box_dense.mvs、box_dense.ply文件。查看稠密重建的结果可用MeshLab打开ply文件,也可使用openMVS提供的Viewer接口查看./bin/Viewer ../../box/box_dense.mvs
    • 曲面重建:./bin/ReconstructMesh -w ../../box/ -i box.mvs -o box_mesh.mvs生成box_mesh.mvs以及box_mesh.ply。

    注:继续进行网格优化时出现报错,发现是相对路径的问题,在运行时-w输入绝对路径即可。

    cd ~/Documents/OPENMVS/openMVS/openMVS_build
    
    # 转换mvs格式
    ./bin/InterfaceCOLMAP -w /home/juling/Documents/OPENMVS/underwater/ -i /home/juling/Documents/OPENMVS/underwater/ -o underwater.mvs
    
    # 稠密建图
    ./bin/DensifyPointCloud -w /home/juling/Documents/OPENMVS/underwater/ -i underwater.mvs -o underwater_dense.mvs
    
    # 网格重建
    ./bin/ReconstructMesh -w /home/juling/Documents/OPENMVS/underwater/ -i underwater_dense.mvs -o underwater_mesh.mvs 
    
    # 网格优化
    ./bin/RefineMesh -w /home/juling/Documents/OPENMVS/underwater/ -i underwater_mesh.mvs -o underwater_refinemesh.mvs
    
    # 纹理贴图
    ./bin/TextureMesh -w /home/juling/Documents/OPENMVS/underwater/ -i underwater_refinemesh.mvs -o underwater_texture.mvs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    稠密重建结果如下:
    在这里插入图片描述

    参考:
    [1] MVS三维重建概述与OpenMVS开源框架配置

  • 相关阅读:
    IM开源项目OpenIM部署文档-从准备工作到nginx配置
    UnrealEngine源码下载
    多个线程启动 ,等待全部执行完毕再搜集数据
    pgsql的窗口函数简述
    第一章 初探Swing
    京东-黑客马拉松大赛复盘
    基于YOLOv8模型的水果目标检测系统(PyTorch+Pyside6+YOLOv8模型)
    qtabwidget 样式表
    FANUC机器人实现本地自动运行的相关配置和参数设置
    工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流
  • 原文地址:https://blog.csdn.net/weixin_41631106/article/details/133318107