本文介绍了一种利用点和线特征的高效视觉惯性同步定位和映射(SLAM)方法。目前,基于点的SLAM方法在弱纹理和运动模糊等场景下表现不佳。许多研究者注意到线特征在空间中的优异特性,并尝试开发基于线的SLAM系统。然而,线条提取和描述匹配过程的计算量巨大,难以保证整个SLAM系统的实时性,而错误的线条检测和匹配限制了SLAM系统性能的提高。本文通过短线融合、线特征均匀分布、自适应阈值提取等方法对传统的线检测模型进行改进,获得用于构建SLAM约束的高质量线特征。基于灰度不变性假设和共线性约束,提出了一种线光流跟踪方法,显著提高了线特征匹配速度。此外,提出了一种独立于线端点的测量模型,用于估计线残差。实验结果表明,该算法提高了线特征检测与匹配的效率和定位精度。
EPLF-VINS的贡献如下:
(1)提出了一种高效的线特征检测与跟踪模型,该模型包括两个部分,改进的EDLines算法采用短线融合、线特征均匀分布和自适应阈值提取等方法来提高算法的效率检测准确的线条特征。一种新型的线光流特征跟踪器基于灰度不变性假设,有效地跟踪检测到的线特征,避免了以往工作中对线特征进行描述和匹配的需要。该方法旨在提高线检测和跟踪的速度,同时保证线特征的质量。
(2)我们提出了一个直线残差估计模型。该方法利用平面法向量之间的夹角测量残差,在优化过程中不涉及线段的端点。该方法提高了估计器的精度。
(3)开源GitHub - LeiXu1999/EPLF-VINS
图2所示:EPLF-VINS系统概述。我们的系统是基于VINS-Mono和PL-VINS开发的,实现了三个线程:测量预处理、本地VIO和循环关闭。蓝框表示与现有算法的差异,包括线特征检测和跟踪(见第四节)和线残差(见第五节)。
图3:提出了帧的线特征检测与跟踪模型。它实现了两种模型:改进EDLines检测(MED)和线光流跟踪(LOFT)。MED检测图像中的新线特征,LOFT跟踪以前图像帧中的线特征。
SLAM的主要线段检测算法有LSD和EDLines。由于无显式参数的特性,LSD具有良好的通用性,这限制了研究者对LSD的扩展。因此,我们选择EDLines作为线段检测的基本算法,该算法具有丰富的可调参数。然而,原始EDLines检测到的片段在空间分布上并不适合SLAM约束。因此,我们提出了一种改进的EDLines检测方法。
MED包括三个部分:短线融合、线特征均匀分布和自适应阈值提取。
短线融合:由于部分遮挡往往会将一条线分割成碎片,而图像噪声可能导致线端点不稳定,在这种情况下,我们合并短线。判断依据两个方面:两线共线,两线端点之间的距离足够小。
线特征均匀分布:该方法保证提取的线在整个图像中以一定的间距均匀分布。在该方法中,我们在当前图像中检测到的线的位置添加一个宽掩码,并且不提取掩码上的新线。
自适应阈值提取:经过以上两种策略,计算提取的行数。假设行数小于预先设置的阈值。在纹理较弱、灰度变化较小的情况下,通过降低EDLines的梯度阈值参数,再次进行线特征提取,获得足够的线特征。
本文的线流模型是基于灰度不变性理论。
我们可以将该像素的灰度值定义为:
式(4)对图像中任意像素点都有效,因此在线段上成立,而直线上的点也必须满足共线性约束。
我们定义直线上点的集合:
直线上的每个点(un, vn)都满足上述方程,因此这是一个关于G1, G2, G3的过定线性方程。我们用高斯牛顿法求解。当摄像机高速运动时,局部灰度梯度的剧烈变化使得线流方向难以预测。
为了提高线流跟踪能力,我们将Lucas-Kanade特征跟踪器的金字塔实现扩展到线流。事实上,从一个视点到另一个视点,空间中的长线段是不一致的。然而,在连续的帧中观察到的线的长度不会突然改变。我们通过丢弃两个端点附近的一小段直线来构造线流跟踪约束,并在跟踪完成后,通过判断端点灰度梯度是否与线段一致来对其进行扩展。
我们通过迭代的收敛性来判断每条线跟踪的质量。将成功跟踪的线条添加到优化中。如果跟踪良好的行数小于阈值,则通过MED提取新的行来补充。
一条线在空间中有四个自由度。在本文中,我们使用两种形式的线表示。
Plücker表示:图5所示的三维空间线可表示为其中V∈R3表示直线方向向量,n∈R3表示由线L和相机坐标系原点确定的平面π的法向量。
图5
正交表示:
Plücker坐标虽然可以简洁地表示变换过程,但由于其过度参数化,不容易直接优化。因此,使用 由四个参数组成的标准正交表示进行优化。三维空间线L可表示为:U ∈ SO(3) 和 W ∈ SO(2)。由plicker坐标系到正交坐标系的方程可表示为:
在之前的研究中,如PL-VIO和PL-VINS,线重投影误差是由观测线端点与重投影线端点之间的距离来构建的。残差的大小取决于直线端点的精度。然而,在不同视角下,在相机图像平面上观察到的线的长度在空间上的线特征是不一致的。此外,当直线受到其他扰动(如遮挡)时,直线特征检测方法可能会将长直线划分为若干短线段。这些可能导致端点位置发生重大变化,然后影响残差值。我们提出了一种简洁的方法来构造与线段端点无关的残差。
我们定义平面π ~和平面π,如下图6所示,在相机坐标系的原点Ci和归一化平面上的观测线之间形成平面π ~。在相机坐标系的原点Ci和归一化平面上的投影线之间形成平面π。
对应的雅可比矩阵为:
由于PL-VINS和VINS- mono的开源代码,可以在VINS系统内快速构建我们的算法。我们使用室内和室外数据集,包括EuRoC、TUM VI和KAIST VIO来评估所提出的方法。考虑到每个数据集的特点,我们有选择地进行定量评价和可视化实验。
所有算法都在Ubuntu 18.04上运行,配备3.6 GHz Core AMD Ryzen 5-3600 CPU和16gb内存的台式电脑。
参数设置:EDLines有三个主要参数Ng、Na和Ni,分别表示梯度阈值、锚点阈值和扫描间隔的值。
我们设置Ng为32,Na为16,选择灰度梯度较大的锚点,从而提取更适合跟踪的线。将Ni设置为4以消除短段。如果两条线的延伸角在1A和˚范围内,两条短线的端点相距小于10像素,我们将两条线融合。我们将线均匀分布,并将线间距设置为15像素,以确保线不会过于密集地分布。每帧提取的行数为50。如果数量不足,则将Ng和Ni减少一半,以确保即使在弱纹理区域也可以提取一定数量的线特征。当检测线与跟踪线之间的点的平均灰度误差大于5或跟踪线的梯度小于128时,我们判定这些线跟踪失败。这两种策略确保跟踪的线路始终是准确的。如果成功跟踪的线条数量少于35条,则调用MED来补充线条特征。
消融研究:我们使用E-PL-VINS和PL-F-VINS来表示所提出算法的两种变体。E-PL-VINS用MED代替PL-VINS的LSD, PL-F-VINS用LOFT代替PL-VINS的LBD。这两种算法的残差估计模型与PL-VINS一致。
线流可视化:为了更清晰的可视化,我们选择魔方的一条边进行线特征跟踪,并显示魔方的运动轨迹,如图1所示。在第一帧检测到立方体的这个边缘后,我们的算法在随后的帧中进行精确的连续线跟踪。
运行时间:我们测量了EuRoC、TUM VI和KAIST VIO数据集上的线特征检测和跟踪运行时间,如图7所示。实验结果表明,与PL-VINS相比,MED和LOFT模块在线条特征检测和匹配方面都有显著提高。为了进行更全面的比较,我们在EuRoC数据集的完整序列上评估算法的每个线程的平均运行时间,如表1所示。
在所有线程上,VINS-Fusion比VINS-Mono稍快。由于线特征残差被添加到优化中,因此与VINS-Mono相比,PL-VINS、E-PL-VINS、PL-F-VINS和EPLF-VINS在线程3中的时间增加。对于螺纹2,E-PL-VINS、PL-F-VINS和EPLF-VINS分别比PL-VINS提高了28.7%、18.7%和32.9%的速度。
图7 线特征检测和跟踪的运行时间
我们测量了EuRoC数据集的完整序列,该数据集由机器大厅和Vicon室的11个序列组成,具有结构信息。表2给出了绝对轨迹误差(ATE)的均方根误差(RMSE)。
TUM VI基准的裁判是一个序列,围绕大学建筑的中央大厅散步,包含丰富的线条特征。我们与PL-VINS进行了线条特征检测与跟踪的可视化实验。
图8:(a)中的红线表示PL-VINS的线检测和匹配可视化。(a)下侧的绿线(检测线)和蓝线(跟踪线)显示了我们的算法结果。(a)与PL-VINS的线特征提取与跟踪对比结果。(b) PL-VINS线形图。(c) EPLF-VINS线形图。