浙江大学学报(工学版), 2021, 55(8): 1500-1509 doi: 10.3785/j.issn.1008-973X.2021.08.011

计算机技术

基于改进Census变换的单目视觉里程计

蔺志伟,, 李奇敏,, 汪显宇

重庆大学 机械传动国家重点实验室,重庆 400044

Monocular visual odometry based on improved Census transform

LIN Zhi-wei,, LI Qi-min,, WANG Xian-yu

State Key Laboratory of Mechanical Transmissions, Chongqing University, Chongqing 400044, China

通讯作者: 李奇敏,男,副教授. orcid.org/0000-0003-0547-665X. E-mail: qim_li@163.com

收稿日期: 2020-07-29  

基金资助: 国家自然科学基金资助项目(61773254,U1813217);上海市科委资助项目(17DZ1205000)

Received: 2020-07-29  

Fund supported: 国家自然科学基金资助项目(61773254,U1813217);上海市科委资助项目(17DZ1205000)

作者简介 About authors

蔺志伟(1994—),男,硕士,从事视觉SLAM研究.orcid.org/0000-0002-3568-9050.E-mail:201807021013@cqu.edu.cn , E-mail:201807021013@cqu.edu.cn

摘要

针对直接法视觉里程计在光照变化场景下的失效问题,提出基于改进Census变换的单目视觉里程计,向量Census变换半直接单目视觉里程计(VC-SVO). Census变换是立体视觉领域中非参数变换的一种,可以有效减少光照变化对图像的影响. 将Census变换引入SLAM中的后端优化,改变传统Census变换的形式,转换到欧氏空间中表示,并采用新的误差计算方法. 在SVO算法中增添非平面假设模型,扩展SVO算法并融合改进后的Census变换,通过最小化地图点的Census变换误差来得到更准确的相机位姿,同时构建环境地图. 在EuRoC、New Tsukuba Stereo与TUM公开数据集上的图像实验表明,VC-SVO实现了光照变化情况下的位姿估计,验证了算法的有效性. VC-SVO算法的精度和鲁棒性要优于已开源的SVO和基于直接法的大范围定位和地图构建(LSD-SLAM)算法.

关键词: 改进Census变换 ; 半直接单目视觉里程计(SVO) ; 同时定位与建图(SLAM) ; 半直接法 ; 单目视觉

Abstract

A monocular visual odometry based on improved Census transform, vector-Census semi-direct monocular visual odometry (VC-SVO), was proposed, in order to solve the failure problem of the direct visual odometry in the scene of illumination changes. Census transform is a kind of non-parametric transformation in the field of stereo vision, which can effectively reduce the impact of illumination change on the image. The Census transform was introduced into the back-end optimization in SLAM, the expression of traditional Census transform was improved, and the improved Census transform was transformed into Euclidean space successfully. At the same time, a new method to measure the degree of difference was designed. The non-plane hypothesis model of the scene was added into SVO algorithm. The SVO algorithm was extended and the improved Census transform was integrated. The Census transform was integrated to obtain more accurate camera pose by minimizing the Census transform error of the map points, at the same time, the environment map was constructed. Image experiment results on EuRoC, New Tsukuba Stereo and TUM dataset demonstrate the effectiveness and accuracy of the algorithm in illumination change situation. The accuracy and robustness were better than that of the open source SVO and large-scale direct monocular simultaneous localization and mapping (LSD-SLAM) algorithm.

Keywords: improved Census transform ; semi-direct monocular visual odometry (SVO) ; simultaneous localization and mapping (SLAM) ; semi-direct method ; monocular vision

PDF (1702KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

蔺志伟, 李奇敏, 汪显宇. 基于改进Census变换的单目视觉里程计. 浙江大学学报(工学版)[J], 2021, 55(8): 1500-1509 doi:10.3785/j.issn.1008-973X.2021.08.011

LIN Zhi-wei, LI Qi-min, WANG Xian-yu. Monocular visual odometry based on improved Census transform. Journal of Zhejiang University(Engineering Science)[J], 2021, 55(8): 1500-1509 doi:10.3785/j.issn.1008-973X.2021.08.011

同时定位与建图(simultaneous localization and mapping,SLAM)[1-2]是指搭载特定传感器的移动主体,在移动的过程中通过搭载的传感器数据进行自主定位,同时构建出周边环境地图. 由于相机具有安装方便、结构简单和应用场景丰富等特点,被广泛使用在SLAM系统中.

作为传感器的相机主要分单目相机[3]、双目相机[4]和深度相机[5]. 双目相机可以通过计算视差来计算出像素点的深度,但是视差的计算极其消耗计算资源,甚至需要GPU加速;深度相机通过结构光或飞行时间(time of flight,ToF)的方法直接测量物体的深度信息,但成本高昂. 单目相机成本低并且易于标定和安装,故本研究算法使用单目相机.

视觉SLAM算法按照是否须提取图像中的特征点分为特征点法[6-7]和直接法[8-10]. 特征点法在连续图像之间提取关键点和计算描述子,通过最小化重投影误差来计算相机的位姿[11]. 特征点法须依赖正确的匹配,才能准确估计位姿,并且特征匹配须消耗大量的时间. 直接法无须计算特征点和描述子,直接对图像的灰度进行操作,通过最小化光度误差来计算相机运动,因此计算速度快、准确度高.

Forster等[10]设计实现了基于直接法的视觉里程计-半直接单目视觉里程计(semi-direct monocular visual odometry,SVO),标志着直接法在SLAM中的成功应用. 但直接法须满足灰度不变假设[12](brightness constancy assumption,BCA),即同一个空间点的像素灰度,在各个图像中保持不变. 在实际环境中,由于光照变化,BCA假设经常失效. 因此,改进的SLAM算法开始逐渐受到关注. Engel等[9]在LSD-SLAM的基础上设计实现了直接稀疏里程计(direct sparse odometry,DSO),该算法提出了更为细致的光度模型,能够让算法更加鲁棒,但是对相机要求更高,成本高昂. Park等[12]提出Census变换[13]可以用于实际的光照变化场景中,同时也指出Census变换不适合使用在基于图像梯度优化的直接法中. 在立体视觉领域,Census变换是对于光照变化有鲁棒性的局部二进制描述子. 但直接法中用于计算相机位姿的光度误差定义在欧氏空间中,将二进制的Census变换结果直接应用在直接法中会造成算法严重的计算误差.

为了改善直接法在光照变化场景下的鲁棒性同时降低硬件的成本,提出基于改进Census变换的单目视觉里程计,向量Census变换半直接单目视觉里程计(vector-Census semi-direct monocular visual odometry,VC-SVO). 首先改进Census变换的表达形式,使其应用在欧氏空间中. 之后,改进SVO算法并融合改进的Census变换,通过最小化对应地图点的Census变换误差计算相机的位姿. 最后,采用均匀-高斯混合分布的逆深度滤波器[14]对特征点进行深度估计,同时构建出稀疏的环境地图. 在EuRoC[15]、New Tsukuba Stereo[16]和TUM数据集上的实验表明,VC-SVO在光照变化场景下可以有效地估计出相机的位姿.

1. Census transform的改进

局部二值模式(local binary pattern,LBP)[17]在机器视觉领域是非常重要的特征,LBP是简单、有效的纹理分类的特征提取算法. Zabih等[13]研究了一种二进制表示方法,名为Census transform(CT),Census变换是局部二进制描述子,就是使用图像中某一点的灰度与周围像素灰度进行比较,因此光照变化引起的像素的同增同减不会改变Census变换的值,对于光照变化有较好的鲁棒性.

1.1. Census变换

Census变换以某个像素点作为中心点选择3×3大小的矩形窗口,用中心像素n的灰度作为参考值,与除中心之外的每一个像素m的灰度进行比较,如果中心像素灰度大于等于该点的灰度,那么该点的Census变换值设为0,反之,设为1.

$\xi (I(n),I(m))\; = \;\left\{ \begin{array}{l} 0\;,\;\;\;I(n) \geqslant I(m);\;\; \\ 1\;,\;\;\;I(n) < I(m) . \end{array} \right.$

式中:I为像素灰度,ξ为Census变换值.

之后按顺序排列,得到最终的结果,变换后的结果为8位二进制码.

${\rm{Cen}}(n)\; = \;\mathop \otimes \limits_{{m_i} \in W(n)} \;\xi ((I(n),I({m_i})) .$

式中: $ \otimes $为将结果连接起来,W(n)为矩形窗口内除了中心像素 $n$之外的其他像素.

变换过程如图1所示,在 $3 \times 3$的矩形窗口中,中心像素的灰度为87,窗口内的其他像素灰度如图所示,其Census变换后的二进制结果为00101110.

图 1

图 1   Census transform示意图

Fig.1   Schematic diagram of Census transform


1.2. V-Census变换

为了保证Census变换的结果对光照变化有较好的鲁棒性,比较就要在二进制的形式下进行,一般采用汉明距离. 汉明距离是指2个二进制结果之间不同位数的个数.

直接法是在欧氏空间中进行推导和计算的. 对于参考图像上的像素点,假设其灰度为215,通过最开始的位姿估计得到在新的图像上的灰度为123,光度误差的计算采用欧氏距离,直接相减,得到误差结果92. 通过不断调整位姿,可以减少这个误差.

图1为例,若在新的图像上对应像素点处的Census变换的结果为10101110,与参考点的变换结果00101110,只有最高位不同,在物理意义上这2点是极为接近的. 但是在欧氏空间中,若直接相减其结果相差27,这会将优化引导到错误的方向上. 因此,二进制的变换形式是无法用最小二乘法进行非线性迭代优化[18]的,所以Census变换只能进行立体匹配,无法进行后端优化.

为了将Census变换与直接法相结合,改善直接法在光照变化场景下的定位失败问题,提出改进的Census变换:V-Census变换,变换形式如下:

${\boldsymbol{V}}(n)\; = \left[ \begin{array}{c} \xi (I(n),I({m_1})) \\ \vdots \\ \xi (I(n),I({m_{^8}})) \\ \end{array} \right]\in {{\bf{R}}^8} .$

存储Census变换的每一位,将其变换为八位向量进行存储,这样就避免了二进制结果. 由于改变了Census变换的结果形式,故采用SSD[19](sum of squared distance)方式进行差异计算.

$ \begin{split} {\rm{V{\text{-}}Cen}}({n_1},{n_2})\; = \;&\sum\limits_{i = 1}^8 {||\xi ((I({n_1}),I({m_{i1}}))\;} - \\ \;& \xi ((I({n_2}),I({m_{i2}}))|{|^2} . \end{split} $

式中:n1n2为2个矩形方阵的中心,mi为除矩阵中心之外的元素.

使用SSD来衡量2个V-Census变换,在几何意义上与汉明距离一致. 由式(4)可知,V-Census变换之后的向量排列顺序对SSD的计算结果没有影响.

2. 算法流程

本研究算法流程参考SVO算法框架,如图2所示. 整体分为位姿估计与地图构建2个线程,以提高运行效率.

图 2

图 2   VC-SVO算法总体设计图

Fig.2   Overall design of VC-SVO algorithm


在位姿估计线程中,改进了SVO的初始化策略,采用当前帧与参考帧进行Lucas-Kanade[20]光流追踪,同时统计追踪到的特征点视差,根据视差的大小判断计算单应矩阵H[21]或本质矩阵E[21]. 通过不断调整帧间位姿来最小化特征块像素V-Census误差. 在建图线程中,对初始化得到的特征点进行深度估计,并对关键帧上的特征点进行深度滤波,得到特征点的深度信息,构建稀疏环境地图.

当发生跟踪丢失时,SVO的重定位策略是,只有当相机运动到跟丢的位置时,才能重定位回来. 因此,须改进SVO中的重定位策略,改进如下:1)跟丢之后,假设当前帧与最近的关键帧位姿一样,将地图点投影到当前帧上,不限制地图点的投影位置,允许地图点的集中,并进行位姿估计,若位姿估计成功,则重定位成功,将关键帧位姿设置为当前帧位姿. 若失败,就继续下一帧. 2)若持续多帧重定位失败,则说明相机运动距离较大,地图点投影失败,须重新进行初始化,并使用最近关键帧的位姿作为初始化位姿.

2.1. 特征均匀分布

对最开始的图像进行加速段测试特征点提取(features from accelerated segment test,FAST)[22],为之后的初始化做准备. 特征点的提取对于相机位姿的估计起着至关重要的作用,但传统的FAST特征点提取存在着特征点分布不均匀、特征点集中的现象,严重影响相机的位姿估计与初始化地图点的质量,因此本研究实现了一种特征点均匀化的处理算法.

构建输入图像的图像金字塔模型,对金字塔每一层图像进行四叉树网格划分,在网格内进行FAST特征点检测. 对于特征不明显的网格,进行降阈值检测. 对于网格内存在的多个特征点,采用非极大值抑制(non-maximum suppression,NMS)[23]的方法,使得每个网格内只存在一个最优特征点. 从而实现在整张图像上的特征点均匀提取.

图3所示为特征均匀化的效果图,同时使用EuRoC数据集中的MH_01图像序列进行对比试验,用以验证均匀化特征点对位姿估计结果的影响. 如图4所示为特征均匀化前、后对相机位姿估计的影响. 图中,Δe为误差. 可以看出,均匀化特征点提取策略有效地提高了位姿估计的精度.

图 3

图 3   特征均匀化效果图

Fig.3   Effect of homogenizing features


图 4

图 4   MH_01序列均匀化效果对比图

Fig.4   MH_01 sequence homogenization comparison


2.2. 非平面场景假设模型

由于SVO的目标应用场景是无人机的俯视相机,认为所有的特征点都位于同一平面上,这就是平面假设模型. 对于相机俯视的情况,所有特征点位于同一平面是成立的,此时相邻图像上特征点的对极约束由单应矩阵H来描述. 但在实际应用中,更多的是相机前视的情况.

当相机前视时,场景的特征点不是在同一个平面上的,因此须补充非平面场景假设模型. 当SVO单目初始化时,根据KLT光流追踪的结果,统计每一个追踪到的特征点的视差,并计算所有特征点视差的标准差. 当视差的标准差大于一定阈值时,则认为特征点之间的深度差距过大,特征点应位于不同的平面上,此时特征点的对极约束由本质矩阵E来描述,使用随机采样性一致(random sample consensus, RANSAC)来求解相机位姿. 当标准差小于阈值时,则认为平面假设成立,由单应矩阵H求解相机位姿,初始化流程如图2所示.

2.3. 位姿估计

设空间中一点P的世界坐标P=(X, Y, Z),对应的相邻2帧图像的像素坐标为p1=(u1, v1)和p2=(u2, v2),fxfycxcy为相机的内参,相邻的2帧图像的位姿分别为Tc1wTc2w,2帧之间的位姿变换为Tc2c1. 通过优化2帧图像上对应特征点的V-Census误差来计算相机位姿:

$\mathop {{\rm{min}}}\limits_{\boldsymbol{\theta }}\; {{J}}({\boldsymbol{\theta }}) = \sum\limits_{i = 1}^N {({\rm{V \text{-} Cen}}({{{p}}_{{{1i}}}},{{{p}}_{{{2i}}}})} ) .$

式中: ${\boldsymbol{\theta }}$为对应的李代数, ${\boldsymbol{\theta }} \in {\rm{se}}(3)$p1ip2i为相邻2幅图像上对应的特征点,1、2表示第1、2幅图像,i表示第i个特征点;N为图像中特征点数量.

对于这个非线性最小二乘问题,采用高斯-牛顿法[19]进行求解. 为了加快计算,采用逆向组合算法[20](inverse compositional algorithm,IC),得到公式:

$ \begin{split} \Delta{\boldsymbol{ \theta }} = \;&\mathop {\arg \min }\limits_{{{\Delta {\rm{\theta}} }}}\; \sum\limits_{p = 1}^N {\sum\limits_{i = 1}^8 {{\rm{||}}{{\boldsymbol{V}}_{1i}}{\rm{(}}} {{w}}({{P}};\;\Delta{\boldsymbol{ \theta }}))} - \\ \;&{{\boldsymbol{V}}_{2i}}({{w}}({{P}};\;{\boldsymbol{\theta }})){\rm{|}}{{\rm{|}}^{\rm{2}}} . \end{split} $

式中:Vi1Vi2p1p2处的V-Census变换,w表示从空间点到像素点的变换.

对变换后的非线性公式(式(6))在θ的附近进行一阶泰勒展开,由链式规则得到

$ \sum\limits_{p = 1}^N {\sum\limits_{i = 1}^8 {{\rm{||}}{{\boldsymbol{V}}_{1i}}{\rm{(}}} {{w}}({{P}};\;\Delta{\boldsymbol{ \theta }})) + \frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}\Delta{\boldsymbol{ \theta }} - } \\ {{\boldsymbol{V}}_{2i}}({{w}}({{P}};\;{\boldsymbol{\theta }})){\rm{|}}{{\rm{|}}^{\rm{2}}} . $

为了求其近似解,对 $\Delta{\boldsymbol{ \theta }}$求偏导,并令其等于0,得到式(7)最小化时的近似解:

$ \begin{split} \;&\sum\limits_{p = 1}^N {\sum\limits_{i = 1}^8 {{{\left( {\frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}} \right)}^{\rm{T}}}\left( {\frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}} \right){\boldsymbol{\Delta \theta }}} } \; = \sum\limits_{p = 1}^N {\sum\limits_{i = 1}^8 {} } \\ \;&\qquad{\left( {\frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}} \right)^{\rm{T}}} \times ({{\boldsymbol{V}}_{1i}}({{w}}({{P}};\;\Delta {\boldsymbol{\theta }})) - \;{{\boldsymbol{V}}_{2i}}({{w}}({{P}};\;{\boldsymbol{\theta }}))) . \\[-9pt] \end{split} $

${\left( {\dfrac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\dfrac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}} \right)^{\rm{T}}}\left( {\dfrac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\dfrac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}} \right)$近似作为式(6)在 ${\boldsymbol{\theta }}$附近进行二阶泰勒展开计算出的海塞矩阵. 其中,

$\frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {\boldsymbol{\theta }}}}\; = \;\frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\frac{{\partial {{w}}}}{{\partial {{{P}}_{\rm{c}}}}}\frac{{\partial {{{P}}_{\rm{c}}}}}{{\partial {\boldsymbol{\theta }}}} .$

式中: $\dfrac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}$为在参考帧上 ${{{p}}_1}$点处的V-Census变换对像素坐标的导数,Pc为相机坐标系下的空间点P的坐标.

$ \frac{{\partial {{\boldsymbol{V}}_{1i}}}}{{\partial {{w}}}}\; = \;\;\left[\sum\limits_{i = 1}^8 {\xi (I({p_{1x}}),I({q_{ix}}))} , \; \sum\limits_{i = 1}^8 {\xi (I({p_{1y}}),\;I({q_{iy}}))} \right]^{\rm{T}}. $

式中:p1xp1y为原始图像上p1点处 $x$$y$方向上的V-Census梯度,qi为除了矩形中心像素p1之外的矩形窗口的其他像素.

变换后的一阶导数保留了与直接法中的像素梯度同样的性质[24],因此能够把优化引导到正确的方向上.

计算如下:

$ \dfrac{{\partial {{w}}}}{{\partial {{{P}}_{\rm{c}}}}}\;\dfrac{{\partial {{{P}}_{\rm{c}}}}}{{\partial {\boldsymbol{\theta }}}}\; = \;\dfrac{{\partial {{w}}}}{{\partial {{{P}}_{\rm{c}}}}}\;\dfrac{{\partial {\boldsymbol{T(\theta )}}\;{{P}}}}{{\partial {\boldsymbol{\theta }}}} = \\ \left[ {\begin{array}{*{20}{c}} {\dfrac{{{f_x}}}{{{z_{c1}}}}}&0 \\ 0&{\dfrac{{{f_y}}}{{{z_{c1}}}}} \end{array}\;\;\;\;\begin{array}{*{20}{c}} { - \dfrac{{{f_x} {x_{c1}}}}{{{z_{c1}}^2}}}&{ - \dfrac{{{f_x} {x_{c1}} {y_{c1}}}}{{{z_{c1}}^2}}} \\ { - \dfrac{{{f_y} {y_{c1}}}}{{{z_{c1}}^2}}}&{ - {f_y} - \dfrac{{{f_y} {y^2}_{c1}}}{{{z_{c1}}^2}}} \end{array}\;\;\;\;\begin{array}{*{20}{c}} {{f_x} + \dfrac{{{f_x} {x^2}_{c1}}}{{{z_{c1}}^2}}}&{ - \dfrac{{{f_x} {y_{c1}}}}{{{z_{c1}}}}} \\ {\dfrac{{{f_y} {x_{c1}} {y_{c1}}}}{{{z_{c1}}^2}}}&{\dfrac{{{f_y} {x_{c1}}}}{{{z_{c1}}}}} \end{array}} \right] . $

式中: $\dfrac{{\partial {{w}}}}{{\partial {{{P}}_{\rm{c}}}}}$为投影过程对三维空间点的雅可比矩阵, $\dfrac{{\partial {{{P}}_{\rm{c}}}}}{{\partial {\boldsymbol{\theta }}}}$为三维空间点对变换矩阵的李代数 ${\boldsymbol{\theta }}$的雅可比矩阵,Tθ对应的位姿,Xc1Yc1Zc1为在第1幅图像下的空间坐标.

在每次迭代求出 ${\boldsymbol{\Delta \theta }}$之后,对位姿进行更新:

${{\boldsymbol{T}}_{{{{\rm{c2c1}}}}}}\; = \;{{\boldsymbol{T}}_{{{{\rm{c2c1}}}}}}{\boldsymbol{T}}({\boldsymbol{\Delta \theta }})\; = \;{{\boldsymbol{T}}_{{{{\rm{c2c1}}}}}}\exp\; ({\boldsymbol{\Delta }}{{\boldsymbol{\theta }}^ \wedge }) .$

式中: ${\boldsymbol{\Delta }}{{\boldsymbol{\theta }}^ \wedge }$${\boldsymbol{\Delta \theta }}$对应的反对称矩阵.

直到迭代终止,得到优化后的Tc2c1.

2.4. 关键帧选取

合适的关键帧不仅可以更好地估计相机的位姿,还可以加速建图线程中地图点的收敛速度.

SVO算法由于采用平面模型假设,在选择关键帧时,仅使用平移量作为新的关键帧选择策略. 由于补充了非平面模型假设,因此,设计新的关键帧选择策略:1)若当前帧上投影的地图点数量小于一定阈值,将当前帧设为关键帧. 2)若当前帧与相邻帧的平移量或旋转量大于一定阈值,将当前帧设为关键帧. 3)若当前帧上投影点位置与最近关键帧上的特征点位置的差值大于一定阈值,将当前帧设为关键帧.

表1所示为在EuRoC数据集中MH_01、MH_02与MH_03图像序列中关键帧数量的变化对比图. 可以看出,新的关键帧提取策略提高了关键帧选择的效率.

表 1   各序列关键帧数量对比

Tab.1  Comparison of number of key frames

图像序列 改进前数量 改进后数量
MH_01 84 329
MH_02 77 301
MH_03 65 296

新窗口打开| 下载CSV


3. 实验分析

本研究算法使用C++和OpenCV实现,图形界面使用Pangolin实现,系统配置为Linux16.04,CPU为Inteli5-8400,8 G内存. 使用MH_01图像序列进行算法耗时统计,结果如表2所示.可以看出,KLT光流追踪耗时最长,但是只在初始化过程中实现一次,因此在实际运行过程中,平均每帧图像耗时总长为24.66 ms,运行速度为41帧/s,基本满足实时性要求.

实验数据使用EuRoC数据集、New Tsukuba Stereo数据集与TUM数据集进行实际图像实验. 对实验的结果采用相对位姿误差(relative pose error,RPE)进行评估. 在与轨迹的真实值作对比时,使用EVO(evaluation of odometry and SLAM)工具进行数据对齐.

表 2   算法各步骤耗时

Tab.2  Time cost of each step of algorithm

算法步骤 耗时/ms 总时间/ms
特征点提取 5.74 90.53
KLT光流追踪 67.88
V-Census变换 6.87
计算位姿 10.04
优化像素位置 1.83 2.01
优化位姿 0.16
优化地图点 0.02

新窗口打开| 下载CSV


3.1. EuRoC数据集

EuRoC数据集由苏黎世联邦工业大学ASL实验室使用微型飞行器采集得到,微型飞行器挂载双目全局VIO相机,记录了200 Hz的IMU数据以及20 Hz的双目相机图像. 此外,数据集还提供了毫米级的真实轨迹数据. 由于VC-SVO算法是单目视觉里程计,只使用EuRoC数据集中的单目图像数据.

本研究使用MH_02和MH_03图像序列进行实验,其中MH_02序列满足BCA假设,而MH_03序列不满足. 使用MH_02图像序列来评价VC-SVO的轨迹精度,如图56所示为在MH_02图像序列下的轨迹对比图和局部放大图.可以看出,LSD-SLAM与SVO都发生了较为明显的漂移,而VC-SVO所估计的轨迹更接近于真实轨迹. 这是由于对SVO算法扩展了非平面假设模型,使得VC-SVO算法的精度更好. 对于LSD-SLAM,因为要计算所有带梯度的像素点,计算量大,当相机运动较快时,极易造成位姿估计错误.

图 5

图 5   MH_02序列轨迹对比图

Fig.5   MH_02 sequence trajectory comparison


图 6

图 6   MH_02局部放大图

Fig.6   Local enlarged figure of MH_02 sequence


表3所示为各算法的误差,其中,误差的衡量标准为均方根误差(root mean square error,RESM)和误差的中位数(median,M). 可以看出,在满足灰度不变假设的情况下,本研究的算法VC-SVO在定位准确度上要优于改进后的SVO和LSD-SLAM. 在MH_02图像序列上,VC-SVO与SVO算法相比,均方根误差减小了9.56%,误差中位数减小了3.65%;与LSD-SLAM算法相比,均方根误差减小了6.52%,误差中位数减小了1.36%.

表 3   MH_02序列下各算法误差

Tab.3  Error of each algorithm under MH_02 sequence

算法 RMSE/ms−1 M/ms−1
SVO 0.0285990 0.0238094
LSD-SLAM 0.0275552 0.0232427
VC-SVO 0.0258653 0.0229387

新窗口打开| 下载CSV


图7所示,最终构建出稀疏环境地图. 光照变化导致MH_03序列上出现了图像整体的亮暗变化. 如图8所示为MH_03序列上的典型图像变化.

图 7

图 7   稀疏地图构建

Fig.7   Building of sparse map


图 8

图 8   典型的图像亮度变化

Fig.8   Typical image brightness changes


使用MH_03序列来验证算法在光照变化场景下的可行性与准确性. 如图9所示为在MH_03图像序列下的轨迹图,并与LSD-SLAM、SVO进行轨迹比较.可以看出,由于不满足BCA假设,SVO算法在刚开始就定位失败,xyz方向上的位姿没有任何变化. 如图10所示为MH_03序列局部放大图. 可以看出,LSD-SLAM算法在不满足灰度不变假设的情况下,只有最开始的位姿估计,之后算法停止,没有位姿输出,算法定位失败. 本研究所提出的算法VC-SVO在不满足灰度不变假设的情况下成功估计了相机的位姿,但在图9的第2个框中,VC-SVO算法发生了丢失现象. 丢失的原因是MH_03图像序列除了有场景的明暗变化,还存在完全的黑暗状况,如图11所示. 场景的完全黑暗导致算法出现跟踪丢失.但在离开黑暗环境后,改进后的重定位方法使得VC-SVO重定位成功,构建了具有全局一致性的稀疏环境地图.

图 9

图 9   MH_03序列轨迹对比图

Fig.9   MH_03 sequence trajectory comparison


图 10

图 10   MH_03序列局部放大图1

Fig.10   Local enlarged figure of MH_03 sequence


图 11

图 11   MH_03序列中的黑暗场景

Fig.11   Dark scene in MH_03 sequence


3.2. New Tsukuba Stereo数据集

New Tsukuba Stereo数据集是日本筑波大学使用计算机图形技术生成的模拟的室内场景数据集,同时也给出了摄像机在每帧上的三维位置和方向,可以对计算结果进行评估. New Tsukuba Stereo数据集提供了双目图像以及对应的视差图,本实验仅使用其中的单目数据.

数据集包含不同光照条件下的图像序列,使用daylight图像序列进行实验,在daylight图像序列中同样有图像整体的亮暗变化,如图12所示.日光影响造成图像整体的变亮. 因此,使用daylight图像序列进行实验,验证VC-SVO在光照变化场景下的有效性与准确性. 如图13所示为SVO、LSD-SLAM与VC-SVO在daylight图像序列下的轨迹对比图.可以看出,VC-SVO完整地估计了相机的真实位姿,SVO算法与LSD-SLAM算法由于光照的影响,估计的位姿与真实值有较大的误差. VC-SVO在xyz方向上的误差远小于SVO与LSD-SLAM的.

图 12

图 12   daylight序列中的光照增强场景

Fig.12   Illumination enhancement scene in daylight sequence


图 13

图 13   daylight序列轨迹对比图

Fig.13   Daylight sequence trajectory comparison


表4所示为各算法估计位姿与真实位姿之间欧氏距离的误差.可以看出,VC-SVO算法在不满足灰度不变假设的情况下依旧有效,并且VC-SVO的均方根误差比SVO和LSD-SLAM分别减少了56.76%和48.04%,误差中位数分别减小了46.65%与48.88%,VC-SVO的定位精度明显优于SVO与LSD-SLAM.

表 4   daylight序列下各算法误差

Tab.4  Error of each algorithm under daylight sequences

算法 RMSE/ms−1 M/ms−1
SVO 4.06884 2.21581
LSD-SLAM 3.38588 2.31256
VC-SVO 1.75917 1.18218

新窗口打开| 下载CSV


3.3. TUM数据集

TUM数据集是德国慕尼黑工业大学提供的公开数据集,包含多个室内与室外的场景,包括RGB-D数据集与单目数据集,每个数据集均提供了相机真实位姿,用于评估视觉里程计与视觉SLAM的精度.

使用fr1/360图像序列进行对比实验,这是一个手持相机的图像序列,由于手持相机的缘故,图像较为模糊,此外也存在场景的亮暗变化,如图14所示.场景的光照条件变化导致图像产生整体明显的亮暗变化. 如图1516所示为在fr1/360图像序列下的旋转轨迹对比图和局部放大图. 图中,θrθpθy分别为俯仰角、偏航角、翻滚角. 由图16可以看出,由于不满足BCA假设,SVO算法在刚开始就定位失败,θrθpθy的估计出现了严重的错误. LSD-SLAM算法在初始化之后就定位失败,之后算法停止,旋转角度没有任何变化. 而VC-SVO则较为准确地估计出相机位姿. 对比实验说明VC-SVO在满足灰度不变假设的情况下,定位精度高于SVO与LSD-SLAM算法,验证了算法的定位精度;在不满足灰度不变假设的情况下,VC-SVO仍能成功地估计相机的位姿,验证了本研究算法的有效性.

图 14

图 14   光照对亮度变化的影响

Fig.14   Effect of light on brightness change


图 15

图 15   fr1/360序列旋转轨迹对比

Fig.15   Comparison of rotation trajectory of fr1/360 sequence


图 16

图 16   fr1/360序列局部放大图

Fig.16   Local enlarged figure of Fr1/360 sequence


4. 结 语

针对直接法在光照变化情况下的算法失效问题,设计了融合改进Census变换的单目视觉里程计,向量Census变换单目里程计(VC-SVO). 使用可以减少光照变化影响的Census变换来代替图像原来的灰度,并对Census变换进行改进,使其成功地在非线性优化中使用. 同时推导了融合Census变换后的数据关联算法、状态更新模型,使用均匀-高斯混合分布的逆深度滤波器对地图点进行优化,完成了位姿估计与地图构建.

在公开数据集EuRoC、New Tsukuba Stereo以及TUM上的实验表明,融合Census变换的单目视觉里程计(VC-SVO)在满足灰度不变假设情况下,相对位姿误差的均方根比SVO算法和LSD-SLAM算法分别减少9.56%和6.52%;在有光照变化的情况下,相对位姿误差的均方根比SVO算法和LSD-SLAM算法分别减少56.76%和48.04%;在光照明显变化的场景下,VC-SVO成功估计了相机的位姿,而SVO与LSD-SLAM则发生了算法失败,证明了本研究算法的有效性与准确性.

尽管本研究算法在光照变化场景下有较好的表现,但仍然出现了在黑暗场景下失效的问题,可以在融合惯性测量单元等其他传感器信息和融合点特征、线特征与面特征,这两方面进行改进,以获得精度和鲁棒性更高的单目视觉里程计.

参考文献

SMITH R, CHEESEMAN P

On the representation and estimation of spatial uncertainty

[J]. International Journal of Robotics Research, 1986, 5 (4): 56- 68

DOI:10.1177/027836498600500404      [本文引用: 1]

SMITH R, SELF M, CHESSEMAN P. Estimating uncertain spatial relationships in robotics[C]// Autonomous Robot Vehicles. NewYork: IEEE, 1990: 167–193.

[本文引用: 1]

刘敏浩, 章国锋, 鲍军虎

基于单目视觉的同时定位与地图构建算法综述

[J]. 计算机辅设计与图形学学报, 2016, 28 (6): 855- 868

URL     [本文引用: 1]

LIU Min-hao, ZHANG Guo-feng, BAO Jun-hu

Overview of simultaneous localization and mapping algorithms based on monocular camera

[J]. Journal of Computer-Aided Design and Computer Graphics, 2016, 28 (6): 855- 868

URL     [本文引用: 1]

KROMBACH N, DROESCHEL D, BEHNKE S. Combining feature-based and direct methods for semidense real-time stereo visual odometry[C]// International Conferenceon Intelligent Autonomous Systems. Berlin: IEEE, 2016: 855-868.

[本文引用: 1]

ENDRESS F, HESS J, STURM J, et al

3D mapping with an RGB-D camera

[J]. IEEE Transactions on Robotics, 2017, 30 (1): 177- 187

[本文引用: 1]

MUR-ARTAL R, MONTIEL J M, TARDOS J D

ORB-SLAM: a versatile and accurate monocular SLAM system

[J]. IEEE Transactions on Robotics, 2015, 31 (5): 1147- 1163

DOI:10.1109/TRO.2015.2463671      [本文引用: 1]

LOWE D

Distinctive image features from scale-invariant keypoints

[J]. International Journal of Computer Vision, 2004, 60 (2): 91- 110

DOI:10.1023/B:VISI.0000029664.99615.94      [本文引用: 1]

ENGEL J, SCHOPS T, CREMERS D. LSD-SLAM: Large-scale direct monocular SLAM[C]// European Conference on Computer Vision. Berlin: IEEE, 2014: 834-849.

[本文引用: 1]

ENGEL J, KOLTUN V, CREMERS D

Direct sparse odometry

[J]. Transactions on Pattern Analysis and Machine Intelligence, 2018, 40 (3): 611- 625

DOI:10.1109/TPAMI.2017.2658577      [本文引用: 1]

FORSTER C, PIZZOLI M, SCARAMUZZA D. SVO: fast semi-direct monocular visual odometry[C]// International Conference on Robotics and Automation. Piscataway: IEEE, 2014: 15-22.

[本文引用: 2]

MURARTAL R, TARDOS J D

ORB-SLAM2: an open-source SLAM system for monocular, stereo, and RGB-D cameras

[J]. Transactions on Robotics, 2017, 33 (5): 1255- 1262

DOI:10.1109/TRO.2017.2705103      [本文引用: 1]

PARK S, SCHOPS T, POLLEFEYS M. Illumination change robustness in direct visual SLAM[C]// International Conference on Robotics and Automation. Singapore: IEEE, 2017: 4523-4530.

[本文引用: 2]

ZABIH R, WOODFILL J. Non-parametric local transforms for computing visual correspondence[C]// European Conference on Computer Vision. Berlin: Springer, 1994, 801: 151-158.

[本文引用: 2]

PIZZOLI M, FORSTER C, SCARAMUZZA D. REMODE: probabilistic, monocular dense reconstruction in real time[C]// 2014 IEEE International Conference on Robotics and Automation. Hong Kong: IEEE, 2014: 2609–2616.

[本文引用: 1]

BURRI M, NIKOLIC J, GOHL P, et al

The EuRoC micro aerial vehicle datasets

[J]. International Journal of Robotics Research, 2016, 35 (10): 1157- 1163

DOI:10.1177/0278364915620033      [本文引用: 1]

MARTULL S, MARTIN P, KAZUHIRO F. Realistic CG stereo image dataset with ground truth disparity maps[C]// International Conference on Pattern Recognition Workshop. TrakMark: IEEE, 2012, 111: 117–118.

[本文引用: 1]

OJALA T, PIETIKAINEN R, HARWOOD D

A comparative study of texture measures with classification based on featured distributions

[J]. Pattern Recognition, 1996, 29 (1): 51- 59

DOI:10.1016/0031-3203(95)00067-4      [本文引用: 1]

VOGEL C, ROTH S, SCHINDLER K. An evaluation of data costs for optical flow[C]// 2013 German Conference on Pattern Recognition. Berlin: Springer, 2013, 8142: 343-353.

[本文引用: 1]

高翔, 张涛, 颜沁睿, 等. 视觉SLAM十四讲: 从理论到实践[M]. 北京: 电子工业出版社, 2017.

[本文引用: 2]

BAKER S, GROSS R, MATTHEWS I

Lucas Kanade 20 years on: a unifying framework

[J]. International Journal of Computer Vision, 2004, 56 (3): 221- 255

DOI:10.1023/B:VISI.0000011205.11775.fd      [本文引用: 2]

HARTLEY R, ZISSERMAN A. Multiple view geometry in computer vision[M]. London: Cambridge University Press, 2003.

[本文引用: 2]

ROSTEN E, PORTER R, DRUMMOND T

Faster and better: a machine learning approach to corner detection

[J]. IEEE Transactions on Software Engineering, 2010, 32 (1): 105- 119

URL     [本文引用: 1]

NEUBECK A, GOOLL J. Efficient non-maximum suppression[C]// International Conference on Pattern Recognition. Hong Kong: IEEE, 2006, 479: 850-855.

[本文引用: 1]

HATEM A, BRETT B, SIMON L. Bit-planes: dense subpixel alignment of binary descriptors[EB/OL]. [2016-01-31]. https://arxiv.org/abs/1602.00307.

[本文引用: 1]

/