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 做回环。
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)=1−12|v1|v1|−v2|v2||
两幅图像越相似得分越高。
字典树除了存储了 inverse index,还存储了 direct index 如上图所示,direct index 方便两幅图像特征搜索,建立特征之间的对应,计算两帧之间的位姿转换。
由于在计算相似度时,相似度的大小和字典树、图像等有一定关系,这里采用归一化的方式,消除这两种因素的影响:
归一化相似度计算公式如下:
η(vt,vtj)=s(vt,vtj)s(vt,vt−Δt)
其中 vt−Δt 表示上一帧图像,上式含义是上一帧图像和当前帧图像是最为相似度的,用和上一帧图像计算的相似度来归一化和字典树中图像计算的相似度。
当 s(vt,vt−Δt) 较小时(机器人做旋转时),会把总体的得分拉的很高,论文里面剔除这种因素,选取阈值 α ,当前帧和上一帧图像相似度小于 α 时不做回环检测。
假设图像 vt 和图像 vni 相似度很大,那么和图像 vni 周围的图像也会有很高的相似度,这里将相邻的得分都很高的图像 group 在一起构成 island,得分是 group 中图像得分的总和。
假设图像 vt 和 island Vt1 之间相似度很大,那么图像 vt−kΔt 和 Vtk 像素度也应该很大( k 小于 一定值),相当于两串图像间会有 overlap,利用这个条件作为 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”