DBoW2 回环检测/重定位 算法解析
来源:互联网 发布:怎么识谱古筝知乎 编辑:程序博客网 时间:2024/05/22 08:56
简介
ORB-SLAM 和 Kintinuous 都使用 DBoW2 作为回环检测算法,这里对 DBoW2 算法做简要介绍。
DBoW2 论文中使用的特征检测算法是 Fast keypoint,见论文 “Machine learning for high speed corner detection”
使用的特征描述子是 Brief 描述子,见论文 “Brief: Binary robust independent elementary features”
Brief 描述子和 ElasticFusion 中使用的 Randomized Ferns 描述子不同的是,Brief 描述子在
如下:
其中
Randomized Ferns 回环检测算法介绍:
http://blog.csdn.net/fuxingyin/article/details/51436430
ORB-SLAM 中用的是 ORB 特征描述子用 DBoW2 做回环。
Kintinuous 中用的是 Surf 描述子用 DBoW2 做回环。
Bag of Words 字典建立
1、从训练图像中离线抽取特征
2、将抽取的特征用 k-means++ 算法聚类,将描述子空间划分成 k 类
3、将划分的每个子空间,继续利用 k-means++ 算法做聚类
4、按照上述循环,将描述子建立树形结构,如下图所示:
字典树在建立过程中,每个叶子也就是每个 word 记录了该 word 在所有的训练图像中出现的频率,出现的频率越高,表示这个 word 的区分度越小,频率的计算公式如下:
在线更新字典树
当在字典树中需要插入一幅新图像
其中
在树构建的过程中每个叶子节点存储了 inverse index,存储了到达叶子节点的图像
对于一幅图像所有的描述子,做上述操作,可以得到每个 word 的值,将这些值构成图像的描述向量
对两幅图像比较计算其相似度时,两幅图像相似度计算公式如下:
两幅图像越相似得分越高。
字典树除了存储了 inverse index,还存储了 direct index 如上图所示,direct index 方便两幅图像特征搜索,建立特征之间的对应,计算两帧之间的位姿转换。
Database query
由于在计算相似度时,相似度的大小和字典树、图像等有一定关系,这里采用归一化的方式,消除这两种因素的影响:
归一化相似度计算公式如下:
其中
当
Matching group
假设图像
Temporal consistency
假设图像
Efficient geometrical consistency
1、对于一幅新图像
inverse index 加快待比较的图像搜索速度
由于 inverse index 存储了哪些图像也到达该叶子节点,在选择待比较的图像时,只需要比较到达相同叶子节点的图像,不需要和存储的每幅进行比较,从而加快比较速度。
direct index 加快特征比较速度
假设图像
参考文献:
“Real-Time Loop Detection with Bags of Binary Words”
“Bags of Binary Words for Fast Place Recognition in Image Sequences”
“Brief: Binary robust independent elementary features”
“Machine learning for high speed corner detection”
- DBoW2 回环检测/重定位 算法解析
- DBoW2 回环检测/重定位 算法解析
- ElasticFusion 中的 Randomized Ferns 重定位/回环检测 论文和代码解析
- DBoW2算法
- DBoW2算法原理介绍
- DBoW2算法 精析
- slam-回环检测 笔记
- SLAM(一)-回环检测
- 视觉slam闭环检测之-DBoW2 -视觉词袋构建
- 视觉slam闭环检测之-DBoW2 -视觉词袋构建
- 视觉slam闭环检测之-DBoW2 -视觉词袋构建
- ORB-SLAM(六)回环检测
- ORB-SLAM(六)回环检测
- SLAM回环检测中的词袋BOW
- SLAM学习——回环检测
- ORB-SLAM(六)回环检测
- 回环
- 重定位
- Android开发之--拼接字符串
- SSH Secure Shell 无法登录:server responded "algorithm negotiation failed”
- Vue.js对象转换
- 查找整型数组的元素之和最大的子串
- spring4.xml配置样例
- DBoW2 回环检测/重定位 算法解析
- 接口测试用例模板
- php中try catch捕获异常实例详解
- Leetcode 515 Find Largest Value in Each Tree Row
- 关于命令行解释器shell的管道的理解
- 关于sort函数的几种用法
- kafka helloworld
- maven简单项目转换Web项目,在properties里没有出现Project Facets
- httpsession 内容整理