imaging_lidar_place_recognition 论文翻译及源码解析

1. 前言(个人的理解)

编译和该算法运行效果参考我上篇博客: https://blog.csdn.net/weixin_37835423/article/details/114312443

对于用雷达进行回环检测一直是个难点,主流的基于雷达的开源方案LeGO-LOAM、LIO-SAM、hdl_graph_slam使用的都是最传统的基于欧拉距离的回环检测方法,该方法对于雷达里程计要求较高,如果里程计误差较大,则很容易引起误匹配,其次该方法依赖点云匹配得分来判断回环是否准确,但点云匹配很容易陷入局部最优,在有非常好的先验的情况下才可以实现很精确的匹配,如果雷达里程及误差较大,匹配的先验信息误差也较大,因此也很容易引入误回环.为了解决这些传统回环检测方法的问题,有人提出了基于点云特征的方法,比如说segmap算法,该方法对点云聚类,并提取每个聚类的特征向量作为该聚类的特征,然后基于每帧点云数据的聚类特征进行回环检测,一方面能够进行全局的回环检测,跟图像回环一样,这样就能很好的解决传统方法对雷达里程计的要求,但该方法在实测中效果并不理想,主要是对于同一个物体,不同方向测量到的聚类特征不一致.
利用词袋模型进行图像回环检测是一种很成熟的技术,主流的视觉slam方法orb-slam、vins-mono都是使用词袋模型进行回环检测,效果很棒.论文作者将这种词袋模型用于雷达的回环检测,我觉得他最重要的贡献是在将雷达点云强度转换成灰度图,然后进行后面的基于图像的回环检测,视觉回环检测部分的代码主要是借鉴了vins-mono.这里说一下该算法的一个主要缺点是雷达的线数较多,论文作者也建议128线雷达,否则效果可能不理想.

2. 论文翻译

2.1 摘要

我们提出了一种鲁棒的实时的利用高分辨率成像雷达进行位置识别的方法.利用成像雷达点云的强度信息,我们将点云投影到一张强度图像上.然后我们从强度图像上提取ORB描述子,并插入到DBoW维护的数据库中,用于快速的位置识别.返回的候选图像将会通过视觉特征匹配进行进一步验证.为了丢弃误匹配,我们采用了基于RANSAC的PnP方法.我们的方法包含了基于相机和雷达进行位姿识别的优点,具有旋转不变性,可以有效的解决传感器反向和颠倒问题.该方法已经在多平台多尺度的数据集上进行了充分的验证.

2.2 方法

主要讲述基于雷达的位置识别方法,主要包括几个主要处理步骤: 强度图投影、特征提取、DBoW检索、特征匹配和PnP RANSAC.每个处理步骤的结果样例如下图:
在这里插入图片描述

A. 强度图

雷达的强度信息表示激光返回的能量,这个是受对象表面的反射率影响的,而且是不受光照影响的.当接收到一个3D点 P \mathbf{P} P,我们把它投影到强度图像 I \mathbf{I} I上.图像 I \mathbf{I} I上的每个有效像素都是与 P \mathbf{P} P中的一个点相关.像素值是由接收到的点的强度决定的,然后我们在将强度值归一化到0~255之间.这个强度图像本质上是一个灰度图像,这样就使得我们可以用多种已经存在的图像处理方法对其进行处理.强度图中的没有关联点的像素点的值置为0.如上图a所示,不同的颜色表示了强度的变化.如图b展示的是生成的强度图,图中白色和黑色分别对应强度的高和低.

B. 特征提取

接下来,我们对强度图像 I \mathbf{I} I进行特征提取。我们假设激光雷达传感器可能会经历剧烈的方向变化,而不是采用固定的传感器安装解决方案[11]-[13],这极大地扩展了我们方法的应用场景。因此我们选择提取ORB特征描述子,因为其不仅高效而且具有旋转不变性.ORB特征描述子是首先通过FAST算法提取角点特征,然后再对角点提取BRIEF描述子.由于传感器的运动,在强度图中的一个对象的尺度是与该对象和传感器之间的距离构成一定的函数关系.类似的,对象的方位与传感器的方位也存在关系.为了增加提取的特征具有较高的旋转不变性和尺度不变性,我们应用了一个降采样率为1.2的图像金字塔来获得8张不同分辨率的图像.ORB特征是使用FAST算法在每张图像上进行检测的.特征的方向是通过检测的角点周围一圈的强度变化来确定的.最后使用BRIEF算法将角点特征转换成描述子.我们总共提取了 N b o w N_{bow} Nbow个ORB特征描述子,用 O \mathbf{O} O来表示这个集合.注意,因为我们关联了点云 P \mathbf{P} P中的每个3D点与图像 I \mathbf{I} I中的像素,因此 O \mathbf{O} O中的每个特征描述子与点云 P \mathbf{P} P中的3D点也是对应的.上图c显示的就是通过强度图提取的ORB特征.

C. DBoW检索(可参考我的博客)

我们利用DBoW将ORB特征描述子转换成词袋向量.因此现在可以使用一个稀疏的词袋向量表示3D点云,这个向量可以被用于DBoW构建数据库.当接收到一个新的词袋向量,我们通过新的词袋向量与数据库中先前的词袋向量之间的L1范数距离来判断相似性.如果两个向量之间的相似性超过设定的阈值,我们就假设找到了一个潜在的候选词袋向量.检索完新的特征之后,就将其添加到数据库中.然后我们利用当前词袋向量和候选词袋向量对应的ORB特征进行进一步验证(下面会讲).上图c中,分别展示了回环的两张图像的ORB特征.

D. 特征匹配

通常通过词袋检索的回环候选者包含很多误检测的.为了验证回环候选者的有效性,我们匹配两者的描述子,这里定义当前关键帧为 O i \mathbf{O}_{i} Oi,候选关键帧为 O j \mathbf{O}_{j} Oj.我们注意到匹配 O i \mathbf{O}_{i} Oi O j \mathbf{O}_{j} Oj中的每个描述子不仅低效而且经常导致错误的匹配.为了提高匹配的成功率,我们对 O i \mathbf{O}_{i} Oi图像中的描述子按角点得分进行降序排序.排在最前面的 N s N_{s} Ns个描述子被选择,并且表示为 O i s \mathbf{O}_{is} Ois.对于 O i s \mathbf{O}_{is} Ois中的每个描述子,我们在 O j \mathbf{O}_{j} Oj中找到它的最好的匹配描述子.两个描述子之间的距离是使用汉明距离公式计算的.匹配的描述子然后按距离的升序进行排列.最后,我们引入了距离测试来丢弃误匹配,测试方法是只保留那些汉明距离小于2倍最小汉明的匹配.匹配的描述子集合是表示为 O i O_{i} Oi O j O_{j} Oj
一个特征匹配的例子如上图d所示.注意到仍然有很多误匹配,虽然我们可以调整距离测试方法来滤除这些误匹配,但同时很多正确的匹配也会被滤除掉.因此,我们特征匹配过程经过距离测试方法之后仍然保留超过设定阈值的匹配数量,则进行进一步的PnP RANSAC验证.

E. PnP RANSAC

如果通过DBoW检索返回的候选帧是错误的,我们在经过上述D节处理之后仍然保留足够多的匹配.为了进一步验证这些匹配,我们将这个验证问题转换成了一个PnP问题.已知 O i O_{i} Oi中特征点的3D欧几里得位置和 O j O_{j} Oj图像中的2D位置,PnP最小化3D点和对应的2D点的投影误差,从而估计出第 i i i j j j帧之间的相对位姿关系.然后 O i O_{i} Oi O i O_{i} Oi帧中特征的误匹配,将会引起PnP计算错误.为了增加PnP的鲁棒性,我们利用了RANSAC方法来丢弃误匹配.上图e显示了丢弃误匹配后的特征匹配.注意,在观察到的人周边的匹配特征点在执行完PnP RANSAC方法后是被丢弃的,原因是他在最近的帧中靠近火车的部分是看不到的.经过上述方法,如果内连(准确匹配)点的数量超过设定的阈值,我们则认为这次回环检测准确.

3. 源码解析

直接看注释代码吧,就一个线程,很好理解,除了点云强度转换成灰度图部分,其它的回环检测部分主要借鉴了vins中的代码.
注释代码链接 :
https://github.com/chennuo0125-HIT/source_code_notes/tree/main/imaging_lidar_place_recognition

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值