19、论文解读:Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection

本文主要是介绍19、论文解读:Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection

文章链接:ISC-LOAM
文章代码:代码
编译&运行:建议参考:ubuntu16.04运行ISC-LOAM
我在编译运行遇到的问题以及解决办法:
1 、 编译无法通过:需要将cmakelist中设置C++11的那句改成set(CMAKE_CXX_FLAGS “-std=c++14”)
2、 libtbb.so.2: 无法添加符号:DSO missing from command line类问题的彻底解决
3、当出现版本不兼容的时候去ceres中的cmakelist中改eigen版本即可。

本文在SC描述子的基础上提出了一种新的基于距离和密度的全局描述子。通过二层搜索提升了搜索速度。

III. METHODOLOGY

A. Intensity Calibration and Pre-processing (强度校准和预处理)

之所以能够使用强度值作为回环检测是因为不同的物体反射的强度是完全不一样的,而同一物体的反射强度是一样的,这和物体表面材质有关,因而不同的场景构建的强度图也是不一样的,因此,点云强度信息可以用于回环检测。汽车、路牌、建筑物的反射强度如下图所示:
在这里插入图片描述

强度值受目标表面特征、采集形式、仪器精度等等因素影响,使用以下公式校准距离对强度的影响:
在这里插入图片描述

此外,为了方便将采集到的强度值(是一个8字节的整数)转换为0-1的范围中。
为了处理掉过于丰富的点云信息(比如噪声点)采取设置一个最大的有效范围作为第一步的过滤,还过滤掉了地面这类不重要的因素。

B.Intensity Scan Context

在笛卡尔坐标中的每一帧存N个点,每个点存x、y、z、η(强度信息)。转换成极坐标系下为:
在这里插入图片描述

然后每帧像SC那样分割为Ns × Nr个栅格,每个栅格中存放最大的强度值,没有就存0.
在这里插入图片描述在这里插入图片描述

kitti数据集实例:
在这里插入图片描述

C.Place Re-identifification

通过辨识目标来和之前的访问过的存入数据库的数据匹配。为了降低和之前访问存入的数据库信息匹配的计算复杂度。提出了一种两阶段分层强度扫描上下文检索策略,利用快速二进制操作来加快位置加速识别的过程。

1)Fast Geometry Re-identifification: 如果有强度信息才进行几何匹配:

在这里插入图片描述

其中|x| 是x中元素的总数,XOR(x, y) 指矩阵x和y之间的元素排他OR运算。激光扫描的旋转变成了强度扫描上下文中的列位移,因此视角的变化可以解释为Ω的列偏移,最后的计分:
在这里插入图片描述

2)Intensity Structure Matching:

第二阶段主要通过列式比较来识别两种强度扫描上下文Ωq和Ωc之间的强度相似性。设viq和vic是Ωq和Ωc的第i列,则可以通过以下的余弦距离公式得到分数:
在这里插入图片描述

考虑到平移,最终的公式应该是:
在这里插入图片描述

D.Consistency Verifification (一致性验证)

1)Temporal consistency check: 由于传感器的反馈在时间上是连续的,因此出现单回路闭合通常意味着相邻激光雷达扫描的高度相似性:
在这里插入图片描述

N是包含的用于时间一致性验证的帧数,这样即使是反方向的情况下也可以识别。
2) Geometrical consistency: ICP

这篇关于19、论文解读:Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761013

相关文章

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL