博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORB-SLAM2初步(跟踪模块)
阅读量:4700 次
发布时间:2019-06-09

本文共 1032 字,大约阅读时间需要 3 分钟。

一、跟踪模块简介

  在ORB-SLAM或其他SLAM系统中,跟踪的主要任务是根据相机或视频输入的图像帧实时输出相机位姿。在ORB-SLAM中,跟踪模块的主要任务是实时输出相机位姿和筛选关键帧,完成一个没有经过优化或者说全局优化的视觉里程计。通常根据相机的不同采用的方法也不相同,如单目除了需要进行初始化外通常根据特征匹配结果使用PnP算法求解相机位姿。

二、跟踪模块分析

  如图 是ORB-SLAM跟踪模块的技术流程图

  其流程为首先获取第一张彩色图像,然后转为灰度图,提取ORB特征,通常第一帧会构建为关键帧;

  然后进入跟踪过程(以单目为例),如果没有初始化则会进入自动初始化模块:定义参考帧和当前帧,提取ORB特征,进行特征匹配,然后分别计算单应矩阵和基础矩阵(双线程),使用H,F的判别模型判断在当前环境下使用哪个模型进行位姿求解,最后使用对应的求解方法求解H或F矩阵获取相机初始位姿,并使用三角测量计算匹配特征点的深度信息,获得3D点;

  ORB-SLAM中关于跟踪状态有两种选择(1)只进行跟踪不建图(2)同时跟踪和建图,这里以(2)为例。初始化之后ORB-SLAM有三种跟踪模型可供选择,首先假设相机恒速(即Rt和上一帧相同),然后计算匹配点数(如果匹配足够多则认为跟踪成功),如果匹配点数目较少,说明恒速模型失效,则选择参考帧模型(即特征匹配,PnP求解),如果参考帧模型同样不能进行跟踪,说明两帧键没有相关性,这时需要进行重定位,即和已经产生的关键帧中进行匹配(看看是否到了之前已经到过的地方)确定相机位姿,如果重定位仍然不能成功,则说明跟踪彻底丢失,要么等待相机回转,要不进行重置;

  假如通过一种模型完成了初始相机的位姿估计,则进一步跟踪局部地图,即和当前帧相关联的地图点做联合优化,获得一个较为准确的相机位姿;

  输出相机位姿说明跟踪过程已经完成,下面就是根据一定的判定条件判断当前帧是否可以作为关键帧输出,判定关键帧的条件一般为距上一关键帧过去了多少帧,和上一关键帧之间的匹配点的数量等。

三、跟踪模块总结

  从上面的流程可以看出,如果想进一步提升跟踪的速度,第一是从ORB特征的提取和建立描述符入手,第二是从局部地图跟踪入手,而相机初始位姿估计可能优化的余地不是很大。

后面想根据代码具体谈一谈跟踪过程的实现方式。

转载于:https://www.cnblogs.com/mafuqiang/p/6837963.html

你可能感兴趣的文章
Tree POJ - 1741 (点分治)
查看>>
Too Rich UVALive - 7183(贪心)
查看>>
欧拉定理证明&阶乘的逆元
查看>>
Prime Game Gym - 101981J(网络流/二分图)
查看>>
Teamwork Gym - 101492E (dp)
查看>>
No Link, Cut Tree! Gym - 101484F(dp)
查看>>
Coprimes Gym - 101492C(bitset)
查看>>
Partial Tree UVALive - 7190(完全背包)
查看>>
『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
查看>>
『开发技术』Windows极简安装使用face_recognition实现人脸识别
查看>>
『深度应用』NLP命名实体识别(NER)开源实战教程
查看>>
『开发技术』GPU训练加速原理(附KerasGPU训练技巧)
查看>>
『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)
查看>>
『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)
查看>>
『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
查看>>
『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程
查看>>
bug收集
查看>>
TCP重置报文段及RST常见场景分析
查看>>
TCP三次握手与四次分手
查看>>
Pow共识算法
查看>>