openMVS详细教程

本文介绍了OpenMVS库,一个多视角立体重建的开源工具,详细步骤包括下载、安装依赖库(如vcpkg和cmake)、运行示例并展示如何使用densifyPointCloud、reconstructMesh、refineMesh和textureMesh进行不同层次的重建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介

OpenMVS(Multi-View Stereo reconstruction library)是一个用于多视角立体重建的开源库,用于从多个图像中创建高质量的三维模型。它可以从图像集合中恢复三维几何和纹理信息,以创建更真实的场景重建。

  • 注意:openMVS库本身是不具备从image标定相机内外参功能的,因此后续使用的时候还要搭配其它pipeline,如openMVG或者其他sfm-pipeline。

2. 安装openMVS

  • 系统环境:windows10,git,vcpkg,cmake(后面三个没有安装的可自行百度,easy)

2.1 下载openMVS项目

openMVS项目链接
在本地随意一个位置输入

git clone https://github.com/cdcseacave/openMVS.git

等待安装即可,失败的大部分情况都是网络问题。

2.2 下载依赖库

依赖库列表
使用vcpkg进行库的下载(vcpkg是c++库管理工具,类似于conda,windows下应该没有比vcpkg更好用的c++库管理工具了吧)
vcpkg项目链接
点击链接,按照readme操作就行。
下载后双击bat文件就安装完成(在cmd中直接输入这个文件也行)
在这里插入图片描述

# 示例--安装boost库
# 建议先用search查看boost库有哪些版本
.\vcpkg search boost
# 选择合适的版本install
.\vcpkg install boost:x64-windows
# 由于网络原因,可能会失败,重新安装即可
建议安装完所有库后执行下面命令:
.\vcpkg integrate install # 这是告诉系统所有编译器你通过vcpkg安装的所有库的位置,之后写c++代码就可以直接include了,不需要
在手动设置库地址

2.3 安装cmake

下载cmake(自行百度安装,很简单)
安装完成后在cmd输入:

# 目前你已进入openMVS目录
mkdir build(随便取一个名字,建议build或者make)
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=你的vcpkg安装路径\scripts\buildsystems\vcpkg.cmake

一般来说,这一步或多或少会遇到错误,我是由于cmake版本过高,CMakeList.txt文件中首行加一句CMAKE_POLICY(SET CMP0146 NEW)就ok了。

2.4 在build目录打开openMVS.sln(visual studio)

打开后界面如下:
在这里插入图片描述
右键ALL_BUILD ,点击生成
在这里插入图片描述
当然,你也可以按照openMVS项目的readme编译链接也行。
openMVS安装编译结束

3. 跑一跑openMVS示例

3.1 下载scene.mvs文件

前面说过,openMVS是不能直接由image重建三维图像的,因为它没有实现标定image的内外参。
openMVS官方示例在此官方示例
用的是Sceaux Castle的image进行重建
在这里插入图片描述
我们的目的是为了测试openMVS是否能用,而不管怎么由images得到mvs文件,所以呢,官方直接替我们生成了openMVS要输入的数据scene.mvs,这个文件是用上面的城堡images进行sfm(用的openMVG库)得到的,文件内容包括相机的内外参、稀疏点云以及对应的images。(后续,如果时间充裕,我会出一个openMVG配合openMVS的使用教程)
下载好scene.mvs文件后,可以用编译好的viewer模块来打开.mvs文件。
把scene.mvs拖到viewer.exe上就能看了(cmd命令行也行: Viewer.exe C:\Users\cv\Downloads\scene.mvs)
在这里插入图片描述
在这里插入图片描述

3.2 密集点云重建–densifypointcloud

scene.mvs里面只包含稀疏的点云,densifypointcloud.exe利用scene.mvs中提供的相机内外参以及稀疏点云进行图像校正,使image pair 的极线平行,这样就能利用平行的极线约束检测到更多特征(立体匹配内容),得到密集视差图计算深度,实现密集点云重建。
使用方法:
在官方示例中下载图片下载
新建一个文件夹(位置任意,命名任意),比如我的叫testdata,在testdata中新建images文件夹,把下载的image放进去,然后把下载的scene.mvs放在testdata中
在这里插入图片描述
命令行进入编译好的目录下(见下图),输入下列命令
在这里插入图片描述
等待完成即可(大约需要30分钟),完成后会testdata目录下生成一个scene_dense.mvs文件,可以使用viewer.exe查看效果。
可以看到,MVS生成的密集点云重建效果比sfm好很多
在这里插入图片描述
在这里插入图片描述

3.3 生成网格模型–reconstructmesh.exe

理论上,MVS的工作已经完成,但是openMVS不止实现密集点云重建,还实现了网格重建以及纹理映射,所以接下来一个一个实验效果。

ReconstructMesh.exe secene_dense.mvs -w E:\3Dreconstruction\openMVS\testdata

生成scene_dense_mesh.mvs 文件(这个过程很快)

在这里插入图片描述

3.4 网格细化–refinemesh

RefineMesh.exe secene_dense_mesh.mvs -w E:\3Dreconstruction\openMVS\testdata

生成secene_dense_mesh_refine.mvs(这个过程需要很长时间,可以查看命令行参数,修改默认meshrefine参数)
在这里插入图片描述

3.5 纹理映射–texturemesh

TextureMesh.exe secene_dense_mesh.mvs -w E:\3Dreconstruction\openMVS\testdata

生成secene_dense_mesh_texture.mvs,这个过程大约30分钟
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值