ORB-SLAM2算法单目流程

news/2024/9/23 9:27:02/

ORB-SLAM系列算法框架比较复杂,下面来梳理一下单目算法的流程。

一:单目初始化

单目初始化也就是单目的地图初始化。流程如下:

* Step 1:(未创建)得到用于初始化的第一帧,初始化需要两帧

* Step 2:(已创建)如果当前帧特征点数大于100,则得到用于单目初始化的第二帧

* Step 3:在mInitialFrame与mCurrentFrame中找匹配的特征点对

这里单目初始化阶段寻找两帧之间的特征点匹配对时采用“划圆划分方格”的方式进行。

* Step 4:如果初始化的两帧之间的匹配点太少,重新初始化

* Step 5:通过H模型或F模型进行单目初始化,得到两帧间相对运动、初始MapPoints

估计H矩阵和F矩阵是通过从匹配特征点对中随机选择了8对匹配特征点为一组,一共8组。这里采用了多线程计算。计算得分来选择是使用H矩阵还是F矩阵,平面倾向于单应矩阵H,非平面偏向于基础矩阵F。

分解H或F矩阵求解会得到4种R和t的组合,选出最佳组合的方法是:若某一组合使恢复得到的3D点位于相机正前方的数量最多,那么该组合就是最佳组合。

这里得到的两帧间的相对运动t是一个单位向量,并没有确定整个SLAM过程的尺度。

* Step 6:删除那些无法进行三角化的匹配点

* Step 7:将三角化得到的3D点包装成MapPoints

这里的3D点在分解H或F步骤就已经三角化计算出。

二:跟踪线程

ORB-SLAM2中的跟踪分为三种形式,分别是:参考关键帧跟踪、恒速模型跟踪、重定位跟踪、局部地图跟踪。

其中 参考关键帧跟踪、恒速模型跟踪、重定位跟踪叫做第一阶段跟踪(初步的跟踪)。

参考关键帧跟踪

场景:地图刚初始化成功后、恒速模型跟踪失败后。

跟踪方式:通过词袋进行特征匹配,通过最小化重投影误差的方式进行求解位姿。

这里参考关键帧分为两种:在这里是距离当前帧最近的关键帧作为参考关键帧。
另外一种是在跟踪局部地图中:与当前帧共视程度最高的一级共视关键帧。

恒速模型跟踪

场景:地图初始化成功后的正常场景下都是恒速模型跟踪。

跟踪方式:通过参考关键帧更新上一帧位姿(关键帧位姿会更新),根据之前估计的速度得到当前帧初始位姿,用上一帧的地图点进行投影跟踪(化圆),如果匹配点不够,则扩大半径搜索。

这里双目和RGBD相机会生成临时地图点的操作。

重定位跟踪

场景:跟踪失败的情况下。

跟踪方式: 先通过词袋进行快速匹配,在关键帧数据库中寻找相似的候选关键帧,再EPNP算法求解一个相对准确的初始位姿,之后再反复进行投影匹配和BA优化位姿。

局部地图跟踪

局部地图跟踪属于第二阶段跟踪,目的是使跟踪的定位更加准确。

场景:第一阶段跟踪后进行。

跟踪方式:将当前帧的局部关键帧对应的局部地图点投影到该帧中(地图点投影,跟恒速模型跟踪方式一样),得到更多的特征点匹配关系,对第一阶段的位姿再次进行优化。


http://www.ppmy.cn/news/1433157.html

相关文章

SpringBoot+Vue开发记录(三)

说明:本篇文章的主要内容为需求分析。需求分析这一部分很重要,也稍微有点子难搞,所以本篇文章里的有些内容会有失偏颇。 一、准备步骤 我打算做一个刷题项目,但是具体这个项目该怎么做,我是一头雾水。 所以就要先进行…

怎样才能迅速了解一个产品的业务流程?

很多小伙伴经常问我,刚进入一家新的企业,想要快速了解产品的业务流程,不知从何下手。主要是因为,有的企业根本没有文档可看;还有的企业有文档,但是记录的比较凌乱,想要从中找出点头绪来&#xf…

手写基于redis-lua脚本实现分布式id生成器starter

手写基于redis-lua脚本实现分布式id生成器starter 文章目录 1.前言2.实现思路2.1lua脚本的特性2.2 了解三个redis命令2.3集群自增序列实现原理2.4三种实现思路2.4.1 实现思路一2.4.2 实现思路二2.4.3实现思路三 3.项目工程目录4.源码仓库地址5.依赖及使用配置5.1依赖5.2nacos配…

【Java Spring MVC项目异常解决】HTTP 500

HTTP 500状态码表示“内部服务器错误”(Internal Server Error)。这是一个通用的错误响应,表明服务器在处理请求时遇到了预料之外的情况,导致无法完成请求。500错误是服务器端错误的一种,与客户端无关。在Web开发中&am…

【国产替代】航空电子通信总线航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持

航空电子通信总线 航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持。这些产品用于进行航空电子应用所需的开发、生产和系统测试。 PXIe,2通道PXI ARINC-664接口模块 AIM ARINC-664具有板载处理器,可自动处理所有与协议相关的活动&…

学会MySQL(2)——间隙锁加锁算法分析

间隙锁加锁算法分析 引言 在进行死锁分析时,如果看 MySQL 的死锁日志云里雾里,那可能是我们对 MySQL 的加锁规则不甚了解,从而感觉分析无从下手。只能看代码,改 SQl 碰运气。有一句话说的好:我也不知道为什么这么改就…

Access2019直接将数据导入SQL Server数据库中,再直接链接回来

Access2019 的数据表等,除了通过 SSMA 导入数据库外,还可以利用access2019 自身的外部数据导出功能来达到目的。本文将详细介绍这一操作过程。 一、命令行操作阶段 1.以SA这一超级用户登录SQL Server,创建一个数据库,例如“个人…

[Algorithm][前缀和][模板 一维前缀和][模板 二维前缀和][寻找数组中心下标][除自身以外数组的乘积] + 前缀和原理 + 前缀和模板

目录 0.原理讲解1.[模板]一维前缀和1.题目链接2.模板代码实现 2.[模板]二维前缀和1.题目链接2.算法原理讲解3.模板代码实现 3.寻找数组的中心下标1.题目链接2.算法原理详解3.代码实现 4.除自身以外数组的乘积1.题目链接2.算法原理详解3.代码实现 0.原理讲解 前缀和:…