【论文笔记】Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map
【论文笔记】Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map
~~~~~~~与用于视觉场景的各种特征检测器和描述符相比,使用结构信息描述一个地方的报道相对较少。同步定位和建图 (SLAM) 的最新进展提供了环境的密集 3D 地图,并且定位是由不同的传感器提出的。针对基于结构信息的全局定位,我们提出了 Scan Context,这是一种来自 3D 光检测和测距 (LiDAR) 扫描的基于非直方图的全局描述符。与之前报道的方法不同,所提出的方法直接记录来自传感器的可见空间的 3D 结构,并且不依赖于直方图或先前的训练。此外,该方法提出使用相似度分数来计算两个扫描上下文之间的距离,以及使用两阶段搜索算法来有效检测循环。扫描上下文及其搜索算法使循环检测对激光雷达视点变化保持不变,从而可以在反向重访和拐角等地方检测到循环。扫描上下文性能已通过 3D LiDAR 扫描的各种基准数据集进行评估,并且所提出的方法显示出充分改进的性能
在本文中,我们介绍了 Scan Context,这是一种具有匹配算法的新颖空间描述符,专门针对使用单个 3D 扫描的户外场所识别。我们的表示将 3D 扫描中的整个点云编码为矩阵(图 1)。提议的表示描述了以自我为中心的 2.5D 信息。所提出的方法的贡献点是: • 高效的bin 编码功能。与现有的点云描述符 [7, 10] 不同,所提出的方法不需要计算 bin 中的点数,而是提出了一种更有效的 bin 编码函数进行位置识别。这种编码对点云的密度和法线具有不变性。 • 点云内部结构的保存。如图 1 所示,矩阵的每个元素值仅由属于 bin 的点云决定。因此,与将点的相对几何图形描述为直方图并丢失点的绝对位置信息的 [9] 不同,我们的方法通过有意避免使用直方图来保留点云的绝对内部结构。这提高了判别能力,并且还可以在计算距离的同时实现查询扫描与候选扫描的视点对齐(在我们的实验中,6° 方位角分辨率)。因此,通过使用扫描上下文也可以检测反向循环。 • 有效的两相匹配算法。为了获得可行的搜索时间,我们为第一个最近邻搜索提供了一个旋转不变子描述符,并将其与分层的成对相似度评分相结合,从而避免搜索所有数据库进行循环检测。 • 对其他最先进的空间描述符进行彻底验证。与其他现有的全局点云描述符相比,如 M2DP [8]、形状函数集合 (ESF) [11] 和 Z 投影 [12],所提出的方法提出了实质性的改进。
SCAN CONTEXT FOR PLACE RECOGNITION
在本节中,我们描述了基于 3D 扫描的点云创建扫描上下文,并提出了一种计算两个扫描上下文之间距离的度量。接下来介绍两步搜索过程。图 2 描绘了使用扫描上下文进行地点识别的整体流程。
扫描上下文
我们定义了一个名为 Scan Context 的地点描述符,用于室外地点识别。扫描上下文的关键思想受到 Belongie 等人提出的 Shape Context [7] 的启发,它将局部关键点周围的点云的几何形状编码为图像。虽然他们的方法只是简单地计算点的数量来总结点的分布,但我们的方法与他们的不同之处在于我们使用每个 bin 中点的最大高度。使用高度的原因是为了有效地概括周围结构的垂直形状,而不需要大量计算来分析点云的特征。此外,最大高度表示从传感器可以看到周围结构的哪一部分。这种以自我为中心的可见性一直是城市设计文献中一个众所周知的概念,用于分析一个地方的身份 [24, 25]。与形状上下文 [7] 类似,我们首先将 3D 扫描划分为传感器坐标中的方位角和径向 bin,但以等距的方式划分,如图 1(a)所示。扫描的中心充当全局关键点,因此我们将扫描上下文称为以自我为中心的位置描述符。 Ns 和 Nr 分别是扇区和环的数量。也就是说,如果我们将 LiDAR 传感器的最大感应范围设置为 Lmax,则环之间的径向间隙为 LNmax r 并且扇区的中心角等于 N2πs 。在本文中,我们使用 Ns = 60 和 Nr = 20。因此,制作扫描上下文的第一个过程是将 3D 扫描的整个点划分为相互独立的点云,如图 1(a)所示。 Pij 是属于第 i 个环和第 j 个扇区重叠的 bin 的点集。符号[Ns]等于f1; 2; :::; Ns-1;新因此,分区在数学上是

由于点云是按固定间隔划分的,因此远离传感器的 bin 的物理区域比近处的 bin 大。然而,两者都同样编码为扫描上下文的单个像素。因此,扫描上下文补偿了由远点稀疏引起的信息量不足,并将附近的动态对象视为稀疏噪声。在点云分区之后,通过使用该 bin 中的点云为每个 bin 分配一个实际值:

我们使用了最大高度,其灵感来自城市能见度分析 [24, 25]。因此,bin编码函数为

其中 z( · ) 是返回点 p 的 z 坐标值的函数。我们为空箱分配零。例如,如图 1(b) 所示,扫描上下文中的蓝色像素意味着与其 bin 对应的空间要么空闲,要么由于遮挡而未观察到。由上述过程,扫描上下文 I 最终表示为 Nr × Ns 矩阵为

为了对翻译进行稳健的识别,我们通过根移位来利用扫描上下文增强。通过这样做,在轻微的运动扰动下从原始扫描中获取各种扫描上下文变得可行。在重访期间,单个扫描上下文可能对平移运动下扫描的中心位置敏感。例如,当重新访问不同通道中的同一个地方时,可能不会保留扫描上下文的行顺序。为了克服这种情况,我们根据车道级别间隔将原始点云转换为 Ntrans 邻居(论文中使用的 Ntrans = 8),并将从这些根移位点云中获得的扫描上下文存储在一起。我们假设即使在实际移动的位置也获得了类似的点云,这是有效的,除了一些情况,例如突然出现新空间的交叉路口接入点
扫描上下文之间的相似度得分
给定一个扫描上下文对,我们需要一个距离度量来衡量两个地方的相似性。 Iq 和 Ic 分别是从查询点云和候选点云中获取的扫描上下文。它们以列方式进行比较。也就是说,距离是同一索引处的列之间的距离之和。余弦距离用于计算位于相同索引 cq j 和 cc j 的两个列向量之间的距离。此外,我们将总和除以归一化的列数 Ns。因此,距离函数为

通过考虑整个部门的共识,逐列比较对动态对象特别有效。然而,即使在同一个地方,候选扫描上下文的列也可能会发生变化,因为 LiDAR 的视点在不同的地方会发生变化(例如,在相反的方向或角落重新访问)。图 3 说明了这种情况。由于扫描上下文是依赖于传感器位置的表示,因此行顺序始终是一致的。但是,如果 LiDAR 传感器相对于全局坐标的坐标发生变化,则列顺序可能会有所不同。为了缓解这个问题,我们使用所有可能的列移位扫描上下文计算距离并找到最小距离。 Ic n 是一个扫描上下文,其 n 列从原始列 Ic 移位。这与粗略对齐两个点云以在 N2πs 分辨率下进行偏航旋转的任务相同。然后我们决定最佳对齐的列移位数(7)和当时的距离(6):

请注意,如第 IV-C 部分所示,此附加移位信息可以作为进一步定位细化(例如迭代最近点 (ICP))的良好初始值。
两阶段搜索算法
在地点识别的上下文中进行搜索时,三个主要流是典型的:成对相似度评分、最近邻搜索和稀疏优化 [26]。我们的搜索算法将成对评分和最近搜索分层融合,以实现合理的搜索时间。由于我们在(6)中的距离计算比其他全局描述符(如 [12, 10])更重,我们通过引入环密钥提供两阶段分层搜索算法。 Ring key 是一个旋转不变的描述符,它是从扫描上下文中提取的。扫描上下文 r 的每一行都通过环编码函数编码为单个实数值。向量 k 的第一个元素来自距离传感器最近的圆,接下来的元素依次来自下一个环,如图 4 所示。 因此,环密钥变为 Nr 维向量,如(8):

我们使用的环编码函数是使用 L0 范数的环的占用率:

由于占用率与视点无关,环键实现了旋转不变性。尽管比扫描上下文信息少,但环键可以快速搜索以找到可能的循环候选者。向量 k 用作构建 KD 树的密钥。同时利用查询的环键查找相似键及其对应的扫描索引。将被检索的前相似键的数量由用户确定。通过使用距离(6)将这些恒定数量的候选扫描上下文与查询扫描上下文进行比较。选择与满足接受阈值的查询最接近的候选者作为重访地点:

其中 C 是从 KD 树中提取的一组候选索引,τ 是给定的接受阈值。 c∗ 是确定为循环的位置的索引。
