最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程

news/2024/4/18 8:18:36/文章来源:https://blog.csdn.net/weixin_44120025/article/details/129191083

  openmvg是一个轻便的可以逐步运行的SfM开源库,它同时实现了增量式和全局式两种算法。

说明文档地址:https://openmvg.readthedocs.io/en/latest/
github主页地址:https://github.com/openMVG/openMVG
在这里插入图片描述

  

1 编译安装

  openmvg的安装比较简单,首先是安装依赖:

$ sudo apt‐get install libxxf86vm1 libxxf86vm‐dev libpng‐dev libjpeg‐dev libtiff‐dev libxi‐dev libxrandr‐dev graphviz

  然后克隆openmvg源码:

$ git clone ‐‐recursive https://github.com/openMVG/openMVG.git

  最后,使用cmake编译与安装:

$ mkdir openMVG_Build && cd openMVG_Build
$ cmake ‐DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/
$ cmake ‐‐build . ‐‐target install

  

2 运行命令

  openmvg的官方使用说明里有说如何运行SfM,包括使用脚本一行命令运行(只有在图像exif带内参信息的时候才能使用),以及如何分步运行,可以参考这里。但是这里需要说明的是,openmvg的代码后面有修改过,而使用文档却并没有完全更新过来。所以,如果只是按照使用文档来运行,或者是很多别的教程(可能只是直接抄官方文档或者比较老的),很可能会遇到错误(很多示例并不能跑)。在遇到一些不知名的报错以及踩过不少坑之后,我把可以运行出来的命令记录下来。这里,最好只改变输出文件夹的根路径,可以放在任何你想放的路径下,但是一些输出的名字这些,最好不要修改,容易出错。另一个需要注意的问题是,需要明确图像有无exif信息可以读取到相机内参,比如焦距这些,如果没有的话,那么相机内参还需要在第一步的时候就进行输入,下面分别进行介绍。
  

2.1 图像exif带相机内参信息

# 首先给一些路径进行定义,方便下面描述,使用时使用自己的实际目录进行替换即可
# DIR_DATA: 图像数据存放路径
# DIR_OUTPUT: 存放输出结果的路径
# DIR_OM: 存放openmvg源码的路径
1. 初始化图像列表
openMVG_main_SfMInit_ImageListing -d DIR_OM/openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt -i DIR_DATA -o DIR_OUTPUT
2. 计算特征
openMVG_main_ComputeFeatures -i DIR_OUTPUT/sfm_data.json -o DIR_OUTPUT
3. 生成图像对
openMVG_main_PairGenerator -i DIR_OUTPUT/sfm_data.json -o DIR_OUTPUT/imgpairs.bin
4. 图像匹配
openMVG_main_ComputeMatches -i DIR_OUTPUT/sfm_data.json -p DIR_OUTPUT/imgpairs.bin -o DIR_OUTPUT/matches.bin
5. 错误匹配点对滤除
openMVG_main_GeometricFilter -i DIR_OUTPUT/sfm_data.json -m DIR_OUTPUT/matches.bin -g f -o DIR_OUTPUT/matches.f.bin
6.1. 全局式SfM
openMVG_main_SfM -s GLOBAL -i DIR_OUTPUT/sfm_data.json -m DIR_OUTPUT/ -o DIR_OUTPUT/out_Global_Reconstruction
6.2. 增量式SfM
openMVG_main_SfM -s INCREMENTAL -i DIR_OUTPUT/sfm_data.json -m DIR_OUTPUT/ -o DIR_OUTPUT/out_Incremental_Reconstruction
7.1. 生成颜色(全局式)
openMVG_main_ComputeSfM_DataColor -i DIR_OUTPUT/out_Global_Reconstruction/sfm_data.bin -o DIR_OUTPUT/out_Global_Reconstruction/sfm_data_colorized.ply
7.2. 生成颜色(增量式)
openMVG_main_ComputeSfM_DataColor -i DIR_OUTPUT/out_Incremental_Reconstruction/sfm_data.bin -o DIR_OUTPUT/out_Incremental_Reconstruction/sfm_data_colorized.ply

  下面是实验数据与最终生成的结果:
在这里插入图片描述
  
在这里插入图片描述
  
  其中,存放最终输出结果的文件夹out_Global_Reconstruction/out_Incremental_Reconstruction下应该会有如下内容:
在这里插入图片描述
  ply文件是点云数据,可以使用cloudcompare或者meshlab可视化查看和编辑,上面的结果图就是用cloudcompare打开的sfm_data_colorized.ply文件。
  

2.2 参数指定输入内参信息

  要输入内参信息,只需在第一步的时候进行修改即可,其他步骤与2.1一致。手动输入内参k的方式是增加-k参数:

1. 初始化图像列表
openMVG_main_SfMInit_ImageListing -d DIR_OM/openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt -i DIR_DATA -o DIR_OUTPUT -k "6432;0;3000;0;6455;2000;0;0;1"

  其中-k参数是由双引号界定由分号分隔的九个值,也就是内参矩阵K,按行主序排列,依次为:

"fx;0;cx;0;fy;cy;0;0;1"

  下面是实验数据与最终生成的结果:
在这里插入图片描述
  
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Feb 2023)

Windows 11, version 22H2,2023 年 2 月 更新 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 全新推出 Windows 11 全新 Windows 体验&#x…

论坛项目小程序和h5登录

项目中安装uview出现npm安装uview 直接报错:创建一个package.json配置文件在进行安装。cmd到项目。初始化一个package.json文件(vue项目的配置文件) npm init --yes 安装uview项目点击关注进入管页面,需要验证用户是否登录查用户是…

Linux学习(8)Linux文件与目录管理

以下内容转载自鸟哥的Linux私房菜 绝对路径与相对路径 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share…

Java实现在线沟通功能

文章目录1、介绍 和 特点2、整合SpringBoot2.1、导入依赖2.2、websocket 配置类2.3、消息处理类2.4、启动服务2.5、前端代码:张三2.6、前端代码:李四3、效果4、小结1、介绍 和 特点 t-io是基于JVM的网络编程框架,和netty属同类,所…

【LeetCode】剑指 Offer 14- I. 剪绳子 p96 -- Java Version

题目链接:https://leetcode.cn/problems/jian-sheng-zi-lcof/ 1. 题目介绍(14- I. 剪绳子) 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1)&#xff0c…

计算机网络你都懂了吗

文章目录一、计算机网络的定义简单定义通用定义二、计算机网络通信过程三、什么是网络协议(Protocol)四、网络协议组成及功能一、计算机网络的定义 简单定义 计算机网络是一些相互连接的、自治的计算机系统的集合。 通用定义 将处于不同位置并具有独…

MySQL简介、M有SQL的存储引擎、表、字段和数据

Java知识点总结:想看的可以从这里进入 目录2、MySQL特性介绍2.1、MySQL简介2.2、存储引擎2.3、表、字段、数据2、MySQL特性介绍 2.1、MySQL简介 MySQL 是一个关系型数据库管理系统(RDBMS),于2009年被 Oracle 公司收购。它是一种关…

Hive---排序

Hive语法之排序 文章目录Hive语法之排序全局排序(Order By)升序降序按照别名排序多个列排序每个 Reduce 内部排序(Sort By)设置 reduce 个数查看设置 reduce 个数分区排序(Distribute By)设置 reduce 个数簇…

仅花半年时间,他从外包月薪5K到阿里月薪15K,究竟经历了什么?

背景介绍:“渣渣”二本,95年Java程序员**外包类型:**传统外包公司**内容简介:**朋友从一个传统公司是如何修仙到阿里巴巴?分享一些他的真实经历,希望对你有帮助。**学习路线:**基础(…

为什么HR眼中,Python是真正的简历加分项?

教育部在发布的关于《2023届高校毕业生预计1158万 校园招聘月启动》文中明确指出:“2023届高校毕业生预计1158万,同比增加82万人”。除开考研、考公的少数同学,几百万大军拼命往大企业投简历,求职竞争十分激烈。 来源&#xff1a…

优化长尾关键词有什么好处?在线长尾关键词挖掘

​想知道为什么要使用长尾关键词? 好吧,它们可以帮助你轻松找到合适的受众。 ​ 1.获得更高的转化率 长尾关键词对于搜索特定信息更有用。使用长尾关键词时通常会获得更高的转化率,因为内容与受众的需求更相关。 举个例子:你正…

数影周报:动视暴雪疑似数据泄露,数据出境安全评估申报最新进展

本周看点:动视暴雪疑似员工敏感信息及游戏数据泄露;谷歌云计算部门:两名员工合用一个工位;数据出境安全评估申报最新进展;TikTok Shop东南亚商城在泰国和菲律宾公布;智己汽车获九大金融机构50亿元贷款签约.…

Redis:实现全局唯一ID

Redis:实现全局唯一ID一. 概述二. 实现(1)获取初始时间戳(2)生成全局ID三. 测试为什么可以实现全局唯一?其他唯一ID策略补充:countDownLatch一. 概述 全局ID生成器:是一种在【分布式…

RK3568平台开发系列讲解(驱动基础篇)中断子系统框架

🚀返回专栏总目录 文章目录 一、中断硬件的组成二、软件框架三、中断常见概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是指 CPU 正常运行期间,由于内外部事件或程序预先安排的事件,引起的 CPU 暂时停止正在运行的程序, 转而为该内部或外部预先安排的事…

基于Frenet优化轨迹的⾃动驾驶动作规划⽅法

动作规划(Motion Control)在⾃动驾驶汽⻋规划模块的最底层,它负责根据当前配置和⽬标配置⽣成⼀序列的动作,本⽂介绍⼀种基于Frenet坐标系的优化轨迹动作规划⽅法,该⽅法在⾼速情况下的ACC辅助驾驶和⽆⼈驾驶都具有较强…

2023年,尽量还是别裸辞了吧···

你知道什么叫 度日如年 吗?就是在家待业的每一天。你知道什么叫心焦如焚吗?就是投出100份简历却等不来一个回应。 当前就业环境,裁员、失业消息满天飞,好像能有一份工作就不错了,更别说高薪。其实这只是一方面。另一方…

基于BP神经网络的性别识别,BP神经网络详细原理,自编码神经网络代码,神经网络案例之18

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 数据 神经网络参数 基于BP神经网络 性别识别的MATLAB代码 效果图 结果分析 展望 背影 男人体内蛋白质比例大,女生…

网易的“草长莺飞二月天”:增长稳健,加码研发,逐浪AI

2月23日,网易发布了2022年第四季度财报。 这是网易与暴雪分道扬镳后的首份财报,加上近期AIGC热度扩散至游戏、教育等各个领域,网易第四季度业绩及其对于GPT等热门技术的探索受到市场关注。 根据财报,第四季度,网易营…

SAFe(Scaled Agile Framework)学习笔记

1.SAFe 概述 SAFe(Scaled Agile Framework)是一种面向大型企业的敏捷开发框架,旨在协调多个团队和部门的协同工作,以实现高效的软件开发和交付。下面是SAFe框架的简单介绍总结: SAFe框架包括以下四个层次&#xff1a…

【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

一 LVGL简介最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水。LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效…