从零手写VIO学习记录 ——系列六:【前端视觉】(学习记录 | 作业 | 代码)
本系列主要根据深蓝学院《视觉SLAM进阶:从零开始手写VIO》。博客主要以本人在课程学习过程中的作业和修改的代码为主。如需详细视频及PPT,请联系深蓝学院相关人员。
代码已上传github: https://github.com/why-freedom/VIOLearningNote-Code.git (有用话给个star >_<)
本节主要介绍前端:提取匹配特征点和光流跟踪,关键帧和三角化
(很多大部分框架都是在前端优化改进的,前端对最终定位精度的影响起着决定性作用)
特征点提取和匹配
- 这一块研究已经很多了,我就不再赘述。贴上大佬连接:https://www.cnblogs.com/skyfsm/p/7401523.html
- 要注意的是SLAM的实时性,一般采用速度较快的算子,而SIFT等虽然精度高,目前还不能实时。
光流跟踪
- 光流法抗光照干扰弱,比较依赖角点。目前常用的是FAST+光流。
- 继续贴上大佬的连接(我不产生知识,我是知识的搬运工,<_>):https://blog.****.net/u014568921/article/details/46638557
【光流跟踪针对白墙等弱纹理环境确实比ORB等特征匹配方法效果稳】
关键帧和三角化
-
如果每一帧都参与后端运算的话,后端会炸,所以需要选区一些有代表的帧,即关键帧。
- 关键帧不必太近(会产生退化或三角化问题)。参考《视觉SLAM十四讲》、
- 关键帧之间不能太远(否则共视点太少)
-
在计算量允许范围内,且不引起退化时,应尽可能插入关键帧。(比较观测多了)
-
在单目SLAM中,通常在插入关键帧时计算新路标点的三角化。
- 有的SLAM系统在关键帧时提取新Feature(DSO、SVO),也有的方案对每个帧都提取新的Feature(VINS、ORB)。
- 前者节省计算量,后者效果好(在单目里需要防止三角化Landmark数量不够)。继续贴上大佬链接:https://www.cnblogs.com/yepeichu/p/10792899.html