论文阅读《Omnidirectional DSO: Direct Sparse Odometry with Fisheye Cameras》

摘要

我们提出了一种新颖的全景相机实时直接单目视觉里程计方法。该方法利用统一的全景模型作为投影函数,扩展了直接稀疏里程计(DSO),可应用于视场(FoV)远高于180°的鱼眼相机。这种公式允许使用输入图像的整个区域,即使有强烈的失真,而大多数现有的视觉里程计方法只能使用图像修正和裁剪的一部分。联合优化活动关键帧窗口内的模型参数,包括相机内外参数、三维点位置和仿射亮度参数。由于较宽的视场,帧之间的图像重叠变大,点在空间上的分布更广。我们的结果表明,我们的方法提供了更高的准确性和鲁棒性,超过了目前最先进的视觉里程计算法。

1 介绍

单目相机的视觉里程计(VO)在自动驾驶、移动机器人导航、虚拟现实或增强现实等领域有着广泛的应用。只使用单目视觉系统的好处是只需要一个低成本的相机,维护简单且易于购买。因此,近年来在单目相机里程计领域的研究被积极开展[1~3]。由于VO算法通过视觉信息来估计三维结构和六自由度相机运动,因此需要在图像中呈现足够的纹理,以便观察到不同帧之间的对应关系。对应关系估计的一个主要限制因素是相机的视场(FoV)。这在具有稀疏特征的环境中变得尤其明显,例如具有无纹理墙壁的室内环境,或鲁棒跟踪要求环境的静态部分在图像帧中充分可见的动态环境。因此,宽视场相机有利于VO。

然而,在标准的VO流程中充分利用宽视场图像并不是一件简单的事情。通常,这些方法是为针孔相机模型设计的。它将三维点测量投影到图像平面上,并导致图像的强烈变形,FoV超过约150度。为了避免处理失真的图像区域,通常将图像裁剪到更小的内部区域,从而有效地降低视场。

提高VO系统视场的方法主要有两种。首先,对帧间共享图像重叠变化的帧窗口进行优化。例如固定滞后(fixed-lag)平滑方法,如多状态约束卡尔曼滤波器(MSCKF[4])或直接稀疏里程计方法(DSO[5])。对于某些方法,使用相机投影模型,如统一的全景模型,是一个可行的选择,以避免图像失真。在本文中,我们提出了一种最先进的直接视觉里程计方法,该方法将[6]中使用的统一全景模型融入到VO的固定滞后平滑方法中。

我们对DSO进行了扩展,使其无缝地充分地利用鱼眼图像(图1),并共同优化了包括相机内外参、稀疏点深度和仿射亮度参数在内的模型参数。

在这里插入图片描述
在这里插入图片描述

图1 Top:不同相机模型DSO中的激活像素(左:针孔相机,右:全景相机)。利用针孔模型,DSO只能使用原始鱼眼图像的一小部分。相比之下,在全景模型中,DSO可以使用整个鱼眼图像中的像素。Bottom:重建地图示例。

在实验中,我们利用由宽FoV鱼眼镜头捕获的基准图像来评估我们的方法。我们将我们的方法与其它最先进的VO方法(如DSO或LSD-SLAM)进行了比较,并验证了我们的方法在基准数据集上优于之前的最先进的方法。

本文组织如下。我们首先在第2节回顾了最先进的技术。我们在第3节和第4节介绍了符号记号、针孔相机模型和全景相机模型。在第5节中,我们描述了我们的全景DSO方法的流程。我们的方法基于DSO[5],集成了类似[6]的统一全景相机模型。我们简要回顾了DSO,并继续详细介绍了用统一的全景相机模型沿极线估计距离的方法。在第6节中,我们评估了我们的方法在公开可用数据集上的性能,并将其与最先进的方法进行了比较。

2 相关工作

间接视觉里程计方法。早期的视觉里程计和视觉同时定位与建图(SLAM)的工作在2000年前后被提出,并依赖于图像之间的兴趣点匹配来估计相机的运动。视觉里程计方法专注于具有局部一致性的相机位姿增量实时跟踪,而SLAM方法则联合估计全局一致的轨迹和地图。其中许多方法是基于概率滤波的(例如[10]和[11])。例如Davison等提出的MonoSLAM就是一种基于扩展卡尔曼滤波器的实时可行方法。然而,由于路标估计是滤波状态空间的一部分,受限于计算资源,该方法只能映射较小的工作空间。2007年出现了技术突破,Klein等人提出了PTAM[12],这是一种基于关键帧的方法,可以在单独的线程中执行跟踪和建图。类似地,许多当前的VO/SLAM算法也使用关键帧和应用多线程来实时执行局部一致性跟踪和建图,同时在较慢的SLAM优化层中执行全局一致性优化。ORB-SLAM[13]是目前最先进的间接的和基于关键帧的视觉SLAM算法,它在单独的优化层中执行全部的光束调整。

直接视觉里程计方法。最近,直接法在VO和SLAM中越来越受到欢迎。直接法避免了关键点等几何特征的提取,而是直接从像素灰度估计里程和三维重建。由于它们不会将图像内容压缩到一小部分典型的手工特征,直接方法可以在图像中使用更多的信息,如边缘或阴影表面。这使得更稠密的三维重建成为可能,而间接方法只能产生稀疏点重建。对于RGB- D相机,如[14],也提出了直接视觉里程计方法。该方法提取RGB-D关键帧,并利用基于测量深度的直接图像对齐方法跟踪相机到最近关键帧的运动。LSD-SLAM[7]是首个用于单目相机的直接视觉SLAM方法,能够实时绘制大尺度环境。它跟踪相机运动,生成半稠密地图,并进行位姿图优化,以获得全局一致的地图。该半稠密地图可适应多种用途,如AR中的表面估计、三维物体识别和语义标记[15~17]。

在位姿图优化中,将单个图像直接对齐测量聚合为关键帧之间的相对位姿测量。这忽略了直接测量的细粒度相关性(fine-grained correlations),需要线性化和高斯逼近来浓缩测量。最近,Engel等人提出了直接稀疏里程计方法(Direct Sparse Odometry, DSO)。与LSD-SLAM相比,DSO在关键帧的一个窗口内,利用了每个关键帧中的稀疏点集,实时地联合优化相机内外参、仿射亮度参数和深度等多个模型参数。目前这种方法在轨道精度方面定义了视觉里程计方法中最先进的性能。

单目视觉里程计的局限性。由于单目视觉里程计方法利用单个相机估计主体运动和重建场景,其尺度总是模糊和易于漂移。为了恢复尺度,VO/SLAM方法通常会扩展额外的传感器,如双目相机、深度传感器或IMU。最近,基于CNN的深度预测与单目视觉SLAM相结合。在DSO和我们的方法中,由于窗口优化和边缘化,尺度漂移相对于基于跟踪的VO(如LSD-SLAM中的VO前端)来说会更小。

全景相机模型的视觉里程计方法。为了受益于更大的视场,VO和SLAM方法也被扩展用于宽视场相机。特别是,全景LSD-SLAM[6]是第一个用于鱼眼相机的直接视觉SLAM方法,可以实时运行。通过整合统一的全景相机模型,它甚至适用于FoV超过180度的相机。在我们的方法中,我们也使用了统一的全景相机模型,但在DSO的一个窗口帧中优化了多种参数,如相机内外参、仿射亮度参数和深度。我们演示了优化窗口与扩展FoV的组合如何比直接基线方法(如DSO和LSD-SLAM)提高性能。Zhang等人开发了用于鱼眼相机的半直接视觉里程计方法(SVO),并对相同图像分辨率下不同视场的性能进行了比较。根据他们的论文,最优FoV还取决于环境,所以更大的FoV并不总是改善结果。然而,在室内环境中,他们发现更宽的视场倾向于提高性能。

贡献。在本文中,我们提出了一种全景扩展的直接稀疏里程计方法。这是第一个基于鱼眼的实时运行的直接视觉里程计,它联合优化多个模型参数,例如相机位姿、点的深度、相机内参和仿射亮度参数。

3 记号

我们基本上遵循文献[6]中的符号。我们用小写字母表示标量 u u u,我们用大写字母表示函数 I I I。对于矩阵和向量,我们分别用粗体大写字母 R \pmb{R} RR和粗体小写字母 x \pmb{x} xx来表示。我们用 u = [ u , v ] T ∈ Ω ⊂ R 2 \pmb{u}=[u,v]^T \in \pmb{\Omega} \subset \mathbb{R}^2 uu=[u,v]TΩΩR2来表示像素坐标,其中 Ω \pmb{\Omega} ΩΩ表示图像域。三维点的坐标用 x = [ x , y , z ] T ⊂ R 3 \pmb{x}=[x,y,z]^T \subset \mathbb{R}^3 xx=[x,y,z]TR3来表示。运算符 [ ] i []_i []i表示矩阵或向量的第 i i i行。我们用特殊欧几里得群中的矩阵 T i ⊂ S E ( 3 ) \pmb{T}_i \subset SE(3) TTiSE(3)来表示相机位姿。它将一个三维坐标从相机坐标系转到世界坐标系。总之,相机的投影函数用映射 π : R 3 → Ω \pmb{\pi}: \mathbb{R}^3\rightarrow \Omega ππ:R3Ω来表示。它的逆 π − 1 : Ω × R + → R 3 \pmb{\pi}^{-1}: \Omega \times \mathbb{R}^{+} \rightarrow \mathbb{R}^3 ππ1:Ω×R+R3利用逆深度 d ∈ R + d \in \mathbb{R}^{+} dR+反投影图像坐标。相机帧以 C C C为中心,光轴沿 z z z轴向前为正方向。为了优化,我们用图像坐标 p \pmb{p} pp和它在被估计的主关键帧中的逆深度 d p d_p dp来表示一个三维点。

4 相机模型

接下来,我们将介绍本文使用的两个相机模型。针孔模型和统一的全向模型。

A 针孔模型

针孔相机模型是文献中最流行的相机模型。每个三维点被投影到 z = 1 z = 1 z=1的归一化图像平面上,然后线性变换为像素坐标。这在数学上是这样表述的,
π u ( x ) = [ f x 0 0 f y ] [ x / z y / z ] + [ c x c y ] (1) \pmb{\pi}_{u}(\pmb{x})=\begin{bmatrix} f_x & 0 \\ 0 & f_y \end{bmatrix} \begin{bmatrix} x/z \\ y/z \end{bmatrix} + \begin{bmatrix} c_x \\ c_y \end{bmatrix} \tag{1} ππu(xx)=[fx00fy][x/zy/z]+[cxcy](1)
其中 f x f_x fx f y f_y fy是焦距, c x c_x cx c y c_y cy是主点。投影模型如图2所示。

在这里插入图片描述

图2 针孔相机模型。三维点通过相机中心C直接投影到图像平面,得到其图像坐标。

这是最简单的模型因为投影函数在齐次坐标下是线性的。但是,这没有考虑鱼眼图像的非线性投影,不适合宽视场相机。径向和切向畸变函数可以去除微小的非线性畸变,但针孔投影假设测量的三维点在像平面之外,即它们的深度大于焦距。这将视野限制在180度以下。

B 统一的全向模型

我们使用统一的全向相机模型,该模型最初在[25]中提出用于宽视场鱼眼相机。该模型的主要优势有两点。第1点:它可以准确地模拟各种成像器件和透镜的几何成像。第2点: π − 1 π^{−1} π1的逆投影函数可以用闭合形式表示。一个欧几里得相机坐标的三维点首先被投影到一个以相机为中心的单位球面上(见图3)。然后,通过一个沿 z z z轴有 ξ ξ ξ值的中心,将该点投影到一个像针孔模型中的图像平面上。该模型有5个参数,分别是焦距 f x f_x fx f y f_y fy、相机中心 c x c_x cx c y c_y cy和相机中心到单位球中心 ξ ξ ξ的距离。

在这里插入图片描述

图3 统一的全向相机模型。该方法首先将三维点投影到单位球面上,再将其投影到图像平面上,从而求出三维点的图像坐标。相机中心C与单位球中心Cs之间的偏移量参数化为ξ。

三维点的投影计算如下,
π u ( x ) = [ f x x z + ∣ ∣ x ∣ ∣ ξ f y y z + ∣ ∣ x ∣ ∣ ξ ] + [ c x c y ] (2) \pmb{\pi}_{u}(\pmb{x})=\begin{bmatrix} f_x\frac{x}{z+||\pmb{x}||\xi} \\ f_y \frac{y}{z+||\pmb{x}||\xi} \end{bmatrix}+\begin{bmatrix} c_x \\ c_y \end{bmatrix} \tag{2} ππu(xx)=[fxz+∣∣xx∣∣ξxfyz+∣∣xx∣∣ξy]+[cxcy](2)
其中 ∣ ∣ x ∣ ∣ ||\pmb{x}|| ∣∣xx∣∣表示 x \pmb{x} xx的欧式范数。该模型的逆投影函数为,
π u − 1 ( u , d ) = 1 d ( ξ + 1 + ( 1 − ξ 2 ) ( u ~ 2 + v ~ 2 ) u ~ 2 + v ~ 2 + 1 [ u ~ v ~ 1 ] − [ 0 0 ξ ] ) (3) \pmb{\pi}_u^{-1}(\pmb{u},d) = \frac{1}{d} \Bigg( \frac{\xi+\sqrt{1+(1-\xi^2)(\tilde{u}^2 + \tilde{v}^2 )}}{\tilde{u}^2+\tilde{v}^2+1} \begin{bmatrix} \tilde{u} \\ \tilde{v} \\ 1 \end{bmatrix} - \begin{bmatrix} 0 \\ 0 \\ \xi \end{bmatrix} \Bigg) \tag{3} ππu1(uu,d)=d1(u~2+v~2+1ξ+1+(1ξ2)(u~2+v~2) u~v~1 00ξ )(3)
其中
[ u ~ v ~ ] = [ ( u − c x ) / f x ( v − c y ) / f y ] (4) \begin{bmatrix} \tilde{u} \\ \tilde{v} \end{bmatrix} = \begin{bmatrix} (u-c_x)/f_x \\ (v-c_y)/f_y \end{bmatrix} \tag{4} [u~v~]=[(ucx)/fx(vcy)/fy](4)
请注意,对于 ξ = 0 ξ = 0 ξ=0,模型简化为针孔模型。我们结合统一的全向模型和一个小的径向-切向畸变模型来校正透镜的缺陷。在应用统一的全向模型之前,该模型用于消除原始图像的畸变。

5 系统概述

A 模型表述

DSO联合优化一个窗口内所有帧的相机位姿,三维点的深度和仿射亮度参数。作为一种直接方法,它优化光度一致性。DSO还考虑到图像形成过程的光度标定。两帧之间光度误差的能量函数表示为
E p j : = ∑ p ∈ N p w p ∥ ( I j [ p ′ ] − b j ) − t j e a j t i e a i ( I i [ p ] − b i ) ∥ γ (5) \pmb{E}_{p_j}:=\sum_{p \in N_p} w_p \Vert (I_j[\pmb{p}'] - b_j) - \frac{t_je^{a_j}} {t_ie^{a_i}} (I_i[\pmb{p}] - b_i) \Vert_{\gamma} \tag{5} EEpj:=pNpwp(Ij[pp]bj)tieaitjeaj(Ii[pp]bi)γ(5)
其中我们通过小像素邻域 N p N_p Np的加权平方差之和(SSD)来测量点 p ⊂ Ω i \pmb{p} \subset \Omega_i ppΩi的光度误差,这些点是在相对于目标帧 I j I_j Ij的参考帧 I i I_i Ii上的。 w p w_p wp是一个梯度相关的权重。 t i t_i ti t j t_j tj分别是图像 I i I_i Ii I j I_j Ij的曝光时间。 a a a b b b是仿射亮度修正因子。 ∣ ∣ ⋅ ∣ ∣ γ ||\cdot||_\gamma ∣∣γ是Huber范数。 p ′ \pmb{p}' pp是带有逆距离 d p d_p dp的点 p \pmb{p} pp的重投影点。 p ′ \pmb{p}' pp的计算公式为
p ′ = π ( R π − 1 ( p , d p ) + t ) (6) \pmb{p}'=\pi (\pmb{R}\pi^{-1} (\pmb{p}, d_p) + \pmb{t} ) \tag{6} pp=π(RRπ1(pp,dp)+tt)(6)
其中
[ R t 0 1 ] : = T j T i − 1 (7) \begin{bmatrix} \pmb{R} & \pmb{t} \\ \pmb{0} & 1 \end{bmatrix} := \pmb{T_j} \pmb{T_i}^{-1} \tag{7} [RR00tt1]:=TjTjTiTi1(7)
活动窗口内的帧的光度误差为,
E p h o t o : = ∑ i ∈ F ∑ p ∈ P i ∑ j ∈ o b s ( p ) E p j (8) E_{photo} := \sum_{i \in F} \sum_{p \in P_i} \sum_{j \in obs(p)} E_{p_j} \tag{8} Ephoto:=iFpPijobs(p)Epj(8)
其中 F F F是活动窗口内帧的集合, P i P_i Pi是在第 i i i帧中的点, o b s ( p ) obs(p) obs(p)是观测到点 p \pmb{p} pp的所有帧的集合。对于跟踪而言,通过优化 T i T_i Ti T j T_j Tj之间的相对相机位姿 T i j T_{ij} Tij来最小化误差函数。对于窗口优化,函数对所有变量( T i , T j , d , c , a i , a j , b i , b j \pmb{T_i},\pmb{T_j},d,\pmb{c},a_i,a_j,b_i,b_j TiTi,TjTj,d,cc,ai,aj,bi,bj)进行优化,其中 c \pmb{c} cc为相机内部参数。与[5]不同,我们将点的逆距离 d = ∣ x ∣ − 1 d=|\pmb{x}|^{-1} d=xx1参数化,而不是逆深度。这也允许我们对相机后面的点进行建模(概述见图4)。

在这里插入图片描述

图4 全向DSO(OmniDSO)系统概述。

B 沿极线的距离估计

一旦某一帧被成功跟踪,我们进行立体匹配来细化候选点的逆距离。当一个候选点被包含到光束调整中,这个估计的距离作为一个初始化。DSO沿着类似[3]的极线来搜索相应的点。然而,当使用统一的全向模型对鱼眼图像进行立体匹配时,通过相机中心和像素的射线不再投影到极线上,而是投影到曲线上(更准确地说,是二次曲线[25])。

在这里插入图片描述

图5 使用统一的全向相机模型进行立体匹配:将沿射线的距离搜索区间映射到另一台相机投影单位球面上的方向区间,实现立体匹配的对应搜索。

我们现在描述极线的数学公式。与[6]相似,我们定义了两个点 p 0 , p ∞ ∈ R 3 \pmb{p_0}, \pmb{p}_∞∈\mathbb{R}^3 p0p0,ppR3,它们位于一个射影中心 C r e f C_{ref} Cref周围的单位球面上,对应于搜索区间的最大和最小逆距离 d m a x , d m i n d_{max},d_{min} dmax,dmin
p 0 : = π s ( R π u − 1 ( p , d m i n ) + t ) (9) \pmb{p_0}:=\pi_s(\pmb{R}\pi_u^{-1}(\pmb{p}, d_{min}) + \pmb{t}) \tag{9} p0p0:=πs(RRπu1(pp,dmin)+tt)(9)
p ∞ : = π s ( R π u − 1 ( p , d m a x ) + t ) (10) \pmb{p}_{\infty}:=\pi_s(\pmb{R}\pi_u^{-1}(\pmb{p}, d_{max}) + \pmb{t}) \tag{10} pp:=πs(RRπu1(pp,dmax)+tt)(10)

在这里,函数 π s \pi_s πs将三维点投影到单位球面上。 π u − 1 \pi_u^{-1} πu1是全向模型的逆投影函数, p \pmb{p} pp是我们要匹配的关键帧中的像素。然后我们用 α ∈ [ 0 , 1 ] α∈[0,1] α[0,1]表示这些点的线性插值,
p L ( α ) : = α p 0 + ( 1 − α ) p ∞ (11) \pmb{p}_L(\alpha):=\alpha \pmb{p}_0+(1-\alpha) \pmb{p}_{\infty} \tag{11} ppL(α):=αpp0+(1α)pp(11)
我们通过将这条线投影到目标图像来找到极线,
u L ( α ) : = π u ( p L ( α ) ) (12) \pmb{u}_L(\alpha):=\pi_u(\pmb{p}_L(\alpha)) \tag{12} uuL(α):=πu(ppL(α))(12)
然后我们沿着极线搜索,从 u L ( 0 ) \pmb{u}_{L}(0) uuL(0)开始,每次增加 α α α。图像中1个像素的 α α α增量是由 u L \pmb{u}_L uuL的一阶泰勒近似来确定的
δ α : = ∣ ∣ J u L ∣ α ∣ ∣ − 1 (13) \delta \alpha := || \pmb{J}_{u_L} | \alpha ||^{-1} \tag{13} δα:=∣∣JJuLα1(13)
这个值需要为每个增量重新计算,而对于针孔相机模型,一个恒定的步长可以用于极线搜索。然而,在DSO和LSD-SLAM中,可以从之前的帧估计或通过初始化来获得距离先验。因此,搜索间隔通常较小,便于实时计算。

C 帧的管理

DSO在优化窗口中维护恒定数量的 N f N_f Nf活动关键帧(例如 N f = 7 N_f = 7 Nf=7)。第1步:它通过跟踪它到最新的关键帧和它的稀疏距离地图来跟踪每一帧的相机运动。第2步:如果观察到的场景的变化对于最近的关键帧来说太大了,那么从新帧中创建一个关键帧。第3步:然后,我们边缘化一个或多个帧,以保持关键帧的数量受到限制。

初始帧跟踪。为了跟踪,传统的直接图像对齐是在一个5级图像金字塔上进行的。连续估计场景和亮度的变化,如果变化大于一定阈值,则选择该帧作为新的关键帧。

关键帧创建。在创建关键帧时,根据空间分布和图像梯度选择候选点。我们初始化这些候选点的逆距离估计,其方差较大,对应于从0到 ∞ ∞ 的范围。在后续的每一帧跟踪到这个新的关键帧之后,使用极线搜索(第5-B节)来获得新帧中的观测数据来细化逆距离估计。

关键帧边缘化。当活动关键帧的数量超过 N f N_f Nf时,考虑到可见点的数量和帧的分布,旧的点和帧将从活动窗口中移除。让我们用 I 1 , ⋯   , I n I_1,\cdots,I_n I1,,In来表示活动的关键帧,其中 I 1 I_1 I1是最新的关键帧,而 I n I_n In是最老的关键帧。我们的边缘化策略遵循文献[5],它有3个主要的点。第1点:我们从不边缘化最新的两个关键帧 ( I 1 , I 2 ) (I_1,I_2) (I1,I2)。第2点:如果在 I 1 I_1 I1中可见点的百分比低于5%,我们就边缘化一个帧。第3点:如果活动关键帧的数量超过 N f N_f Nf,我们根据启发式距离评分[5]边缘化一个关键帧。评分倾向于空间分布接近最新关键帧的活动关键帧。最后,激活候选点并将其添加到优化中。

D 窗口优化

我们的窗口优化和边缘化策略遵循文献[5]。如我们在(8)中所述,在所有活动关键帧上对所有激活点进行联合优化。采用高斯-牛顿算法[5]对光度误差函数进行非线性优化。对相机位姿、活动点逆距离、相机内参和仿射亮度等变量进行联合优化。在最小化光度误差之后,如果优化窗口中的活动关键帧的数量超过 N f N_f Nf,我们使用Schur补边缘化旧的关键帧和点。我们通过边缘化在两个最新关键帧中未观测到的点来保持优化问题的稀疏性。我们还边缘化了将要被边缘化的关键帧中的点。然后将关键帧边缘化,并从优化窗口中移除。

6 评估

对于我们的方法的准确性和鲁棒性,我们提供了实验评估。我们在公共基准数据集上对最先进的视觉里程计方法进行了定量比较。我们还定性地评估了更大视场的好处。我们使用了两个公共数据集进行评估:TUM SLAM全向相机数据集首次用于文献[6]作为小规模室内基准,Oxford RobotCar数据集[26]作为大尺度室外基准。

A TUM SLAM全向相机数据集

TUM全向数据集提供室内场景的宽视场鱼眼图像。它还包括用运动捕捉系统记录的地面真实轨迹数据和已标定好的统一的全向模型相机参数。该数据集由5个室内序列组成,具有快速和手持运动。相机是带有185°鱼眼镜头的全局快门,其记录的图像的分辨率是 1280 × 1024 1280\times 1024 1280×1024。我们裁剪并缩放图像,使其以光心为中心的分辨率为 480 × 480 480×480 480×480。利用这个数据集,我们比较了5种直接视觉里程计算法:常规DSO、全向DSO(我们的方法)、常规LSD-SLAM(不带回环)、全向LSD-SLAM(不带回环)和SVO。请注意,我们关闭了LSD-SLAM的回环,以评估其底层视觉里程计在每个序列的总体漂移方面的性能。

精度比较。按照文献[6]中的评估方法,我们测量了每个评估序列的估计相机平移和地面真值相机平移之间的均方根误差(RMSE)。对所有关键帧计算估计的相机位置,并执行 S i m ( 3 ) \rm{Sim}(3) Sim(3)与地面真实轨迹数据对齐。由于DSO的多线程执行引入了不确定性行为,我们对每个方法的每个序列运行5次算法,然后取RMSE的中值。结果见表1。一些具有代表性的视觉结果如图6和图7所示。表2为OmniDSO估计的轨迹长度。

表1 以米为单位的RMSE。DSO优于其它方法,特别是我们的OmniDSO平均显示最小的均方根误差。

在这里插入图片描述

在这里插入图片描述

图6 累积漂移(左:常规DSO,中:OmniLSD-VO,右:OmniDSO)。与其它两种方法相比,OmniDSO在平移和尺度漂移方面表现出了更好的性能。

在这里插入图片描述

图7 T1和T3的水平轨迹估计。

表2 生成的轨迹长度,以米为单位。

在这里插入图片描述
我们从表1中得出两个观察结果。首先,DSO比SVO和LSD-SLAM具有更强的鲁棒性和准确性。由于数据集场景包含很多小回环,这有助于SLAM的性能。然而,作为一种纯粹的视觉里程计,DSO显示出更好的性能。这意味着稀疏联合光束调整和窗口优化提高了直接视觉里程计的性能。其次,统一的全向相机模型的使用进一步提高了DSO和LSD-SLAM的性能。虽然对于某些序列无法观察到明显的性能改善,但考虑到所有序列的平均结果,鱼眼视觉里程计比使用针孔相机模型显示出明显的优势(OmniDSO比DSO提高了约0.157m)。我们的OmniDSO结合了这些优点,并优于其它现有的视觉里程计方法。从表1和表2可以清楚地看到T5的性能差异,T5是序列中轨迹最长的。

大视场的优势。使用宽视场的主要优点之一是图像更可能包含强梯度像素,这有利于视觉里程计。图8显示了针孔相机模型和统一的全向相机模型下DSO的T5序列中无纹理场景关键帧的活动点。注意DSO使用具有强图像梯度的点。对比两种相机模型可以看出,全向相机模型可以跟踪梯度方向变化较大的点的空间分布,而针孔相机模型只能观察到图像内部较小的部分。

在这里插入图片描述

图8 无纹理场景下用于优化的激活点(左:DSO,右:OmniDSO)。如果视野更宽,观测到的场景在任何空间方向上都不太可能表现出退化。左侧图像沿对角线显示灰度常数,因此在该方向上的运动估计不受约束。

使用全向模型的另一个好处是帧之间更大的图像重叠。图9和图10给出了DSO和OmniDSO在同一场景下,当前优化窗口中活动关键帧估计的轨迹和约束。正如我们在5-C中所描述的,当当前帧的可见点数量低于5%时,一个关键帧从窗口被边缘化。相比于针孔相机模型的DSO,全向相机模型的DSO由于图像重叠的增加,这允许它在优化窗口中保持更长的关键帧,从而增加了关键帧的空间分布和窗口内观察到的场景的有效部分。为了从数值上评估这种重叠效应,我们测试了不同最大关键帧数的窗口优化,并比较了结果。测试的关键帧个数为 N f = 7 N_f =7 Nf=7(默认)、 N f = 5 N_f =5 Nf=5 N f = 3 N_f = 3 Nf=3。表3显示了减少关键帧的结果,表4显示了性能差异。我们用Kf5-Kf7表示 N f = 5 N_f = 5 Nf=5 N f = 7 N_f =7 Nf=7之间的RMSE差异。数字越小,该方法对关键帧数减少的鲁棒性越强。表4显示,两种方法的性能都随着关键帧数的减少而下降。但是,由表4可以看出,我们的方法(Omni DSO)的下降幅度小于普通DSO。这表明,即使使用较少的关键帧,由于使用全向模型而产生的较大的视觉重叠也有助于保持性能。

在这里插入图片描述

图9 相机旋转后优化窗口中的活动关键帧(左:DSO,右:OmniDSO)。在我们的方法中,即使在大相机旋转后,关键帧也不会被边缘化。

在这里插入图片描述

图10 优化过程中关键帧(绿线)之间的约束(左:DSO,右:OmniDSO)。OmniDSO在优化窗口中维护更多空间分布的关键帧。

表3 以米为单位的不同关键帧数的绝对均方根误差。对于所有关键帧数目设置,OmniDSO显示更小的平均RMSE。

在这里插入图片描述

表4 使用的关键帧数目之间的性能差异(以米为单位)。相对于关键帧数目的变化,OmniDSO的平均性能下降较小。

在这里插入图片描述

时间测量。表5显示了数据集上跟踪和建图(窗口优化)步骤所花费的平均时间(每个序列运行5次),以毫秒为单位。为了测量这些时间,图像处理分辨率为480×480。我们使用的是英特尔酷睿i7-7820HK 4核2.90 GHz CPU的电脑。这些结果表明,我们的方法的实时能力,因为每一帧可以跟踪至少100Hz,建图在超过15Hz。这些结果还表明,通过减少关键帧的数量,可以加快建图过程。即使关键帧的数量较少( N f = 5 N_f = 5 Nf=5),表3显示,在 N f = 7 N_f = 7 Nf=7关键帧的情况下,我们的方法仍然比普通DSO的平均性能要好。

表5 平均计时结果(ms)。随着关键帧数的减少,计算开销也随之减小。

在这里插入图片描述

B 牛津Robotcar数据集

我们还在大规模户外场景中用Oxford Robotcar数据集评估了我们的算法。该数据集包含100多次相同路线在不同时间、不同天气、光照和交通条件下的重复数据。图像收集自安装在车辆上的6个相机,以及激光雷达、GPS和INS地面真值。

作为一个评估基准,我们使用一个180度FoV鱼眼镜头后置全局快门相机拍摄的视频。原始图像的分辨率是 1024 × 1024 1024×1024 1024×1024,我们将其裁剪并缩放为 600 × 600 600×600 600×600的分辨率。我们使用带有原始棋盘格序列的Kalibr标定工具箱[27]来获取相机的内部参数。数据集有3种路线类型(Full, Alternate和Partial)。Full是指原路线的全部,由5个序列组成。Alternate覆盖不同的区域,Partial是完整路线的一部分。从这个数据集中,我们选择了带有多云天气和较少移动物体(如车辆和行人)的序列。Full 1选自2015/02/10,Full 2,3,5选自2014/12/09,Full 4选自2015/03/17。Alternate来自2014/06/26,Partial来自2014/12/05。与室内数据集相同,我们测量了生成的轨迹与地面真实数据之间的平移RMSE。我们比较了OmniDSO与DSO和单目ORB-SLAM,后两个使用针孔相机模型。我们使用ORB-SLAM2实现(https://github.com/raulmur/ORB SLAM2)。由于所选择的序列不包含回环,我们可以在不关闭SLAM回环检测的情况下公平地比较VO和SLAM。类似地,我们对每个方法中的每个序列运行5次算法,并取中值。结果和轨迹长度见表6。从表中可以看出,对于所有序列,我们的方法都优于其它方法。随着轨迹变长,性能差异会越来越明显。视觉结果如图11所示。

表6 绝对均方根误差和生成的轨迹长度(以米为单位)。我们的OmniDSO显示最小的均方根误差。

在这里插入图片描述

在这里插入图片描述

图11 OmniDSO在Oxford Robotcar数据集上的定性结果示例。数据集包含了牛津的大规模户外轨迹。

7 结论

在本文中,我们引入了全向相机的实时直接稀疏里程计。我们首先将统一的全向相机模型整合到DSO中。深度估计采用沿极线递增搜索的方法。通过联合优化相机位姿、点深度和仿射亮度参数,减小了关键帧窗口内的光度误差。然后,我们定量评估了在两个公开的基准数据集上的性能,证明我们的全向DSO在基准测试上的性能优于其它方法。我们还定性地讨论了使用大视场的好处,并定量地评估了在减少DSO优化窗口中的关键帧数量时,与使用针孔相机模型相比,鲁棒性的提高。我们的全向DSO可以利用广角鱼眼相机图像。我们结合使用统一的全向相机模型和稀疏窗口光束调整,可以优于现有的视觉里程计方法。在未来的工作中,我们的方法可以通过加入全局优化和回环来改进。

8 致谢

我们感谢Jakob Engel和Keisuke Tateno的建议和富有成效的讨论。

9 参考文献

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMWM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值