当前位置: 首页 > news >正文

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

  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.lryc.cn/news/19108.html

相关文章:

  • 数据结构与算法系列之插入排序
  • Text to image论文精读ALR-GAN:文本到图像合成的自适应布局优化
  • windows版 redis在同一局域网下互联
  • Near-Optimal Bayesian Online Assortment of Reusable Resources
  • 数据库复习2
  • 公众号运营之竞品分析,教你拆解公众号
  • python常见问题详解
  • MyBatis-常用SQL操作
  • DSPE-PEG-TCO;磷脂-聚乙二醇-反式环辛烯科研用化学试剂简介
  • 华为OD机试真题Java实现【最小施肥机能效】真题+解题思路+代码(20222023)
  • 【问题记录】【排查问题的方法总结】vue3中数据失去响应式?为什么数据变了,视图只更新了一次就不再更新了?
  • 基于遗传算法的柔性生产调度研究(Matlab代码实现)
  • Heroku的12条准则
  • Qt图片定时滚动
  • 深度学习引言
  • ESP32 WIFI使用介绍
  • JavaEE简单实例——MyBatis的一对一映射的嵌套查询的简单介绍和基础配置
  • 详解指针(进阶版)(1)
  • 【OJ】盐荒子孙
  • Java数据结构 —— 手写线性结构(稀疏数组、栈、队列、链表)
  • docker部署gitlab过程中遇到的一些问题记录
  • 数组的定义与使用
  • SAP ABAP用程序删除开发KEY
  • 安卓设备TF卡概率性无法识别问题
  • linux安装nodejs和微信小程序自动化部署操作
  • JavaScript高级 Proxy Reflect
  • Eth-trunk :LACP模式链路聚合实战
  • 【第二章 - 线性表之顺序表】- 数据结构(八千字详解)
  • 【史上最全面esp32教程】RGB彩灯篇
  • 大规模 IoT 边缘容器集群管理的几种架构-5-总结