COLMAP生成MVSNet数据集

news2024/11/29 2:28: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 COLMAP/dense

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java内存区域

目录复制 Java内存区域区域划分内存溢出异常区域划分 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规格》的规定,Java虚拟机所管理的内存包括以下几个运行时数据区域。 线程独占的有:程序计数器…

《web课程设计》 基于HTML+CSS+JavaScript实现中国水墨风的小学学校网站模板(6个网页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

[附源码]SSM计算机毕业设计网上零食商城JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Spring | 一文带你掌握IOC技术

👑 博主简介:    🥇 Java领域新星创作者    🥇 阿里云开发者社区专家博主、星级博主、技术博主 🤝 交流社区:BoBooY(优质编程学习笔记社区) 文章目录IOC 控制反转1、概念2、分析…

无线传感器网络:传输层

文章目录Challenges for Transport LayerEnd-to-End MeasuresApplication-Dependent OperationEnergy ConsumptionConstrained Routing/AddressingBiased ImplementationReliable Multi-Segment Transport (RMST) ProtocolPump Slowly, Fetch Quickly (PSFQ) ProtocolPump Oper…

超详细的PHP入门知识点讲解

目录 一、简介 二、php基本语法 二、变量和作用域 三、常量 四、数据类型 五、运算符 六、流程控制 七、超全局变量 一、简介 基础知识: 需要一定的html和css的语法知识 基本概念: PHP(超文本预处理器)是一种通用开源脚本…

汽车销量数据库(分车型、分品牌月度销量数据 2005-2021)

1、数据来源:汽车工业协会 2、时间跨度:2005年1月-2021年5月 3、区域范围:全国 4、指标说明: 该份数据包含全国各种汽车销量数十个相关指标! 该份数据包含如下指标: 轿车:一汽大众、上海大…

TMS Sphinx Alexandria Full Source

TMS Sphinx Alexandria Full Source 用于身份访问管理的TMS Sphinx Delphi框架,包括授权和身份验证。 TMS Sphinx允许您为多个应用程序实现单点登录(SSO):web、本机、移动或机器到机器API通信。它可用于通过登录表单、类似的用户界面和基于服务的身份验证…

「低代码」跑通现代BI“最后一公里”的背后

文|智能相对论 作者|沈浪 “未来不懂低代码就和二十年前不会用word一样。未来80%的应用会由业务人员通过低代码开发。”在2022云栖大会上,阿里云智能总裁张建锋对低代码的发展前景依旧保持着非常积极的态度。 无独有偶,微软中国CTO韦青在他的专栏《万…

100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)

文章目录每篇前言一、透视表基础参数说明实战案例0. 导入Excel数据1. data2. index3. values4. columns5. aggfunc6. fill_value7. dropna8. margins9. margins_name10. observed11. sort每篇前言 🏆🏆作者介绍:Python领域优质创作者、华为云…

linux dolphin为tags协议服务的进程意外退出,kioslave5已经意外关闭

刚开始用archlinux的使用的是dolphin感觉还是挺好用的。不过最近不知道为什么dolphin每次打开都会弹出个错误,很影响效率和心情。我简单的搜索报错代码,也没有成功解决报错。于是打算重新安装一个文件管理器做替换。 现象 运行dolphin或者运行浏览器中…

在PyCharm快速加载第三方模块的设置方法

在《小白学Python》慕课中说明了多种加载第三方模块的方法,这里补充一个在PyCharm中更为方便设置国内镜像源加载的方法。 因为默认情况下,PyCharm是加载国外网站的模块资源,因此常常会因为网络不稳定导致加载失败。因此,可以设置…

基于JAVA的学校图书管理系统(Swing+GUI)

目 录 第1章 绪论 1 1.1系统开发背景和意义 1 1.2系统可行性研究 1 1.3系统开发目标 2 1.4开发平台、运行环境 2 第2章 相关技术概述 3 2.1Java语言简介 3 2.2 Sqllite技术简介 4 2.3 Swing技术简介 5 第3章 需求分析 6 3.1 设计目标 6 3.2 功能分析 6 3.2.1 用户管理 6 3.2.2 …

深度学习day01

Marchine leariing 机器学习就是自动找函式 告诉机器要找的函式用 Supervised Learning 函式的Loss ——评价函式的好坏 Reinforcement就是让机器自己下象棋,输赢自己尝试,没像监督学习那样有人为规定 给函式寻找范围: 函式寻找方法——…

基于STM32实现USB组合设备CDC+MSC正确打开方式

摘要: 前一段时间对无刷电机的驱动有了兴趣,移植了odrive和simpleFOC代码,里面有关于stm32实现USB复合的实例,最近也有打算在electronbot里实现U盘通讯来实现bootloader和语音文件的拷贝和管理。看了网上也有相关实现文章&#x…

【mysql是怎样运行的】-客户端与服务器连接

文章目录1. 几种连接方式1.1 TCP/IP1.2 命名管道和共享内存1.3 UNIX 域套接字2. 服务器处理客户端请求2.1 连接管理2.2 解析与优化2.3 存储引擎1. 几种连接方式 1.1 TCP/IP 数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络进行通信。My…

韩国研究人员开发交通信号控制新算法

由Keemin Sohn教授领导的韩国中央大学的研究小组提出了一种用于交通信号控制的元RL模型。具体来说,该团队开发了一个扩展的深度Q网络(EDQN)结合的基于上下文的元RL模型,用于交通信号控制。传统的交通信号控制器通常无法处理交通拥…

Echarts画散点图

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Echarts画散点图前言一、散点图悬浮框鼠标移入可滚动操作二、散点图偏下方的点悬浮数据显示不全三、数据量大、数据类别多、数据重复点多造成散点图散点展示不全或展示散点出…

操作系统基础教程——第六章课后答案

1.思考题 (6)什么是临界区?什么是临界资源?什么是竞争条件? 临界区:访问临界资源的程序段(代码)。 临界资源:并发进程中共享变量所代表的资源;一次只能供一个进程使用的资源。 …

【机器学习知识点】【1】二维与三维空间梯度下降微分求解及可视化展示

【机器学习知识点】系列文章主要介绍机器学习的相关技巧及知识点,欢迎点赞,关注共同学习交流。 本文主要介绍了机器学习中梯度下降的数学微分求解方法及其可视化。 目录1. 二维空间的梯度下降求解及可视化1.1 二维空间梯度求解1.2二维空间梯度可视化2. 三…