ORB-SLAM 论文阅读

news2024/11/16 11:53:40

论文链接

ORB-SLAM


0. Abstract

  • 本文提出了 ORB-SLAM,一种基于特征的单目同步定位和建图 (SLAM) 系统
  • 该系统对严重的运动杂波具有鲁棒性,允许宽基线环路闭合和重新定位,并包括全自动初始化
  • 选择重建的点和关键帧的适者生存策略具有出色的鲁棒性,并生成紧凑且可跟踪的地图

1. Intro

捆绑调整 (BA) 可以提供相机定位的准确估计以及稀疏几何重建,前提是提供了强大的匹配网络和良好的初始猜测。实时 SLAM 算法必须为 BA 提供以下功能

  • 所选帧(关键帧)子集之间场景特征(地图点)的相应观察
  • 随着复杂性随着关键帧数量的增加而增加,对于它们的选择应该避免不必要的冗余
  • 关键帧和点的强大网络配置可产生准确的结果,即一组分布良好的关键帧观察点,具有显着的视差和大量的闭环匹配
  • 用于非线性优化的关键帧姿态和点位置的初始估计
  • 探索中的本地地图,重点优化以实现可扩展性
  • 执行快速全局优化(例如位姿图)以实时关闭循环的能力

Bundle Adjustment(捆绑调整)是计算机视觉和摄影测量学领域中的一种优化技术,用于同时优化三维场景的结构和相机的姿态参数。这个技术主要用于多视图立体重建、结构从运动(Structure from Motion,SfM)和摄影测量学等应用中。

在多视图系统中,一组相机拍摄了同一场景的不同视图,生成了一系列的图像。Bundle Adjustment的目标是通过调整相机的姿态(旋转和平移)以及三维场景中的点的位置,使得投影到图像平面上的这些点与实际观测到的图像点之间的误差最小化

一些前期工作的不足之处:缺乏循环闭合和对遮挡的充分处理、重定位视角的低不变性以及需要人为干预来进行地图引导

本文的贡献:

  • 对所有任务使用相同的功能:跟踪、映射、重新定位和循环闭合。这使得我们的系统更加高效、简单和可靠。我们使用 ORB 功能,无需 GPU 即可实现实时性能,为视点和照明的变化提供良好的不变性
  • 大型环境下的实时操作。由于使用了共视图,跟踪和地图绘制集中在局部共视区域,与全局地图大小无关
  • 基于姿势图优化的实时循环闭合,称之为基本图。它是由系统维护的生成树、闭环链接和共视图的强边构建的
  • 实时相机重新定位,对视点和照明具有显着的不变性。这允许从跟踪失败中恢复并且还增强了地图的重用
  • 基于模型选择的新的自动且稳健的初始化过程,允许创建平面和非平面场景的初始地图
  • 地图点和关键帧选择采用适者生存的方法,在生成时很宽泛,但在剔除时却非常严格。该策略提高了跟踪的鲁棒性并增强了终身操作,因为冗余的关键帧被丢弃

2. Related Work

A. 地点识别

  • 基于外观的技术(即图像到图像匹配)在大型环境中比地图到地图或图像到地图方法具有更好的扩展性
    • 词袋技术

B. 地图初始化

单目 SLAM 需要一个过程来创建初始地图,因为无法从单个图像中恢复深度

  • 在过滤方法的背景下,可以使用逆深度参数化以深度的高度不确定性来初始化点
  • 将像素的深度初始化为具有高方差的随机值

两种重建方法在低视差下都没有得到很好的约束,并且如果平面场景的所有点都更接近相机中心之一,会出现双重歧义的解决方案问题。另一方面,如果看到有视差的非平面场景,则可以使用八点算法计算唯一的基本矩阵,并且可以毫无歧义地恢复相对相机位姿。

C. 单目同步定位与建图

  • 最初,单目SLAM是通过滤波方法解决:每个帧都通过滤波器进行处理,以联合估计地图特征的位置和相机的姿态
  • 另一方面,基于关键帧的方法仅使用选定的帧(关键帧)来估计地图,从而允许进行更昂贵但更准确的捆绑调整优化,因为地图生成不受帧率的限制

最具代表性的基于关键帧的 SLAM 系统可能是PTAM。PTAM 不会检测大循环,并且重新定位基于关键帧的低分辨率缩略图的相关性,从而产生较低的视点不变性


3. System Overview

A. 特性选择

主要设计思想映射和跟踪所使用的相同特征用于位置识别,以执行帧速率重新定位和循环检测

B. 三个线程:跟踪、本地映射和闭环

Fig. 1 ORB-SLAM 系统概述,显示跟踪、本地映射和闭环线程执行的所有步骤。还显示了地点识别模块和地图的主要组件

  • 跟踪负责用每一帧定位摄像机并决定何时插入新的关键帧

    • 首先执行与前一帧的初始特征匹配,并使用仅运动 BA 优化姿势。如果跟踪丢失(例如,由于遮挡或突然移动),位置识别模块将用于执行全局重新定位
    • 一旦对相机姿态和特征匹配进行了初步估计,就可以使用系统维护的关键帧的共视图来检索局部可见地图
    • 然后,通过重投影搜索与本地地图点的匹配,并对所有匹配再次优化相机姿态
    • 最后,跟踪线程决定是否插入新的关键帧
  • 局部映射处理新的关键帧并执行局部BA以实现相机位姿周围的最佳重建

    • 在共视图中的连接关键帧中搜索新关键帧中不匹配 ORB 的新对应关系,以对新点进行三角测量
    • 根据跟踪期间收集的信息,应用紧急点剔除策略,以便仅保留高质量点
    • 本地映射还负责剔除冗余关键帧
  • 循环闭合会在每个新关键帧中搜索循环

    • 如果检测到循环,就会计算相似变换,以告知循环中累积的漂移。然后,将循环的两侧对齐并融合重复的点
    • 最后,对相似性约束进行位姿图优化以实现全局一致性

C. 地图点、关键帧及其选择

对于地图点 p i p_i pi 存储一下内容:

  • 其在世界坐标系中的 3D 位置 X w , i X_{w,i} Xw,i

  • 观察方向 n i n_i ni,它是所有观察方向的平均单位向量(将点与观察它的关键帧的光学中心连接起来的光线)

  • 代表性 ORB 描述符 D i \mathbf{D}_i Di,它是关联的 ORB 描述符,其汉明距离相对于观察点的关键帧中的所有其他关联描述符来说是最小的

    汉明距离(Hamming Distance)是用来衡量两个等长字符串在相应位置上不同字符的个数。在计算机科学和信息理论中,汉明距离通常用于比较两个等长的二进制串,但它的概念也可以扩展到其他类型的序列

  • 根据 ORB 特征的尺度不变性限制,可以观察到该点的最大 d m a x d_{max} dmax 和最小 d m i n d_{min} dmin 距离

每个关键帧 K i K_i Ki 存储以下内容

  • 相机位姿 T i w T_{iw} Tiw ,这是一种刚体变换,将点从世界坐标系变换到相机坐标系
  • 相机内在参数,包括焦距和主点
  • 帧中提取的所有 ORB 特征,无论是否与地图点相关,如果提供了畸变模型,则其坐标不会畸变

地图点和关键帧是通过宽泛的策略创建的,而后来非常严格的剔除机制负责检测冗余关键帧和错误匹配或不可跟踪的地图点

D. 共视图和本质图

  • 关键帧之间的共可见性信息在我们系统的多个任务中非常有用,并表示为无向加权图。每个节点都是一个关键帧,如果两个关键帧共享相同地图点(至少 15 个)的观测值,则存在一条边,边的权重 θ \theta θ 为公共地图点的数量
  • 为了纠正循环,执行位姿图优化,将循环闭合误差沿图分布
  • 为了不包含共视图提供的所有边(可能非常密集),我们构建一个保留所有节点(关键帧)的基本图,但保留较少的边,仍然保留产生准确结果的强大网络
    • 系统从初始关键帧逐步构建生成树,该生成树提供了具有最少边数的共视图的连接子图
    • 插入新关键帧时,它会包含在链接到共享最多点观测值的关键帧的树中,并且当通过剔除策略删除关键帧时,系统会更新受该关键帧影响的链接
    • 基本图包含生成树、具有高共可见性 ( θ m i n = 100 θ_{min} = 100 θmin=100) 的共可见图的边子集以及闭环边,从而形成强大的摄像机网络

Fig. 2 来自 TUM RGB-D 基准的办公室家庭序列 fr3_long_office_household 的重建和图表。 (a) 关键帧(蓝色)、当前相机(绿色)、地图点(黑色、红色)、当前本地地图点(红色)。 (b) 可见性图。 © 生成树(绿色)和闭环(红色)。 (d) 基本图表

E. 词袋地点识别

“Bag of Words”(BoW)是一种用于文本数据处理的技术,主要用于文本特征提取和表示。它将文本文档表示为一个无序词集合,忽略文本中单词的顺序和语法,仅考虑单词的出现频率。这种方法的核心思想是将文本看作是一个“袋子”(bag),其中包含了所有词汇的信息,但忽略了它们的顺序

这里,在 Bags of Words Place Recognition 中,场景或地点被表示为单词的集合,忽略了它们的空间或顺序关系

该系统嵌入了基于DBoW2 2 ^2 2 的词袋位置识别模块,以执行循环检测和重新定位。视觉词只是描述符空间的离散化,称为视觉词汇

  • 系统逐步构建一个包含倒排索引的数据库,该索引存储词汇表中的每个视觉单词在哪些关键帧中被看到,以便可以非常有效地查询数据库
  • 当剔除过程删除关键帧时,数据库也会更新
  • 由于关键帧之间存在视觉重叠,因此在查询数据库时,不会存在唯一的高分关键帧。对共视图中连接的关键帧进行分组。此外,数据库会返回分数高于最佳分数 75% 的所有关键帧匹配

4. Automatic Map Initialization

地图初始化的目标是计算两个帧之间的相对姿态,以对一组初始地图点进行三角测量

  • 并行计算两个几何模型:假设平面场景的单应性和假设非平面场景的基本矩阵
  • 使用启发式方法来选择模型,并尝试使用所选模型的特定方法来恢复相对姿势

算法的步骤如下:

  • 查找初始对应:在当前帧 F c F_c Fc 中提取 ORB 特征(仅在最精细的尺度上),并在参考帧 F r F_r Fr 中搜索匹配 x c ↔ x r \mathrm{x}_c ↔ \mathrm{x}_r xcxr 。如果没有找到足够的匹配项,则重置参考系

  • 两个模型的并行计算:在并行线程中计算单应性 H c r \mathbf{H}_{cr} Hcr 和基本矩阵 F c r \mathbf{F}_{cr} Fcr
    x c = H c r x r ,      x c T F c r x r = 0 (1) \mathrm{x}_c=\mathbf{H}_{cr}\mathrm{x}_r,\ \ \ \ \mathrm{x}^T_c\mathbf{F}_{cr}\mathrm{x}_r=0\tag{1} xc=Hcrxr,    xcTFcrxr=0(1)
    分别使用归一化 DLT 和八点算法。为了使两个模型的过程均匀,两个模型的迭代次数都是相同的,以及每次迭代要使用的点:八个用于基本矩阵,其中四个用于单应矩阵。。在每次迭代中,我们计算每个模型 M M M 的分数 S M S_M SM H H H 表示单应性, F F F 表示基本矩阵)
    S M = ∑ i ( ρ M ( d c r 2 ( x c i , x r i , M ) ) + ρ M ( d r c 2 ( x c i , x r i , M ) ) ) ρ M ( d 2 ) = { Γ − d 2 ,     i f     d 2 < T M 0 , i f     d 2 ≥ T M (2) S_M=\sum\limits_i(\rho_M(d^2_{cr}(\mathrm{x}^i_c,\mathrm{x}^i_r,M))+\rho_M(d^2_{rc}(\mathrm{x}^i_c,\mathrm{x}^i_r,M)))\\ \rho_M(d^2)=\left\{ \begin{aligned} &\Gamma-d^2,\ \ \ &if\ \ \ &d^2<T_M\\ &0, &if\ \ \ &d^2\geq T_M \end{aligned} \right.\tag{2} SM=i(ρM(dcr2(xci,xri,M))+ρM(drc2(xci,xri,M)))ρM(d2)={Γd2,   0,if   if   d2<TMd2TM(2)

    其中 d c r 2 d^2_{cr} dcr2 d r c 2 d^2_{rc} drc2 是从一帧到另一帧的对称传输误差。 T M T_M TM 是基于 95% 的 X 2 \mathcal{X}^2 X2 检验的异常值拒绝阈值。 Γ \Gamma Γ 被定义为等于 T H T_H TH,以便两个模型在其内点区域中对于相同的 d 得分相同,再次使过程均匀

  • 模型选择:如果场景是平面、接近平面或存在低视差,则可以用单应性来解释。我们应该选择单应性,因为重建方法将从平面正确初始化,否则它将检测低视差情况并拒绝初始化。另一方面,具有足够视差的非平面场景只能由基本矩阵来解释,但如果匹配位于平面上或视差较低(距离较远),也可以找到单应性来解释匹配的子集。一个稳健的启发式方法如下
    R H = S H S H + S F (3) R_H=\frac{S_H}{S_H+S_F}\tag{3} RH=SH+SFSH(3)
    如果 R H > 0.45 R_H > 0.45 RH>0.45,则选择单应性,这足以捕获平面和低视差情况。否则选择基本矩阵

  • 运动和运动恢复结构:一旦选择了一个模型,检索与之关联的运动假设。如果视差较低,点很容易进入相机的前面或后面,这可能会导致选择错误的解决方案。如果没有明确的获胜解决方案,不会初始化并从步骤 1 继续。这种消除解决方案歧义的技术使我们的初始化在低视差和双重模糊配置下具有鲁棒性,可以被认为是我们方法鲁棒性的关键。对于基本矩阵,我们使用校准矩阵 K \mathbf{K} K 将其转换为基本矩阵:
    E r c = K T F r c K (4) \mathbf{E}_{rc}=\mathbf{K}^T\mathbf{F}_{rc}\mathbf{K}\tag{4} Erc=KTFrcK(4)

  • 捆绑调整:最后,执行完整的 BA(详细信息请参阅附录)以细化初始重建

Fig. 3 顶部:PTAM,中间:LSD-SLAM,底部:ORB-SLAM,NewCollege 序列初始化后的一段时间。 PTAM 和 LSD-SLAM 初始化损坏的平面解决方案,而我们的方法在检测到足够的视差时会自动从基本矩阵进行初始化。根据手动选择的关键帧,PTAM 也能够很好地初始化。


5. Tracking

A. ORB 提取

  • 为了确保均匀分布,我们将每个尺度级别划分为网格,尝试为每个单元提取至少五个角点。然后,我们检测每个单元中的角点,如果没有找到足够的角点,则调整检测器阈值
  • 如果某些单元格不包含角点(无纹理或低对比度),则每个单元格保留的角点数量也会进行调整

B. 前一帧的初始姿态估计

  • 如果最后一帧的跟踪成功,则使用等速运动模型来预测相机姿势并对最后一帧中观察到的地图点进行引导搜索
  • 如果没有找到足够的匹配项(即明显违反了运动模型),将在最后一帧中围绕其位置对地图点进行更广泛的搜索
  • 利用找到的对应关系来优化姿势

C. 通过全局重定位进行初始姿态估计

  • 如果跟踪丢失,则将帧转换为词袋,并在识别数据库中查询关键帧候选者以进行全局重新定位
  • 如果找到具有足够内点的相机姿势,则优化该姿势并执行引导搜索,以查找与候选关键帧的地图点的更多匹配项
  • 最后,再次优化相机姿势,如果有足够的内点支持,则跟踪过程将继续

D. 跟踪本地地图

一旦有了相机姿态的估计和一组初始特征匹配,就可以将地图投影到框架中并搜索更多地图点对应关系。为了限制大地图的复杂性,只投影局部地图

  • 该局部地图包含与当前帧共享地图点的关键帧 K 1 \mathcal{K}_1 K1 集合,以及与共视图中关键帧 K 1 \mathcal{K}_1 K1 相邻的集合 K 2 \mathcal{K}_2 K2
  • 局部地图还有一个参考关键帧 K r e f ∈ K 1 K_{ref} ∈ \mathcal{K}_1 KrefK1 ,它与当前帧共享大多数地图点
    • 计算当前帧中的地图点投影 x \mathrm{x} x。如果超出图像范围则丢弃
    • 计算当前视线 v \mathrm{v} v 与地图点平均观看方向 n \mathrm{n} n 之间的角度。如果 v ⋅ n < c o s ( 60 ° ) \mathrm{v} · \mathrm{n} < cos(60°) vn<cos(60°),则丢弃
    • 计算地图点到相机中心的距离 d d d。如果超出地图点 d ∉ [ d m i n , d m a x ] d \notin [d_{min}, d_{max}] d/[dmin,dmax] 的尺度不变性区域,则丢弃
    • 通过比率 d / d m i n d/d_{min} d/dmin 计算框架中的比例
    • 将地图点的代表描述符 D \mathbf{D} D 与帧中在预测比例下、 x \mathrm{x} x 附近仍不匹配的ORB特征进行比较,并将地图点与最佳匹配相关联

E. 新关键帧决策

最后一步是确定当前帧是否生成为新关键帧。由于局部映射中有一种机制可以剔除冗余关键帧,因此尝试尽快插入关键帧。要插入新的关键帧,必须满足以下所有条件

  • 自上次全局重新定位以来,必须已经经过 20 帧以上
  • 本地映射空闲,或者距离上次关键帧插入已经经过了 20 帧以上
  • 当前帧跟踪至少 50 个点
  • 当前帧跟踪的点少于 K r e f K_{ref} Kref 的 90%

6. Local Mapping

A. 关键帧插入

  • 首先,新共视图,为 K i K_i Ki 添加一个新节点,并更新由与其他关键帧共享地图点产生的边
  • 然后,更新连接 K i K_i Ki 与具有大多数共同点的关键帧的生成树
  • 计算关键帧的词袋表示,这将有助于对新点进行三角测量的数据关联

B. 最近的地图点剔除

地图点必须在创建后的前三个关键帧期间通过限制性测试,这确保它们是可跟踪的并且不会由于虚假数据关联而被错误地三角测量

  • 跟踪必须在超过 25% 的预测可见的帧中找到该点
  • 如果地图点创建过程中经过了多个关键帧,则必须至少从三个关键帧进行观察

一旦地图点通过了此测试,只有在任何时候从少于三个关键帧观察到它时才能将其删除

C. 新地图点创建

  • 新的地图点是通过从共视图中连接的关键帧 K c K_c Kc 对 ORB 进行三角测量来创建的
  • 对于 K i K_i Ki 中的每个不匹配的 ORB,我们在其他关键帧中搜索与其他不匹配点的匹配

D. 局部捆绑调整

  • 局部 BA 优化当前处理的关键帧 K i K_i Ki、共视图中与其连接的所有关键帧 K c K_c Kc 以及这些关键帧看到的所有地图点
  • 所有其他看到这些点但未与当前处理的关键帧相连接的关键帧都会被纳入优化,但将保持固定
  • 在优化过程的中间和末尾,被标记为异常值的观测将被丢弃

E. 局部关键帧剔除

为了保持紧凑的重建,局部地图构建尝试检测冗余关键帧并将其删除

随着关键帧数量的增加,BA的复杂性也会增长,而且这样做还能够在相同环境中进行长期运行,因为关键帧的数量不会无限增长,除非场景中的视觉内容发生变化

  • 放弃共视图 K c K_c Kc 中那些90%以上的地图点至少在同一或更精细的尺度内被其他三个关键帧看到的关键帧
  • 尺度条件确保地图点与其测量最准确的关键帧保持一致

7. Loop Closing

循环关闭线程采用本地映射处理的最后一个关键帧 K i K_i Ki,并尝试检测和关闭循环

A. 循环候选检测

  • 首先,计算 K i K_i Ki 的词袋向量与其在共视图中的所有邻居之间的相似度 ( θ m i n = 30 θ_{min} = 30 θmin=30) 并保留最低分数 s m i n s_{min} smin
  • 然后查询识别数据库并丢弃所有分数低于 s m i n s_{min} smin 的关键帧
  • 此外,所有直接连接到 K i K_i Ki 的关键帧都将从结果中丢弃

为了接受循环候选,必须连续检测三个一致的循环候选(在共视图中连接的关键帧)。如果有几个地方与 K i K_i Ki 的外观相似,则可以有多个循环候选者

B. 计算相似度变换

在单目 SLAM 中,地图可以在七个自由度中漂移:三个平移、三个旋转和一个比例因子。

为了关闭循环,我们需要计算从当前关键帧 K i K_i Ki 到循环关键帧 K l K_l Kl 的相似变换,以告知我们循环中累积的误差

  • 首先计算与当前关键帧中的地图点和循环候选关键帧相关的 ORB 之间的对应关系
  • 如果发现相似性 S i l S_{il} Sil 具有足够的内点,则对其进行优化并执行更多对应项的引导搜索
  • 再次优化它,如果 S i l S_{il} Sil 有足够的内点支持,则接受带有 K l K_l Kl 的循环

C. 循环融合

  • 环路校正的第一步是融合重复的地图点并在共视图中插入新的边以附加环路闭合
  • 首先,使用相似变换 S i l S_{il} Sil 来校正当前关键帧姿态 T i w T_{iw} Tiw,并将该校正传播到 K i K_i Ki 的所有邻居,连接变换,以便循环的两侧对齐
  • 循环关键帧及其邻居看到的所有地图点都会投影到 K i K_i Ki 中,并且在投影周围的狭窄区域中搜索其邻居和匹配项
  • 所有匹配的地图点以及 S i l S_{il} Sil 计算中的内点都被融合

融合中涉及的所有关键帧都将更新其在共视图中的边缘,从而有效地创建附加循环闭合的边缘

D. 基本图优化

  • 为了有效地闭合循环,我们对基本图执行位姿图优化,沿着图分布循环闭合误差
  • 优化后,每个地图点根据观察它的关键帧之一的校正进行变换

8. Expirements

在 NewCollege 的大型机器人序列中对我们的系统进行了广泛的实验验证,评估了系统的总体性能,在 TUM RGB-D 基准的 16 个手持式室内序列中评估了定位精度,重新定位和终身能力,并在 KITTI 数据集的 10 个汽车户外序列中,评估实时大规模操作、定位精度和位姿图优化的效率

A. NewCollege 数据集中的系统性能

作为循环闭合过程的一个示例,在图 4 中展示了对具有支持相似性变换的内点的循环的检测。图5显示了环路闭合之前和之后的重建。红色表示局部地图,在环路闭合之后,局部地图沿着环路闭合的两侧延伸

Fig. 4 在 NewCollege 序列中检测到的循环示例。我们绘制支持相似变换的内部对应关系

Fig. 5 地图在 NewCollege 序列中循环闭合之前和之后的情况。回环匹配用蓝色绘制,轨迹用绿色绘制,当时跟踪的局部地图用红色绘制。闭合后局部地图沿环路两侧延伸

Fig. 6 ORB-SLAM重建NewCollege全序列。右侧较大的环路以相反方向遍历,未发现视觉环路闭合;因此,它们并不完全对齐

在局部映射线程中,要求最高的任务是本地BA。如果机器人正在探索或处于地图绘制良好的区域,则本地 BA 时间会有所不同,因为在探索过程中,如果跟踪插入新的关键帧,BA 就会中断。如果不需要新的关键帧,本地 BA 会执行大量的前缀迭代

Tab. 1 表 I 显示了跟踪和局部映射的结果。跟踪工作的帧速率约为 25-30 Hz,这是跟踪局部地图的最苛刻的任务。如果需要,可以减少该时间,限制局部地图中包含的关键帧的数量

Tab. 2 表 II 显示了所发现的六个环路闭合中每一个的结果

可以看出循环检测如何随着关键帧的数量呈次线性增加。这是由于数据库的高效查询仅将图像子集与共同的单词进行比较,这证明了词袋在地点识别方面的潜力

B. TUM RGB-D 基准中的定位精度

TUM RGB-D 基准是评估相机定位准确性的优秀数据集,因为它提供了多个序列,以及通过外部运动捕捉系统获得的准确地面实况

为了进行比较,在基准测试中执行了新颖的、直接的、半密集的 LSD-SLAM 和 PTAM,还与 RGBDSLAM 生成的轨迹进行比较,这些轨迹是为基准网站中的一些序列提供的

Tab. 3 ORB-SLAM、PTAM 和 LSD-SLAM 的结果是每个序列中五次执行的中值。轨迹已与 7 个自由度与地面实况对齐。 RGBD-SLAM 的轨迹取自基准网站,仅适用于 fr1 和 fr2 序列,并且已与 6 DoF 和 7 DoF 对齐(括号内的结果)。 X 表示跟踪在某个点丢失,并且序列的很大一部分未被系统处理

可以看出,ORB-SLAM能够处理除 fr3_nostruct_texture_farfr3_nstr_tex_far)之外的所有序列。这是一个平面场景,因为相机相对于平面的轨迹有两种可能的解释,即双重模糊性。

  • 在精度方面,ORB-SLAM 和 PTAM 在开放轨迹中相似,而 ORB-SLAM 在检测序列 fr3_nostruct_texture_near_withloop (fr3_nstr_tex_near) 中的大环时实现了更高的精度。最令人惊讶的结果是,PTAM 和 ORB-SLAM 显然比 LSD-SLAM 和 RGBD-SLAM 更准确。可能的原因之一可能是它们将地图优化简化为姿势图优化,其中传感器测量结果被丢弃
  • 一个有趣的结果是,LSD-SLAM 对于动态对象的鲁棒性似乎不如 ORB-SLAM,如 fr2_desk_with_personfr3_walking_xyz
  • RGBD-SLAM 在 fr2 序列中存在尺度偏差,因为将轨迹与 7 个 DoF 对齐可以显着减少误差

C. TUM RGB-D 基准中的重新定位

在 TUM RGBD 基准测试中进行了两次重定位实验。

  • 在第一个实验中,使用序列 fr2_xyz 的前 30 秒构建地图,并对每个连续帧执行全局重定位,并评估恢复姿势的准确性。用 PTAM 进行相同的实验进行比较。图 7 显示了用于创建初始地图的关键帧、重新定位帧的姿势以及这些帧的地面实况

    Fig. 7 fr2_xyz 中的重定位实验。地图最初是在序列 (KF) 的前 30 秒内创建的。目标是重新定位后续帧。显示了我们的系统和 PTAM 的成功重新定位 ®。仅针对要重新定位的帧显示真实值 (GT)

    可以看出,PTAM由于其重定位方法的不变性很小,只能对靠近关键帧的帧进行重定位。

    Fig. 4 表 IV 显示了相对于真实情况的召回率和误差。 ORB-SLAM 比 PTAM 准确地重新定位了两倍以上的帧

  • 在第二个实验中,我们使用序列 fr3_sitting_xyz 创建初始地图,并尝试重新定位 fr3_walking_xyz 中的所有帧。

    因为场景中的人移动会产生很大的遮挡。在这里,PTAM 没有发现重新定位,而我们的系统重新定位了 78% 的帧

    Fig. 8 我们的系统在重定位实验中成功发现了具有挑战性的重定位示例(严重的尺度变化、动态对象)

D. TUM RGB-D 基准的长期实验

之前的重定位实验表明,我们的系统能够从非常不同的角度在地图中进行定位,并且在适度的动态变化下能够稳健地进行定位

  • 在完全静态的情况下,即使相机从不同的视点观察场景,我们的系统也能够维持有限的关键帧数量
  • PTAM 总是插入关键帧,而我们修剪冗余关键帧的机制使其数量达到饱和

Fig. 9 在静态环境中进行长期实验,其中相机始终从不同的角度观察同一个地方。 PTAM 始终插入关键帧,而 ORB-SLAM 能够修剪冗余关键帧并维护有界大小的地图

Fig. 10 根据 TUM RGB-D 基准在动态环境中进行长期实验。 (a) 地图中关键帧数量的演变。 (b) 关键帧创建和销毁。每条水平线对应一个关键帧,从其创建帧直到其销毁。 © 所有生成关键帧的生存时间相对于实验剩余时间的直方图

在这些长期的实验中,可以证明我们的地图随着场景的内容而不是随着时间而增长,并且能够存储场景的动态变化,这对于通过积累环境中的经验来执行一些场景理解是有用的

E. KITTI 数据集中的大规模和大闭环

Fig. 11 来自 KITTI 数据集里程计基准的序列 00、05 和 07。 (左)点和关键帧轨迹。 (中)轨迹和地面实况。 (右)完整 BA 迭代 20 次后的轨迹。我们系统的输出相当准确,但可以通过 BA 的一些迭代来稍微改进

Fig. 12 来自 KITTI 数据集里程计基准的序列 02、03、04、06、08、09 和 10 中的 ORB-SLAM 关键帧轨迹。序列 08 不包含循环,并且漂移(尤其是比例)未校正。 (a)序列02。(b)序列03。©序列04。(d)序列06。(e)序列08。(f)序列09。(g)序列10

与 TUM RGB-D 基准一样,我们通过相似变换将系统的关键帧轨迹与地面实况对齐。可以定性地比较图 1 和 2 的结果。 ORB-SLAM 为所有这些序列生成了明显更准确的轨迹,但序列 08 除外,其中它们似乎受到的漂移较小

Tab. 5 表 V 显示了每个序列中五次执行的关键帧轨迹的中值 RMSE 误差

在这个实验中,还检查了通过在每个序列末尾执行 20 次完整 BA 迭代可以改善重建多少。全 BA 的一些迭代稍微提高了带循环的轨迹的精度,但在开放轨迹中的影响可以忽略不计

最后,展示我们的闭环方法的有效性以及用于在基本图中包含边的 θ m i n θ_{min} θmin 的影响。我们选择了序列09(一个非常长的序列,末尾有一个循环闭合),并且在同一次执行中,我们评估了不同的循环闭合策略

Tab. 6 第一行显示没有循环关闭的结果。 BA 括号内的数字表示 Levenberg-Marquardt (LM) 迭代次数,而对于 EG(本质图),则表示构建本质图的 θ m θ_m θm。所有 EG 优化均执行十次 LM 迭代


9. Conlusion And Discussion

A. 结论

  • 在这项研究中,我们提出了一种新的单目 SLAM 系统,详细描述了其构建模块,并对公共数据集进行了详尽的评估
  • 生成和剔除关键帧的新颖策略允许每隔几帧创建关键帧,当认为冗余时最终将其删除。这种灵活的地图扩展在条件较差的探索轨迹中非常有用,即接近纯旋转或快速移动。当在同一环境中重复操作时,只有当场景的视觉内容发生变化时,地图才会增长,并存储其不同视觉外观的历史记录
  • 证明了 ORB 特征具有足够的识别能力,可以从剧烈的视点变化中进行地点识别。此外,它们的提取和匹配速度非常快(无需多线程或 GPU 加速),从而实现实时准确的跟踪和映射

B. 稀疏/基于特征的方法与密集/直接方法

  • 最近的实时单目 SLAM 算法,如 DTAM 和 LSD-SLAM 能够对环境进行密集或半密集重建,同时通过直接优化图像像素强度来定位相机。这些直接方法不需要特征提取,因此避免了相应的伪影。它们对于模糊、低纹理环境和沥青等高频纹理也更加鲁棒
  • 直接方法有其自身的局限性。
    • 首先,这些方法假设一个表面反射率模型,该模型在真实场景中会产生自己的伪影。光度一致性限制了匹配的基线,通常比特征允许的基线更窄。这对重建精度有很大影响,需要宽基线观测以减少深度不确定性
    • 直接方法如果建模不正确,会受到滚动快门、自动增益和自动曝光伪像的影响
    • 最后,由于直接方法通常对计算要求很高,因此地图只是像 DTAM 中那样逐渐扩展,或者地图优化简化为位姿图,像 LSD-SLAM 中那样丢弃所有传感器测量结果
  • 基于特征的方法能够匹配具有宽基线的特征,这要归功于它们对视点和光照变化的良好不变性

C. 后期工作

  • 我们的系统的准确性仍然可以通过在跟踪中加入无穷远点来提高。这些点在足够的视差下看不到,并且我们的系统未包含在地图中,但它们对于相机的旋转提供了非常丰富的信息

  • 另一种开放的方式是将我们系统的稀疏地图升级为更密集、更有用的重建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈大数据智能化技术在多个领域的应用实践

摘要 大数据智能化技术在当今信息社会中得到了广泛的应用。从金融、互联网电商、视频行业到垂直短视频领域&#xff0c;从工业互联网到云计算、边缘计算等领域&#xff0c;大数据智能化技术已经成为了企业竞争力的重要组成部分。技术实践、架构设计、指标体系、数据质量、数据分…

系统架构设计师教程(十二)信息系统架构设计理论与实践

信息系统架构设计理论与实践 12.1 信息系统架构基本概念及发展12.1.1 信息系统架构的概述12.1.2 信息系统架构的发展12.1.3 信息系统架构的定义 12.2 信息系统架构12.2.1 架构风格12.2.2 信息系统架构分类12.2.3 信息系统架构的一般原理12.2.4 信息系统常用4种架构模型12.2.5 企…

【Java】IDEA集成开发环境工具切换JDK和设置环境变量

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

php基础学习之常量

php常量的基本概念 常量是在程序运行中的一种不可改变的量&#xff08;数据&#xff09;&#xff0c;常量一旦定义&#xff0c;通常不可改变&#xff08;用户级别&#xff09;。 php常量的定义形式 使用define函数&#xff1a;define("常量名字", 常量值);使用cons…

自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)

在自定义注解与拦截器实现不规范sql拦截&#xff08;拦截器实现篇&#xff09;中提到过&#xff0c;写了一个idea插件来辅助对Mapper接口中的方法添加自定义注解&#xff0c;这边记录一下插件的实现。 需求简介 在上一篇中&#xff0c;定义了一个自定义注解对需要经过where判…

【Coding】寒假每日一题Day.5. 互质数的个数

题目来源 题目来自于AcWing平台&#xff1a;https://www.acwing.com/problem/content/4971/ 以blog的形式记录程序设计算法学习的过程&#xff0c;仅做学习记录之用。 题目描述 输入输出格式与数据范围 样例 第一组&#xff1a; 2 516第二组&#xff1a; 12 711943936思路…

LINUX常用工具之sudo权限控制

一、Sudo基本介绍 sudo是Linux 中用于允许特定用户以超级用户或其他特权用户的身份执行特定的命令或任务。sudo 提供了一种安全的方法&#xff0c;使用户能够临时获取额外的权限&#xff0c;而不需要以完全超级用户的身份登录系统。sudo也可以用了设置黑名单命令清单&#xff…

实战 | SQL注入思路扩展

本文由掌控安全学院 - sbhglqy 投稿 一、资产搜集 我们都知道sql注入的传参有些是明文的&#xff0c;有些是经过编码或者加密的&#xff0c;所以我们搜索的时候不要仅限于inurl:.php?id1&#xff0c;可以额外的尝试搜搜1的base64编码值MQ&#xff0c;即可以搜索inurl:.php?…

万界星空科技MES系统的生产管理流程

对于生产型工厂来说&#xff0c;车间生产流程无疑是最重要的管理环节&#xff0c;繁琐的生产细节让企业很难找到合理的生产管理方法&#xff0c;导致人工效率低、错误多、成本高。如果想要解决这些问题&#xff0c;工厂就必须要有一套自己的生产管理系统&#xff0c;这样才能提…

(2021|ICLR,扩散先验,VE-SDE,逼真和忠实的权衡)SDEdit:使用随机微分方程引导图像合成和编辑

SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 背景&#xff1a;使用随机微分方程…

【HarmonyOS】体验鸿蒙电商平台的未来之旅!

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

点燃航天热情,莞港澳青少年航天研学冬令营收获满满

为进一步促进港澳青少年深度了解祖国的最新发展&#xff0c;通过亲身体验增加对祖国的认识&#xff0c;增强对祖国的向心力。“筑梦航天&#xff0c;行进湾区”莞港澳青少年交流实践活动收官之作“航天研学冬令营”于1月20日在东莞成功举办。来自香港、澳门、广州、深圳、东莞各…

AI 欺诈事件频出,如何重塑身份认证的安全性?

据报告表示&#xff0c;生成式人工智能每年可为世界经济注入相当于 4.4 万亿美元的资金。预计到 2030 年&#xff0c;人工智能对全球财政的潜在贡献将达到 15.7 万亿美元。人们惊叹于 AI 强大工作效率&#xff0c;期待能帮忙节省不必要的劳动力&#xff0c;但事实上 AI 出现之后…

216. 组合总和 III - 力扣(LeetCode)

题目描述 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 输入示例 k 3, n 7输出示例 [[1,2,…

Allegro如何导入芯片的Pin Delay?

Allegro在做等长时,需要导入芯片的Pin Delay才能做真正的等长。因为有些芯片内部的引脚本身就是不等长的,例如海思的部分芯片。 那么如何导入芯片的Pin Delay呢? 1、打开约束管理器,点击Properties(属性)→Component(器件)→Pin Properties→General。 在右栏找到芯片U1,…

【Linux】第三十二站:命名管道

文章目录 一、命名管道介绍二、编码1.mkfifo2.unlink3.一个简单的例子4.修改 一、命名管道介绍 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。 如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作…

opencv009 滤波器01(卷积)

图像卷积操作&#xff08;convolution&#xff09;&#xff0c;或称为核操作&#xff08;kernel&#xff09;&#xff0c;是进行图像处理的一种常用手段&#xff0c; 图像卷积操作的目的是利用像素点和其邻域像素之前的空间关系&#xff0c;通过加权求和的操作&#xff0c;实现…

【服务器】Xshell与Xftp软件的使用指南

目录 【Xshell软件】 1.1 Xshell软件的功能 1.2 Xshell软件的使用 【Xftp软件】 2.1 Xftp软件的功能 2.2 Xftp软件的使用 可替代产品【FinalShell】 3.1 FinalShell软件的使用 3.2 FinalShell连接服务器失败解决方法 可替代产品【FileZilla】

VSCode无法下载插件,提示 Error while fetching extensions : XHR failed

解决方案&#xff1a; 打开vscode&#xff0c;依次点击File->Preferences->settings&#xff0c;中文就是文件->首选项->设置&#xff0c;打开如下图&#xff1a; 我们去搜索&#xff1a;Proxy &#xff0c; 然后回车 最重要的一步&#xff1a;将Http Prox…

关于 open ai,你了解多少?

OpenAI 的历史 第一阶段&#xff1a;2015-2018 年 2015 年&#xff0c;埃隆马斯克、山姆阿尔特曼、彼得蒂尔和杰西卡利文斯顿联合创立了 OpenAI。OpenAI 的目标是开发安全、有益的 AGI&#xff0c;并确保其造福全人类。在这一阶段&#xff0c;OpenAI 主要专注于基础研究&…