回环检测(SLAM十四讲ch12)
概述
无论在单目、双目还是RGBD中,追踪得到的位姿都是有误差的。随着路径的不断延伸,前面帧的误差会一直传递到后面去,导致最后一帧的位姿在世界坐标系里的误差有可能非常大。除了利用优化方法在局部和全局调整位姿,也可以利用回环检测(loop closure)来优化位姿。
问题的关键是:如何判断两帧图片的相似度。最直观的做法是:特征匹配,比较匹配的数量是否足够多。此时,可以采用词袋模型,用来加速特征匹配。
准确率precision和召回率recall
词袋 Bag-of-Words(BoW)
词袋模型(Bag-of-Words,BoW)把特征当成一个个单词,通过比较两张图片中出现的单词是否一致,来判断这两张图片是否是同一场景。
作者:金戈大王
链接:https://www.jianshu.com/p/023e5006499d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
字典
为了能够把特征归类为单词,我们需要训练一个字典。所谓的字典就是包含了所有可能的单词的集合,为了提高通用性,需要使用海量的数据训练。
聚类 --> k-means
字典的训练其实是一个聚类的过程。假设所有图片中共提取了10,000,000个特征,可以使用K-means方法把它们聚成100,000个单词。但是,如果只是用这100,000个单词来匹配的话效率还是太低,因为每个特征需要比较100,000次才能找到自己对应的单词。为了提高效率,字典在训练的过程中构建了一个k个分支,深度为d的树,如下图所示。直观上看,上层结点提供了粗分类,下层结点提供了细分类,直到叶子结点。利用这个树,就可以将时间复杂度降低到对数级别,大大加速了特征匹配。
K叉树字典
实践
训练字典需要安装BoW库(DBoW3)https://github.com/rmsalinas/DBoW3
./build/feature_training data
相似度计算
./build/loop_closure data
TF-IDF(文本检索使用)
关键帧处理