海量点云数据的自适应处理方法、系统及设备技术方案

技术编号:37154420 阅读:19 留言:0更新日期:2023-04-06 22:14
本申请涉及计算机技术领域,公开了一种海量点云数据的自适应处理方法及系统。该方法包括:根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架,遍历所述点云数据,基于所述八叉树框架的叶子节点的可用缓存状态,将点云数据插入到所述八叉树框架的对应叶子节点;并行对八叉树框架中的大叶子节点构建子八叉树,其中,所述大叶子节点是指容纳的点云数据的点个数超过了节点所允许容纳的点个数最大值的叶子节点;并行对八叉树框架及其子八叉树的非叶子节点进行聚合和抽稀,生成八叉树。本申请能够更有效地保障对海量点云数据正常渲染,实现对海量点云构建八叉树,并显著减少构建八叉树的耗时。并显著减少构建八叉树的耗时。并显著减少构建八叉树的耗时。

【技术实现步骤摘要】
海量点云数据的自适应处理方法、系统及设备


[0001]本申请涉及计算机
,特别涉及海量点云数据处理技术。

技术介绍

[0002]点云数据(point cloud data)是指在一个三维坐标系统中的一组向量的集合。扫描资料以点的形式记录,每一个点包含有三维坐标,有些可能含有颜色信息(RGB)或反射强度信息(Intensity)。
[0003]海量点云数据的处理一直都是一大难题,尤其是快速对海量点云构建八叉树结构,通常对点云构建八叉树结构都是将点云全部加载到内存中,并且需要在构建八叉树结构前预先设置八叉树的深度或者分辨率,构建八叉树达到指定的深度或分辨率时即视为八叉树构建完成。
[0004]目前,海量点云数据的处理中仍然存在一些问题。
[0005]例如,激光雷达扫描获得的点云数据量与扫描时间强相关,扫描时间越长点云数据量越大,通常的单个点云文件大小在GB级别,甚至能达到几十GB、几百GB,如此大的点云文件无法将海量点云全部加载到内存中构建点云数据的八叉树结构。
[0006]又例如,海量点云在渲染时点云数据量过大无法快速获取要渲染的目标点云,出现渲染卡顿甚至渲染崩溃的情况。

技术实现思路

[0007]本申请的目的在于提供一种海量点云数据的自适应处理方法、系统及设备,能够更有效地保障对海量点云数据正常渲染,实现对海量点云构建八叉树,并显著减少构建八叉树的耗时。
[0008]本申请公开了一种海量点云数据的自适应处理方法,包括:
[0009]步骤A:根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架,遍历所述点云数据,基于所述八叉树框架的叶子节点的可用缓存状态,将点云数据插入到所述八叉树框架的对应叶子节点;
[0010]步骤B:并行对八叉树框架中的大叶子节点构建子八叉树,其中,所述大叶子节点是指容纳的点云数据的点个数超过了节点所允许容纳的点个数最大值的叶子节点;
[0011]步骤C:并行对八叉树框架及其子八叉树的非叶子节点进行聚合和抽稀,生成八叉树。
[0012]在一个优选例中,所述根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架的步骤中,若具有所述预估深度的八叉树框架能容纳的点云数据的总点数超过点云数据的实际总点数的两倍,则构建半八叉树框架,否则,构建满八叉树框架。
[0013]在一个优选例中,所述满八叉树框架的所有非叶子节点均有8个子节点,所述半八叉树框架的根节点有4个子节点,所述半八叉树框架除根节点外所有非叶子节点均有8个子
节点。
[0014]在一个优选例中,所述将点云数据插入到所述八叉树框架的对应叶子节点的步骤中,所述八叉树框架的所有叶子节点共享缓存,如果待插入的下一个点云数据在上次命中的叶子节点的包围盒内,则将所述下一个点云数据存入所述上次命中的叶子节点,否则,找到该点云数据对应的叶子节点,若该点云数据对应的叶子节点正在使用的缓存为可用缓存,则将该点云数据插入对应的叶子节点的该缓存中,若该点云数据对应的叶子节点正在使用的缓存不足以容纳该点云数据,则在缓存池中寻找可用缓存与该点云数据对应的叶子节点建立对应关系并插入该点云数据,若缓存池中无可用缓存,则淘汰最久没有插入点云数据的叶子节点的缓存,并将所述点云数据插入已释放的缓存中。
[0015]在一个优选例中,所述并行对大叶子节点构建子八叉树的步骤中,若八叉树框架的所有大叶子节点的点云数据的点个数均不超过第一阈值,则将根节点的子节点作为子八叉树的根节点,并行对对应的大叶子节点按照从根节点到叶子节点的顺序构建子八叉树,否则,对八叉树框架的所有大叶子节点按照从叶子节点到根节点的顺序构建子八叉树,直到八叉树框架的所有大叶子节点的点云数据的点个数均不超过第一阈值。
[0016]在一个优选例中,所述并行对八叉树的非叶子节点聚合和抽稀的步骤中,若八叉树框架的非叶子节点的点云数据的点个数超过第二阈值,则对该非叶子节点进行抽稀并保留该节点的非空子节点,删除该节点的空子节点,否则,删除该非叶子节点的所有子节点。
[0017]在一个优选例中,所述根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架的步骤中,进一步包括:
[0018]获得点云文件中的点云数据的实际总点数,根据所述实际总点数和所述第二阈值计算得到初始深度;
[0019]根据点云文件中的点云数据的实际总点数获得扩张深度;
[0020]根据所述初始深度和所述扩张深度得到所述预估深度。
[0021]本申请还公开了一种海量点云数据的自适应处理系统包括:
[0022]构建八叉树与插入点云数据单元,用于根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架,遍历所述点云数据,基于所述八叉树框架的叶子节点的可用缓存状态,将点云数据插入到所述八叉树框架的对应叶子节点;
[0023]大叶子节点构建八叉树单元,用于并行对八叉树框架中的大叶子节点构建子八叉树,其中,所述大叶子节点是指容纳的点云数据的点个数超过了节点所允许容纳的点个数最大值的叶子节点;
[0024]聚合抽稀与点云数据自定义格式文件生成单元,用于并行对八叉树框架及其子八叉树的非叶子节点进行聚合和抽稀,生成八叉树。
[0025]本申请还公开了一种海量点云数据的自适应处理设备包括:
[0026]存储器,用于存储计算机可执行指令;以及,
[0027]处理器,用于在执行所述计算机可执行指令时实现如前文描述的方法中的步骤。
[0028]本申请还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。本申请实施方式中,首先,构建八叉树前可以不需要预先设置八叉树的最大深度或者最小分辨率,根据点云的空间分布特点动态调整八叉树的深度,八叉树构建完成后所有八叉
树节点的点个数均不超过渲染限制的点个数,能够正常渲染。第二,实施例中可以将海量点云分批加载到内存中插入八叉树,借助中间文件保存八叉树节点的点云数据,动态调整点个数最大值超过渲染的像素个数最大值叶子节点,能够实现对海量海运构建八叉树。第三,实施例中可以采用自适应构建八叉树框架、缓存池、多线程并行拆分大叶子节点、多线程并行合并小叶子/抽稀等实现了对海量点云数据构建八叉树,极大地降低了构建八叉树的耗时。
[0029]本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述
技术实现思路
中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种海量点云数据的自适应处理方法,其特征在于,包括:步骤A:根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架,遍历所述点云数据,基于所述八叉树框架的叶子节点的可用缓存状态,将点云数据插入到所述八叉树框架的对应叶子节点;步骤B:并行对八叉树框架中的大叶子节点构建子八叉树,其中,所述大叶子节点是指容纳的点云数据的点个数超过了节点所允许容纳的点个数最大值的叶子节点;步骤C:并行对八叉树框架及其子八叉树的非叶子节点进行聚合和抽稀,生成八叉树。2.如权利要求1所述的方法,其特征在于,所述根据点云文件中的点云数据的实际总点数和预估深度,构建所述点云数据对应的八叉树框架的步骤中,若具有所述预估深度的八叉树框架能容纳的点云数据的总点数超过点云数据的实际总点数的两倍,则构建半八叉树框架,否则,构建满八叉树框架。3.如权利要求2所述的方法,其特征在于,所述满八叉树框架的所有非叶子节点均有8个子节点,所述半八叉树框架的根节点有4个子节点,所述半八叉树框架除根节点外所有非叶子节点均有8个子节点。4.如权利要求2所述的方法,其特征在于,所述将点云数据插入到所述八叉树框架的对应叶子节点的步骤中,所述八叉树框架的所有叶子节点共享缓存,如果待插入的下一个点云数据在上次命中的叶子节点的包围盒内,则将所述下一个点云数据存入所述上次命中的叶子节点,否则,找到该点云数据对应的叶子节点,若该点云数据对应的叶子节点正在使用的缓存为可用缓存,则将该点云数据插入对应的叶子节点的该缓存中,若该点云数据对应的叶子节点正在使用的缓存不足以容纳该点云数据,则在缓存池中寻找可用缓存与该点云数据对应的叶子节点建立对应关系并插入该点云数据,若缓存池中无可用缓存,则淘汰最久没有插入点云数据的叶子节点的缓存,并将所述点云数据插入已释放的缓存中。5.如权利要求1所述的方法,其特征在于,所述并行对八叉树框架中的大叶子节点构建子八叉树的步骤中,若八叉树框架的所有大叶子节点的点云数据的点个数均不超过第一阈值,则将根节点的子节点作为子八叉树的根节...

【专利技术属性】
技术研发人员:王澜丁源熊鲁昊明
申请(专利权)人:千寻位置网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1