一种基于GPU的并行八叉树生成、装置及电子设备制造方法及图纸

技术编号:26766993 阅读:16 留言:0更新日期:2020-12-18 23:44
本发明专利技术实施例提供一种基于GPU的并行八叉树生成方法、装置及电子设备,所述方法包括:获取点云数据,所述点云数据包括每个点的位置信息;根据所述点云数据在所述GPU分配所述点云数据的计算空间;根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。这样可以在GPU上高度的自底向上的方式并行为给定的点云数据构建八叉树,且使用线性方式存储八叉树节点,能够高效利用空间,进而节约空间,并提高八叉树的建树效率。

【技术实现步骤摘要】
一种基于GPU的并行八叉树生成、装置及电子设备
本专利技术涉及三维空间
,尤其涉及一种基于GPU的并行八叉树生成、装置及电子设备。
技术介绍
随着计算机技术的进步以及数字化需求的不断增加,三维模型作为一种新型的多媒体数字技术,正以日新月异的速度向前发展。近年来,三维激光扫描技术飞速发展,随着其在效率、精度、测距范围等方面的性能不断提升以及相关理论的发展,三维扫描技术在越来越多的领域得到了应用。三维激光扫描直接对物体表面进行三维密集采样,可快速获取具有三维坐标(X,Y,Z)的不规则空间分布三维点云,成为数字化时代下刻画复杂现实世界最为直接和重要的三维地理空间数据获取手段,在全球变化、智慧城市、全球制图等国家重大需求和地球系统科学研究中起到十分重要的作用。八叉树是一种描述三维空间的树状数据结构,用一个立方体代表一个节点,每个节点有零个或者八个子节点,传统的八叉树构建方法是在CPU端自根节点向下递归建立到最大深度为止,这种方法很难在GPU上高效实现,且运行空间大以及八叉树的建树效率低。
技术实现思路
本专利技术实施例提供一种基于GPU的并行八叉树生成方法,能够能够在GPU上实现,且节约空间以及提高八叉树的建树效率。第一方面,本专利技术实施例提供一种基于GPU的并行八叉树生成方法,所述方法包括以下步骤:获取点云数据,所述点云数据包括每个点的位置信息;根据所述点云数据在所述GPU分配所述点云数据的计算空间;根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。可选的,所述根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建初始八叉树节点的步骤包括:根据所述每个点的位置信息基于预设的编码策略对所述计算空间进行分割,并进行编码,以得到每个点的编码值,所述编码值与所述键值存在对应关系;根据所有点的编码值以及所有点的序号生成所有点的编码数组;根据所述编码数组创建标记数组;根据所述标记数组创建八叉树节点数组,并配置与所述第一八叉树节点数组对应的键值;根据所述编码数组与所述八叉树数组创建八叉树最底层的初始八叉树节点。可选的,所述基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件得到目标八叉树的步骤包括:根据所述初始八叉树节点计算每一层八叉树节点个数,并创建层级数组以及节点地址数组,所述层级数组用于记录每一层节点个数,所述节点地址数组用于记录每一层节点的起始位置;根据所述层级数组计算所有节点的空间大小,并生成树节点数组;根据所述节点地址数组以及所述树节点数组建立各个层级的八叉树节点,直到根节点对应的层级为止,以生成目标八叉树。可选的,所述基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件得到目标八叉树的步骤还包括:根据初始八叉树节点的相邻子节点的键值右移六位来判断相邻子节点的父节点是不是兄弟关系;若是,则通过父节点的键的后三位来确定两父节点在兄弟节点的位置。第二方面,本专利技术实施例还提供了一种基于GPU的并行八叉树生成装置,所述装置包括:第一获取模块,用于获取点云数据,所述点云数据包括每个点的位置信息;空间分配模块,用于根据所述点云数据在所述GPU分配所述点云数据的计算空间;第一计算模块,用于根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;目标八叉树生成模块,用于基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。可选的,所述第一计算模块包括:编码单元,用于根据所述每个点的位置信息基于预设的编码策略对所述计算空间进行分割,并进行编码,以得到每个点的编码值,所述编码值与所述键值存在对应关系;编码数组生成单元,用于根据所有点的编码值以及所有点的序号生成所有点的编码数组;第一创建单元,用于根据所述编码数组创建标记数组;第二创建单元,用于根据所述标记数组创建八叉树节点数组,并配置与所述第一八叉树节点数组对应的键值;第三创建单元,用于根据所述编码数组与所述八叉树数组创建八叉树最底层的初始八叉树节点。可选的,所述目标八叉树生成模块包括:第四创建单元,用于根据所述初始八叉树节点计算每一层八叉树节点个数,并创建层级数组以及节点地址数组,所述层级数组用于记录每一层节点个数,所述节点地址数组用于记录每一层节点的起始位置;树节点数组生成单元,用于根据所述层级数组计算所有节点的空间大小,并生成树节点数组;目标八叉树生成单元,用于根据所述节点地址数组以及所述树节点数组建立各个层级的八叉树节点,直到根节点对应的层级为止,以生成目标八叉树。可选的,所述目标八叉树生成模块还包括:判断单元,用于根据初始八叉树节点的相邻子节点的键值右移六位来判断相邻子节点的父节点是不是兄弟关系;确定单元,用于若是,则通过父节点的键的后三位来确定两父节点在兄弟节点的位置。第三方面,本专利技术实施例还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例提供的基于GPU的并行八叉树生成方法中的步骤。第四方面,本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例提供的基于GPU的并行八叉树生成方法中的步骤。本专利技术实施例带来的有益效果:通过获取点云数据,所述点云数据包括每个点的位置信息;根据所述点云数据在所述GPU分配所述点云数据的计算空间;根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。这样可以在GPU上高度的自底向上的方式并行为给定的点云数据构建八叉树,且使用线性方式存储八叉树节点,能够高效利用空间,进而节约空间,并提高八叉树的建树效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的基于GPU的并行八叉树生成方法的流程图;图2是本专利技术实施例中步骤103提供的一种方法的流程图;图3是本专利技术实施例中步骤104提供的一种方法的流程图;图4是本文档来自技高网...

【技术保护点】
1.一种基于GPU的并行八叉树生成方法,其特征在于,所述方法包括:/n获取点云数据,所述点云数据包括每个点的位置信息;/n根据所述点云数据在所述GPU分配所述点云数据的计算空间;/n根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;/n基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。/n

【技术特征摘要】
1.一种基于GPU的并行八叉树生成方法,其特征在于,所述方法包括:
获取点云数据,所述点云数据包括每个点的位置信息;
根据所述点云数据在所述GPU分配所述点云数据的计算空间;
根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建八叉树最底层的初始八叉树节点,所述八叉树的每个节点均包含一键值;
基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件生成目标八叉树。


2.如权利要求1所述的基于GPU的并行八叉树生成方法,其特征在于,所述根据每个点的位置信息计算所述计算空间中所有点的编码数组,根据所述编码数组创建初始八叉树节点的步骤包括:
根据所述每个点的位置信息基于预设的编码策略对所述计算空间进行分割,并进行编码,以得到每个点的编码值,所述编码值与所述键值存在对应关系;
根据所有点的编码值以及所有点的序号生成所有点的编码数组;
根据所述编码数组创建标记数组;
根据所述标记数组创建八叉树节点数组,并配置与所述第一八叉树节点数组对应的键值;
根据所述编码数组与所述八叉树数组创建八叉树最底层的初始八叉树节点。


3.如权利要求1所述的基于GPU的并行八叉树生成方法,其特征在于,所述基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件得到目标八叉树的步骤包括:
根据所述初始八叉树节点计算每一层八叉树节点个数,并创建层级数组以及节点地址数组,所述层级数组用于记录每一层节点个数,所述节点地址数组用于记录每一层节点的起始位置;
根据所述层级数组计算所有节点的空间大小,并生成树节点数组;
根据所述节点地址数组以及所述树节点数组建立各个层级的八叉树节点,直到根节点对应的层级为止,以生成目标八叉树。


4.如权利要求3所述的基于GPU的并行八叉树生成方法,其特征在于,所述基于所述初始八叉树节点建立各个层级的八叉树节点,直到达到预设终止条件得到目标八叉树的步骤还包括:
根据初始八叉树节点的相邻子节点的键值右移六位来判断相邻子节点的父节点是不是兄弟关系;
若是,则通过父节点的键的后三位来确定两父节点在兄弟节点的位置。


5.一种基于GPU的并行八叉树生成装置,其特征在于,所述装置包括:
第一获取模块,用于获取点云数据,所述点云数据包括每个点的位置信息;
空间分配模块,用于根据所述点云数据在所述GPU分配所述点云数据的计算空间;

【专利技术属性】
技术研发人员:陈霖甲
申请(专利权)人:深圳市菲森科技有限公司
类型:发明
国别省市:广东;44

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

1