论文阅读《Stereo DSO: Large-Scale Direct Sparse Visual Odometry with Stereo Cameras》

摘要

我们提出了立体直接稀疏里程计(Stereo Direct Sparse Odometry, Stereo DSO)作为一种基于双目相机的大尺度环境高精度实时视觉里程计估计。它联合优化滑动窗口内所有的模型参数,包括所有关键帧的相机内参和外参以及所有选定像素的深度值。特别地,我们提出了一种将静止立体约束整合到时域多视角立体光束调整的新方法。该算法通过从灰度梯度足够大的图像区域均匀采样像素点来实现实时优化。固定基线立体解决了尺度漂移。它还降低了直接图像对齐方法已知的缺点,即对大光流和卷帘效应的敏感性。定量评估表明,提出的双目DSO在跟踪精度和鲁棒性方面优于现有的最先进的视觉里程计方法。此外,我们的方法提供了比以前的稠密/半稠密直接方法更精确的三维重建,同时提供了比基于特征的方法更高的重建密度。

1 介绍

1.1 实时视觉里程计

传统的机器人系统,如自动驾驶汽车,主要依靠激光或激光雷达来主动感知周围环境,并进行自我定位和建图,而最近基于相机的SLAM和视觉里程计算法在性能上有了巨大的提升。虽然这种被动传感器需要一个足够照明和纹理的场景来推断3D结构和运动,但它们具有一些优势,包括更高的分辨率,更广的感知范围,更高的感知速率,以及更低的重量、尺寸和硬件成本。这使得它们的用途更加广泛,例如,更小的尺寸和重量使纳米直升机的视觉惯性自主导航等应用成为可能。因此,对实时的视觉里程计和视觉SLAM算法有着巨大的需求。其中最理想的特性是最大的准确性、鲁棒性(对场景结构的变化、照明和更快的运动)和重建环境的密度。在本文中,我们提出了我们认为是目前最准确和鲁棒的实时视觉里程计方法。

在这里插入图片描述

图1 KITTI数据集00序列的双目DSO结果。上面是估计的相机轨迹。为了区别于之前的稠密或半稠密的直接方法的稀疏性,我们在中间展示了用于跟踪的深度图。底部是一个重建场景的示例。

1.2 相关的工作

第一个实时视觉SLAM和里程计系统是在2000年左右首创的。这些结构和运动技术的关键思想是选择一组关键点(典型的角点),跨帧跟踪它们,并联合推断它们的3D位置和相机运动。最近,由于计算硬件和算法复杂度的巨大进步,我们看到了性能日益提高的解决方案。例如,Klein和Murray将运动和三维结构进行并行化估计。Strasdat等人提出了扩展关键帧的概念来集成尺度,并提出了双窗口优化。最近,ORB-SLAM提出了一种基于ORB特征和地图重用的高效视觉SLAM解决方案。由于其较高的跟踪精度和鲁棒性,它获得了许多关注,是最先进的视觉SLAM方法之一。传统的结构和运动/视觉SLAM算法都是基于启发式选择的关键点,最近也提出了一些所谓的直接方法。直接法旨在直接从图像计算几何和运动,从而跳过中间关键点选择步骤。在算法上,它们通常依赖于鲁棒的代价函数和通过Gauss-Newton迭代进行优化,就像[14,15,18]中基于RGB-D的SLAM所做的那样。虽然方法[27,23]依赖于变分方法和全变分正则化来实时生成稠密重建(在强大的GPU上),但后者的工作[10,12]避免了稠密解决方案,以避免过度光滑或产生错觉的几何结构,而是生成半稠密或稀疏的重建,而不需要GPU支持。LSD-SLAM提出了将直接单目SLAM算法扩展到大尺度环境[8,9]。该算法的关键思想是对相机进行增量跟踪,同时进行位姿图优化,以保持整个相机轨迹全局一致。虽然这种简化版的光束调整(包括运动,但不包括结构)并没有消除漂移,但它似乎在计算的轨迹上扩散了。此后,半稠密的直接VO/SLAM通过支持全景相机和与IMU紧密耦合得到进一步的扩展。最近[16]中提出了一种用于LSD-SLAM的卷帘快门校正方法。

虽然我们正在见证基于关键点的算法和直接算法之间的持续竞争,但最近的直接稀疏里程计(DSO)[7]在一个相当大的单目相机跟踪[11]的数据集上,在准确性和鲁棒性方面都优于最先进的基于关键点的单目SLAM算法ORB-SLAM[21]。

虽然这似乎表明直接方法有一定的优势,但DSO作为一种视觉里程计或SLAM也有一些缺点。首先,上述性能增益是在一个进行了光度标定的数据集上进行验证的。在缺乏这种光度标定(许多数据集不提供它)的情况下,像DSO这样的直接方法的性能大幅下降。其次,作为一个纯粹的单目系统,DSO总是不能估计重建场景的尺度或相机运动的单位。此外,估计轨迹存在较大的尺度漂移,即便手动提供最佳尺度也不能解决问题,见图6。最后,如[7]所示,DSO对几何失真非常敏感,例如快速运动和卷帘快门引起的失真。虽然标定卷帘快门的技术已存在于直接SLAM算法[16]中,但它们通常是相当复杂和远远不能实时的技术。

1.3 贡献

在这项工作中,我们提出了双目DSO作为一种新的直接视觉里程计方法,用于高精度和鲁棒的运动和三维结构的实时估计。通过利用额外的传感器信息,它解决了前面提到的方法的缺点。因此,它提供了一个准确的(由于立体初始化)更快的收敛尺度估计,并对丢失的光度标定或卷帘快门的影响不太敏感。特别地:

  • 我们实现了DSO的双目版本。为此,我们详细地提出了时间多视图立体与静止立体的组合,以及利用舒尔补进行边缘化。不同于之前将单目直接方法扩展到立体(两种方法都将滤波方法应用于不涉及光束调整的几何图形),我们提出了一种新的方法来扩展能量函数和整个光束调整过程,同时保证了实时能力。
  • 我们对KITTI数据集和Cityscapes数据集进行了系统的定量评估。与Stereo ORB-SLAM和Stereo LSD-SLAM等替代方法的比较表明,提出的Stereo DSO优于这些技术,特别是在KITTI测试集上进行评估时,表明该方法对未知设置的泛化效果更好。
  • 一项更大范围的定量评估表明,提出的不进行回环的Stereo DSO算法优于采用全局位姿图优化和光束调整的Stereo ORB-SLAM算法。

2 双目相机的DSO

我们的双目DSO是一个结合了静止立体和多视图立体的系统。正如[9]中所演示的,这种混合方法比每一种单独的方法有几个优点:

  • 从双目相机的已知基线出发,由静止立体直接计算出绝对尺度。
  • 静止立体可为多视图立体提供初始深度估计。
  • 由于基线固定,静止立体只能在有限的深度范围内精确三角定位三维点。利用时间多视图立体解决了这一限制。
  • 在退化的情况下,当边缘平行于极线时,它们可以相互补充。

我们的系统如图2所示。我们的系统不是使用随机深度来初始化[10,8,7],而是使用静止立体匹配的深度估计(第2.3节)。基于直接图像对齐公式(第2.2节),新的立体帧先以由粗到精的方式跟踪它们的参考关键帧(第2.3节)。得到的位姿估计用于细化(refine)最近选择的点的深度。然后我们的系统检查当前活动窗口是否需要一个新的关键帧。如果没有,将创建一个非关键帧,否则将生成一个新的关键帧并添加到活动窗口(第2.4节)。对于活动窗口中的所有关键帧,联合优化它们的位姿、仿射亮度参数、所有观测到的3D点的深度和相机内参。为了保持活动窗口的大小,旧的关键帧和3D点使用舒尔补进行边缘化(第2.5节)。

在这里插入图片描述

图2 系统概述

2.1 记号

在本文中,我们分别使用轻体小写字母、粗体小写字母和粗体大写字母分别表示标量( u u u)、向量( t \pmb{\mathrm{t}} ttt)和矩阵( R \pmb{\mathrm{R}} RRR)。轻体大写字母表示函数( I I I)。

相机标定矩阵用 K \pmb{\mathrm{K}} KKK来表示。相机位姿用欧式群中的矩阵 T i ∈ S E ( 3 ) \pmb{\mathrm{T}}_i \in SE(3) TTTiSE(3)来表示,它将三维坐标从相机坐标系转到世界坐标系。 Π K \pmb{\Pi_K} ΠKΠKΠK Π K − 1 \pmb{\Pi_K^{-1}} ΠK1ΠK1ΠK1分别表示相机投影函数和逆投影函数。在本文中,一个三维点由其图像坐标 p \pmb{p} ppp和相对于其主关键帧的逆深度 d p d_p dp表示。主关键帧是被选中的点所在的帧。当图像中的误差建模为高斯分布时,逆深度参数化是有利的。

2.2 直接图像对齐公式

假设参考帧 I i I_i Ii中的点集 P i \mathcal{P}_i Pi在另一帧 I j I_j Ij被观测,直接图像对齐的基本思想可表示为如下:
E i j = ∑ p ∈ P i ω p ∥ I j [ p ′ ] − I i [ p ] ∥ γ (1) E_{ij}=\sum_{p\in\mathcal{P}_i} \omega_{p} \big \Vert I_j[\pmb{p}'] - I_i[\pmb{p}] \big \Vert_{\gamma} \tag{1} Eij=pPiωpIj[ppp]Ii[ppp]γ(1)
其中 ∥ ⋅ ∥ \big \Vert \cdot \big \Vert 是Huber范数, ω p ω_p ωp是降低图像梯度的权重,
ω p = c 2 c 2 + ∥ ∇ I i ( p ) ∥ 2 2 (2) \omega_p= \frac{c^2}{c^2+\Vert \nabla I_i(\pmb{p}) \Vert_2^2} \tag{2} ωp=c2+Ii(ppp)22c2(2)
其中 c c c为常量。 p ′ \pmb{p}' ppp p \pmb{p} ppp I j I_j Ij中的投影,可计算如下,
p ′ = Π K ( T j i Π K − 1 ( p , d p ) ) (3) \pmb{p}'=\pmb{\Pi_{K}}\big( \pmb{T}_{ji} \pmb{\Pi_K^{-1}}(\pmb{p}, d_p) \big) \tag{3} ppp=ΠKΠKΠK(TTTjiΠK1ΠK1ΠK1(ppp,dp))(3)
其中 d p d_p dp p \pmb{p} ppp的逆深度, T j i \pmb{T}_{ji} TTTji是变换矩阵,它将一个点从第 i i i帧变换到第 j j j帧:
T j i : = [ R j i t 0 1 ] = T j − 1 T i (4) \pmb{T}_{ji}:=\begin{bmatrix} \pmb{R}_{ji} & \pmb{t} \\ \pmb{0} & 1 \end{bmatrix} = \pmb{T}_{j}^{-1}\pmb{T}_i \tag{4} TTTji:=[RRRji000ttt1]=TTTj1TTTi(4)

传统的直接方法,无论是稠密的还是半稠密的,都倾向于从每张图像中选取尽可能多的像素。在给系统带来沉重的计算负担的同时,它的好处很快就饱和了。因此,在[7]中,作者提出了一种策略:从每帧具有足够梯度的所有区域中均匀地选择固定数目的像素。对于每个选定的点,用其周围的一个小邻域来计算光度误差。在本文中,我们遵循相同的方法,但使用立体图像来验证所选点和辅助深度初始化。更多的细节请参见第2.4小节。

由于光度误差是直接根据像素灰度计算的,因此它对连续帧之间的突然照明变化非常敏感。理想情况下,每一帧的曝光时间以及相机响应函数(可以是高度非线性的)都可以直接从硬件[11]中访问,它可以用来纠正这种效应。当这些信息不可用时(就像大多数现有的数据集),类似于[7],我们为每幅图像引入两个参数 a i a_i ai b i b_i bi来模拟仿射亮度变化。将公式(1)中的能量函数修改为,
E i j = ∑ p ∈ P i ∑ p ~ ∈ N p ω p ~ ∥ I j [ p ~ ′ ] − b j − e a j e a i ( I i [ p ~ ] − b i ) ∥ γ (5) E_{ij}=\sum_{p\in \mathcal{P}_i} \sum_{\tilde{p}\in \mathcal{N}_p} \omega_{\tilde{p}} \bigg \Vert I_j[\tilde{p}']-b_j-\frac{e^{a_j}}{e^{a_i}}(I_i[\tilde{\pmb{p}}]-b_i) \bigg \Vert_{\gamma} \tag{5} Eij=pPip~Npωp~Ij[p~]bjeaieaj(Ii[ppp~]bi)γ(5)
其中 N p \mathcal{N}_p Np为[7]中定义的 p \pmb{p} ppp的8点模式; p ~ ′ \tilde{\pmb{p}}' ppp~是模式点 p ~ \tilde{\pmb{p}} ppp~ I j I_j Ij中的投影。 a i a_i ai a j a_j aj b i b_i bi b j b_j bj在滑动窗口中被优化,参见第2.5小节。

2.3 跟踪

每次一个新的立体帧被输入到系统中,用直接图像对齐[10]来跟踪它相对于活动窗口中最新关键帧的位姿。用恒定模型来分配新帧跟踪的初始位姿。活动窗口内的所有点都被投影到新帧中。在保持深度值不变的情况下,通过最小化能量函数,即公式(5),来优化新帧的位姿。采用高斯-牛顿法对图像金字塔进行了由粗到精的优化。

为了初始化整个系统,即使用公式(5)跟踪第二帧相对于初始帧的位姿,需要得到第一帧中点的逆深度值。以往的单目直接VO方法使用随机深度值进行初始化[10,8,7],因此通常需要一定的初始相机运动模式。在这项工作中,我们使用静止立体匹配估计第一帧的半稠密深度图。由于该阶段左右图像之间的仿射亮度转移因子未知,因此采用 3 × 5 3\times 5 3×5邻域NCC沿水平基线进行搜索。

2.4 图像帧管理

如果一个新的立体帧被成功跟踪,我们将使用与[7]相同的标准来确定是否需要一个新的关键帧。基本思想是检查场景或照明是否发生了足够的变化。场景的变化由均方光流来评估,以及在当前帧和活动窗口中最后一帧之间无旋转的均方光流。光照变化是用相对亮度因子 ∣ a j − a i |a_j-a_i ajai量化的。

为了创建新的关键帧,从图像中选择一组稀疏的点,在本文的其余部分称其为候选点。为了选择均匀分布在图像上的点,并且只选择具有足够图像梯度的点,将图像分成小块,并为每个块计算一个自适应阈值。我们没有使用固定大小[7]的方块,而是使用大小与图像大小成比例的方块。我们发现这对于像来自KITTI的图片一样具有不同宽度和高度的图片很有帮助。如果一个点超过了该块的阈值,并且它在其邻域内具有最大的绝对梯度,那么它就被选择。

在一个候选点在窗口优化中被激活和优化之前,它的逆深度被以下的非关键帧不断地细化。在单目情况下,候选点通常初始化深度为从0到无穷,对应一个较大的深度方差。在我们的例子中,我们使用静止立体匹配与NCC获得候选点的更好的深度初始化,这大大提高了跟踪精度。

当旧点被边缘化(第2.5节)从活动窗口中移除时,候选点被激活并添加到联合优化中。每个激活点驻留(is hosted)在一个关键帧中,并被活动窗口中的其它几个关键帧观测。每当在另一个关键帧中观测到一个活动点时,它就会创建一个亮度能量因子,其为公式(5)的内部部分:
E i j P = ω p ∥ I j [ p ′ ] − b j − e a j e a i ( I i [ p ] − b i ) ∥ γ (6) E_{ij}^P=\omega_p \bigg \Vert I_j[\pmb{p}']- b_j-\frac{e^{a_j}}{e^{a_i}} (I_i[\pmb{p}] - b_i) \bigg \Vert _{\gamma} \tag{6} EijP=ωpIj[ppp]bjeaieaj(Ii[ppp]bi)γ(6)
为了简便起见,我们在上述方程和本文其余部分中都省略了邻域 N P \mathcal{N}_P NP的求和。能量函数的因子图如图3所示,其中每个因子(以中间的小正方形表示)取决于点的逆深度、主关键帧和观测该点的关键帧的相机位姿以及它们的仿射亮度修正因子。来自静止立体的约束(用红线表示)将尺度信息引入系统。此外,它们还为时间多视图立体提供了良好的几何先验。

在这里插入图片描述

图3 能量函数的因子图。在这个例子中,4个关键帧观测5个点。每个能量因子都与一个点和两个关键帧有关,因此取决于点的逆深度、两个关键帧的相机位姿和它们的仿射亮度修正因子,以及相机的内参(我们假设左右两个相机是相同的,这里为简单起见将它们省略)。来自主机(host)关键帧和静止立体的约束分别用深蓝色和红色表示。其余淡蓝色的约束来自观测到该点的关键帧。

2.5 窗口优化

综合所有的能量因子,窗口优化中最终要最小化的能量函数为
E = ∑ i ∈ F ∑ p ∈ P i ∑ j ∈ o b s ( p ) E i j p (7) E=\sum_{i\in \mathcal{F}} \sum_{p\in \mathcal{P}_i} \sum_{j \in obs(p)} E_{ij}^p \tag{7} E=iFpPijobs(p)Eijp(7)
其中 F \mathcal{F} F为当前窗口内关键帧的集合, o b s ( p ) obs(\pmb{p}) obs(ppp) F \mathcal{F} F中能够观测到 p \pmb{p} ppp的关键帧的集合。采用高斯-牛顿算法对能量进行迭代优化:
δ ξ = − ( J T W J ) − 1 J T W r (8) \delta \pmb{\xi} = -(\pmb{J}^T\pmb{WJ})^{-1}\pmb{J}^T\pmb{Wr} \tag{8} δξξξ=(JJJTWJWJWJ)1JJJTWrWrWr(8)

ξ n e w = δ ξ ⊞ ξ (9) \pmb{\xi}^{new}=\delta \pmb{\xi} \boxplus \pmb{\xi} \tag{9} ξξξnew=δξξξξξξ(9)
其中 r \pmb{r} rrr包含堆叠的残差, J \pmb{J} JJJ是雅克比, W \pmb{W} WWW是单位权重矩阵。我们想要优化的参数如下所示,
ξ = ( T 0 , ⋯   , N f − 1 , d 0 , ⋯   , N p − 1 , c , a 0 , ⋯   , N f − 1 L , b 0 , ⋯   , N f − 1 L , a 0 , ⋯   , N f − 1 R , b 0 , ⋯   , N f − 1 R ) (10) \pmb{\xi} = (\pmb{T}_{0,\cdots,N_f-1},d_{0,\cdots,N_p-1},\pmb{c},\\ a^L_{0,\cdots,N_f-1},b^L_{0,\cdots,N_f-1}, \\ a^R_{0,\cdots,N_f-1},b^R_{0,\cdots,N_f-1} ) \tag{10} ξξξ=(TTT0,,Nf1,d0,,Np1,ccc,a0,,Nf1L,b0,,Nf1L,a0,,Nf1R,b0,,Nf1R)(10)
其中 c \pmb{c} ccc是一个包含全局相机内参的向量, L L L R R R分别表示左相机图像和右相机图像的参数, N f N_f Nf N p N_p Np分别表示当前窗口中关键帧和激活点的数目。李群 T \pmb{T} TTT上的操作符 ⊞ \boxplus 由李代数 s e ( 3 ) se(3) se(3)定义:
⊞ : s e ( 3 ) × S E ( 3 ) → S E ( 3 ) ,   x   ⊞ T : = e x p ( x ^ ) T (11) \boxplus: se(3) \times SE(3) \rightarrow SE(3), \ \pmb{\mathrm{x}} \ \boxplus \pmb{\mathrm{T}} := exp(\hat{\pmb{x}})\pmb{\mathrm{T}} \tag{11} :se(3)×SE(3)SE(3), xxx TTT:=exp(xxx^)TTT(11)
而对于其它参数,只是传统的加法。

时间多视图立体。来自时间多视图立体的残差定义为:
r k t = I j [ p ′ ( T i , T j , d , c ) ] − b j − e a j e a i ( I i [ p ] − b i ) (12) r_k^t=I_j[\pmb{p}'(\pmb{\mathrm{T}}_i,\pmb{\mathrm{T}}_j, d, \pmb{c})] - b_j - \frac{e^{a_j}}{e^{a_i}} (\pmb{I}_i[\pmb{p}]-b_i) \tag{12} rkt=Ij[ppp(TTTi,TTTj,d,ccc)]bjeaieaj(IIIi[ppp]bi)(12)
与文献[7]相同,雅克比定义为:
J k t = [ ∂ I j ∂ p ′ ∂ p ′ ( δ ξ ⊞ ξ ) ∂ δ ξ g e o t ,    ∂ r k ( δ ξ ⊞ ξ ) ∂ δ ξ p h o t o t ] (13) \pmb{J}_k^t=\Big[ \frac{\partial I_j}{\partial \pmb{\mathrm{p}}'} \frac{\partial \pmb{\mathrm{p}}'(\delta \pmb{\xi} \boxplus \pmb{\xi})}{\partial \delta \pmb{\xi}^t_{geo}} , \ \ \frac{\partial r_k(\delta \pmb{\xi} \boxplus \pmb{\xi})}{\partial \delta \pmb{\xi}_{photo}^t} \Big] \tag{13} JJJkt=[pppIjδξξξgeotppp(δξξξξξξ),  δξξξphototrk(δξξξξξξ)](13)
其中几何参数 ξ g e o t \pmb{\xi}_{geo}^t ξξξgeot ( T i , T j , d , c ) (\pmb{\mathrm{T}}_i, \pmb{\mathrm{T}}_j, d, \pmb{c}) (TTTi,TTTj,d,ccc),光度参数 ξ p h o t o t \pmb{\xi}_{photo}^t ξξξphotot ( a i , a j , b i , b j ) (a_i, a_j, b_i, b_j) (ai,aj,bi,bj)

静止立体。对于静止立体,残差修改为:
r k s = I i R [ p ′ ( T j i , d , c ) ] − b i R − e a i R e a i L ( I i [ p ] − b i L ) (14) r_k^s=I_i^R[\pmb{p}'(\pmb{\mathrm{T}}_{ji},d,\pmb{c})] - b_i^R-\frac{e^{a_i^R}}{e^{a_i^L}}(\pmb{I}_i[\pmb{\mathrm{p}}]-b_i^L) \tag{14} rks=IiR[ppp(TTTji,d,ccc)]biReaiLeaiR(IIIi[ppp]biL)(14)
其雅克比和文献[13]中的一样,只不过少了几何参数部分 ξ g e o = ( d , c ) \pmb{\xi}_{geo}=(d,\pmb{c}) ξξξgeo=(d,ccc),因为左右相机的相对变换 T j i \pmb{\mathrm{T}}_{ji} TTTji是固定的。因此, T j i \pmb{\mathrm{T}}_{ji} TTTji在窗口优化中不被优化。

立体耦合。为了平衡时间多视图和静止立体的相对权重,引入耦合因子 λ λ λ对静止立体的约束进行不同的权重处理。文献[7]中的能量函数可以进一步的写成,
E = ∑ i ∈ F ∑ p ∈ P i ( ∑ j ∈ o b s t ( p ) E i j p + λ E i s p ) (15) E=\sum_{i\in \mathcal{F}} \sum_{p \in \mathcal{P}_i} \Big( \sum_{j\in obs^t(p)} E_{ij}^p + \lambda E_{is}^p \Big) \tag{15} E=iFpPi(jobst(p)Eijp+λEisp)(15)
其中 o b s t ( p ) obs^t(\pmb{p}) obst(ppp)是时间多视图立体对 p \pmb{p} ppp的观测,而 E i s p E_{is}^p Eisp是属于静止立体残差的能量。耦合因子 λ \lambda λ的效果在第3.1节中展示。

边缘化。为了保持活动窗口的大小有界,使用舒尔补边缘化旧的关键帧。在边缘化关键帧之前,我们首先边缘化两个最新关键帧没有观测到的所有激活点,以及该关键帧中托管的所有激活点。然后,将关键帧边缘化并移出激活窗口。设 H = J T W J H = J^TWJ H=JTWJ b = J T W r b = J^TWr b=JTWr为高斯-牛顿系统,在因子图中它只包含要边缘化的变量以及与之相关的变量。如果我们用 α α α β β β分别表示要保留和边缘化的变量,高斯-牛顿系统可以重新排列为,
[ H α α H α β H β α H β β ] [ x α x β ] = [ b α b β ] (16) \begin{bmatrix} \pmb{\mathrm{H}}_{\alpha \alpha} & \pmb{\mathrm{H}}_{\alpha \beta} \\ \pmb{\mathrm{H}}_{\beta \alpha} & \pmb{\mathrm{H}}_{\beta \beta} \end{bmatrix} \begin{bmatrix} \pmb{\mathrm{x}}_{\alpha} \\ \pmb{\mathrm{x}}_{\beta} \end{bmatrix} = \begin{bmatrix} \pmb{b}_\alpha \\ \pmb{b}_\beta \end{bmatrix} \tag{16} [HHHααHHHβαHHHαβHHHββ][xxxαxxxβ]=[bbbαbbbβ](16)
第2行乘上 − H α β H β β − 1 -\pmb{\mathrm{H}}_{\alpha \beta}\pmb{\mathrm{H}}_{\beta \beta}^{-1} HHHαβHHHββ1并把它加到第1行,
( H α α − H α β H β β − 1 H α β T ) x α ⏟ H ^ α α = b α − H α β H β β − 1 b β ⏟ b ^ α (17) \underbrace{ (\pmb{\mathrm{H}}_{\alpha \alpha}-\pmb{\mathrm{H}}_{\alpha \beta} \pmb{\mathrm{H}}_{\beta \beta}^{-1}\pmb{\mathrm{H}}_{\alpha \beta}^T) \pmb{\mathrm{x}}_{\alpha}}_{\hat{\mathrm{H}}_{\alpha \alpha}} = \underbrace{ \pmb{\mathrm{b}}_{\alpha}-\pmb{\mathrm{H}}_{\alpha \beta}\pmb{\mathrm{H}}_{\beta \beta}^{-1}\pmb{\mathrm{b}}_{\beta} }_{\hat{\mathrm{b}}_{\alpha}} \tag{17} H^αα (HHHααHHHαβHHHββ1HHHαβT)xxxα=b^α bbbαHHHαβHHHββ1bbbβ(17)
生成的系统 H ^ α α x α = b ^ α \hat{\pmb{\mathrm{H}}}_{\alpha \alpha}\pmb{\mathrm{x}}_{\alpha}=\hat{\pmb{\mathrm{b}}}_{\alpha} HHH^ααxxxα=bbb^α只依赖于保留的变量 x α \pmb{\mathrm{x}}_{\alpha} xxxα,作为先验添加到后续优化中。

3 评估

我们在两个流行的数据集上评估我们的方法:KITTI Odometry Benchmark和Cityscapes Dataset。这两个数据集都提供同步双目序列校正高分辨率图像。我们在KITTI数据集上将我们的方法与最先进的双目VO方法进行了全面的比较,包括基于特征的方法和直接的方法。在Cityscapes上,我们根据提供的GPS坐标计算出地面真实相机位姿,然后创建了几个序列。我们在这个数据集上展示了跟踪和三维重建的结果,并表明我们的方法可以用于大尺度相机跟踪和三维重建。

3.1 KITTI视觉里程计基准

我们在KITTI Odometry Benchmark上评估我们的方法,它总共提供了22个驾驶序列。前11个(00-10)序列提供了6维的位姿,作为训练集,后11个序列构成测试集。

我们首先测试了立体耦合因子对示例序列的影响(06序列)。采用不同耦合因子得到的平移误差和旋转误差如图4所示。以一定权重( λ = 1 , 2 \lambda=1,2 λ=1,2)引入静止立体约束显著减少了平移误差和旋转误差。进一步增加权重( λ > 3 \lambda > 3 λ>3)会使该方法对静止立体的不正确匹配更加敏感,从而降低其性能。 λ = 0 ∼ 3 λ = 0\sim3 λ=03的估计轨迹显示在补充材料中。

在这里插入图片描述

图4 对于06序列,不同耦合因子下平均平移误差和旋转误差。

不同立体方法在训练集上的VO精度比较如表1所示。我们将我们的方法与LSD-SLAM和ORB-SLAM2进行了比较,它们分别是目前最先进的直接法双目VO和基于特征方法双目VO。Stereo LSD-SLAM的结果引用自文献[9],而ORB-SLAM2的结果是通过运行它们的默认设置的代码获得的。为了进行公平的比较,我们关闭了它的回环检测和全局光束调整。可以看到,我们的结果几乎总是比LSD-SLAM好。与ORB-SLAM2相比,我们的所有旋转误差都更好,但平移误差略有混合。我们认为这可能是数据集相对较低的帧率造成的。

表1 在KITTI训练集上精度的比较。t_{rel}表示平移RMSE(%),r_{rel}表示旋转RMSE(度/100米)。两种指标的间距均超过100米至800米。最好的结果显示为粗体数字。

在这里插入图片描述

图5显示了我们在测试集上的结果。我们展示了与基准所推荐的相同的绘图,其中关于不同距离间隔和行驶速度的平移误差和旋转误差在整个集合上被绘制。值得注意的是,其它两种方法的结果都是由它们的带有回环的SLAM系统(ORB-SLAM2还带有全局光束调整的)得到的,而我们的结果是由纯VO得到的。从图中可以看出,我们的方法在所有设置下都是最好的。

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

图5 在KITTI测试集(11-21序列)上,行驶间隔(前两项)和行驶速度(后两项)的平均平移误差和旋转误差。在所有情况下,我们的LSD-SLAM和ORB-SLAM2的VO结果(没有回环检测)都优于SLAM结果(有回环检测,对于ORB-SLAM2还有有全局光束调整)。令人惊讶的是,即使对于较大的间隔,我们的方法也会表现得更好,因为在这种情况下,回环通常会显著减少误差。

为了展示使用双目相机的好处,图6定性地比较了不同的单目VO方法与我们的方法在00序列和06序列上的结果。目前最先进的基于特征的VO方法和直接的单目VO方法都不能很好地处理尺度漂移。所有训练序列的结果都可以在补充材料中找到。

在这里插入图片描述

图6 KITTI数据集中00序列(上)和05序列(下)的定性结果。对于单目VO结果,我们执行与地面真值的相似对齐。

3.2 Cityscapes Dataset

为了在更真实的数据上评估我们的方法,我们进一步在Cityscapes Dataset[4]上运行我们的Stereo DSO。尽管这个数据集是专门为场景理解和图像分割设计的,但它也提供了使用双目相机系统捕获的长序列(超过10万帧)。我们选择这个数据集是因为它提供了工业级别的高动态范围(HDR)和相当高的帧率(17Hz)的图像。此外,与大多数现有的使用全局快门提供街景序列的数据集相比,Cityscapes的图像是用卷帘快门相机捕捉的,这被认为是直接方法的主要挑战。虽然我们没有在本文中专门解决卷帘快门校定问题,但我们的方法隐含地利用了现代双目相机系统的两个优点。首先,他们有非常快的像素时钟,这减少了卷帘快门效应。其次,左右图像按行进行同步。因此,静止立体可以补偿由卷帘快门效应引入的多视图误差。

由于该数据集仅提供了不准确的GPS/车辆里程计信息,难以准确评估VO性能。此外,这个数据集有很多移动的物体,比如在相机前面行驶的汽车,以及严重的未标定的亮度变化(图7)。虽然我们的方法在能量函数中考虑了亮度变化,但简单的仿射亮度建模是不足以处理极端的情况。我们的方法在图7所示的场景中失败了,在这里严重的亮度变化与汽车强烈的旋转运动结合在一起。

在这里插入图片描述

图7 一个由于相机自动曝光/增益控制而导致严重亮度变化的例子。尽管进行了仿射亮度校正,但由于亮度变化太大以及汽车的强烈旋转运动,我们的方法在这里仍然失败了。

为了评估我们的跟踪精度,我们将长序列分成几个长度为3000到6000帧的小序列。对于每个小序列,我们使用Mercator投影从GPS坐标计算地面真实相机位姿,并使用SE(3)变换将这些位姿与我们的轨迹对齐。图9给出了相机轨迹估计的一些结果。与基于特征的方法相比,我们的方法的一大优势是,我们的VO方法可以创建精确且密度更高的3D重建。图8给出了Frankfurt序列的部分重建结果。虽然与之前的稠密或半稠密方法相比,重建的稀疏性要小一些,但由于窗口优化中的光束调整,重建的精度要高得多。更多的评价结果可以在补充材料中找到。

在这里插入图片描述

图8 Cityscapes数据集的定性结果示例。

在这里插入图片描述

图9 在Cityscapes Frankfrut双目序列中估计的轨迹。该序列是通过将长序列分割成若干个5000至6000帧的小片段得到的。

4 结论

在这项工作中,我们引入了双目直接稀疏里程计方法,作为一种直接的大尺度能力的方法,利用双目相机实时精确跟踪和建图。我们详细介绍了利用舒尔补将时间多视图立体与静止立体在边缘化框架内整合的技术实现。对KITTI数据集和Cityscapes数据集进行的全面定性和定量评估表明,Stereo DSO是目前在具有挑战性的现实场景中跟踪双目相机最准确和可靠的方法。特别是,在KITTI测试集上的评估表明,即使没有回环,Stereo DSO提供的结果也比带有回环和全局光束调整的Stereo ORB-SLAM2更准确。

在未来的工作中,我们计划将我们的方法扩展到一个完整的SLAM系统,增加回环和地图维护数据库。此外,我们还考虑了显式动态对象处理,进一步提高了VO的精度和鲁棒性。

致谢。略。

5 参考文献

略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YMWM_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值