ORB-SLAM2应用练习:三维重建系统搭建 (1)

本文介绍了使用ORB-SLAM2进行三维重建系统搭建的过程,包括ORB-SLAM2的封装、相机抽象、立体匹配算法封装和系统搭建。通过将ORB-SLAM2导出为DLL,简化接口,实现单例模式,为后续三维重构提供轨迹。测试表明,ORB-SLAM2的封装成功,为后续工作奠定了基础。
摘要由CSDN通过智能技术生成

概述


本博客记录我使用ORB-SLAM2+立体匹配的算法实现一个简单的三维重构系统的过程。

我的思路是这样:从一组双目序列中,得到一条轨迹,在轨迹上对一帧中的两张图作三维重构,并画在帧所在的坐标上,这样就能得到一组数据三维重构的结果。因此,可以用ORB-SLAM2来得到这条轨迹;三维重构需要用到立体匹配的算法,我打算采用opencv封装好的SGBM,但不失扩展性我会采取一些方法保证算法可以随时变更。由于系统在以后有可能变成实时的,因此图像序列来源可以来自真实相机,因此我打算对相机也做一层抽象。最终呈现的效果将会是一幅点图,我打算采用pangolin进行绘图。

综上,我的配置过程和本文章的组织顺序是:

  • ORB-SLAM2的封装
  • 相机类的抽象
  • 立体匹配算法的封装
  • 三维重构系统的搭建

开始阐述我的过程之前,首先明确我们的平台和软件工具是:

  • window 10
  • 64位程序
  • vs 2017
  • C++

ORB-SLAM2的封装


我们首先来封装ORB-SLAM2。在这里,我得假设诸位已经成功在目标平台上,成功运行了ORB-SLAM2原始版本的程序。事实上,这篇博客是从[我的上一个系列博客]继承来的,因此我现在的状态是,已经为ORB-SLAM2配置好了各个依赖库,以及以ORB-SLAM2为启动项目,在vs下成功运行了。现在我要做的事情是,将ORB-SLAM2导出为dll,供后面三维重构系统使用。

在vs下配置过导出库的同学都知道,我们需要为被调用到的类加上API宣言,但ORB-SLAM2并不是一个库,它有很多烦人的头文件我们也不会用到,因此我更倾向于将它视为一种服务,我不会在ORB-SLAM2的源码上做修改,而是在ORB-SLAM2的vs工程添加以下两个文件装门用于封装导出:

// SLAM.h
#pragma once
#ifdef SLAM_EXPORTS
#define SLAM_API __declspec(dllexport)
#else
#define SLAM_API __declspec(dllimport)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值