融合光度参数估计的单目直接法视觉里程计
2021-05-11潘树国喻国荣
谭 涌,潘树国,高 旺,盛 超,章 辉,喻国荣
(1.东南大学 仪器科学与工程学院,江苏 南京 210096;2.东南大学 交通学院,江苏 南京 210096)
视觉里程计(Visual Odometry)能够通过相邻图像帧的信息估计相机的运动,并恢复场景的空间结构[1-2]。按照是否需要提取特征点,视觉里程计可以分为直接法和特征点法,与特征点法相比,直接法视觉里程计基于灰度不变假设,根据像素的灰度信息来估算相机的运动,具有不需计算特征点和描述子、能够使用更多的像素信息、能够适用于低纹理环境等优点[2-3]。随着一些先进的直接法视觉里程计(视觉SLAM)算法的出现,如DSO[4](Direct Sparse Odometry)、LSD-SLAM[5]等,直接法视觉里程计逐渐走上主流舞台,成为视觉里程算法中的重要组成部分。由于灰度不变假设是一个很强的假设条件,在现实中可能不会得到满足,因此直接法视觉里程计对光照变化敏感,当场景中存在较大的光照变化时,直接法视觉里程计的定位精度以及鲁棒性将会明显降低。
为了解决直接法对光照变化敏感的问题,文献[6]通过加入线特征来提高视觉里程计对光照变化的鲁棒性,但是该方法对定位精度的改善效果较小。文献[7]提出了对相机进行光度标定,即采用精细的相机成像模型,标定相机成像过程中的光度参数,利用此光度参数校正图像灰度值。该方法需要对相机进行特定的操作,无法从相机任意拍摄的一组视频序列中估计出光度参数。文献[8]提出了一种应用于视觉里程计的任意视频序列光度参数估计方法,该方法利用KLT光流跟踪建立像素之间的关联,然后利用非线性优化方法进行光度参数估计。但是KLT光流跟踪仅在相机运动微小的情况下适用,当相机运动剧烈时,KLT光流跟踪的精度较低,从而导致该方法估计的光度参数精度较低。
针对直接法视觉里程计对光照变化敏感及现有的改进方法存在的问题,本文提出一种包含光度参数估计、图像灰度值校正的单目直接法视觉里程计,并在EuRoC数据集上进行测试,总体框图如图1所示。
图1 本文算法总体框图
1 光度参数估计
对图像灰度值进行校正需要的光度参数先验信息为相机响应函数参数和光学晕影函数参数,本节通过对图像帧进行特征匹配实现特征跟踪,建立图像像素点之间的关联,利用非线性优化方法对相机响应函数参数、光学晕影函数参数进行估计。
1.1 特征跟踪
光度参数估计的首要前提是建立起一系列的空间中的点和图像像素点之间的关联,此过程即为特征跟踪。本文提出的算法利用特征点的描述子进行匹配来实现特征跟踪,基于特征点的描述子的匹配建立的特征跟踪精度高,且对光照变化的鲁棒性强。
1.1.1 特征跟踪流程
设计的特征跟踪流程如图2所示。
图2 特征跟踪流程图
首先判断当前图像帧是否是第一帧,如果当前帧是第一帧,则对其提取特征点并计算相应的描述子,用于与下一帧进行特征匹配。如果当前帧不是第一帧,则先获取上一帧存储的特征点及描述子信息,再对当前帧提取特征点并计算描述子,然后再对两帧的特征点及其描述子信息进行匹配并筛选,最后再进行当前帧特征点激活,激活的特征点用于与下一帧进行特征匹配。
1.1.2 特征点管理
目前常用的特征点有SIFT[9]、ORB[10]、SURF[11],其中SURF特征点的综合性能优于其他两种特征点。因此,本文选用SURF特征点进行特征跟踪。
由图2可知,在特征跟踪过程中,对每个图像帧首先进行特征点提取,作为该帧的特征点的候选点,然后与上一帧进行匹配,最后通过特征点激活策略选择满足条件的候选点使其成为当前帧的特征点,用于与下一帧图像的特征点进行匹配。因此,特征跟踪部分的特征点管理主要为:特征点提取、特征匹配及筛选、特征点激活。
1.1.2.1 特征点提取
特征点提取是每个图像帧处理的第一步,提取到的特征点作为该帧的特征点的候选点。为了使特征跟踪过程能有足够的候选点,对图像帧提取特征点的数量进行判断,如果提取到的特征点数量小于预设阈值,将减小特征点检测阈值并对当前图像帧重新进行特征点提取。
1.1.2.2 特征匹配及筛选
利用特征点的描述子进行匹配来建立特征点的关联,从而进行光度参数估计,所以特征匹配的精度直接决定光度参数估计的精度。特征点的匹配不可避免的存在误匹配,如图3(a)所示,因此合理的特征匹配筛选策略至关重要。
设计的特征匹配筛选策略如下:
1)首先对特征点匹配结果进行交叉过滤;
2)然后利用随机抽样一致性算法(RANSAC)计算基础矩阵,剔除误匹配;
3)最后计算相匹配的特征点的像素坐标的距离,剔除距离大于预设阈值的匹配。
应用特征匹配筛选策略筛选之后的匹配如图3(b)所示,从图3(b)可以看到,筛选之后的匹配几乎不存在误匹配。
图3 特征匹配结果
1.1.2.3 特征点激活
为了使特征跟踪过程中建立数据关联的像素点分布均匀,需要采用合理的特征点激活策略,设计的特征点激活策略如下:
1)将与上一帧匹配到的特征点作为当前帧的特征点;
2)将与匹配到的特征点距离超过预设阈值的候选点作为当前帧的特征点。
特征点激活策略如图4所示,图中蓝色的圆形代表上一帧的特征点,三角形代表当前帧的特征点的候选点,其中蓝色三角形代表当前帧激活的候选点,黑色三角形代表当前帧不激活的候选点。从图4可以看到,不激活的候选点与匹配到的特征点的距离小于预设阈值,即图中的r,激活的候选点为与上一帧特征点建立特征匹配或者与建立了特征匹配的特征点的距离超过了预设阈值r。
图4 特征点激活策略
1.2 光度参数估计及优化
在对图像帧进行特征跟踪后,获得图像帧中特征点对应的空间中点的集合,以及这些空间中的点投影到一系列图像帧中的像素点的集合,基于此信息即可进行后续的光度参数估计。
1.2.1 函数模型
对于相机成像模型,本文参考文献[7]采用的经验模型。
O=f(eV(x)L).
(1)
式中:O是图像像素点灰度值;L是空间中点的辐射度;V(x)是光学晕影函数;f( )是相机响应函数。
对于相机响应函数模型,本文参考文献[12]提出的经验模型。
(2)
式中:f0(x)是利用主成分分析法求出的平均响应函数;hk(x)是基函数;ck为待估计的相机响应函数参数。
对于光学晕影函数模型,本文参考文献[13]提出的经验模型。
(3)
式中:R(x)为像素点位置距图像中心的归一化距离;vl为待估计的光学晕影函数参数。
1.2.2 光度参数估计及优化
通过对相机成像模型以及光度参数估计目标的研究,建立的光度参数估计的误差函数:
(4)
(5)
式中:▽为空间点p在图像帧i中的投影点的梯度。
从误差函数式(4)可以看到,残差项与图像帧的曝光时间、相机响应函数参数、光学晕影函数参数、空间中点的辐射度有关,其中相机响应函数参数、光学晕影函数参数是待估计的参数。本文提出的光度参数估计及优化的算法核心思想是:
第一步,将空间中点的辐射度的估计值与其它3个参数独立分开,同时估计值确定为所有由该点投影得到的像素点的平均灰度值,计算残差项对其他3个参数的雅克比矩阵为:
(6)
式中:c代表相机响应函数参数,即c=(c1,c2,c3,c4);v代表光学晕影函数参数,即v=(v1,v2,v3);r为残差项。
求得雅克比矩阵后,可利用高斯牛顿方程求解迭代变量的增量进行迭代求解,即:
JTWJΔx=JTWr.
(7)
式中:W为权重矩阵;Δx为迭代变量的增量,即Δx=(Δc,Δv,Δei);J为雅克比矩阵,r为残差项。
第二步,确定第一步中估计的3个参数值,计算残差项对空间中点的辐射度Lp的雅克比矩阵,即
(8)
从而可得求解空间中点的辐射度的增量方程为:
(9)
第三步,为了保证估计的相机响应函数参数和光学晕影函数参数是最小二乘意义下的最优解,迭代过程中误差发散的特征点,然后重新进行上述两步操作,在误差小于预设阈值时或者迭代变量的增量小于预设阈值时求解结束,并输出估计的参数值。
2 相机运动跟踪
2.1 图像灰度值校正
通过光度参数估计部分提供的光度参数先验信息进行图像灰度值校正的方法,即:
(10)
式中:I′(x)为校正之后的图像灰度值;x为像素点的位置;f-1( )为相机响应函数的反函数;O为原始图像灰度值;V(x)为光学晕影函数。
2.2 单目直接法视觉里程计
DSO作为单目直接法视觉里程计的代表,在大多数实际情况下具有出色的性能。因此,在对图像灰度值进行校正后,本文算法采用DSO进行位姿估计。
图5为其总体流程框图,其中包含两个部分,分别是前端跟踪和局部优化,通过判断是否能够成为关键帧实现两部分的连接。前端跟踪部分对当前帧利用直接法进行位姿跟踪,初步估计出当前帧的位姿,作为后续优化过程中的位姿初值。局部优化部分为一个由关键帧组成的滑动窗口,通过判断是否创建关键帧以及是否边缘化关键帧实现窗口内的数据更新,窗口内的非线性优化问题包括数据关联和位姿估计,基于最小化光度误差进行求解。若当前帧不能成为关键帧,则利用当前非关键帧与滑动窗口内的关键帧进行点跟踪,更新关键帧中的像素点的逆深度信息。
图5 DSO总体流程框图
3 实验验证与结果分析
为验证提出的算法能够提升单目直接法视觉里程计对光照变化的鲁棒性以及位姿估计精度,本文在实验数据上分别对直接法视觉里程计(后文记为Origin-DSO)和本文提出的算法(后文记为Improved-DSO)进行测试,并比较实验结果。实验数据采用公开的EuRoC MAV数据集中的7个测试序列[14],该数据集包含了不同的房间和工业环境,数据采集过程中存在着明显的光照变化,数据集提供真实轨迹。为表述简便,将该数据集的数据序列简记,如MH_01_easy简记为MH01,其他序列类似。试验平台采用Ubuntu16.04LTS系统的PC,处理器为Intel Core i7-8700,内存为16.0 GB。
图6和图7分别为MH03序列和V103序列分别在Origin-DSO和Improved-DSO中的定位轨迹平面图。由图6可知,在MH03序列上,两个估计结果与实际轨迹基本重合,但是Improved-DSO的轨迹比Origin-DSO的轨迹与真实轨迹的偏离更小,精度更优。由图7可知,在V103序列上,Origin-DSO的估计结果与真实轨迹相差较大,Improved-DSO的估计结果与真实轨迹更为接近。这是由于V103序列中的光照变化比MH03序列中的光照变化更为明显,导致Origin-DSO在V103序列中的定位结果较差,而Improved-DSO由于利用光度参数先验信息进行了图像灰度值校正,增强了对光照变化的鲁棒性,所以Improved-DSO的定位结果与真实轨迹更为接近。
图6 MH03序列的实验结果
图8和图9分别为MH03序列和V103序列分别在Origin-DSO和Improved-DSO中的定位轨迹误差分析图。图8(a)和图9(a)对比了Origin-DSO和Improved-DSO在两个序列上的绝对定位误差,由图可知,Improved-DSO在两个序列上的定位结果误差均更小、精度更优。图8(b)和图9(b)对比了Origin-DSO和Improved-DSO在两个序列上的绝对定位误差箱形图(用于统计分析数据的离散情况),由图可知,Improved-DSO的定位误差上下限值以及中位数和上下四分位数均小于Origin-DSO的定位结果。
图7 V103序列的实验结果
图8 MH03序列的轨迹误差分析
图9 V103序列的轨迹误差分析
表1给出了7种EuRoC数据序列在Origin-DSO和Improved-DSO中的定位结果。由表1可知,本文提出的算法定位结果优于Origin-DSO,定位精度平均提高约18%。
4 结束语
本文提出一种融合光度参数估计的单目直接法视觉里程计,通过对图像帧进行特征跟踪,建立起图像像素点之间的关联,采用非线性优化方法对光度参数进行估计,为图像灰度校正提供光度参数先验信息,单目直接法视觉里程计通过校正后的图像进行相机运动估计,提高了单目直接法视觉里程计在光照变化场景下的定位精度以及鲁棒性。通过EuRoC数据集的实验验证,本文提出的算法的定位精度相比于传统的单目直接法视觉里程计提升约18%。本文算法仍存在不足之处,在对图像帧进行特征跟踪时采用的是基于特征点的描述子的匹配,在低纹理环境下将无法正常工作。未来工作将重点关注融合IMU数据的直接法视觉里程计,通过添加IMU约束,降低对光度误差的依赖,从而提高直接法视觉里程计的定位精度及鲁棒性。
表1 Origin-DSO和Improved-DSO的定位结果对比