首页 > 编程语言 >解读 | 快速精确的体素GICP三维点云配准算法

解读 | 快速精确的体素GICP三维点云配准算法

时间:2023-10-23 10:32:48浏览次数:30  
标签:配准 VGICP GICP 算法 点云 体素 NDT

原创 | 文 BFT机器人

解读 | 快速精确的体素GICP三维点云配准算法_点云


01摘要


本文提出了体素化广义迭代最近点(VGICP)算法,用于快速准确的三维点云配准。所提出的方法通过体素化扩展了广义迭代最近点(GICP)方法,以避免昂贵的最近邻搜索,同时保持其准确性。与从点位置计算体素分布的正态分布变换(NDT)相反,我们通过聚合体素中每个点的分布来估计体素分布。


体素化方法使我们能够高效地并行处理优化,并且所提出的算法可以在CPU上以30 Hz运行,在GPU上以120 Hz运行。通过在模拟和真实环境中的评估,我们确认所提出的算法的准确性与GICP相当,但比现有方法要快得多。这将使实时3D LIDAR应用程序的开发成为可能,这些应用程序需要对LIDAR帧之间的相对位姿进行极快速的评估。


02相关介绍


三维 (3D) 点云配准对于许多3D LIDAR应用(例如校准、定位、测绘和环境识别)来说是一项至关重要的任务。3D LIDAR有两种流行的点云配准方法:广义迭代最近点 (GICP) 和正态分布变换 (NDT)。


GICP以分布到分布的比较方式扩展了经典ICP算法[4],以实现准确配准,而NDT利用体素化方法来避免昂贵的最近邻搜索并提高处理速度。然而,这两种方法都有其自身的弱点。由于GICP和其他ICP变体高度依赖最近邻搜索,因此如果点数很大,有时很难在计算能力有限的计算机上实时运行它们。相反,NDT通常对体素分辨率的选择非常敏感。最佳体素分辨率取决于环境和传感器属性,如果我们不选择合适的分辨率,NDT的配准精度会急剧下降。


在本文中,我们提出了V oxelized GICP (VGICP) 算法,用于快速准确的3D点云配准。体素化方法使所提出的算法能够有效地并行运行,并且我们的VGICP实现可以在CPU上以30 Hz频率和GPU上以120 Hz频率处理包含15,000个点的点云。通过聚合体素中所有点的分布(多点分布到单体素分布),我们估计体素稳健。与从点位置估计体素分布的NDT相比,即使体素中只有很少的点,这种方法也会产生有效的体素分布,从而产生对体素分辨率变化具有鲁棒性的算法。


在模拟和真实环境中获得的评估结果表明,所提出的VGICP算法的配准精度与GICP相当,并且在处理速度方面优于其他方法。本文的贡献有三个方面。首先,我们提出了一种多点分布聚合方法,可以从较少数量的点稳健地估计体素的分布。其次,我们提出了VGICP算法,该算法与GICP一样准确,但比现有方法快得多。第三,可以从公共存储库获取这些实现,该存储库包含拟议的VGICP的实现以及GICP的并行实现。


03相关工作


A.GICP


经典ICP算法有很多变体,例如Trimmed ICP[5]和Normal ICP[6]。GICP[1]是最流行的ICP变体之一。GICP以分布到分布匹配的方式扩展了经典ICP算法。尽管该算法以其良好的准确性而闻名,但该算法(以及其他ICP变体)高度依赖最近邻搜索来关联最近的点。虽然通常使用基于KD树的高效搜索,但最近邻搜索常常成为瓶颈,使得当点数较多时算法无法实时运行。此外,基于最近邻搜索的方法不适合在GPU上进行优化,因为它大量使用条件分支,这会显着降低GPU的性能。


B.NDT


NDT[2]采用基于体素的关联方法,而不是精确的最近邻搜索。该算法首先将输入点云分割成一组体素,并对每个体素中的点拟合正态分布。然后,它通过找到使体素分布下输入点的可能性最大化的变换,将另一个点云与体素化的点云对齐。由于NDT 避免了成本高昂的最近邻关联,因此它通常比ICP变体算法快得多。D2D-NDT(分布到分布无损检测)[7]是对源点云和目标点云进行体素化并计算源体素和目标体素分布之间的距离的NDT。其比较方案与GICP类似,[8]表明D2D-NDT在精度方面优于经典NDT。


然而,NDT及其变体的准确性取决于体素尺寸的选择。为了获得NDT 的最佳性能,我们需要根据传感器和环境属性仔细选择合适的体素大小。一些研究提出了使NDT对超参数变化具有鲁棒性的方法(例如,多分辨率[9]和三线性体素平滑[3])。然而,这些扩展对无损检测的处理速度有负面影响。


C.Feature-based registration


基于特征的配准方法首先从输入点云中提取一些代表性特征,然后根据特征对应估计变换。已经提出了许多用于点云配准的特征,例如基本平面和边缘特征[10]、[4]、快速点特征直方图(FPFH)[11]和方向直方图签名(SHOT)[12]。由于这些特征能够稳健地找到点云之间的对应关系,因此基于特征的方法通常对初始姿态误差具有鲁棒性(有些甚至不需要初始猜测)。


然而,由于基于特征的方法仅使用有限数量的特征(通常远小于输入点的数量),因此其精度比基于点的方法差。因此,在典型的使用案例中,在基于特征的方法之后执行基于点的精细配准。基于特征的配准方法和基于点的配准方法是正交的,它们应该被用来互补。


04提出的算法


在本节中,我们首先解释GICP算法,然后以一对多分布对应方式扩展它以导出VGICP算法。


A.GICP algorithm


我们考虑变换T的估计,它将一组点A={a0,···,aN}(源点云)相对于另一组点B= {b0,···,bN}(目标点云)。遵循经典的ICP算法,我们假设A和B之间的对应关系是通过最近邻搜索给出的:bi=Tai。GICP算法[1]将采样点的表面建模为高斯分布:ai∼N(ˆai,CAi),bi∼N(ˆbi,CBi)。然后,我们定义变换误差如下:


解读 | 快速精确的体素GICP三维点云配准算法_点云_02


di的分布由高斯分布的再生性质给出:


解读 | 快速精确的体素GICP三维点云配准算法_协方差矩阵_03


GICP算法找到使方程(1)的对数似然最大化的变换T。如下:


解读 | 快速精确的体素GICP三维点云配准算法_搜索_04


每个点的协方差矩阵通常是根据其k个邻居估计的(例如,k=20)。按照[1]中的建议,通过用(1,1,c)替换其特征值来对每个协方差矩阵进行正则化。这种正则化使GICP作为平面到平面ICP工作。


B.Voxelized GICP algorithm


为了推导体素化GICP算法,我们首先扩展方程:计算ai与其相邻点{bj|kai−bjk<r} 之间的距离,如下所示:


解读 | 快速精确的体素GICP三维点云配准算法_点云_05


该方程可以解释为平滑目标点分布。然后,类似于等式。d0i的分布由下式给出:


解读 | 快速精确的体素GICP三维点云配准算法_协方差矩阵_06


我们估计使方程的对数似然最大化的变换T。如下:


解读 | 快速精确的体素GICP三维点云配准算法_协方差矩阵_07


为了有效地计算上式,我们将其修改为:


解读 | 快速精确的体素GICP三维点云配准算法_点云_08

解读 | 快速精确的体素GICP三维点云配准算法_搜索_09

图1:(a)GICP、(b)NDT和(c)VGICP中距离计算的对应模型。红色圆圈表示源点,蓝色圆圈表示目标点。(GICP:最近的分布到分布,NDT:基于体素的点到分布,VGICP:基于体素的分布到多分布。)即使体素仅包含几个,VGICP模型也会产生有效的分布点。


分布到分布对应模型,这是合理的,但依赖于昂贵的最近邻搜索。为了快速配准,NDT使用点到体素分布对应模型。然而,我们至少需要四个点(实际上超过十个)来计算3D协方差矩阵。如果体素中的点数较少,协方差矩阵就会损坏。我们的VGICP利用体素对应中的单到多分布来处理只有几个点落在体素内的情况。因为它根据点分布计算体素分布,所以即使体素仅包含一个点,它也会产生适当的协方差矩阵。


C.Implementation


解读 | 快速精确的体素GICP三维点云配准算法_点云_10


算法1详细描述了VGICP的配准过程。如上所述,VGICP算法在优化过程中不需要昂贵的最近邻搜索,因此可以利用CPU和GPU并行处理。对于位姿优化,我们选择高斯-牛顿优化器,因为与拟牛顿方法不同,它收敛速度快并且不需要超参数。


我们实现了VGICP算法的三个版本:单线程、多线程和GPU处理。所有版本首先使用基于KD树的最近邻搜索来估计每个点的协方差矩阵[13]。这种协方差估计在多线程和GPU处理版本中是并行的。我们还实现了基于GPU的强力最近邻搜索。作为基线,除了VGICP之外,我们还实现了GICP算法。GICP实现也是通过CPU多线程并行化的,但没有在GPU上实现,因为它依赖于KD树最近邻搜索,不适合GPU。


05总结及未来的工作


在本研究中,我们提出了体素化GICP算法。所提出的VGICP与GICP一样准确,因为它利用基于体素的关联方法。模拟和真实环境中的评估结果表明,所提出的方法显示出卓越的处理速度(CPU上为30 fps,GPU上为120 fps),并且对体素分辨率变化具有鲁棒性。我们计划评估和改进所提出的VGICP算法的收敛性,因为它采用体素化方法,当初始猜测不接近真实姿态时,可能会影响配准结果。我们还计划使用VGICP开发基于IMU-LIDAR联合优化的定位方法,这需要对关键帧之间的相对位姿进行极快的评估。

END

作者 | 江城

排版 | 小河

审核 | 橙橙


若您对该文章内容有任何疑问,请与我们联系,我们将及时回应。

标签:配准,VGICP,GICP,算法,点云,体素,NDT
From: https://blog.51cto.com/bftrobot/7983865

相关文章

  • 点云采样方法
    1.体素下采样,网格采样在网格采样中,点云被分割成规则的网格或体素,然后从每个网格或体素中选择一个代表点。效率高采样点分布相对比较均匀可以通过控制网格尺寸控制点间距不能精确控制采样点个数可能会导致信息丢失,因为它可能无法捕捉到点云中的局部细节 2.随机下采样这是最......
  • [论文精读][基于点云的蛋白-配体亲和力]A Point Cloud-Based Deep Learning Strategy
    我需要的信息代码,论文不考虑共价键,每个点包括了六种原子信息,包括xyz坐标,范德华半径,原子重量以及来源(1是蛋白质,-1是配体)。原子坐标被标准化,其它参数也被标准化。对不足1024个原子的的复合体,补0到1024。增加考虑的原子从1024到2048,没有提升,增加原子信息通道,没有提升(见resul......
  • 点云的获取
    点云的获取双目相机(被动测量)线激光相机(主动测量)单线激光扫描系统的标定与成像原理线激光扫描三维成像结构光相机(主动测量)TOF相机(主动测量)融合相机......
  • (2023年新疆大学、中科院等点云分类最新综述) Deep learning-based 3D point cloud cl
    目录1、引言2、3D数据2.1、3D数据表示形式2.2、点云数据存储格式2.3、3D点云公共数据集3、基于深度学习的点云分类方法3.1、基于多视角的方法3.2、基于体素的方法3.3、基于点云的方法3.3.1局部特征聚合3.3.1.1基于逐点处理的方法3.3.1.2基于卷积的方法3.3.1.3基于图的方法3.3.1......
  • 点云配准
    点云配准点云配准(PointCloudRegistration)指的是输入两幅点云(source)和(target),输出一个变换使得和的重合程度尽可能高。点云配准的主要任务是计算出旋转矩阵R和平移矩阵T。ICP算法迭代最近点算法(IterativeClosestPoint,ICP)ICP算法循环迭代两个步骤:1、查......
  • 手写PCA(主元分析法)计算点云法向量(详细注释) 【Matlab代码】
    原理PCA原理主元分析法PCA学习笔记点云法向量与点云平面拟合的关系(PCA)EstimatingSurfaceNormalsinaPointCloud3D【24】PCA点云法向量估计利用PCA计算点云的法线3D点云法向量估计(最小二乘拟合平面)为什么用PCA做点云法线估计?利用PCA求点云的法向量pca_demo.mclcclearclosea......
  • 点云配准算法-旋转矩阵估计-Kabsch-Umeyama algorithm
    Kabsch-Umeyamaalgorithm参考文献:https://www.wikiwand.com/en/Kabsch_algorithm面向点云配准,最小化两点集均方根误差(RMSD,rootmeansquareddeviation)来计算最佳旋转矩阵。注:该算法只能计算旋转矩阵,做点云配准还需要计算平移向量。当平移和旋转都正确计算出,该算法有......
  • kitti彩色地图拼接<一>、点云bin格式转为pcd格式
      下面是bin格式转pcd格式批量处理代码,其中品红色是需要改成你的实际情况的地方。cpp:【note:代码中,pcd文件的路径改为你自己的】1#include<boost/program_options.hpp>2#include<pcl/point_types.h>3#include<pcl/io/pcd_io.h>4#include<pcl/common/point_ope......
  • 解析pcap格式点云数据包
    1、多BB一句,不想写代码,就去速腾的驱动中复制粘贴。2、问别人的时候,应该问有没有128线速腾雷达数据帧格式资料(每个字段的意义),工具对应读取数据那一块源码能否给出来。 激光雷达每一帧的数据长度固定为1248字节,前42字节的前数据包标识、12组数据包、4字节时间戳和最后两字节雷达......
  • 基于已知点云数据的最小外接圆matlab函数
    基于已知点云数据的最小外接圆matlab函数–MATLAB中文论坛(ilovematlab.cn) %该函数是在其他网站看到的,以此共享。有两种方法(函数)实现。%第一种比较费时:function[xc,yc,r]=smallestcircle(x,y)%Thisfindsthecircleofsmallestareacontainingall%thepoint......