当前位置: 首页 > news >正文

【跟我一起读《视觉惯性SLAM理论与源码解析》】第九章 地图点、关键帧以及图结构

这一章主要讲了一些基本内容,包括ORB-SLAM2中地图点,关键帧图结构的问题

  1. 地图点和特征点的关系?有时候地图点对应不同帧上的特征点,特征点可以通过三角化得到地图点
  2. 地图点的几个属性,平均观测方向,以及观测距离范围是如何计算的?
  3. 如何计算地图点最具代表性的描述子?首先获取该地图点有效的观测关键帧以及对应的特征点索引,遍历观测到该地图点的所有关键帧,把对应的特征描述子都放在同一个向量中,计算所有描述子之间的两两距离,找到和其他描述子具有最小距离中值的描述子,最为最具代表性的描述子。这里什么叫最小距离中值,是如何计算的?另外怎么选描述子在之前说过p90
  4. 预测地图点对应的特征点所在的金字塔尺度原理?
  5. 恒速模型跟踪中增加地图点(双目以及RGB-D模式),找出上一帧具有有效深度值但不是地图点的特帧点,其中较近的作为临时地图点,这里没有添加地图点信息,因为是临时的,后期跟踪结束也会删掉这些点
  6. 跟踪结束新建关键帧的时候 (双目以及RGB-D模式),和上述不同的是会添加真正的地图点
  7. 局部建图线程中,用当前关键帧和相邻关键帧通过三角化生成新的地图点。会将当前关键帧的地图点分别和一级二级相连关键帧的地图点进行正向与反向的融合,这里的融合包括替换或新增地图点,而且会添加相互的观测
  8. 融合地图点,在局部建图中将当前关键帧的一级和二级相连关键帧对应的所有地图点投影到当前关键帧中,如果投影的地图点能够匹配当前关键帧的特征点,并且该特征点有对应的地图点,那么选择两个地图点中被观测数目最多的那个来替换两个地图点;如果特征点没有对应的地图点,那么新增该地图点和关键帧之间的观测关系,称为地图点新增;闭环线程中,将当前关键帧闭环匹配上的关键帧以及其共视关键帧上的所有地图点投影到当前关键帧中,其他操作如上。
  9. 如何选择并创建关键帧,这里有很多逻辑关系跟很多因素有关例如:距离上一次重定位时间,局部建图线程是否被占用,地图中关键帧数目个数是否超出最大限制,跟踪到的近点数量,和参考帧想必当前帧跟踪到的点数,成功跟踪到的匹配内点数目等。主体分为条件a和条件b,a和b中又有一些逻辑关系才能满足,当a和b同时满足时才能插入关键帧,主函数为Tracking类下的NeedNewKeyFrame()
  10. 如何更新关键帧之间的关系,当新建关键帧时,都需要新建和它相连关键帧的关系;当关键帧的地图点发生变化时,需要更新和它相连关键帧之间的联系。这些是如何操作的?
  11. 如何删除关键帧,首先需要清除和相连关键帧的联系(一级以及二级相连),清除观测到和地图点的联系,需要为该关键帧的子关键帧寻找合适的父关键帧。这些是如何操作的?
  12. 关于父子关键帧,参考关键帧,共视图,本质图,生成树的概念,以及本质图优化和全局BA的比较,这些是有关图结构的概念

我觉得这里最需要整理每一个实现的策略,有些算法非常巧妙比如说删除关键帧,其一子关键帧在寻找到新父后,直接升级成父加入其它子关键帧的父库中,如果是在子关键帧找不到父,直接把爷爷当成父,很有意思。

http://www.lryc.cn/news/21843.html

相关文章:

  • 网络安全——数据链路层安全协议(2)
  • 【华为OD机试模拟题】用 C++ 实现 - 热点网络统计(2023.Q1)
  • 人工智能学习07--pytorch09--LeNet
  • java泛型编程初识
  • 代码随想录算法训练营 || 贪心算法 1005 134 135
  • Spring框架面试题
  • 纯x86汇编实现的多线程操作系统实践 - 第五章 AP的守护执行
  • 2023年全国最新高校辅导员精选真题及答案7
  • 使用windwow windbg 吃透64位分页内存管理
  • Java知识复习(五)JVM虚拟机
  • 房屋出租管理系统
  • 2023年全国最新食品安全管理员精选真题及答案6
  • C++中的文件操作
  • 监控生产环境中的机器学习模型
  • 15s了解什么是物联网技术
  • 敲出来的真理-mysql备份大全,备份命令,还原命令,定时备份
  • ATTCK实战系列-红队评估(一)
  • 学python的第二天---差分
  • 数据结构入门5-2(数和二叉树)
  • 把Redis当作队列来用,到底合适吗?
  • Python学习-----项目设计1.0(设计思维和ATM环境搭建)
  • (九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
  • 数据分析面试、笔试题汇总+解析(六)
  • vue3+rust个人博客建站日记3-编写主页
  • 前端常考react面试题(持续更新中)
  • C++11多线程编程 二:多线程通信,同步,锁
  • js——原型和原型链
  • [计算机网络(第八版)]第三章 数据链路层(学习笔记)
  • void在不同场景下的意义
  • Flume简介