COLMAP生成MVSNet数据集

2023-11-03

一. colmap2mvsnet.py

COLMAP可以给图像数据集标定一套相机外参及视图选择。如果想用COLMAP导出的结果输入MVSNet测试,需要把数据集(图片、相机参数等)转化为MVSNet的输入格式。MVSNet的作者yaoyao在Github上提供了colmap2mvsnet.py代码,可以实现以上格式转化的需求,原README如下:

MVSNet input from SfM output
We provide a script to convert COLMAP SfM result to R/MVSNet input. After recovering SfM result and undistorting all images, COLMAP should generate a dense folder COLMAP/dense/ containing an undistorted image folder COLMAP/dense/images/ and an undistorted camera folder COLMAP/dense/sparse/. Then, you can apply the following script to generate the R/MVSNet input:

python colmap2mvsnet.py --dense_folder COLMAP/dense

The depth sample number will be automatically computed using the inverse depth setting. If you want to generate the MVSNet input with a fixed depth sample number (e.g., 256), you could specified the depth number via --max_d 256.

在得到fM结果和未失真的所有图像后,COLMAP会生成一个文件夹COLMAP/dense/,包含未失真的图像文件夹COLMAP/dense/images/和未失真的相机文件夹COLMAP/dense/sparse/。然后,可以用以下脚本生成MVSNet输入:

python colmap2mvnet .py——dense_folder COLMAP/dense

python colmap2mvsnet.py --dense_folder COLMAP/dense

深度样本数将使用逆深度设置自动计算。如果想生成具有固定深度样本数字(例如,256)的输入,可以通过指定深度数字。

——max_d 256

我的具体实现过程如下:

二. 实现流程

1. COLMAP下载

网上有很安装COLMAP教程,我是直接在官网下载的window版本,链接如下:

COLMAP - Structure-From-Motion and Multi-View Stereo (demuc.de)https://demuc.de/colmap/2. 准备图片集

创建image文件夹,存放自己的图片。

3. COLMAP稀疏重建

创建数据库文件

首先创建一个文件夹,暂且叫colmap2mvsnet ,里面放刚创建的image文件夹。接着,打开COLMAP文件夹双击colmap.bat运行gui界面,点击new project创建新的工程。

  • 在colmap2mvsnet目录下新建一个数据库文件colmap2mvsnet.db
  • 指定图像文件夹为image

特征提取

点击Feature extraction ,设置相机模型跟参数。有给定参数就设置,没有就默认。

特征匹配

点击Feature matching,设置相匹配方式和参数。有给定参数就设置,没有就默认。

稀疏重建

同上,有给定参数就设置,没有就默认。

图像去畸变

在colmap2mvsnet目录下新建一个文件夹 dense 存放去畸变的图片文件夹、相机参数等。

  • 点击Dense reconstruction
  • select刚刚创建的dense文件夹
  • 点击左上角undistortion 
  • 运行结束后直接关闭

导出模型txt文件

点击Export model as text,保存路径为colmap2mvsnet/dense/sparse/文件夹。

4. colmap2mvsnet

把colmap2mvsnet.py文件复制到colmap2mvsnet文件夹中,并在终端下运行以下命令:

(我是在服务器上运行的)

python colmap2mvsnet.py --dense_folder colmap2mvsnet/dense --max_d 192  --interval_scale 1.06

--max_d:最大估计的离散深度采样区间数,因为MVSNet是按照平面扫描原理进行深度估计的,所以深度是离散采样的,一般我们设定为192个深度采样区间。
--interval_scale:每个深度区间的大小,默认为1.06(mm)。

注:我们需要估计自采数据的深度范围,已保证在深度采样区间内,能对目标场景进行有效的深度估计,举个例子,如果自采数据的深度范围为450mm – 800mm,那么我们用于深度估计的区间范围应该是350mm。此时如果我们设定的深度区间为0 – 350mm,那么估计出来的深度图肯定是错误的。所以对于自采数据,大家需要尝试不同的深度区间,以找到合适的取值范围。

输出会保存在dense文件夹中,包括:

  • 去畸变后的图片的images文件夹
  • 相机参数cam文件夹
  • pair.txt

以上文件就是MVSNet需要的文件格式,至此自建数据集用流程结束!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

COLMAP生成MVSNet数据集 的相关文章

随机推荐

  • 【Zabbix实战之运维篇】Zabbix监控平台的邮件报警配置

    Zabbix实战之运维篇 Zabbix监控平台的邮件报警配置 一 检查Zabbix监控平台状态 1 检查Zabbix各组件容器状态 2 检查Zabbix server状态 二 Zabbix的媒介管理配置 1 进入媒介管理界面 2 创建媒介类
  • 解决 元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型 “Object“。 在类型 “Object“ 上找不到具有类型为 “string“ 的参数的索引签名

    问题 元素隐式具有 any 类型 因为类型为 string 的表达式不能用于索引类型 Object 在类型 Object 上找不到具有类型为 string 的参数的索引签名 描述 在写代码的时候 对一个对象做了一个for in循环 然后取到
  • springboot+mysql租房管理平台-计算机毕业设计源码54739

    摘 要 2l世纪 随看全球经济的逢勃发展 众多经济字豕纷纷提出了新的管理理念 信息管理 强调了用信息支持决策 随着社会的发展 人们又提出了一个新的名词 管理信息系统 管理信息系统在强调信息的现代社会中变的越来越普及 它是一个利用计算机软硬件
  • Java软件编程开发:Mybatis和Url路由详细解析

    1 3 Mybatis MyBatis 本是apache的一个开源项目iBatis 2010年这个项目由apache software foundation 迁移到了google code 并且改名为MyBatis MyBatis是一个基于
  • 拉伸无锯齿的SVG图片

    package com moonlight example import com larvalabs svgandroid SVG import android content Context import android graphics
  • 电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒

    不知道什么时候开始 我电脑C盘的系统数据存储文件夹programdata 不知不觉就没了 找不到了 programdata文件夹为存储系统数据文件的 这个文件不见了 而且我打开了显示隐藏文件和文件夹还是没有显示 然后我重启电脑 杀毒软件报i
  • springboot 整合springmvc

    项目结构 引入web启动器 pom xml
  • ora-01536 超出表空间 'xxx' 的空间限额

    解决方案 1 alter user 你的用户名 quota 2g on 你建表的表空间的名字 有限制 2 alter user 你的用户名 quota unlimited on 你建表的表空间的名字 无限制 知识总结 表空间的大小与用户的配
  • 矩阵特征值与行列式、迹的关系

    矩阵特征值与行列式 迹的关系 from http www cnblogs com AndyJee p 3737592 html 矩阵的特征值之积等于矩阵的行列式 矩阵的特征值之和等于矩阵的迹 简单的理解证明如下 1 二次方程的韦达定理 请思
  • Python股票历史数据预处理(二)

    Python股票历史数据预处理 二 从网上下载的股票历史数据往往不能直接使用 需要转换为自己所需要的格式 下面以Python代码编程为工具 将csv文件中存储的股票历史数据提取出来并处理 处理的数据结果为是30天涨跌幅子数据库 下载地址为
  • 网桥、网关、网卡之间的区别

    如果要在全世界范围内把数以百万计的网络都互连起来 并且能够互相通信 那么这样的任务一定非常复杂 将网络互相连接起来要使用一些中间设备 物理层使用的中间设备叫转发器 数据链路层使用的中间设备叫做网桥 网络层使用的中间设备叫做路由器 在网络层以
  • 应用不能远程访问RabbitMQ的5672端口

    目录 1 背景 2 环境 3 步骤 1 添加用户 2 设置权限 3 停止服务 4 修改配置 5 启动rabbitmq的服务 6 应用配置 4 参考文档 1 背景 在使用SpringBoot开发的应用中 使用到RabbitMQ 需要通过567
  • 前端知识整理

    1 闭包 JS 中的闭包是什么 1 什么是闭包 函数和函数内部可以访问的变量组合一起就叫做闭包 闭包
  • 量化商品,计算相似度

    量化商品 计算相似度 如何精准寻找竞品 相似度算法 数据源及具体实现 思考与应用 如何精准寻找竞品 一般情况下 竞品的识别方式 是通过价格 规格 成分 主要宣传点 销量等维度进行判断的 然而这种方式存在一定滞后性 并且过于主观 同时没有监控
  • 关于Java虚拟机运行时数据区域的总结

    Java虚拟机运行时数据区域 程序计数器 Program Counter 程序计数器作为一个概念模型 这个是用来指示下一条需要执行的字节码指令在哪 Java的多线程实际上是通过线程轮转做到的 如果是一个单核的机器 或单cpu 严格意义上在一
  • ubuntu安装多个Cuda、Cuda软链接修改

    每次装环境 都得百度 索性自己写个参考吧 配置深度学习环境三部曲 1 Nvidia驱动安装 推荐高一些的版本 但别最高版本 难度 难搞 2 Cuda CuDNN安装 按需求来 3 Anaconda 本文主要介绍Cuda和CuDNN的安装 会
  • 大数据学习必须掌握的五大核心技术有哪些?

    大数据技术的体系庞大且复杂 基础的技术包含数据的采集 数据预处理 分布式存储 NoSQL数据库 数据仓库 机器学习 并行计算 可视化等各种技术范畴和不同的技术层面 首先给出一个通用化的大数据处理框架 主要分为下面几个方面 数据采集与预处理
  • typora图片上传解决办法(可用)

    作者 杂食老翟 链接 https www zhihu com question 501075370 answer 2683954521 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 Typora是一款非常好
  • 进程间通信——System V IPC 之进程信号量

    51 1 进程信号量 51 1 1 信号量 本质上就是共享资源的数目 用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量 为了便于大量共享资源的操作引入了信号量集 可对所有信号量一次性操作 对信号量集中所有操作可以
  • COLMAP生成MVSNet数据集

    一 colmap2mvsnet py COLMAP可以给图像数据集标定一套相机外参及视图选择 如果想用COLMAP导出的结果输入MVSNet测试 需要把数据集 图片 相机参数等 转化为MVSNet的输入格式 MVSNet的作者yaoyao在