视觉SLAM十四讲之回环检测(第二版)
文章目录
1、SLAM框架:前端、后端、回环检测
前端:提供特征点的提取和轨迹、地图的初值
后端:主要是优化问题
回环检测:解决累积误差
2、回环检测的关键:如何有效解决相机经过同一个地方。
3、回环检测的作用:
a、估计轨迹和地图在长时间的准确性;
b、提供当前数据与历史数据的关联,利用回环检测进行重定位
4、回环检测的方法
a、基于里程计的方法(Odometry based):假设存在回环,在累积误差较大时很难work
b、基于外观的方法(Appearance based):基于图像的相似性,视觉SLAM的主流方法。
//工程应用:对于室外的情况:可以使用GPS进行回环检测
5、基于外观的回环检测方法:核心计算图像的相似性
5.1直接让两副图像表示的矩阵相减,由于光照和相机曝光的影响,不能很好的反映图像的相似性
评价判断图像的相似性好与不好的问题:引入感知偏差和感知变异的问题
6、评价基于外观的回环检测方法:准确率和召回率
回环检测的结果分类:
算法/事实 | 是回环 | 不是回环 |
---|---|---|
是回环 | 真阳性(TP) | 假阳性(FP)感知偏差 |
不是回环 | 假阴性(FN):感知变异 | 真阴性(TN) |
准确率:precision=TP/(TP+FP):所有回环中确实是真实回环的概率
召回率:recall=TP/(TP+FN):在所有回环中被正确检测出来的概率
SLAM要求:对准确率要求的比较高,对召回相对宽容(没有检测出来的再加上回环验证的方法可以避免)
7、词袋模型(Bag-of-Words,BOW)
强调的是单词的有无,而不关心顺序。
对两个向量通过计算的方法确定图像的相似性。
计算公式:
s(a,b)=1-1/w||a-b||(L1泛数)
8、字典
字典生成问题类似于聚类问题。(无监督机器学习)
K-means算法主要步骤:
1、随机选取K个样本中心点c1,c2,...,ck
2、对每一个样本,计算它与每个中心点之间的距离,取最小的作为它的归类。
3、重新计算每个类的中心点,如果每个中心点变化都很小,则算法收敛,退出,否则返回第二步。
K叉树来表达字典(类似于层次聚类,K-means的直接扩展):构建深度为d,每次分叉为K的树。
容纳的单词个数为:k的d此方
具体做法:
1、在根节点,用K-means把所有样本聚成K类(实际中为保证聚类可以使用K-means++),这样得到第一层。
2、对第一层的每个节点,把属于该节点的样本再聚成K类,得到下一层。
3、依次类推,最后得到叶子层&#