当前位置:网站首页>论文阅读《Dense Visual SLAM for RGB-D Cameras》
论文阅读《Dense Visual SLAM for RGB-D Cameras》
2022-06-11 22:07:00 【YMWM_】
目录
摘要
在本文中,我们为RGB-D相机提出了一种稠密视觉SLAM方法,该方法可以最小化所有像素上的光度和深度误差。与稀疏的基于特征的方法相比,这允许我们更好地利用图像数据中的可用信息,从而获得更高的位姿精度。此外,我们提出了一种基于熵的相似性度量用于关键帧选取和回环检测。从所有成功的匹配中,我们构建了一个使用g2o框架进行优化的图。我们在公开的基准数据集上广泛地评估了我们的方法,发现它在低纹理和低结构的场景中表现良好。与几种最先进的方法直接比较,我们的方法产生了一个明显较低的轨迹误差。我们以开源方式发布该软件。
1 介绍
许多机器人应用,如导航和地图绘制,需要移动相机的精确和无漂移的位姿估计。以前的解决方案倾向于基于视觉特征的方法,并结合光束调整或位姿图优化。尽管这些方法都是最先进的,但选择相关关键点的过程会丢弃大量的图像数据。因此,我们的目标是开发一种稠密SLAM方法,(1)更好地利用传感器获得的数据,(2)仍然实时运行,(3)有效地消除漂移,并通过全局地图优化来修正累积误差。
帧间匹配的视觉里程计方法天生容易产生漂移。近年来出现了与基于特征的方法性能相当的稠密跟踪和建图方法。虽然frame-to-model的方法,如KinectFusion,共同估计一个持久的世界模型,它们仍然会有漂移累积(虽然比视觉里程计方法方法慢),因此只适用于重建一个小的工作空间(如桌子,或房间的一部分)。虽然这个问题可以使用更复杂的代价函数和对齐程序来延迟,但更基本的解决方案是可取的。
在本文中,我们通过几个关键组件扩展了稠密的视觉里程计,这些组件显著减少了漂移,并为获得全局最优的地图铺平了道路。图1显示了一个优化轨迹的示例和得到的一致点云模型。有关我们方法的实现,请浏览以下网页:
vision.in.tum.de/data/software/dvo
本文的主要贡献有:
- 一种快速的帧间配准方法,它优化灰度和深度误差
- 基于熵的关键帧选取方法,它显著降低了漂移
- 一种基于相同熵度量来验证回环的方法
- 将上述所有技术集成到一个通用的图SLAM求解器中,进一步减少了漂移。
通过对公开可用的RGB-D基准的广泛评估,我们证明了该方法获得了比现有的基于特征的方法更高的平均精度。此外,我们证明了我们的方法优于现有的稠密SLAM系统,如文献[5]和[11]。

2 相关工作
相机运动的估计被称为视觉里程计。大多数最先进的方法建立稀疏选择的视觉特征的对应关系来估计相机运动。
过去几年里,出现了一种视觉里程计稠密方法,它用来替代这些经典方法。Comport等人提出了一种直接最小化连续双目图像对之间光度误差的方法。Steinbrücker等人和Audras等人将这种方法应用于从最近的RGB-D相机(如微软Kinect)获得的图像中。在我们自己最近的工作中,我们将光度误差公式嵌入到概率框架中,并展示了如何基于传感器模型和运动先验来鲁棒化代价函数。
除了光度误差,还可以将三维点之间的几何误差最小化。这类算法被称为迭代最近点(ICP),并已探索了许多变体。
Morency等人提出了将光度误差和几何误差相结合的最小化用于前向跟踪,最近Tykkälä等人和Whelan等人将其用于相机运动估计。Meilland等人最近对该方法进行了扩展,使其相对于参照坐标系进行定位,并同时计算其超分辨率版本。
由于帧到帧运动估计的误差会随着时间的推移而累积,所以所有的里程计方法天生就容易发生漂移。这可以通过同时估计一致的地图来解决。然后根据一致的模型对相机进行定位,以此消除了漂移。
Newcombe等人提出逐步建立场景的稠密模型,并将每一个新的测量值配准到该模型中。Whelan等人将Newcombe等人的KinectFusion算法扩展到任意大的场景。由于KinectFusion不优化以前的相机位姿,没有可能纠正模型中累积的误差。同时定位与建图(SLAM)或运动结构恢复(SfM)的目标是联合优化模型和相机轨迹。通过这种方式,甚至可以在检测到回环之后纠正大的累积误差。在基于特征的方法中,场景通常被表示为之前观察到的3D特征点的集合。对于联合优化有两组主要的方法。一组为基于滤波的方法,滤波器的状态包括相机位姿和特征位置,如扩展卡尔曼滤波器,并逐步改进它们。另一组采用批量优化的方法来改进特征位置和相机位姿。Pose SLAM不结合传感器位姿优化场景结构,只优化传感器位姿。在Pose SLAM中,地图被表示为一个图,其中顶点表示传感器的绝对位姿,边表示它们之间的相对变换。这些变换是根据传感器测量结果计算出来的。最近,一些基于RGB-D相机的Pose SLAM算法被提出。
本文提出了一种视觉SLAM系统,该系统结合了基于联合优化光度和几何误差的稠密视觉里程计和位姿SLAM。我们展示了我们的系统优于可比较的基于稀疏特征的方法和稠密的帧间模型跟踪方法。与Tykkälä等人最近的工作相比,我们选取关键帧并同时优化地图。此外,我们不需要用户交互。
3 稠密视觉里程计
我们的目标是完全从图像流估计相机的运动。在每个时间步(timestep) t t t,相机提供一个RGB-D图像,包括一个灰度图像 I t I_t It和一个相应的深度图像 Z t Z_t Zt。给定两个连续时间步的RGB-D图像,我们想计算相机的刚体运动 g g g。
图2说明了这个想法。给定场景中的一个三维点 p p p和正确的运动 g ∗ g^* g∗,我们可以计算出它在第一张图像和第二张图像中对应的像素点坐标 x x x和 x ′ x' x′。一般来说,这对每个点都成立。这种假设也被称为光度一致性,只要传感器是无噪声的,场景是静态的,照明是恒定的。利用这一原则,我们求取目标相机运动,它最大化两张图像之间的光度一致性。

对于深度测量也可以提出类似的假设。给定一个点 p p p和正确的运动 g ∗ g^* g∗,我们可以在第二个深度图 Z 2 Z_2 Z2中预测它的深度测量。理想情况下,预测的深度测量值与实际测量值相等。推而广之,每个点都应该满足这个约束。因此,可以通过最小化预测深度测量和实际深度测量之间的差值来估计运动。在下文中,我们将该方法公式化。
A 相机模型
一个3D点在齐次坐标系下的坐标值为 p = ( X , Y , Z , 1 ) T p=(X,Y,Z,1)^T p=(X,Y,Z,1)T。我们利用它的像素坐标 x = ( x , y ) T \pmb{x} = (x, y)^T xxx=(x,y)T和对应的深度测量 Z = Z ( x ) Z = \mathcal{Z}(x) Z=Z(x)使用逆投影函数 π − 1 π^{−1} π−1重构一个点,即
p = π − 1 ( x , Z ) = ( x − o x f x Z , y − o y f y Z , Z , 1 ) T (1) \pmb{p}=\pi^{-1}(\pmb{x},Z)=\bigg( \frac{x-o_x}{f_x}Z,\ \frac{y-o_y}{f_y}Z,\ Z,\ 1 \bigg) ^T \tag{1} ppp=π−1(xxx,Z)=(fxx−oxZ, fyy−oyZ, Z, 1)T(1)
其中 f x f_x fx和 f y f_y fy是焦距, o x o_x ox和 o y o_y oy是标准针孔相机模型中相机光心的坐标值。一个点的像素坐标可以通过投影函数 π π π来计算:
x = π ( p ) = ( X f x Z + o x , Y f y Z + o y ) T (2) \pmb{x}=\pi(\pmb{p})=\bigg( \frac{Xf_x}{Z}+o_x,\ \frac{Yf_y}{Z}+o_y \bigg)^T \tag{2} xxx=π(ppp)=(ZXfx+ox, ZYfy+oy)T(2)
B 刚体运动
我们将相机的刚体运动 g g g限制为特殊欧几里德群 S E ( 3 ) SE(3) SE(3)。刚体运动 g g g的一个常见表示是变换矩阵 T T T,
T 4 × 4 = [ R 3 × 3 t 3 × 1 0 1 ] (3) \pmb{T}_{4\times 4}=\begin{bmatrix} \pmb{R}_{3\times 3} & \pmb{t}_{3\times 1} \\ \pmb{0} & 1 \end{bmatrix} \tag{3} TTT4×4=[RRR3×3000ttt3×11](3)
它由一个旋转矩阵和一个平移向量组成。用变换矩阵 g g g表示的点 p p p的变换定义为:
g ( p ) = p ′ = T p (4) g(\pmb{p})=\pmb{p}'=\pmb{T}\pmb{p} \tag{4} g(ppp)=ppp′=TTTppp(4)
变换矩阵 T T T是 g g g的过参数化表示,即 T T T有12个参数,而 g g g只有6个自由度。因此,我们使用与李群 S E ( 3 ) SE(3) SE(3)相关的李代数 s e ( 3 ) \mathfrak{se}(3) se(3)给出的扭坐标(twist coordinates) ξ \xi ξ表示。它是一个六维向量。通过矩阵指数 T = e x p ( ξ ^ ) T = exp(\hat{\xi}) T=exp(ξ^)可以从 ξ \xi ξ计算出变换矩阵 T T T。
C warping函数
根据之前定义的投影函数和刚体运动,我们可以推导出一个warping函数 τ \tau τ,它在给定刚体运动的情况下,计算出第一幅图像的像素在第二幅图像中的位置:
x ′ = τ ( x , T ) = π ( T π − 1 ( x , Z 1 ( x ) ) ) (5) \pmb{x}'=\tau(\pmb{x}, \pmb{T})=\pi \bigg( \pmb{T}\pi^{-1} \big( \pmb{x},\mathcal{Z}_1(\pmb{x}) \big) \bigg) \tag{5} xxx′=τ(xxx,TTT)=π(TTTπ−1(xxx,Z1(xxx)))(5)
D 误差函数
基于warping函数 τ \tau τ,我们定义像素 x x x的光度误差 r I r_I rI为
r I = I 2 ( τ ( x , T ) ) − I 1 ( x ) (6) r_I=I_2(\tau(x,T))-I_1(x) \tag{6} rI=I2(τ(x,T))−I1(x)(6)
同理,深度误差为
r Z = Z 2 ( τ ( x , T ) ) − [ T π − 1 ( x , Z 1 ( x ) ) ] Z (7) r_Z=\mathcal{Z}_2(\tau(x,T))-[T\pi^{-1}(x,\mathcal{Z}_1(x))]_Z \tag{7} rZ=Z2(τ(x,T))−[Tπ−1(x,Z1(x))]Z(7)
其中 [ ⋅ ] Z [\cdot]_Z [⋅]Z返回三维点的 Z Z Z分量,例如 [ p ] Z = Z [\pmb{p}]_Z=Z [ppp]Z=Z。因此,第二项是变换点的深度,由第一张深度图像重建而来。结果表明,深度误差等价于采用投影查找的点对面ICP公式。
E 概率公式
在我们以前的工作中,给定光度误差 r I r_I rI,我们给出了相机运动 ξ \xi ξ估计的概率公式。该公式允许使用不同的概率分布的光度误差和先验的运动参数 ξ \xi ξ。在下文中,我们将对推导过程做一个简短的总结。我们试图通过最大化给定像素级误差的概率来确定 ξ ∗ \xi^{*} ξ∗,即
ξ ∗ = a r g m a x ξ p ( ξ ∣ r I ) (8) \xi^{*}=\underset{\xi}{\mathrm{argmax}}\ p(\xi|r_I) \tag{8} ξ∗=ξargmax p(ξ∣rI)(8)
应用贝叶斯法则,假设所有误差独立同分布,利用负对数似然,得到
ξ ∗ = a r g m i n ξ − ∑ i n l o g ( p ( r I , i ∣ ξ ) ) − l o g ( p ( ξ ) ) (9) \xi^{*}=\underset{\xi}{\mathrm{argmin}}\ -\sum_i^n\mathrm{log}(p(r_{I,i}|\xi))-\mathrm{log}(p(\xi)) \tag{9} ξ∗=ξargmin −i∑nlog(p(rI,i∣ξ))−log(p(ξ))(9)
如果 p ( r I , i ∣ ξ ) p(r_{I,i} | \xi) p(rI,i∣ξ)被定义为高斯分布,该问题将是一个标准的最小二乘问题。但是,我们发现其光度误差服从 t t t分布 p t ( 0 , σ 2 , ν ) p_t(0,\sigma^2,ν) pt(0,σ2,ν),均值为 0 0 0,方差为 σ 2 \sigma^2 σ2和自由度为 ν ν ν。我们发现 t t t分布是一个合适的模型,因为它可以解释为具有不同方差的无限高斯分布混合。因此,放宽了公式(9)中的独立同分布假设。较大的误差来源于方差较大的分量,得到的权重较小。反之,小误差属于方差小的分量,影响较大。将 p ( r I , i ∣ ξ ) p(r_{I,i} | \xi) p(rI,i∣ξ)定义为 t t t分布,得到迭代重加权最小二乘公式:
ξ ∗ = a r g m i n ξ ∑ i n w i r I , i 2 (10) \xi^{*}=\underset{\xi}{\mathrm{argmin}} \sum_i^nw_ir_{I,i}^2 \tag{10} ξ∗=ξargmini∑nwirI,i2(10)
在本文中,我们通过引入深度误差 r z r_z rz来扩展我们先前的公式。因此,我们将光度误差和深度误差建模为二元随机变量 r = ( r I , r Z ) T r=(r_I,r_Z)^T r=(rI,rZ)T,它遵循二元 t t t分布 p t ( 0 , Σ , v ) p_t(0,\Sigma,v) pt(0,Σ,v)。对于二元情况,公式(10)可以写成,
ξ ∗ = a r g m i n ξ ∑ i n w i r i T Σ − 1 r i (11) \xi^*=\underset{\xi}{\mathrm{argmin}} \sum_i^nw_ir_i^T\Sigma^{-1}r_i \tag{11} ξ∗=ξargmini∑nwiriTΣ−1ri(11)
基于 t t t分布的权重 w i w_i wi为:
w i = v + 1 v + r i T Σ − 1 r i (12) w_i= \frac{v+1}{v+r_i^T\Sigma^{-1}r_i} \tag{12} wi=v+riTΣ−1riv+1(12)
注意,我们的公式与以前的公式有本质上的不同,因为它们只是线性地结合了光度误差和深度误差。为了平衡这两个误差项,他们使用了手动选择的权重[9]或启发式计算的权重[8]。此外,线性组合假定两个误差之间的独立性。相比之下,我们的模型降低了误差的权重,这些误差要么有较大的光度误差,要么有较大的深度误差,或者两者都有,因为它们很可能是异常值。此外,误差项的权重由 Σ \Sigma Σ自动调整。
F 线性化和优化
求最小值的误差函数(11)在运动参数 ξ \xi ξ中不是线性的。因此,我们利用一阶泰勒展开,在当前运动估计 ξ k \xi_k ξk处将其线性化。得到的非线性最小二乘问题的正规方程为:
A Δ ξ = b ∑ i n w i J i T Σ − 1 J i Δ ξ = − ∑ i n w i J i T Σ − 1 r i (13) \begin{matrix} A\Delta \xi = b \\ \\ \sum_i^nw_iJ_i^T\Sigma^{-1}J_i\Delta \xi = -\sum_i^nw_iJ_i^T\Sigma^{-1}r_i \end{matrix} \tag{13} AΔξ=b∑inwiJiTΣ−1JiΔξ=−∑inwiJiTΣ−1ri(13)
其中 J i J_i Ji是 2 × 6 2\times6 2×6雅克比矩阵,它是 r i r_i ri相对于 ξ \xi ξ的导数, n n n是所有的像素个数。我们迭代求解增量 Δ ξ \Delta \xi Δξ的正规方程。在每次迭代中,我们使用 t t t分布的标准期望最大化算法重新估计尺度矩阵 Σ \Sigma Σ和权重 w i w_i wi。此外,我们采用了一个由粗到精的方案,以考虑更大范围的相机运动。
G 参数不确定性
我们假设估计参数 ξ \xi ξ是正态分布的,且有平均值 ξ ∗ ξ^∗ ξ∗和协方差 Σ ξ \Sigma_\xi Σξ,即 ξ ∼ N ( ξ ∗ , Σ ξ ) \xi \sim \mathcal{N} (\xi^*, \Sigma_ξ) ξ∼N(ξ∗,Σξ)。正规方程(参见公式(13))中的近似Hessian矩阵A等价于Fisher信息矩阵。其逆给出了估计参数 ξ \xi ξ的方差的下界,即 Σ ξ = A − 1 \Sigma_\xi = A^{−1} Σξ=A−1。
总而言之,本节介绍的方法允许我们通过最小化光度误差和几何误差来对齐两个RGB-D图像。通过使用 t t t分布,我们的方法对模型的小偏差具有鲁棒性。
4 基于关键帧的视觉SLAM
因为在估计中总是有一个小误差,上述增量式帧间对齐方法固有地积累了漂移。这种误差是由传感器噪声和误差模型的不准确引起的,它不能捕获传感器数据中的所有变化。
为了克服这一局限性,我们采用了基于关键帧的位姿SLAM方法,并将其与稠密视觉里程计方法相结合。为了限制局部漂移,我们估计当前图像和关键帧之间的变换。只要相机离关键帧足够近,就不会产生漂移。每个关键帧都被插入到地图中,并通过一个约束连接到与它最近的前一个关键帧。当重新访问场景中先前看到的区域时,可以建立对旧关键帧的附加约束,以校正累积的漂移。这些附加的约束称为闭环。因此,SLAM系统需要额外执行:
- 关键帧选择
- 回环检测和验证
- 地图优化
在下面的部分中,我们将描述这些子问题的解决方案。
A 关键帧的选取
当当前图像不能再与最新的关键帧进行匹配时,就必须使用新的关键帧。有几种策略来决定何时选择一个新的关键帧。创建一个新的关键帧的常见策略有:(1)每 n n n帧内选择,(2)在特定的旋转和平移距离内选择[11],(3)当两幅图像中可见的特征数量低于一个阈值时选择[1]。Meilland等人的全景相机的稠密方法对误差的方差和总值使用一个阈值。
在我们的方法中,我们发现由公式(11)计算的误差值是不可直接比较的,因为它取决于误差分布的规模(scale) Σ \Sigma Σ,这在不同的图像对之间是不同的。此外,我们希望减少用户定义参数的数量。因此,我们采用以下策略。
一个 m m m维的多元正态分布 x ∼ N ( μ , Σ ) x \sim \mathcal{N}(μ,Σ) x∼N(μ,Σ)的微分熵定义为:
H ( x ) = 0.5 m + ( 1 + l n ( 2 π ) ) + 0.5 l n ( ∣ Σ ∣ ) (14) H(x)=0.5m+(1+ln(2\pi))+0.5ln(|\Sigma|) \tag{14} H(x)=0.5m+(1+ln(2π))+0.5ln(∣Σ∣)(14)
去掉常数项,熵与协方差矩阵行列式的自然对数成正比,即 H ( x ) ∝ l n ( ∣ Σ ∣ ) H(x) \propto ln(|\Sigma|) H(x)∝ln(∣Σ∣)。因此,它将协方差矩阵中编码的不确定性抽象为一个标量值。
我们观察到参数熵 H ( ξ ) H(\xi) H(ξ)与估计轨迹误差之间的关系。由于熵随着轨迹而变化,同时它也随着场景而变化,因此简单的阈值是不适用的。为了克服这个限制,我们计算从最近一个关键帧 k k k到当前帧 j j j的运动估计 ξ k , k + j \xi_{k,k+j} ξk,k+j和从关键帧 k k k到下一个帧 k + 1 k+1 k+1的运动 ξ k , k + 1 \xi_{k,k+1} ξk,k+1之间的熵比,即:
α = H ( ξ k : k + j ) H ( ξ k : k + 1 ) (15) \alpha=\frac{H(\xi_{k:k+j})}{H(\xi_{k:k+1})} \tag{15} α=H(ξk:k+1)H(ξk:k+j)(15)
这是合理的,第一帧与新的关键帧匹配的距离最小,估计是最准确的。因此,我们可以将该熵值作为未来比较的参考值。当当前帧与关键帧之间的距离增大时,熵增大,即α减小。图3显示了fr1/desk数据集的其它所有帧与第50帧的熵比。在这个例子中,公式(15)中的分母是50帧到51帧相对变换的熵,即 H ( ξ k : k + 1 ) = H ( ξ 50 : 51 ) H(\xi_{k:k+1})=H(\xi_{50:51}) H(ξk:k+1)=H(ξ50:51)。如果 α α α低于当前帧的预定义阈值,则前一帧将被选择为新的关键帧并插入到地图中。我们的比值检验类似于Stückler等人描述的回环的似然比值检验。

B 回环检测
对于关键帧选择步骤,有几种方法可以检测回环。最简单的策略是对所有现有关键帧进行线性搜索,即一个新的关键帧与所有其它关键帧进行匹配。随着关键帧数量的增加,这很快就变得难以处理。因此,重要的是有效地缩小搜索空间,只匹配最有可能的候选帧。一种常见的方法是位置识别系统,它从图像中提取视觉特征描述子,并训练有效的数据结构,用于快速搜索和候选检索。其它方法使用测量或概率最近邻搜索。
对于我们的应用,我们选择了测量的最近邻搜索,因为我们在空间受限的室内环境中运行,我们的视觉里程计是足够准确的。我们在关键帧位置周围预定义半径的球体中搜索回环候选帧。我们在粗分辨率下,计算每个候选帧与关键帧的相对变换和相关协方差矩阵。为了验证候选帧,我们使用与关键帧选择相同的熵比检验(见公式(15))。但是,我们使用所有成功匹配到关键帧的中间帧的平均熵来代替第一帧转换到关键帧的熵 H ( ξ k : k + 1 ) H(ξ_{k:k+1}) H(ξk:k+1)。该准则背后的直觉是,中间帧在空间和时间上最接近关键帧,因此产生最佳的可能配准结果与最低的不确定性。如果从低分辨率图像得到的参数估计通过检验,我们也可以使用更高的分辨率来计算改进的估计。最后,再次进行同样的熵比检验。如果这个检验也成功了,我们就在图中插入一条带有相对位姿约束的新边。图3显示了熵比再次增加,当相机返回到第50帧的附近(420-450帧)。此外,图3显示了高熵比与估计中的低误差重合。
C 地图表示与优化
我们将地图表示为相机位姿的图形,其中每个顶点都是关键帧的位姿。边表示关键帧之间的相对变换。当我们向地图中添加新的关键帧时,将创建由相对变换链接的关键帧链。为了校正轨迹中累积的误差,我们在之前访问过的关键帧中搜索回环。有效的回环将成为图中的新边。然后,通过求解非线性最小二乘优化问题来修正误差。误差修正分布在回环的边上。利用相对运动估计的协方差矩阵 Σ ξ Σ_ξ Σξ对每条边进行加权。因此,高不确定度的边的估计比低不确定度的边的估计更能补偿误差。我们使用Kümmerle等人的g2o框架作为地图表示和优化的实现。在数据集的最后,我们为每个关键帧搜索额外的回环约束,并再次优化整个图。
图1显示了一个优化的姿态图。蓝色的相机截锥代表关键帧的位姿。青色链接表示回环。回环和地图优化修正了红色显示的帧到关键帧里程计的累积漂移。修正后的轨迹可以构建场景的一致点云模型。
在本节中,我们描述了一种基于参数分布的熵来评估运动估计质量的方法,我们使用它来选择关键帧,检测回环,并构建位姿图。
5 评估
我们使用慕尼黑工业大学提供的RGB-D基准进行评估。该基准包含多个真实的数据集,由RGB-D相机捕获。每个数据集都带有一个由外部运动捕捉系统获得的真实轨迹。
在第一组实验中,我们评估了组合光度误差和几何误差最小化的好处。具有不同数量纹理和结构的RGB-D数据集适合于此目的。图4显示了不同数据集的代表性图像。表1显示了实验结果。前两列表示数据集是(x)否(-)包含结构或纹理。第三列显示相机到场景的定性距离。最后三列显示了三种不同的估计方法的均方根误差(RMSE),以米/秒为单位,仅RGB,仅深度和合并。只有RGB的里程计在带有纹理的无结构场景中比只有深度的效果更好,反之亦然。组合的变体在这些数据集上优于这两种方法。然而,在具有结构和纹理的数据集上,结合RGB和深度里程计比仅RGB里程计性能略差。然而,它在不同的场景类型上表现出了更好的泛化能力。在因自动曝光导致的灰度变化情况下,深度项有助于稳定估计。


在第二组实验中,我们比较了帧到帧(RGB+D)、帧到关键帧(RGB+D+KF)和带有位姿图优化的帧到关键帧(RGB+D+KF+Opt)跟踪的性能。我们使用了所有freiburg1(fr1)数据集。表2显示了结果。在16个数据集中,我们的视觉SLAM系统有11个漂移最小。fr1/floor和fr1/plant(v)数据集上的高漂移值源于不正确的回环。注意帧到帧的跟踪在fr1/floor数据集上失败了,因为在数秒内丢失了帧。由于使用关键帧,性能平均提高了16%。额外加入位姿图优化将性能提高到20%。实验表明,帧到关键帧的跟踪已经具有很高的准确性。然而,位姿图优化的主要好处在于修正了长期漂移。freiburg1序列(不包括fr1/floor)帧到帧跟踪的绝对轨迹误差(ATE) RMSE的平均值为0.19米。相比之下,基于位姿图优化的帧到关键帧跟踪算法的ATE RMSE平均值为0.07米。它产生了近170%的提升。

最后,我们将我们的方法与最近最先进的视觉SLAM方法进行比较,即RGB-D SLAM系统、多分辨率surfel map(MRSMap)和KinectFusion(KinFu)的PCL实现。表3总结了结果。第1列包含数据集名称,第2列显示系统创建的关键帧的数量。接下来的列显示了我们的系统、RGB-D SLAM、MRSMap和KinectFusion的绝对轨迹误差的RMSE。我们的系统在8个数据集中的5个表现最佳,所有系统的结果都是可用的。与其它3个数据集上最好的系统的差异很小。相比之下,我们对于长而复杂的轨迹(如fr1/room, fr1/teddy)的改进比其它系统更加显著。

我们所有的实验都是在Intel Core i7-2600 CPU、3.40GHz和16GB RAM的PC上进行的。视觉里程计和SLAM组件在单独的线程中运行。帧到关键帧跟踪的时间几乎恒定在32毫秒左右。回环检测和优化的时间取决于图中关键帧和边的数量。这个地图更新的平均处理时间是135毫秒。在运动估计的由粗到精的优化中,我们使用了 320 × 240 320 × 240 320×240像素的三种不同的图像分辨率。
6 结论
在本文中,我们提出了一种将稠密跟踪与关键帧选取和位姿图优化相结合的新方法。在我们对公开数据集的实验中,我们表明关键帧的使用已经减少了漂移(16%)。我们引入一种基于熵的准则来选择合适的关键帧。此外,我们还展示了同样的基于熵的度量可以有效地用于检测回环。通过优化生成的位姿图,我们表明全局轨迹误差可以显著降低170%。我们所有的实验评估都是在公开的基准序列上进行的。我们以开源的形式发布我们的软件,并计划提供估计的轨迹以促进进一步的比较。
下一步,我们计划根据优化的相机轨迹生成高质量的3D模型。此外,我们希望通过融合类似文献[22]和文献[32]的中间帧来提高关键帧的质量。可以使用更复杂的技术来检测回环,例如协方差传播或类似文献[36]的反向索引。
参考文献
略
边栏推荐
- Is the securities account recommended by qiniu safe? Is it reliable
- Matlab: 文件夹锁定问题的解决
- Summary of common paging methods
- Why is the printer unable to print the test page
- 高考结束,人生才刚刚开始,10年职场老鸟给的建议
- 超标量处理器设计 姚永斌 第2章 Cache --2.4 小节摘录
- Go encoding package
- C language implements eight sorts of sort merge sort
- Classes and objects (1)
- leetcode 257. Binary Tree Paths 二叉树的所有路径(简单)
猜你喜欢

【LeetCode】11. Container with the most water

电脑强制关机 oracle登录不上
![[niuke.com] DP30 [template] 01 Backpack](/img/a2/9bcfbe6f78f30282fd8940c57477b1.jpg)
[niuke.com] DP30 [template] 01 Backpack

高考结束,人生才刚刚开始,10年职场老鸟给的建议

189. rotation array

R语言书籍学习03 《深入浅出R语言数据分析》-第七章 线性回归模型

Classes and objects (2)

Prefabricated dishes in the trillion market have also begun to roll inside. How can brands stand out in the fierce competition?

如果重来一次高考,我要好好学数学!

How to use the transaction code sat to find the name of the background storage database table corresponding to a sapgui screen field
随机推荐
[niuke.com] ky41 put apples
STM32 development note 113:ads1258 drive design - reading temperature value
Why is the printer unable to print the test page
Go IO module
Superscalar processor design yaoyongbin Chapter 2 cache -- Excerpt from subsection 2.2
被忽略的技巧:位运算
All features of polymorphism
Tkinter学习笔记(四)
Use the securecrtportable script function to read data from network devices
带有 ceph-csi 的静态 PVC
Stack栈的实现
[today in history] June 11: the co inventor of Monte Carlo method was born; Google launched Google Earth; Google acquires waze
Latex combat notes 3- macro package and control commands
【数据挖掘时间序列分析】餐厅销量预测
360 online enterprise security cloud is open to small, medium and micro enterprises for free
二叉树的基本操作与题型总结
Three methods of quick sorting
【NodeJs】Electron安装
还在直接用 localStorage 么?该提升下逼格了
C language implements eight sorts (3)