[论文笔记|DOS-SLAM]Pop-up SLAM: Semantic Monocular Plane SLAM for Low-texture Environments

开源代码:https://github.com/shichaoy/pop_up_slam

论文下载:http://arxiv.org/pdf/1703.07334

摘要

现有的SLAM算法,因为其显著特征较少,所以在低纹理环境中缺乏鲁棒性,所得到的稀疏或半稠密的地图也为运动规划传递了很少的信息。本文提出了实时单目平面SLAM来证明场景理解可以改善状态估计和密集映射,特别是在低纹理环境中。平面测量来自于应用于每个单独图像的弹出式3D平面模型。我们还将平面与基于点的SLAM相结合以提高鲁棒性。在一个公共的TUM数据集上,本文算法生成了一个密集的语义三维模型,像素深度误差为6.2 cm,而现有的SLAM算法都失败了。在一个有循环的60米长的数据集上,我们的方法创建了一个状态估计误差为0.67%的更好的3D模型。

I. INTRODUCTION

利用了点特性的SLAM方法在帧间跟踪特征或高梯度像素以找到匹配和三角化深度。它们通常在特征丰富的环境中表现良好,但在低纹理场景中却不能很好地发挥作用。另外,地图通常是稀疏的或半稠密的,这不能传递太多的信息来进行运动规划。

另一方面,我们可以从单一图像了解布局,估计深度和检测障碍。为了建立一个简化的三维模型,人们提出了许多利用 geometry cues 和 scene assumption的方法。卷积神经网络(CNN)的出现,视觉理解的性能得到了极大的提高。

本文将场景理解与传统的V-SLAM相结合,以提高特别是低纹理环境下的状态估计和稠密映射。

使用单一图像弹出式的平面模型在SLAM中生成平面地标测量值。通过适当的平面关联和回环,能够在SLAM框架中共同优化场景布局和多帧姿态。在图1的低纹理环境中,当其他最先进的算法失败时,我们的算法仍然可以生成稠密的3D模型和很好的状态估计。但是平面SLAM容易欠约束,因此我们提出将平面SLAM与传统的基于点的LSD SLAM相结合,以提高鲁棒性
在这里插入图片描述

图1.基于低纹理的TUM数据集的三维重建。(顶部)单帧,左侧为原始图像,右侧为3D弹出式平面模型。(中)使用弹出式平面SLAM进行稠密重建。每个平面都有一个特定是墙壁或地面的标签。(下)3D模型的俯视图。现有的先进的SLAM算法失败了。

贡献:

  • 一个实时单目平面SLAM系统,包含对场景布局的理解,
  • 将平面与基于点的SLAM集成实现鲁棒性,
  • 特别是在一些低纹理环境下,性能优于现有的方法,并在几个具有循环的大数据集上证明了其实用性。

II. RELATED WORK

我们的方法结合了两个方面的研究领域:单一图像场景理解和多图像视觉SLAM。现提供这两个领域的简要概述。

A. Single Image

从单一图像建模。本文工作比现有的方法对各种走廊结构和照明条件更稳健。

B. Multiple Images

  1. v-SLAM using points: Structure from Motion和V-SLAM被广泛用于图像的三维重建。这些方法通过多帧跟踪图像特征,并通过优化构建全局一致的三维地图。它们的两个代表是直接LSD SLAM和基于特性的ORB SLAM。但在纹理较低的环境中,由于视觉和几何特征的稀疏,这些方法的效果很差。
  2. v-SLAM using planes: 平面或超像素被用来提供低纹理区域的稠密映射。但是他们假设相机的姿态是由其他来源提供的,比如基于点的SLAM,这在无纹理环境中可能不太好用。最近,Concha et al.也提出使用房间布局信息来生成深度先验来进行稠密映射,但是他们不跟踪和更新房间布局,因此只能在较小的工作空间中工作。
  3. Scene understanding: 没有使用平面世界来约束状态估计,因此不能解决低纹理环境下的v-SLAM问题

III. SINGLE IMAGE PLANE POP-UP

从单个图像创建一个弹出式3D平面模型。

A.弹出式3D模型

生成三维世界主要有三个步骤:CNN地面分割(可选条件随机场细化),折线拟合,弹出三维平面模型。在各种数据集评估中,该方法优于现有的方法。然而,也有一些限制:

  1. 之前的工作4对检测到的地面区域进行多线拟合,这可能不是真实的墙-地边缘,从而生成无效的三维场景模型。例如在图2中,它不能模拟右转弯走廊。这导致了在SLAM框架中使用这些平面的问题,因为即使在相邻的框架中,拟合的线段也可能是不同的。然而,SLAM要求地标(在我们的例子中是平面)在帧之间保持不变。

  2. 之前的工作4采用了零旋转位姿假设,这在大多数情况下是不满足的。不同的旋转角度会产生不同的弹出3D模型。

在接下来的两部分中,将解决这些问题并生成更精确的3D地图,如图2底部所示。
在这里插入图片描述

图2所示。单图像弹出式平面模型。(上)[4]的原始方法。从左到右:CNN分割,折线拟合,立体三维模型。(底部)改进方法。从左到右:直线段检测,地面墙面边缘检测,立体三维模型。更好的地面边缘检测和相机姿态估计可以得到更精确的三维模型。

B. 最优边界检测

与其使用拟合多边形作为墙-地边界,我们建议检测真实的地面-墙壁边界。我们首先使用LSD: A Fast Line Segment Detector with a False Detection Control提取所有的线段。但与其它线路检测器一样,该算法也存在检测噪声。例如,一条长直线可以检测为两个不相连的部分。我们提出了一种算法来最优地选择和合并边缘作为地面-墙壁边界,如图2的底部中心所示。

数学上,给定一组检测到的边 V = { e 1 , e 2 , … , e n } V = \{e_1, e_2,…,e_n\} V={e1,e2en},我们想要找到最优子集边 S ⊆ V S ⊆ V SV:

在这里插入图片描述

其中F为得分函数,I为约束。由于在现实世界中场景结构复杂,所以没有标准的方式表达F,所以我们直观地设计,使之更能适应各种环境。

第一个约束条件表明,边缘应接近CNN检测边界曲线中的ξ阈值,显示为图2左上角的红色曲线。可以表示为:

在这里插入图片描述
第二个约束是,在图3(a)所示的图像水平方向上,边缘之间的重叠不应超过阈值。在现实世界中,大多数情况下都是如此。在后面的实验中,我们发现即使对于图3(b)中不理想的配置,我们的算法也可以选择大部分的地面边缘。我们可以把这个约束表示为:
在这里插入图片描述

其中O为两条边之间的水平重叠长度。

在这里插入图片描述

图3.(a)我们的算法可以选择所有地面边缘的理想走廊配置。(b)水平重叠过多,结构不理想。我们的算法可能会漏掉一些地面边缘。

类似地,我们想要最大化图像x方向上的边缘覆盖。因此得分函数定义为:
在这里插入图片描述

其中C为边集S的水平覆盖长度。

通过定义分数函数F和约束 I = I c l o s e ∩ I o v l p I = I_{close} ∩ I_{ovlp} I=IcloseIovlp,将问题转化为子模集优化问题。我们采用贪婪算法[Submodular function maximization. 次模函数最大化]进行序列边的选择。我们首先从一个空的边集S开始,然后迭代地添加边,直到没有可行边为止:
在这里插入图片描述

Δ ( e ∣ S ) \Delta(e | S) Δ(eS)为将边e加入集合S的边际增益。

得到边集S后,需要进行一些后处理步骤,如去除小边,将相邻边合并成类似[5]的长边。

C. Pop-up World from an Arbitrary Pose

符号:

  • 下标 w w w表示全局世界帧,下标 c c c表示局部摄像机帧。
  • gnd是地平面的缩写。一个平面可以表示为一个齐次向量 π = ( π 1 , π 2 , π 3 , π 4 ) T = ( n T , d ) T π = (π_1, π_2, π_3, π_4)^T = (n^T, d)^T π=(π1,π2,π3,π4)T=(nT,d)T;其中n为平面法向量,d为其到原点距离。
  • 利用三维欧几里得变换矩阵 T w , c ∈ S E ( 3 ) T_{w,c} ∈SE(3) Tw,cSE(3)从局部坐标系到全局坐标系表示相机姿态。
  • 通过以下方法将局部平面 π c π_c πc转换为全局平面:
    在这里插入图片描述

1) Create 3D model

为每个图像像素 u ∈ R 3 u∈ R^3 uR3(齐次形式)属于某个局部平面 π c π_c πc,相应的3D弹出点 p c p_c pc是反投影射线 K − 1 u K^{-1}u K1u与平面 π c π_c πc的交点:
在这里插入图片描述

其中K为校准矩阵。

然后给出了如何计算平面方程的方法。我们的世界坐标系建立在由 π g n d , w = ( 0 , 0 , 1 , 0 ) T π_{gnd,w} = (0,0,1,0)^T πgnd,w=(0,0,1,0)T表示的地平面上。假设某一地面边缘的边界像素为 u 0 、 u 1 u_0、u_1 u0u1,其3D点 p c 0 、 p c 1 p_{c0}、p_{c1} pc0pc1可由式(6)(7)计算,假设墙垂直于地面,则可计算墙平面的法线:
在这里插入图片描述

我们可以利用两点 p c 0 , p c 1 p_{c0}, p_{c1} pc0,pc1在墙壁上的约束进一步计算 d w a l l , c d_{wall,c} dwall,c

2) Camera pose estimation

可以通过其他传感器或状态估计方法提供相机姿态 T w , c T_{w,c} Tw,c。在此,我们展示了一种可以用于SLAM初始化阶段的单目图像位姿估计方法。对于曼哈顿环境,有三个正交的主导方向 e 1 = ( 1 , 0 , 0 ) T , e 2 = ( 0 , 1 , 0 ) T , e 3 = ( 0 , 0 , 1 ) T e_1 = (1,0,0)^T, e_2 = (0,1,0)^T, e_3 = (0,0,1)^T e1=(1,0,0)Te2=(0,1,0)Te3=(0,0,1)T;对应于齐次坐标下的三个消失点 v 1 , v 2 , v 3 ∈ R 3 v_1, v_2, v_3 ∈ R^3 v1,v2,v3R3。如果摄像机旋转矩阵为 R w , c ∈ R 3 × 3 R_{w, c}∈ R^{3×3} Rw,cR3×3,则 v i v_i vi可通过下式计算:
在这里插入图片描述

利用式(9)的三个约束条件,我们可以恢复3自由度的 R w , c R_{w,c} Rw,c

IV. POP-UP PLANE SLAM

基于单目图像。

A. Planar SLAM Formulation

平面SLAM的因子图如图4所示。我们需要使用平面测量值 c 0 , … , c m c_0,…, c_m c0cm,里程计测量值 u 1 , … , u t u_1,…, u_t u1ut和初始位姿约束 p p p,估计6自由度的相机姿态 x 0 , … , x t x_0,…, x_t x0xt和平面路标 π 0 , . . . , π n π_0, ..., π_n π0,...,πn。注意,我们的平面路标也有一个标记是地面还是墙壁的标签label。地平面地标 π 0 π_0 π0连接到所有位姿节点。

齐次平面表示 π = ( n T , d ) T π = (n^T, d)^T π=(nT,d)T由于过于参数化,因此SLAM的信息矩阵是奇异的,不适用于高斯-牛顿求解器和iSAM等增量求解器。我们利用最小平面表示将平面表示为一个单位四元数 q = ( q 1 , q 2 , q 3 , q 4 ) ∈ R 4 . s t . ∣ ∣ q ∣ ∣ = 1 q = (q_1, q_2, q_3, q_4)∈ R^4 .st. ||q|| = 1 q=(q1,q2,q3,q4)R4.st.q=1。因此,我们可以在优化过程中使用李代数和指数映射来进行平面更新。
在这里插入图片描述

图4。平面SLAM因子图。变量节点包括相机姿态x,平面路标π。因子节点为里程计测量值 u u u和平面测量值 c c c,后者来自于单目图像弹出模型。每个平面节点都有一个地面或墙壁的标签。

B. Plane Measurement

大多数平面SLAM使用RGB-D传感器从点云分割得到平面测量值 c c c。在我们的系统中,平面测量值 c c c来自于Section III-C中弹出的平面模型。请注意,弹出过程取决于摄像机姿态,更具体地说,取决于旋转和高度,因为摄像机x, y的位置不影响局部平面测量。因此,在进行平面SLAM优化后,需要重新弹出三维平面模型,更新平面测量值 c c c。这一步速度快,矩阵运算简单,详见第III- c节。更新上百个平面测量所需时间不超过1毫秒。

C. Data Association

我们利用平面法线间的差、平面间的距离和平面间的投影重叠三个几何信息进行平面匹配。用于投影的平面边界多边形来自于弹出过程。首先通过三个指标的阈值来删除离群值匹配。然后根据它们的加权和选择最佳匹配
在这里插入图片描述

图5.数据关联和不受约束的情况。分别是法线为 n 1 n_1 n1 n 2 n_2 n2的两个平面。 π 2 _ 1 π_{2\_1} π2_1是来自于 π 2 π_2 π2 π 1 π_1 π1的投影平面,用于数据关联。在这个例子中, n 1 n_1 n1 n 2 n_2 n2是平行的,所以沿着 t f r e e t_{free} tfree有一个不受约束的方向。

D. Loop Closure

我们采用词袋(BoW)位置识别方法进行闭环检测。每一帧都表示为由ORB描述子计算的视觉向量,以便计算两帧之间的相似度得分。一旦检测到一个闭环,我们在这两帧中搜索所有的平面对,找到图像空间距离最小的平面对。我们还为每个平面保留BoW视觉单词,但它特别是在无纹理的图像中还不够健壮。
不同于点地标,平面地标在不同视角下具有不同的外观和大小。因此,我们可能会在地标形成并观察一段时间后识别出相同的平面。
因此,在检测到图6中的 π n π_n πn π 2 π_2 π2为同一平面后,我们将 π n π_n πn平面的所有因子都移到另一个平面 π 2 π_2 π2上,并将路标 π n π_n πn从因子图中去除。
在这里插入图片描述

图6.平面SLAM闭环。在检测到一个闭环后,我们将平面 π n π_n πn的所有因子移到 π 2 π_2 π2中,并将 π n π_n πn从因子图中去除。

V. POINT-PLANE SLAM FUSION

相对于基于点的SLAM,平面SLAM通常包含更少的路标,因此很容易不受约束。以图5中左右墙平行的长廊为例,在没有其他平面约束的情况下,长廊有一个自由无约束方向 t f r e e t_{free} tfree。我们通过结合基于点的SLAM,特别是LSD-SLAM来解决这个问题,以提供沿自由方向的视觉里程计约束。我们建议以下两种组合:

A. Depth Enhanced LSD SLAM

本节说明了对场景布局的理解可以提高传统SLAM的性能。LSD-SLAM有三个主线程:相机跟踪、深度估计和全局优化,如图7所示。其核心部分是深度估计,这决定了其他模块的质量。在LSD-SLAM中,当创建关键帧的新深度映射时,它会从上一个关键帧传播一些像素深度(如果它是可用的)。然后利用多视角立体视觉(multi -view stereo, MVS)不断更新深度图。由于在第III节中我们的单一图像弹出模型提供了每个像素的深度估计,我们将其深度集成到LSD深度图中,方法如下:

  1. 如果一个像素没有传播深度,或者LSD-SLAM深度的方差超过了一个阈值,我们直接使用弹出式模型深度。
  2. 否则,如果一个像素有一个来自LSD的方差为 σ l 2 σ^2_l σl2的传播深度 d l d_l dl,我们使用滤波方法将其与弹出的方差为 σ p 2 σ^2_p σp2的深度 d p d_p dp融合:
    在这里插入图片描述

在弹出过程中,可以通过误差传播规则计算出 σ p 2 σ^2_p σp2。节III-C, u u u的像素不确定度可以建模为二维标准高斯函数 Σ u Σ_u Σu。如果关于 u u u p c p_c pc的雅可比是来自于公式(7)的 J u J_u Ju,那么3D点的协方差 Σ p c = J u Σ u J u T Σ_{pc} = J_uΣ_uJ_u^T Σpc=JuΣuJuT。我们发现深度的不确定度 σ p 2 σ^2_p σp2与深度的平方成正比,即 σ p 2 ∝ d p 2 σ^2_p ∝ d^2_p σp2dp2

在这里插入图片描述

图7.深度增强LSD-SLAM算法,集成了来自弹出式模型的深度估计。

深度融合可以极大地提高LSD-SLAM的深度估计质量,特别是在LSD-SLAM只是随机初始化深度的初始帧和MVS深度三角化质量不高的低视差场景。后面的实验也证明了这一点。

B. LSD Pop-up SLAM

提出了一个简单的版本来运行两个阶段的SLAM方法。

  • 第一阶段是V-A部分的深度增强LSD-SLAM。
  • 然后在第IV节使用其位姿输出构成里程计约束来运行平面SLAM。

帧到帧基于光度误差最小化的里程计跟踪可以在平面SLAM无约束方向提供约束,也可以获取详细的精细动作。

图8显示了本文三种SLAM方法的关系。蓝色虚线框是改进LSD-SLAM:深度增强LSD-SLAM。绿框和红框显示了两种平面SLAM。不同的是,本节中的LSD弹出式SLAM有额外的里程计测量,而弹出式平面SLAM没有,并且通常使用恒定速度假设。

在这里插入图片描述

图8. (1)弹出式平面SLAM使用单图像弹出式模型的平面测量值。(2) 深度增强型 LSD-SLAM是弹出式模型深度融合后的LSD-SLAM。(3) LSD弹出式SLAM为平面SLAM,增加了深度增强型LSD-SLAM的里程计测量。

VI. EXPERIMENTS AND RESULTS

在公共的TUM数据集和两个收集的走廊数据集上测试了我们的SLAM方法,以评估准确性和计算成本。我们比较了两种先进的基于单目SLAM方法的状态估计和三维重建质量:LSD-SLAM和ORB-SLAM。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值