📝笔记:光场相机能否用于SLAM?

最近有几个同学问我光场相机是否能够用在SLAM中,我的第一感觉是不可能

本人研究生期间一直进行光场相机深度恢复的工作,深知其优势与不足。SLAM是我参加工作以来从事的研究方向,经过两年多的摸爬滚打算是入门了。目前视觉SLAM理论上虽已比较成熟,但在实际使用中仍会遇到诸多问题,如容易受到外界因素如光照/动态物体/稀疏纹理/室外大场景/快速运动等因素的影响,这些问题仅使用传统相机似乎无法有效解决。而光场相机相较于传统相机能够记录同时记录光线的方向与强度,这使我们可以通过计算成像得到一些列虚拟视角的图像。简单来说就是单目光场相机实现了虚拟多目的效果,但这些虚拟视角间的基线距非常小,测距范围有限,预期无法获得长距离的深度信息。

但本人还是本着求真务实的态度,在Google搜索框中输入“light field slam”,于是出现了如下结果。

检索结果

粗略数了一下,2018~2020年仅出现了4篇相关文献,少得可怜,我把这几篇文章的题目列在下面:

  1. Scale-Awareness of Light Field Camera based Visual Odometry, ECCV 2018, pdf
  2. Light field SLAM based on ray-space projection model, SPIE 2019, pdf
  3. A Light Field Front-end for Robust SLAM in Dynamic Environments, arxiv 2020, pdf
  4. Real-time Light Field Processing for Autonomous Robotics, IROS 2018, pdf

接下来的内容将简要地介绍这几篇文章是如何做到光场与SLAM结合的。

光场辅助SLAM恢复尺度

第一篇文章,作者来自慕尼黑工业大学(TUM)以及卡尔斯鲁厄应用技术大学(Karlsruhe University of Applied Sciences),发表在2018年的ECCV。作者提到,本文是当时第一个使用光场相机子图像进行追踪建图的算法。

文章主页:link

实验室主页:link

背景

作者提到,传统的单目相机无法获得位姿的尺度信息,而本文的出发点在于光场相机的两大优势:

  1. 单传感器设备,相机尺度与单目相机接近且比双目相机要小;
  2. 可以从一张光场图像获取深度,这使得VO的追踪以及建图都是有尺度的;

这使得利用单个光场相机就有尺度恢复的可能性。

创新点

算法框架

本文提出的算法基于单目DSO,并在此基础上进行了如下改进:

  1. 鲁棒追踪:相机能够在复杂多变的场景中准确定位,追踪过程直接在微透镜图像以及虚拟孔径图像上进行,并且使用了coarse-to-fine的方式优化位姿;鲁棒性体现在算法能够补偿光照变化对定位造成的影响,并且使用了线性运动估计的加权高斯牛顿优化。(详细可阅读原文)
  2. 尺度优化:算法能够连续地估计关键帧的尺度,并通过对多帧估计联合优化得到全局一致的尺度。

关键结果

数据采集设备搭载一颗Raytrix相机以及两个工业相机

算法在其自采的光场数据集进行测试,结果如下:

累积尺度误差比较
算法生成的点云图
点云图比较

算法在具有挑战性的室内外序列组成的数据集进行了测试,与ORB-SLAM单/双目算法/DSO以及LSD-SLAM进行了比较。实验表明,该算法具有恢复场景绝对尺度的能力,且尺度误差能够控制在10%以内。

结论

本文首次利用光场相机可单目估计深度的能力解决了单目SLAM无尺度的问题,其效果与双目相机相近,算是一个不错的尝试,但后续作者以及其所在实验室并没有继续跟进在这个方向研究。

参考文献

  1. Plenoptic flow: Closed-form visual odometry for light field cameras, IROS 2011
  2. Plenoptic cameras in real-time robotics, INT J ROBOT RES 2013
  3. From the calibration of a light-field camera to direct plenoptic odometry, JSTSP 2017
  4. A Synchronized Stereo and Plenoptic Visual Odometry Dataset, arXiv 2018
  5. Direct sparse odometry, TPAMI 2018

光场提高位姿解算能力

第二篇文章,作者来西工大计算机学院的王庆教授组,发表于2019年的SPIE。本文提出了LF-SLAM (light field SLAM),与传统相机进行SLAM最大区别在于该算法将特征点重投影误差转换成了光场中的 ray-ray损失函数,提高了位姿解算的精度。

背景

作者提到,传统相机进行SLAM,特征点匹配是稀疏的,且并不鲁棒。而不同的光场相机之间捕捉的光线信息能够为位姿解算提供更多的约束,预期能够提高位姿解算精度

创新点

算法伪代码

本文主要探究了在光场相机的投影模型(ray-space projection model)下的位姿解算的约束形式,主要改变了SLAM中的初始化过程以及BA优化中残差表示,其贡献主要可以概括为:

  1. SLAM初始化中使用了光场相机的投影模型,得到初始位姿以及地图点;
  2. 后端优化中提出了ray-ray损失函数优化位姿以及地图点;

关键结果

以下结果是通过仿真数据集进行的验证。

初始特征图
预测轨迹与真值轨迹对比

结论

本文首次将光场相机投影模型加入到位姿解算中,同时将重投影误差形式改变成适配光场相机ray-space中的表达形式,通过仿真数据集验证了算法的可行性(存疑)。

当然我们也注意到本文存在一些缺陷:如果从解决问题的角度来说,本文并没有解决其在背景中提到的特征点点稀疏以及追踪不鲁棒的问题,也没有进行充分的对比实验说明本方案相比于传统方案的优势,如“光场能够为位姿解算提供更多的约束”,增加约束前后对比并没有给出,该描述存在很大漏洞。因此本文提到的算法有效性值得怀疑

参考文献

  1. Ray-space projection model for light field camera, CVPR 2019

光场提高动态场景定位鲁棒性

第三篇文章,作者来自西北大学,主要利用光场图像合成视角图像(SAI, Synthetic Aperture Imaging)去除场景中的动态物体,本文提出的算法能够提高SLAM算法在动态场景中的鲁棒性以及定位精度。

背景

SLAM假设世界是静止的,然而实际上并非如此,现实世界中存在大量的动态物体,如行人/车等。动态物体会影响定位过程中的特征关联,若不进行处理,会导致定位异常。解决动态物体传统的方式包括光流/RANSAC等方式,但如果场景中的动态物体占比较大时,这些方法稍显力不能及。现有的处理方式只能使前端不去追踪被动态物体遮挡的区域,而本文想做的是用光场技术合成被遮挡的静态物体,从而使已经被遮挡的静态物体也能参与追踪

创新点

算法框架
虚拟视角合成

本文最大的贡献是改变了SLAM的输入图像质量,即通过使用光场能够生成虚拟视角的技术,恢复出被遮挡的背景物体,使得图像中去除了动态物体的干扰,进而保证后续追踪建图的鲁棒性以及精度。核心算法是光场虚拟视角技术,在这个过程中需要对来自\(K\)个相机的图像进行语义分割(本文使用了Mask R-CNN)以及进行深度估计。然后通过下面的两个公式合成虚拟视角图像。

\[x^{k}=\pi_{k}\left[R_{k} \mid t_{k}\right] \pi_{r e f}^{-1}\left(x^{r e f}, d^{r e f}\right)\]

\[I^{s}=\frac{\sum I\left(x^{k}\right) *\left(s^{k}=\text { static }\right)}{\sum\left(s^{k}=\text { static }\right)}\]

其中,第一个公式表示2D点从参考帧到目标帧\(k\)的投影,即得到在目标帧上的投影\(x^k\)。这样的话只要知道参考帧图像上哪些地方是静态的,就可以通过第二个公式进行加权合成一张无动态物体遮挡的虚拟图。

关键结果

对于数据集的采集,作者采用了自己搭建的5个线性相机阵列(手持式的光场相机虚拟视角间的视差极小,无法满足需求)采集图像,相机之间的标定采用Kalibr工具箱。

如下图所示,第一行是参考帧的图像,第二行表示合成的虚拟视角图像,可见动态物体已经被“去除”。

动态物体去除前后对比

与ORB-SLAM2单双目比较发现,本算法的优势在于能够在多动态物体的场景中获得较好的定位效果。

动态场景下算法精度对比
动态场景下算法轨迹对比

结论

本文思路较为简单,通过语义分割以及光场视角合成技术实现对SLAM前端输入图像中动态物体的抑制,保证SLAM拥有更高的鲁棒性及精度。

实际上,本文的核心是通过多相机阵列的方式解决了动态物体的干扰,即使一个视角被动态物体遮挡,其它视角也能看到被遮挡物,因而遮挡区域的特征追踪就不成问题了。作者将多相机阵列建模成光场的双平面模型合成虚拟视角,这实际上就是近几年研究较多的光场相机去遮挡要做的。注意到本文通过多相机阵列实现了光场采集系统,相机间的距离远远大于微透镜阵列光场相机虚拟视角之间的距离,这使得前者并不是所有的视角都被动态物体遮挡,而后者全部虚拟视角都被遮挡,因而微透镜阵列光场相机无法胜任去遮挡任务

这里顺便提一下,《Real-time Light Field Processing for Autonomous Robotics》中也采用了类似的线形相机阵列光场采集设备实现遮挡物去除/图像低照度增强/去除高光反射以及去雾的功能。这些应用预期可辅助视觉SLAM的定位与建图。

数据采集设备:5个相机+2个雷达
仿真实验表明5个线性排列的相机去遮挡效果尚可
遮挡物去除效果
弱光图像增强前后比较
去除高光前后对比

参考文献

  1. Reconstructing occluded surfaces using synthetic apertures: Stereo, focus and robust measures, CVPR 2006
  2. Efficient large-scale stereo matching, ACCV 2010

总结

以上内容列举了几个关于光场技术与SLAM结合的手段,从现有手段来看,光场能够在一定程度上辅助单目SLAM恢复尺度/提供位姿解算更多约束/去除场景动态物体,去高光/低照度图像增强以及去雾等,SLAM在以上措施的加持下能够恢复尺度,亦或提高定位鲁棒性以及精度。但从解决问题的角度来看,动态物体问题可以用广角或鱼眼相机进行缓解,单目无尺度问题可以用单目+惯性导航或者双目来解决。多传感器融合进行是目前SLAM的趋势,多相机阵列的光场设备在解决以上问题上并非最好的选择,但不可否认的是以上手段都是不错的尝试。

回到文章一开始提到问题:光场是否能用于SLAM?我的结论是:可做研究但并不实用。​这个结论具有时效性,不能排除一切来自未来的可能性。光场的理论可为多相机建模提供思路,利用光场阐述多相机间的成像之间的联系,辅助算法设计。但传输及处理多相机数据本身将付出极大的算力/时间成本,违背了实时定位建图的初衷,不过对实时性要求不高的三维重建任务,光场似乎有用武之地。总之,光场只是一种建模手段,而非为了用而用,否则得不偿失。

注:以上看法仅代表我个人观点,仅作参考。