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

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

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] MVS三维重建概述与OpenMVS开源框架配置

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值