掌桥专利:专业的专利平台
掌桥专利
首页

一种基于GPU的GMM点云配准算法

文献发布时间:2023-06-19 10:16:30


一种基于GPU的GMM点云配准算法

技术领域

本申请涉及点云配准计算机技术领域,尤其涉及一种基于GPU的GMM点云配准算法。

背景技术

点云配准是指通过计算,求出两帧点云之间刚性变换(Rigid Transformation)的过程,即将源点云(source cloud)变换到目标点云(target cloud)相同的坐标系下:P

在车辆定位中,点云配准任务的目标是求出将车载激光雷达扫描点云 (sourcecloud)转换至全局地图(target cloud)坐标系下的旋转矩阵和平移向量。

激光雷达被广泛运用在高级别自动驾驶方案中。与传统图像相比,激光雷达可以描述物体的深度信息,这样的特征使激光雷达可以更有效的还原物体在三维空间中的位置信息。利用这样的特征,配准任务可以根据目标和源点云中物体的位置信息完成两帧点云的配准。在实际应用中,点云配准可以辅助组合导航,如IMU,GPS,里程计对定位结果进行校准。

现有的GMM(Gaussian Mixture Maps)点云配准利用EM算法(EstimationMaximum)以Z轴为基础,在基底直方图中迭代拟合多个高斯分布对目标点云进行特征描述,再通过不同的网格分辨率完成对最优位姿的层次化搜索。

目前,传统的基于GMM的点云配准算法有以下几点不足:(1)传统GMM 采用EM算法在单个直方图当中拟合若干个高斯分布用以描绘目标点云信息,该算法可能在迭代若干次后过拟合并出现数值问题;(2)在CPU上运行该算法时需要进行高密度计算,计算速度慢,无法保证算法的低延时。

发明内容

有鉴于此,本申请实施例提供一种基于GPU的GMM点云配准算法,是一种传统GMM配准,解决传统方法中利用EM算法对目标点云进行描绘时出现的过拟合及数值异常问题,并利用GPU的并行计算架构降低点云配准任务的延时,以解决使用CPU完成点云配准任务时计算速度过慢的问题。

为了解决上述技术问题,本发明采用的技术方案为:

第一方面,本申请实施例提供一种基于GPU的GMM点云配准算法,具体包括以下步骤:

提取目标点云的XYZ坐标数据并描绘其特征信息,包括:将目标点云的XYZ坐标数据从CPU内存拷入GPU显存并分别存储;绘制基底直方图条目;基于K-Means聚类算法对所述基底直方图条目的点分类;计算所述基底直方图条目各类点的高斯分布并获得高斯分布参数;

提取源点云的XYZ坐标数据:在GPU显存中开辟数组空间,将源点云XYZ 坐标数据从CPU内存拷入GPU显存并分别储存;

设定位姿搜索参数;

位姿搜索预处理,得到经过不同航向角旋转的变换点云集并存储;

层次化位姿搜索,得到经过不同搜索组合变换的搜索点云集并输出最优位姿。

根据本申请实施例的一种具体实现方式,所述提取目标点云的XYZ坐标数据并描绘其特征信息,具体过程为:

步骤1.1:在GPU显存中开辟3个数组空间,将目标点云的XYZ坐标数据从CPU内存拷入GPU显存并将XYZ数据分别储存在所述3个数组空间中,以便在后续读取时实现对GPU内存的合并访问;

步骤1.2:在GPU上利用线束级操作完成快速归约算法,找到目标点云X,Y 数据的最大最小值;

步骤1.3:依据此边界及预设基底网格分辨率将目标点云在X,Y平面上划分成边长相等的若干基底直方图条目;

步骤1.4:为目标点云中的每一个点分配一个GPU线程,根据各个点的X,Y 坐标数据将各个点映射至所属基底直方图条目中;

步骤1.5:根据实时动态信息获取各个基底直方图的高程,并作为当前基底直方图的地面高度基准;

步骤1.6:为每一个基底直方图分配一个GPU线程,遍历基底直方图当中所有的点,根据每个点的Z轴信息以及该基底直方图的地面高度基准进行 K-Means聚类,将基底直方图中的点分为地面类和上层建筑类;

步骤1.7:为每一个基底直方图分配一个GPU线程,检查各个基底直方图中地面类和上层建筑类中点的数量;

步骤1.8:为每一个基底直方图分配一个GPU线程,根据K-Means聚类结果为每个基底直方图的地面类和上层建筑类分别计算在Z轴上的高斯分布并得到高斯分布参数;将所得到的高斯分布参数分别以连续内存形式储存在GPU 显存中,以在后续读取高斯分布参数时完成对显存的合并访问。

进一步的,在所述步骤1.1中,所述在GPU显存中开辟3个数组空间中的所述数组空间的大小为4bytes×N

进一步的,在所述步骤1.7和步骤1.8中,若所述某一基底直方图中的地面类或上层建筑类中点的数量少于2个,则点数少于2个的类被从其所属基底直方图中抹去,且该类对应的高斯分布参数置为零。

根据本申请实施例的一种具体实现方式,所述设定位姿搜索参数,具体过程为:

步骤3.1:分别在三个自由度X轴Y轴和航向角设置搜索范围:X

步骤3.2:设置三个自由度的基础搜索步长:S

步骤3.3:设置搜索层数:L;

步骤3.4:设置GPU线程并行度参数:P,其中P≤32;

步骤3.5:设置源点云点中点的数量:N

根据本申请实施例的一种具体实现方式,所述位姿搜索预处理,得到经过不同航向角旋转的变换点云集,具体过程为:

步骤4.1:根据设置的H

步骤4.2:在GPU三维并行空间中的X轴上分配

步骤4.3:根据步骤4.2中所分配的GPU并行空间,计算经过不同航向角所得到变换点云集

步骤4.4:将经GPU计算后的得到变换点云集Z

根据本申请实施例的一种具体实现方式,所述层次化位姿搜索,得到搜索点云集并输出最优位姿,具体过程为:

步骤5.1:分配GPU顶层搜索的并行空间,在每一个猜测航向角度下,按步长S'

步骤5.2:按照步骤5.1中分配的并行空间为每一个搜索点云集中的点计算其概率密度;利用共享内存进行线程束级归约,将各个搜索点云集中的点的概率密度加和后取对数,得到

步骤5.3:将储存在GPU的对数概率密度拷贝到CPU中的一个向量容器中进行升序排序,将容器末尾的数据从容器中取出以得到当前使得概率密度最优的位姿变换参数;

步骤5.4:将步骤5.3得到的当前的最优位姿变换参数作为下一轮搜索的初始值,并在得到的当前的最优位姿的X轴和Y轴基础平移上加上下一层级X 轴和Y轴的搜索步长,保持对应的航向角不变,增加4组位姿变换并在下一层级继续搜索;

步骤5.5:根据步骤5.1和5.2计算新增加的4组位姿变换的对数概率密度,将计算结果拷入CPU中的向量容器;

步骤5.6:重复步骤5.3至步骤5.5,直到找到层级为1的最优位姿时停止,并输出该最优位姿作为点云配准的最优位姿。

进一步的,在所述步骤5.5中,所述根据步骤5.1和5.2计算新增加的4 组位姿变换的对数概率密度时,保持GPU三维并行空间中的X轴和线程块的三维并行空间中的X轴划分不变,将GPU三维并行空间中的Y轴上分配4个线程块和在Z轴上分配1个线程块。

进一步的,所述搜索点云集中的点的概率密度计算公式为:

其中j为基底直方图中的两个类,i为所有顶层直方图涵盖的基底直方图, z为当前线程所操作点云的Z轴坐标,w、σ和u为高斯分布参数:先验概率,标准差和平均值。

进一步的,在所述步骤5.4中,所述搜索步长沿X轴和Y轴的平移分别为

第二方面,本申请实施例提供一种点云配准的终端,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于GPU的GMM点云配准算法。

第三方面,本申请实施例还提供一种存储介质,包括:所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一方面所述的基于GPU的GMM点云配准算法。

本申请实施例中提供的基于GPU的GMM点云配准算法,具体包括提取目标点云的XYZ坐标数据并描绘其特征信息、提取源点云的XYZ坐标数据、设定位姿搜索参数、位姿搜索预处理和层次化位姿搜索,通过本申请的处理方案,解决了用EM算法对目标点云进行基于高斯混合分布的描述时容易出现的过拟合和数值错误的问题,并利用GPU的并行计算架构降低点云配准任务的延时,提高了点云配准计算速度。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的基于GPU的GMM点云配准算法的流程图。

具体实施方式

下面结合附图对本申请实施例进行详细描述。

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。

还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。

本申请实施例提供一种基于GPU的GMM点云配准算法,所述算法流程参见图1所示,包括以下步骤:

步骤1:提取目标点云的XYZ坐标数据并描绘其特征信息;

步骤1.1:在GPU显存中开辟3个数组空间,将目标点云的XYZ坐标数据从CPU内存拷入GPU显存并将XYZ数据分别储存在所述3个数组空间中,以便在后续读取时实现对GPU内存的合并访问;

在本申请实施列中,所述每个数组空间的大小为4bytes×N

步骤1.2:在GPU上利用线束级操作(WARP-Level Operation)完成快速归约算法,找到目标点云X,Y数据的最大最小值,即找到目标点云中的X坐标 Y坐标的边界值。

在本申请实施例中,所述线束级归约算法的具体操作如下:

步骤1.2.1:首先在每个线程块内分配P

步骤1.2.2:根据步骤1.2.1中分配的每个线程块中的线程数P

步骤1.2.3:在GPU显存中创建一个输出缓存器,其大小为4bytes×P

步骤1.2.4:在每个线程中以b

步骤1.2.5:为每个线程块分配1024个线程,为GPU分配1个线程块,每个线程遍历输出缓存中的一个元素,再次利用Warp Shuffles操作找出该线程块内的最大值,并由零号线程输出该最大值;

步骤1.2.6:重复步骤1.2.1至步骤1.2.5三次,找出最大X,Y,Z的值;

步骤1.3:依据此边界值及预设基底网格分辨率R

步骤1.4:为目标点云中的每一个点分配一个GPU线程,根据各个点的X,Y 坐标数据将各个点映射至各自所属的基底直方图条目中;

步骤1.5:根据RTK(Real-Time Kinematic,实时动态)信息获取各个基底直方图条目的高程,并作为当前基底直方图条目的地面高度基准;

步骤1.6:为每一个基底直方图分配一个GPU线程,遍历基底直方图条目当中所有的点,根据每个点的Z轴信息以及该基底直方图条目的地面高度基准进行K-Means聚类,将基底直方图中的点分为地面类和上层建筑类;

步骤1.7:为每一个基底直方图分配一个GPU线程,检查各个基底直方图条目的地面类和上层建筑类中点的数量,若某一类中的点数量少于两个则基底从该直方图中抹去该类;

步骤1.8:为每一个基底直方图条目分配一个GPU线程,根据K-Means聚类结果为每个基底直方图条目的地面类和上层建筑类分别计算在Z轴上的高斯分布,每个基底直方图条目中的地面类和上层建筑类的高斯分布分别由各自的高斯分布参数w(prior)、σ(deviation)和u(mean)表示,若其中一类被从基底直方图抹去,则该类的所有参数w、σ和u均置零;将所得到的高斯分布参数分别以连续内存形式储存在GPU显存中,以在后续读取高斯分布参数时完成对显存的合并访问。

步骤2:提取源点云的XYZ坐标数据,在GPU显存中开辟3个数组空间,将源点云XYZ坐标数据从CPU内存拷入GPU显存并分别储存,以在后续读取时实现对GPU内存的合并访问;

步骤3:设定位姿搜索参数;

步骤3.1:分别在三个自由度X轴Y轴和航向角设置搜索范围:X

步骤3.2:设置三个自由度的基础搜索步长:S

步骤3.3:设置搜索层数:L;

步骤3.4:设置GPU线程并行度参数:P,其中P≤32;

步骤3.5:设置源点云点中点的数量:N

步骤4:位姿搜索预处理;

步骤4.1:根据步骤3设置的H

步骤4.2:在GPU三维并行空间中的X轴上分配

步骤4.3:根据步骤4.2中所分配的GPU并行空间,计算经过不同猜测航向角度角度所得到变换点云集

具体的,在计算经过不同旋转角度得到变换点云集过程中,Y轴线程块索引代表旋转角度:φ

步骤4.4:将经GPU计算后的得到变换点云集Z

步骤5:层次化位姿搜索;

步骤5.1:分配GPU顶层搜索的并行空间,在每一个猜测航向角度下,按步长S'

在GPU三维并行空间中的X轴上分配

至此,经过计算得到共有

步骤5.2:按照步骤5.1中分配的并行空间为每一个搜索点云集中的点计算其概率密度,具体计算时,首先根据每一个搜索点云集中的点的XY坐标按照R'

计算点云在顶层直方图中的概率密度,其中j为基底直方图中的两个类,i为所有顶层直方图涵盖的基底直方图,z为当前线程所操作点云的Z轴坐标;在各个搜索点云集中的点均得到其在顶层直方图的概率密度之后,利用共享内存进行线程束级归约,具体的线程束级归约算法的操作可参照前述步骤1.2.1 至步骤1.2.5,但归约目的从归约寻找最大值变为归约求和;将各个搜索点云集中的点的概率密度加和后取对数,得到

步骤5.3:将储存在GPU的对数概率密度拷贝到CPU中的一个向量容器中进行升序排序,将容器末尾的数据从容器中取出以得到当前使得概率密度最优的位姿变换参数φ

步骤5.4:将步骤5.3得到的当前的最优位姿变换参数作为下一轮搜索的初始值,并在得到的当前的最优位姿的X轴和Y轴基础平移上加上下一层级X 轴和Y轴的搜索步长,即所述搜索步长沿X轴和Y轴的平移分别为

步骤5.5:根据步骤5.1和5.2计算新增加的4组位姿变换的对数概率密度,此时保持GPU三维并行空间中的X轴和线程块的三维并行空间中的X轴划分不变,将GPU三维并行空间中的Y轴上分配4个线程块,在Z轴上分配1 个线程块,将计算结果拷入CPU中的向量容器;

步骤5.6:重复步骤5.3至步骤5.5,直到找到层级为1的最优位姿时停止,并输出该最优位姿作为点云配准的最优位姿。

在一个实施例中,本申请提供了一种点云配准的终端,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如前述所述的基于GPU的GMM点云配准算法。

在一个实施例中,本申请提供了一种存储介质,包括:所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如前述所述的基于GPU的GMM点云配准算法,实现以下步骤:

提取目标点云的XYZ坐标数据并描绘其特征信息,包括:将目标点云的 XYZ坐标数据从CPU内存拷入GPU显存并分别存储;绘制基底直方图条目;基于K-Means聚类算法对所述基底直方图条目的点分类;计算所述基底直方图条目各类点的高斯分布并获得高斯分布参数;

提取源点云的XYZ坐标数据:在GPU显存中开辟数组空间,将源点云XYZ 坐标数据从CPU内存拷入GPU显存并分别储存;

设定位姿搜索参数;

位姿搜索预处理,得到经过不同航向角旋转的变换点云集并存储;

层次化位姿搜索,得到经过不同搜索组合变换的搜索点云集并输出最优位姿。

本申请提供的实施例针对传统基于GMM的点云配准算法具有对目标点云描绘时的过拟合和数值异常的问题以及计算速度过慢的问题,发明了一种基于 GPU的GMM点云配准算法,解决了过拟合和数值错误的问题,提高了GMM点云配准计算速度。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种基于GPU的GMM点云配准算法
  • 一种基于ICP算法与点云剔除算法的牙齿配准方法
技术分类

06120112479480