-
近年来,同步定位与建图(SLAM)[1]是机器人自动导航技术方面的研究热点。在SLAM中,通过后端优化可以不断地修正误差,但是微小的误差会不断累积。消除累计误差的代表性方法是判断机器人是否“到访”过某个区域,如果是则视为同一位置,这就是闭环检测[2]。闭环检测可以极大地校正漂移误差,是视觉SLAM的重要组成部分。目前大多数研究是基于外观的方法,利用提取的图像特征和描述符来估计是否到达过某个位置。如3D-MAP[3]、卷积神经网络(convolutional neural networks, CNN)[4]、视觉词袋法(bag-of-words, BoW)[5]等。视觉词袋法目前在闭环检测中较为常用。文献[6]提出了一种基于外观和颜色组合的双视觉词典方法,并添加了贝叶斯滤波来判断是否闭环。文献[7]结合了词袋模型和ORB-SLAM算法,使用场景分割的方法略微提高了准确率。最富标志性的是FAB-MAP[8]和DBoW2[9],它们使用离线的预训练词汇进行在线测试,分为离线预处理和在线处理两个阶段。前者从采集到的整个图像数据库中提取视觉单词,并对其量化构造成一个视觉词典;后者查找的图像由基于视觉词典的直方图表示,并与数据库直方图进行比较来判断是否闭环。然而,移动机器人不可避免地会处于复杂多变的环境中,包括光照、时间、天气等,闭环检测是视觉SLAM的最重要组成部分,易受到上述因素的影响,改善移动机器人在各种条件下(尤其是在光照变化下)的鲁棒性,是视觉SLAM不可或缺的工作。
为了减少光照变化对闭环检测的影响,本文改进了基于视觉词袋法的闭环检测方法。除了将原始的彩色图像作为视觉词典,还将彩色图转为光照不变图,同时并行生成光照不变图的视觉词典,并对其直方图进行比较,最后计算两者的最终得分矩阵来判断是否为闭环。实验结果表明,本文算法能稳健应对光照变化较大的场景。
-
考虑到系统的性能和运行时间要求,本文使用ORB[10]特征点,选择描述符长度为256 bit,每位描述符的计算公式如下:
$$ {v_i}(p) = \left\{ \begin{array}{l} 0\quad \;\;\;\;p + {x_i} < p + {y_i}\\ 1\;\quad \quad {\rm otherwise} \end{array} \right.\quad \forall i \in [1,256] $$ (1) 式中,
${v_i}$ 是第i个位描述符的值;${x_i}$ 、${y_i}$ 是通过高斯分布在该点周围预先建立的随机选择位置的灰度值;$p$ 代表正在计算的点。本文使用汉明距离来计算描述符之间的距离:$$ {d_{\rm Ham}}[v(p),v(q)] = \sum\limits_i^{256} {{\rm XOR}[v(p),v(q)]} $$ (2) 式中,
$v(p)$ 、$v(q)$ 是描述符;XOR表示异或操作。获得特征和描述符后,将它们转换为视觉单词,并将图像转换为稀疏向量。 -
文献[11]提出了一种算法,使得图像外观变化只只与光源有关。根据文献[11],光谱灵敏度
$F(\lambda )$ ,图像传感器的光照响应R,物体的表面反射率$S(\lambda )$ 和物体上的发射光谱功率分布$E(\lambda )$ 之间存在以下关系:$${R^{x,E}} = {{ a}^x} \cdot {{ n}^x}{I^x}\int {{S^x}(\lambda ){E^x}} (\lambda )F(\lambda ){\rm d}\lambda $$ (3) 式中,单位向量
${ a}^{x}$ 和${ n}^{x}$ 表示物体反射光源的方向和表面法线的方向,取决于物体的材料特性;$ {I}^{x} $ 表示物体点$x$ 上反射光的强度。将光谱敏感度函数$F(\lambda )$ 假设为以波长${\lambda _i}$ 为中心的狄拉克增量函数[12],从而产生以下响应函数:$${R^{x,E}} = {{ a}^x} \cdot {{ n}^x}{I^x}{S^x}({\lambda _i}){E^x}({\lambda _i})$$ (4) 为减少光照强度
${I^x} $ 的影响,得到取决于表面反射率$S({\lambda _i})$ 的光照不变图$\varsigma $ ,将式(4)取对数:$$\log ({R^{x,E}}) = \log \{ {G^x}{I^x}\} + \log \{ {S^x}({\lambda _i})\} + \log \{ {E^x}({\lambda _i})\} $$ (5) 将光照近似为普朗克光源[13],再将维恩常数近似代入普朗克光源中:
$$\log ({R^{x,E}}) = \log \{ {G^x}{I^x} \} + \log \{ 2h{c^2}{\lambda _i}^{ - 5}{S_i}\} - \frac{{hc}}{{{k_B}T{\lambda _i}}}$$ (6) 式中,Gx=ax·nx;h为普朗克常数;c为光速;k为玻尔兹曼常数;T是黑体源的相关色温。
文献[11]使用一维色彩空间
$\varsigma $ ,该色彩空间由相机传感器在有序波长${\lambda _1} < {\lambda _2} < {\lambda _3}$ 下的峰值灵敏度${R_1}$ 、${R_2}$ 、${R_3}$ 决定:$$\varsigma = \log ({R_2}) - \alpha \log ({R_1}) - (1 - \alpha )\log ({R_3})$$ (7) 将式(4)代入式(5),当参数α满足以下约束时,一维色彩空间
$\varsigma $ 与相关色温T无关:$$\frac{{hc}}{{{k_B}T{\lambda _2}}} - \frac{{hc}}{{{k_B}T{\lambda _1}}} - \frac{{(1 - \alpha )hc}}{{{k_B}T\lambda 3}} = 0$$ (8) 简化为:
$$\frac{1}{{{\lambda _2}}} = \frac{\alpha }{{{\lambda _1}}} + \frac{{1 - \alpha }}{{{\lambda _3}}}$$ (9) 因此,可根据相机传感器取适当的α值,将原始图像转化为光照不变图像
$\varsigma $ 。 -
先对整个图像序列进行光照不变变换,再生成原图−光照不变图视觉词典。
将采集到的彩色图像设为集合
${S}_{\rm RGB}$ ,将光照不变图设为集合${S}_{\rm II}$ ,两者存在以下关系:$${S_{\rm II}} = \varsigma ({S_{\rm RGB}})$$ 从每个图像集中提取特征集
$ {{F}}_{\rm{RGB}} $ 和$ {F}_{\rm II} $ ,该特征集由位置$ {x}_{i} $ 、$ {s}_{i} $ 和特征描述符$ {d}_{i} $ 组成。最后,使用如图1所示的树数据结构[5]来构建词典,在每一层使用K-means聚类方法对描述符进行分类。其中只有叶节点存储可视单词,而中间节点仅用于查找单词。该词典的总容量为
${K_d}$ 。搜索特定的视觉词汇时,只需要与聚类中心进行d次比较即可完成查找,时间复杂度为$O(\log N)$ ,保证了搜索效率。同时,为了区分每个单词的重要性,使用直接索引法[5],该方法将单词的父节点存储在目录中以加快比较速度。综上可以生成基于原图−光照不变图视觉词典,图2总结了该算法。
-
在提取图像特征和生成词典后,再利用这些数据完成闭环检测。尽管视觉描述符已经转换为视觉单词,但并非所有视觉单词都具有相同的识别和区分度。如某些单词很常见,在许多帧中都可以找到,这种情况下词类视觉单词在闭环检测中基本无作用。因此本文采用词频−逆文本频率指数(term frequency-inverse document frequency, TF-IDF)[14]方法来区分不同单词的重要性。在词袋模型中,可以在处理图像之前计算IDF,即在构建字典时确定IDF属性。将视觉单词wi总数用n表示,含有wi的图像数量用ni表示,则wi的逆文档频率为:
$${\rm IDF}_{(i)} = \log \frac{n}{{{n_i}}}$$ 文档频率为:
$${\rm TF}_{(i)} = \frac{{{n_i}}}{n}$$ 视觉单词
${w_i}$ 的权重为:$${\beta _i} = {\rm TF}_{(i)}{\rm IDF}_{(i)}$$ 在考虑单词的权重之后,对于特定的图像A,将原图特征和光照不变图特征添加到词袋中,完善原图−光照不变图词典:
$$A = \{ ({F_{\rm RGB1}},{F_{\rm II1}},{\beta _1})({F_{\rm RGB2}},{F_{\rm II2}},{\beta _2})\cdots({F_{{\rm{RGB}}n}},{F_{{\rm{II}}n}},{\beta _n})\} $$ -
根据前文生成的视觉词典,对每帧图像计算两个直方图。为了快速进行两幅图像间的直方图比较,本文采用直方图交叉核(histogram intersection kernel)[15]方法来测量两个矩阵的相似性得分。其原理是先将图像特征在多分辨率的超平面上进行映射,进而生成多层次的直方图,最后进行相似度的加权叠加。其交集函数(核函数)的定义如下:
$$\varGamma (H({h_1}),H({h_2})) = \sum\limits_{j = 1}^r {\min ((} H{({h_1})_j},H{({h_2})_j})$$ 式中,
${h_1},{h_2}$ 为欲比较的两个直方图;$H{({h_1})_j}$ 为${h_1}$ 直方图中的第j个bin;r为直方图中bin的个数。两个bin的最小值为两个直方图每个bin的重叠数,所有bin重叠数之和为该层次的交集函数值。直方图的相似性函数定义为:$${K_\Delta }(\psi ({h_1}),\psi ({h_2})) = \sum\limits_{i = 0}^L {\frac{1}{{{2^i}}}{N_i}} $$ 其值可以用来比较相似度。式中,L表示直方图的层次数;
${N_i}$ 表示连续量的层次之间的交集函数值的差:$N_i = \varGamma ({H_i}({h_1})),{H_i}({h_2})) - \varGamma ({H_{i - 1}}({h_1})), {H_{i - 1}}({h_2}))$ 。定义两个矩阵间的相似性得分
${{S}} = {{{K}}_\Delta }$ ,完成两个矩阵的相似性得分计算以后,对得分进行归一化:$${{S}}({h_i},h{}_{i'}) = \frac{{{{S}}({h_i},h{}_{i'})}}{{{{S}}({h_i},h{}_{i - 1})}}$$ 生成最终的得分为:
$${{{S}}_{\rm final}} = {{{S}}_{\rm RGB}} + \eta \cdot {{{S}}_{ii}}$$ 式中,
${{{S}}_{{\rm{RGB}}}}$ 是原始彩色图像的视觉词袋归一化得分矩阵;${{{S}}_{ii}}$ 是得到的光照不变图像的视觉词袋归一化得分矩阵;${{{S}}_{{\rm{final}}}}$ 是最终的得分矩阵;η是两个得分矩阵间的平衡因子。由于相邻两幅图像十分相似,容易误判为闭环。因此,本文将图像序列根据规模进行分组。每个组通过累加组内每个候选帧的相似性得分来获得累加的得分。累加分最高的组视为闭环组,闭环组中得分最高的图像将作为最佳候选帧。选择分数大于得分阈值的最佳候选帧作为判定正确的闭环对,具体的算法伪代码如下:
输入:D为前文生成的视觉词典
F为提取的图像特征
T为得分矩阵的阈值
输出:闭环对P
initialize P to empty
for all i
hRGB,i=nearest neighbors(FRGB,i,DRGB)
hII,i=nearest neighbors(FII,i,DII)
end for
for all i,j
hRGB,i=nearest neighbors(FRGB,i,DRGB)
hII,i=nearest neighbors(FII,i,DII)
end for
Sfinal=normalize(SRGB)+η·normalize(SII)
for all i,j
if Sfinal(i,j)>T and i,j are not adjacent frames
add(i,j) to P
end if
end for
A Method of Loop Closure Detection Improved by Bag-of-Visual Words Based on Original-Illumination Invariant Image
-
摘要: 当机器人所处环境光照发生变化时,基于传统视觉词典的闭环检测算法性能会降低,容易出现感知混叠和感知变异,从而判断出假闭环。该文首先通过原彩色图像生成只与光源有关的光照不变图,然后生成原图−光照不变图的视觉词典,对每帧图像计算两个直方图和相似性得分,通过最终的得分矩阵来判断是否闭环。实验结果表明,与传统的视觉词典法相比,该文提出的闭环检测算法对环境的光照变化具有较好的鲁棒性。Abstract: When the ambient light of the robot changes, the performance of the loop closure detection algorithm based on the traditional visual word bag will decrease, and it is prone to perceptual aliasing and perceptual variation, thus judging the false closed-loop. In this paper, the original color image is used to generate an illumination invariant image related only to the light source, and then a visual dictionary of the original illumination invariant image is generated. For each image, two histograms and similarity scores are calculated to determine whether it is a closed loop. Finally, it is tested on the data set. The experimental results show that compared with the bag-of-words (BoW), the loop closure detection algorithm proposed in this paper has better robustness to the changes in the environment.
-
[1] SAPUTRA M R U, MARKHAM A, TRIGONI N. Visual SLAM and structure from motion in dynamic environments: A survey[J]. ACM Computing Surveys, 2018, 51(2): 1-36. [2] 刘强, 段富海, 桑勇, 等. 复杂环境下视觉SLAM闭环检测方法综述[J]. 机器人, 2019, 41(1): 112-123, 136. LIU Qiang, DUAN Fu-hai, SANG Yong, et al. A survey of loop-closure detection method of visual SLAM in complex environments[J]. Robot, 2019, 41(1): 112-123, 136. [3] DING Jie, FANG Yong-chun. Multi-strategy based exploration for 3D mapping in unknown environments using a mobile robot[C]//2019 Chinese Control Conference (CCC). Guangzhou: IEEE, 2019: 4732-4738. [4] GAO Xiang, ZHANG Tao. Unsupervised learning to detect loops using deep neural networks for visual SLAM system[J]. Autonomous Robots, 2017, 41(1): 1-18. doi: 10.1007/s10514-015-9516-2 [5] GALVEZ-LO PEZ D, TARDOS J D. Bags of binary words for fast place recognition in image sequences[J]. IEEE Transactions on Robotics, 2012, 28(5): 1188-1197. doi: 10.1109/TRO.2012.2197158 [6] ANGELI A, FILLIAT D, DONCIEUX S, et al. Fast and incremental method for loop-closure detection using bags of visual words[J]. IEEE Transactions on Robotics, 2008, 24(5): 1027-1037. doi: 10.1109/TRO.2008.2004514 [7] CHEN J, LI J, XU Y, et al. A compact loop closure detection based on spatial partitioning[C]//International Conference on Image Vision and Computing. [S.l.]: IEEE, 2017: 371-375. [8] NOWICKI M, WIETRZYKOWSKI J, SKRZYPCZYNSKI P. Experimental evaluation of visual place recognition algorithms for personal indoor localization[C]//2016 International Conference on Indoor Positioning and Indoor Navigation (IPIN). [S.l.]: IEEE, 2016, DOI: 10.1109/IPIN.2016.7743649. [9] JIE W, ALPER Y, LEI Y. DCF-BoW: Build match graph using bag of deep convolutional features for structure from motion[J]. IEEE Geoscience and Remote Sensing Letters, 2018(99): 1-5. [10] KYI P, YUTTANA K. Biomedical images stitching using ORB feature based approach[C]//2018 International Conference on Intelligent Informatics and Biomedical Sciences (ICIIBMS). [S.l.]: IEEE, 2018, DOI: 10.1109/ICIIBMS.2018.8549931. [11] MADDERN W, STEWART A D, MCMANUS C, et al. Illumination invariant imaging: Applications in robust vision-based localisation, mapping and classification for autonomous vehicles[C]//IEEE International Conference on Robotics and Automation (IEEE ICRA). Hong Kong, China: IEEE, 2004: 5-12. [12] FINLAYSON G D, HORDLEY S D. Color constancy at a pixel[J]. J Opt Soc Am A, 2001, 18(2): 253-264. doi: 10.1364/JOSAA.18.000253 [13] RATNASINGAM S, COLLINS S. Study of the photodetector characteristics of a camera for color constancy in natural scenes[J]. J Opt Soc Am A, 2010, 27(2): 286-294. [14] RABIE K, ADEBISI B, GACANIN H, et al. Energy-per-bit performance analysis of relay-assisted power line communication systems[C]//IEEE Transaction on Green Communications and Networding. [S.l.]: IEEE, 2018: 360-368. [15] LI Pan, LIU Yang, LIU Guo-jun, et al. A robust local sparse coding method for image classification with histogram intersection kernel[J]. Neurocomputing, 2016, 184: 36-42. [16] 董蕊芳, 柳长安, 杨国田. 一种基于改进TF-IDF的SLAM回环检测算法[J]. 东南大学学报(自然科学版), 2019, 49(2): 251-258. doi: 10.3969/j.issn.1001-0505.2019.02.008 DONG Rui-fang, LIU Chang-an, YANG Guo-tian. TF-IDF based loop closure detection algorithm for SLAM[J]. Journal of Southeast University (Natural Science Edition), 2019, 49(2): 251-258. doi: 10.3969/j.issn.1001-0505.2019.02.008