【视觉惯性SLAM:十一、ORB-SLAM2:跟踪线程】

跟踪线程是ORB-SLAM2的核心之一,其主要任务是实时跟踪相机的位姿变化和场景的变化,以维持地图的更新和相机轨迹的估计。ORB-SLAM2的跟踪线程通过多种方式(参考关键帧跟踪、恒速模型跟踪、重定位跟踪、局部地图跟踪)处理跟踪丢失、场景动态变化等问题,确保系统的鲁棒性和实时性。

以下从各个跟踪策略详细介绍ORB-SLAM2的跟踪线程工作原理。

跟踪线程流程

参考关键帧跟踪

背景及原理

  • 参考关键帧:
    • 当前帧通过与上一帧的特征点匹配可以获得初步的位姿估计。
    • 为进一步优化跟踪精度,需要与局部地图中最相关的关键帧 进行匹配(即参考关键帧 ),通过参考关键帧的地图点与当前帧特征点的匹配来优化当前帧的位姿
  • 作用:
    • 通过与参考关键帧的匹配,获得更多约束,避免累积误差对跟踪精度的影响。
    • 参考关键帧提供地图点,当前帧通过投影这些地图点到图像平面来寻找匹配。

实现步骤

  • 从局部关键帧中选择一个最近或最优的关键帧作为参考关键帧。
  • 从参考关键帧中提取地图点(3D点),并将其投影到当前帧的图像中。
  • 根据投影位置在图像金字塔中搜索匹配点(利用ORB特征的描述子匹配)。
  • 使用匹配点对,通过优化方法(例如PnP)进一步优化当前帧的位姿。

恒速模型跟踪

背景及原理

  • 恒速模型假设相机在连续两帧之间以恒定速度运动。
  • 在刚体运动的约束下,如果上一帧的位姿已知,则可以推测当前帧的初始位姿。
  • 通过此预测,可以缩小搜索范围,提高匹配效率和跟踪精度。

实现步骤

  • 利用上一帧的位姿和速度预测当前帧位姿:
    根据上一帧的位姿 T t − 1 T_{t-1} Tt−1和速度𝑉,预测当前帧的位姿 T t = T t − 1 ⋅ V T_{t}=T_{t-1}\cdot V Tt=Tt−1⋅V
  • 临时地图点的创建:
    • 基于恒速模型,预测上一帧中的地图点在当前帧图像中的位置,生成临时地图点用于匹配。
    • 这些地图点可通过三角化与当前帧进行验证和更新。
  • 优化位姿:
    使用匹配的特征点对,利用最小二乘方法优化预测的位姿,确保跟踪的精确性。

重定位跟踪

背景及原理

  • 场景丢失或跟踪失败的情况:
    • 当相机出现快速运动、剧烈旋转或动态遮挡时,跟踪可能丢失。
    • 此时,重定位机制能够恢复跟踪状态。
  • 原理:
    • 基于倒排索引的词袋模型,将当前帧的特征描述子与地图中已有关键帧的描述子进行快速匹配,从中找到候选关键帧。
    • 利用这些候选关键帧恢复当前帧的位姿。

实现步骤

  • 倒排索引:
    • 词袋模型提前对所有关键帧进行特征向量的编码(离线训练的字典)。
    • 当前帧通过ORB特征的描述子生成词袋向量,并快速匹配候选关键帧。
  • 搜索重定位候选关键帧:
    • 在数据库中,找到与当前帧最相似的关键帧作为重定位候选。
  • 利用EPnP算法估计位姿:
    • 对候选关键帧进行投影匹配,找到共视特征点对。
    • 使用EPnP(Efficient Perspective-n-Point)算法计算当前帧的初始位姿。
  • 位姿优化:
    • 将初始位姿作为输入,通过BA优化,恢复跟踪。

局部地图跟踪

背景及原理

  • 局部地图跟踪是通过局部优化提升跟踪精度的过程。
  • 在局部地图跟踪中,ORB-SLAM2会利用与当前帧最近的局部关键帧及其相关的地图点进行跟踪。
  • 局部地图由当前帧的共视关键帧和这些关键帧的观测地图点组成。

实现步骤

  • 构建局部地图:
    • 获取当前帧的共视关键帧集合(共视图关系提供)。
    • 从共视关键帧中提取地图点,构建局部地图。
  • 投影匹配:
    • 将局部地图点投影到当前帧的图像平面,预测其金字塔层级。
    • 在投影位置附近搜索匹配点,获取更多的特征点匹配对。
  • 优化当前帧位姿:
    • 使用匹配点对,通过光束法平差(BA)优化当前帧的位姿。

ORB-SLAM2中的跟踪策略特点

  • 多层次跟踪:
    • 针对不同的场景(跟踪正常、丢失、重定位),采用不同的策略,保证系统鲁棒性。
  • 实时性:
    • 跟踪线程与局部建图、回环检测线程分离,并采用高效的投影匹配和优化算法,保证实时性。
  • 鲁棒性:
    • 通过恒速模型预测、局部地图跟踪和重定位机制,ORB-SLAM2能够应对遮挡、快速运动等挑战。

总结

跟踪方式 关键作用 方法概要
参考关键帧跟踪 提供额外约束,提升跟踪精度 利用局部关键帧提供地图点进行投影匹配
恒速模型跟踪 提供初始位姿预测,缩小搜索范围 根据上一帧位姿和速度预测当前帧位姿
参考关键帧跟踪 恢复跟踪,防止因丢失而中断 通过词袋模型快速匹配候选关键帧并估计位姿
局部地图跟踪 提高局部跟踪精度,增加约束 构建局部地图,进行投影匹配和优化当前帧位姿

以上是ORB-SLAM2中跟踪线程的详细介绍。通过多种策略,ORB-SLAM2确保了跟踪的精度、实时性和鲁棒性,是其高性能的关键之一。

相关推荐
☆璇27 分钟前
【数据结构】排序
c语言·开发语言·数据结构·算法·排序算法
ATM00632 分钟前
人机协作系列(四)AI编程的下一个范式革命——看Factory AI如何重构软件工程?
人工智能·大模型·agent·人机协作·人机协同
读创商闻1 小时前
极狐GitLab CEO 柳钢——极狐 GitLab 打造中国企业专属 AI 编程平台,引领编程新潮流
人工智能·gitlab
kailp1 小时前
语言模型玩转3D生成:LLaMA-Mesh开源项目
人工智能·3d·ai·语言模型·llama·gpu算力
marteker1 小时前
弗兰肯斯坦式的人工智能与GTM策略的崩溃
人工智能·搜索引擎
无心水1 小时前
大语言模型零样本情感分析实战:无需机器学习训练,96%准确率实现指南
人工智能·机器学习·语言模型
来自于狂人1 小时前
AI大模型训练的云原生实践:如何用Kubernetes指挥千卡集群?
人工智能·云原生·kubernetes
艾莉丝努力练剑3 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
_殊途5 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
千宇宙航7 小时前
闲庭信步使用图像验证平台加速FPGA的开发:第十四课——图像二值化的FPGA实现
图像处理·计算机视觉·fpga开发