DBoW2 回环检测/重定位 算法解析

简介

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 描述子在  p  点周围选取两个点做比较,将比较的结果作为描述子的编码, 
如下: 

其中  xi  和  yi  是随机选取的服从 normal distribution 的两像素坐标, 
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 的区分度越小,频率的计算公式如下:

idf(i)=logNni

在线更新字典树

当在字典树中需要插入一幅新图像  It ,在图像中提取的特征描述子按照 Hamming 距离从字典树的根部节点开始逐级向下到达叶子节点,可以计算每个叶子节点也就是每个 word 在图像  It  中的出现频率:

tf(i,It)=niItnIt  
其中  niIt  表示 word 在图像中出现的次数 
nIt  表示图像中描述子的总数

在树构建的过程中每个叶子节点存储了 inverse index,存储了到达叶子节点的图像  It  的 ID 和 word 在图像  It  描述 vector 中第  i  维的值: 
vit=tf(i,It)×idf(i)

对于一幅图像所有的描述子,做上述操作,可以得到每个 word 的值,将这些值构成图像的描述向量  vt

对两幅图像比较计算其相似度时,两幅图像相似度计算公式如下: 
s(v1, v2)=112|v1|v1|v2|v2||  
两幅图像越相似得分越高。

字典树除了存储了 inverse index,还存储了 direct index 如上图所示,direct index 方便两幅图像特征搜索,建立特征之间的对应,计算两帧之间的位姿转换。

Database query

由于在计算相似度时,相似度的大小和字典树、图像等有一定关系,这里采用归一化的方式,消除这两种因素的影响: 
归一化相似度计算公式如下:

η(vt,vtj)=s(vt,vtj)s(vt,vtΔt)

其中  vtΔt  表示上一帧图像,上式含义是上一帧图像和当前帧图像是最为相似度的,用和上一帧图像计算的相似度来归一化和字典树中图像计算的相似度。

当  s(vt,vtΔt)  较小时(机器人做旋转时),会把总体的得分拉的很高,论文里面剔除这种因素,选取阈值  α ,当前帧和上一帧图像相似度小于  α  时不做回环检测。

Matching group

假设图像  vt  和图像  vni  相似度很大,那么和图像  vni  周围的图像也会有很高的相似度,这里将相邻的得分都很高的图像 group 在一起构成 island,得分是 group 中图像得分的总和。

Temporal consistency

假设图像  vt  和 island  Vt1  之间相似度很大,那么图像  vtkΔt  和  Vtk  像素度也应该很大( k  小于 一定值),相当于两串图像间会有 overlap,利用这个条件作为 consistency 的约束。

Efficient geometrical consistency

1、对于一幅新图像  Ii ,用字典树建立对图像的描述,并且计算和字典树中以前存储的图像之间的得分。

inverse index 加快待比较的图像搜索速度 
由于 inverse index 存储了哪些图像也到达该叶子节点,在选择待比较的图像时,只需要比较到达相同叶子节点的图像,不需要和存储的每幅进行比较,从而加快比较速度。

direct index 加快特征比较速度 
假设图像  Ii  和  Ij  得分最高,在两幅图像特征匹配时,只需要比较 direct index 中属于同一个 node 的图像特征,node 指字典树的一层,如果是叶子节点层,那么选择是同一个 word 的特征做匹配。

参考文献: 
“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”

版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值