泡泡图灵智库,带你精读机器人顶级会议文章
标题:Online Photometric Calibration of Auto Exposure Video for Realtime Visual Odometry and SLAM
作者:Paul Bergmann, Rui Wang, and Daniel Cremers
来源:ICRA 2018
编译:博主
欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权
摘要
大家好,今天为大家带来的文章是——直接法VO/SLAM基石:自动曝光视频在线光度标定。该文章发表于ICRA2018。
近年来,基于直接法的VO/SLAM已经取得了令人瞩目的精度。然而,直接法的一个命门在于其需要进行光度标定,否则就无法达到较好的结果。可惜的是,现有的算法都不能适用于不同的相机,使用未知相机拍摄的视频则更加不能进行光度矫正。
在本文中,我们提出了一种在线光度标定的算法, 能够处理自动曝光的视频,并且VO精度与实验室离线光度标定处理的精度接近。本文的算法恢复了连续帧的曝光时间,相机的响应函数和渐晕引起的传感器辐照度衰减因子。本文中使用了增益补偿的KLT特征,能够获取更鲁邦的特征跟踪和匹配,为非线性优化器提供稳定的输入。
本文在具有真实光度的数据集上进行了测评,发现本文的标定算法能够在任意的视频上获取可信的标定结果。本文也进一步发现本文的在线标定算法能够提高当前直接法的精度。
介绍
目前已经还有大量基于直接法的VO/SLAM算法,例如LSD-SLAM,DSO等等。由于这些算法都直接依赖于点的亮度,因此必须要进行光度标定才能提供稳定的状态估计结果。
主要贡献有:
1. 提出了一种在线的光度标定算法,能够同时标定连续帧的曝光时间,相机的响应函数和渐晕引起的传感器辐照度衰减因子;
2. 将在线标定算法与直接法的VO/SLAM算法融合,能够在保持实时运行的情况下提高直接法的精度。
算法流程
图1 本文的算法流程图
本文的标定算法包括离线版本和在线版本。
针对离线版本,需要一次获取整个视频流,然后对所有光度参数进行优化;如果视频太长,本文还会对视频进行分割,分别进行标定,最后再进行融合。
针对在线标定,由于每次仅能获取一帧影像,并且为了保证在线运行,不可能获取大量影像然后优化所有变量。所以本文的方法是首先收集几帧大致估计响应函数和辐照度衰减因子,然后在后期逐渐更新各个参数。图1展示了本文在线标定算法的流程图,对于每一帧首先根据当前估计的响应函数和辐照度衰减因子消去其影响,然后根据跟踪的特征点重新优化光度参数并估计曝光时间,最终完成光度的矫正。
成像过程简介
此处简单介绍一下本文的成像过程。针对一个物方点,假设记其反射的亮度强度为L,那么其首先要经过相机的镜头,然后达到传感器成为电信号,最后才从电信号转化成像素亮度O,总共有3个步骤,分别对应了幅照度衰减、曝光时间和响应函数。
辐照度衰减引起的原因主要与镜头的几何结构有关,离镜头中心越远,其接收到的亮度越低。因此相机接收到的辐照度Ix可以用一下公式表达,其中V(x)反应了光线与传感器中心的距离,x是对应像素。
本文参考了Goldmannan的思路,使用一个6阶多项式来表达衰减过程,如下所示。其中R(x)是像素x到图像中心的单位距离。
曝光时间的数学模型较为简单,可以用一下公式表达,其中e是曝光时间,Iacc(x)是最终传感器接收到的亮度。
相机响应函数的主要目的就是将Iacc(x)转化成影像上的像素亮度,与相机的动态范围密切相关。如果接收的亮度超出了动态范围的上限,则在影像上表现为白点;如果低于下限,则表现为黑点。针对8bit的相机,可以用以下映射关系表示其过程:
本文使用了EMoR模型来参数化表达响应函数,其公式如下图所示。对于8bit而言,其输出是fG(0)=0,fG(1)=255。
总体而言,可以将上述所有过程总体表达成以下公式:
特征点跟踪
稳定鲁邦的特征点跟踪是光度参数标定的核心。本文参考了Grundmann的方法,利用金字塔进行光流的方式来进行特征点匹配。并且考虑到曝光差异对光流的影响,本文还参考了Kim的方法,使用了增益补偿的方式来提高匹配的质量。下图2中,第一行是常规算法的跟踪结果,第二行是本文算法的跟踪结果。
图2 基于KLT的光流跟踪
同时为了保证更好的恢复辐射衰变,需要特征点分布的足够均匀。因此本文将图片分割成格网,并保证每个格网都有足够的特征点。同时还保证足够久的特征点跟踪,来更好的刻画点从图片中心移动到图片边缘时辐射衰变的过程。
除此之外,为了保证光流特征点的准确度,本文使用了前向后向光流跟踪的方式来减少误匹配。下图3展示了经过错误剔除后的跟踪结果。
图3 光流误差剔除效果展示
光度参数优化
总体而言,整个光度参数的计算可以用以下的能量函数来表示,其中w是权重,||.||h表示的是huber函数。
其优化方式与传统的非线性优化类似,需要先计算雅克比,然后再进行迭代优化即可。
主要结果
本文在大量的数据集上测试了本文的标定算法,此处只节选了部分的验证结果,包括光度参数的精度和光度标定后对VO的影响。
光度参数标定
图4 TUM Mono VO数据集序列50上的光度参数标定结果,可以发现本文的标定结果与真实值非常接近。
图4 DSO算法在经过光度标定后的轨迹精度的变化,其中右边是经过光度标定后的结果,使用的数据集ICL-NUIM。
图5 本文算法在Euroc上的表现。
结论
本文提出了一个在线光度标定的算法,实验证明本文的算法十分有效。在未来,本文作者将在本文在线标定的基础上重新实现KLT,减少对亮度不变假设的依赖,进而提高其稳定性;除此之外,本文作者也将进一步研究辐射衰变模型,考虑不对称的情况。