sfm三维重建源码_OpenMVG源码阅读小记

1a232e251a0fd143ac1482e3c5aedf12.png
“读一份好源码,就是和许多智慧的人谈话“。
本文记录了笔者学习 openMVG 开源软件的一些初步经验和心得。如果你对计算机视觉和摄影测量有兴趣,需要用到相关技术,这篇文章正好就是你的菜。
全文约4500字,含11副图,阅读时间大约13分钟。
觉得有用可以转发给身边同学、朋友,如有不同意见欢迎在后台留言与我探讨。

整理/撰写: calman

校稿/排版: 迷途兄

测试环境 : Windows 7 64位 + Visual Studio 2015

1 简要介绍

openMVG (open Multiple View Geometry):是一个计算机视觉领域处理多视角立体几何的著名开源库 [1,2],信奉“简单,可维护”,提供了一套强大的接口,每个模块都被测试过,尽力提供一致可靠的体验。软件所针对的基于影像的三维重建任务,在摄影测量、计算机视觉、机器人等领域都有着重要的应用,是近年来热门的无人机、自动驾驶、SLAM等技术的重要组成部分[3,4]。

f14c1066a5b4815d5fca670eaa444f81.png

openMVG能够:

  1. 准确计算多视角立体几何模型;
  2. 提供SfM(Structure from Motion)重建需要的特征提取和匹配方法;
  3. 完整的SfM工具链;

openMVG尽力提供可读性强的代码,方便二次开发,核心库尽可能精简,分成了几个大的模块:

  1. 核心库:各个功能的核心算法实现;
  2. 样例:教你怎么用核心库实现高级算法;
  3. 工具链:也就是连起来用咯(无序影像特征匹配,完整SfM,影像色彩处理);

openMVG由Pierre Moulon 在2010年读博时开始设计,并于2013年在http://github.com网站发布v0.1版本,目前已改进到v1.5版本。GitHub统计数据有60多位contributors,处理252个requests、1184个issues,已成为Structure from Motion、Photogrammetry、3D reconstruction的活跃社区。源码由CMakeList工具组织,支持Windows和Linux系统,主要分为5个部分:

  1. /src/openMVG 是多视图几何(MVG)和SfM的核心库;
  2. /src/openMVG_Samples 展示如何使用核心库实现高级算法,主要涉及相对定向、特征匹配的鲁棒策略等;
  3. /src/software 提供用户使用的软件接口,主要实现了SfM及可视化,视觉里程计(Visual Odometry),地理坐标系转换,UI便于输入控制点数据;
  4. /src/dependencies 依赖库,包括GLFW, OPENEXIF, OSI CLP;
  5. /src/third_party 是底层第三方库,主要有ceres-solver,eigen,fast,stlplus3,jpeg等;

经过简单编译,无论是专业或非专业人员均可利用openMVG重建出一组无序影像的稀疏三维场景或模型。其三维重建的能力已应用于考古软件(Arc-Team [5]),医疗影像服务(Ebrafol [6]),地理信息系统的相关实验室(DHLAB [7])

2 代码分析

核心库的各个模块名称、功能、包含的文件数如下表所示:

1329f32e1d971f3217964315b00b5062.png

2.1 外部第三方库

openMVG不鼓励重复造轮子,部分功能使用了已存在、设计良好的第三方软件库,并附带在openMVG的目录中方便编译和使用。这些库的名称及具体功能如下:

ceres-solver:一个便携式C++库,可用于建模和解决大型复杂的非线性最小二乘问题。 cxsparse
  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值