CN113849495A - 一种点云动态哈希划分方法及设备 - Google Patents

一种点云动态哈希划分方法及设备 Download PDF

Info

Publication number
CN113849495A
CN113849495A CN202010593384.8A CN202010593384A CN113849495A CN 113849495 A CN113849495 A CN 113849495A CN 202010593384 A CN202010593384 A CN 202010593384A CN 113849495 A CN113849495 A CN 113849495A
Authority
CN
China
Prior art keywords
hash
node
hash table
nodes
coordinate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010593384.8A
Other languages
English (en)
Inventor
赵文博
王静
宋菲
李革
高文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202010593384.8A priority Critical patent/CN113849495A/zh
Publication of CN113849495A publication Critical patent/CN113849495A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种点云动态哈希划分方法及设备,点云动态哈希划分方法包括步骤:根据树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定总划分次数;确定当前节点层对应的哈希表数量;确定每个坐标分量的划分次数;根据所述当前节点层对应的哈希表数量、坐标分量的划分次数和当前节点层的占用节点位置数据确定节点对应的哈希表,将节点添加至节点对应的哈希表中。在每个节点层上配置若干个哈希表,根据当前节点层的占用节点的位置数据确定节点对应的哈希表序号,并将节点添加至节点对应的哈希表中,不同哈希表中的节点不会出现哈希冲突,从而在不损失性能的情况下,优化了哈希表的存取性能,提高了哈希表插入与查询的效率。

Description

一种点云动态哈希划分方法及设备
技术领域
本发明涉及点云技术领域,尤其涉及的是一种点云动态哈希划分方法及设备。
背景技术
三维点云是现实世界数字化的重要表现形式。随着三维扫描设备(如激光、雷达等)的快速发展,点云的精度和分辨率变得更高。高精度点云广泛应用于城市数字化地图的构建,在智慧城市、无人驾驶、文物保护等众多热门研究中起技术支撑作用。点云是三维扫描设备对物体表面采样所获取的,一帧点云的点数一般是百万级别,其中每个点包含几何信息和颜色、反射率等属性信息,数据量十分庞大。三维点云庞大的数据量给数据存储、传输等带来了巨大挑战,因此对点云进行压缩变得十分重要。
现有技术中,稠密或大尺度点云,单个哈希表内元素数量过多,哈希冲突频率高,影响了哈希表插入与查询的效率。
因此,现有技术还有待于改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种点云动态哈希划分方法及设备,旨在解决现有技术中哈希冲突频率高导致哈希表插入与查询的效率低的问题。
本发明解决技术问题所采用的技术方案如下:
一种点云动态哈希划分方法,其中,所述点云的位置数据是基于树结构存储的;所述点云动态哈希划分方法包括步骤:
根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数;
根据所述总划分次数确定所述当前节点层对应的哈希表数量;
根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数;
根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,并将所述节点添加至所述节点对应的哈希表中。
所述的点云动态哈希划分方法,其中,所述根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数,具体包括:
对于基于分布的划分方法,所述总划分次数为:
Figure BDA0002556586050000021
或者
对于基于平均的划分方法,所述总划分次数为:
Figure BDA0002556586050000022
其中,E表示总划分次数,Nj表示第j个节点层的占用节点总数,T表示划分后单哈希表内平均节点数阈值,
Figure BDA0002556586050000023
表示向下取整函数,K为大于1的正整数。
所述的点云动态哈希划分方法,其中,所述哈希表的数量为:
Nhash=2E
其中,E表示总划分次数,Nhash表示哈希表的数量。
所述的点云动态哈希划分方法,其中,所述根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数,包括步骤:
对于基于平均的划分方法:
将总划分次数平均分配给每个坐标分量,得到每个坐标分量的划分次数;
或者,对于基于分布的划分方法:
根据所述当前节点层的占用节点位置数据,得到每个坐标分量的分布范围;
根据所述每个坐标分量的分布范围按从大到小的顺序排列,得到每个坐标分量的顺位顺序;
根据所述总划分次数和所述每个坐标分量的顺位顺序,确定每个坐标分量的划分次数。
所述的点云动态哈希划分方法,其中,所述根据所述总划分次数和所述每个坐标分量的顺位顺序,确定每个坐标分量的划分次数,包括步骤:
若所述树结构为八叉树,则各坐标分量的划分次数分别为:
Figure BDA0002556586050000031
Figure BDA0002556586050000032
Figure BDA0002556586050000033
若所述树结构为四叉树,则各坐标分量的划分次数为:
Figure BDA0002556586050000034
Figure BDA0002556586050000035
若所述树结构为二叉树,则坐标分量的划分次数为:
Ex=E;
其中,E是总划分次数,Px、Py、Pz分别是x坐标分量的顺位顺序、y坐标分量的顺位顺序、z坐标分量的顺位顺序,cmp(·)是比较函数,
Figure BDA0002556586050000041
Ex,Ey,Ez分别是x坐标分量的划分次数,y坐标分量的划分次数,z坐标分量的划分次数;a,b均为中间变量,mod表示求余函数。
所述的点云动态哈希划分方法,其中,所述根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,具体包括:
若所述树结构为八叉树,所述节点对应的哈希表序号为:
Figure BDA0002556586050000042
若所述树结构为四叉树,所述节点对应的哈希表序号为:
Figure BDA0002556586050000043
若所述树结构为二叉树,所述节点对应的哈希表序号为:
Figure BDA0002556586050000044
其中,C表示哈希表序号,LA,LB,LC是X,Y,Z三个坐标轴的某一排列,Ea,Eb,Ec分别表示与LA,LB,LC相对应的划分次数,
Figure BDA0002556586050000045
Figure BDA0002556586050000046
分别表示第k个节点在LA坐标轴(N-Ea)个比特位的值、第k个节点在LB坐标轴(N-Eb)个比特位的值、第k个节点在LC坐标轴(N-Ec)个比特位的值,N表示莫顿码的比特位数。
所述的点云动态哈希划分方法,其中,所述的点云动态哈希划分方法还包括:
遍历所述节点的邻居节点,确定所述邻居节点对应的哈希表序号,将所述节点添加至所述邻居节点对应的哈希表中;或者
遍历所述节点的邻居节点,将所述邻居节点添加至所述节点对应的哈希表中;或者
遍历所述节点的邻居节点,确定所述邻居节点对应的哈希表序号,并保存所述邻居节点位置与哈希表序号的对应关系。
所述的点云动态哈希划分方法,其中,所述树结构包括:二叉树、四叉树或八叉树的一种或多种。
一种点云动态哈希划分设备,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现上述任一项所述的点云动态哈希划分方法的步骤。
一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项所述的点云动态哈希划分方法的步骤。
有益效果:由于在节点层上配置若干个哈希表,并根据节点上点云的位置数据确定节点对应的哈希表,并将节点添加至该节点对应的哈希表中,不同哈希表中的节点不会出现哈希冲突。从而在不损失性能的情况下,优化了哈希表的存取性能,提高了哈希表插入与查询的效率。
附图说明
图1是本发明中点云动态哈希划分方法的第一流程图。
图2是本发明中点云动态哈希划分方法的第二流程图。
图3是本发明中点云动态哈希划分设备的功能原理框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请同时参阅图1-图3,本发明提供了一种点云动态哈希划分方法的一些实施例。
发明人发现,测试平台PCEM中,三维点云中的几何信息经过量化,转化为莫顿码,并按照莫顿码组织为八叉树。在编码八叉树的某一层之前,新建一个哈希表,并将该层内的全部的节点放入该哈希表内。在编码过程中,建立上下文参考时,通过该哈希表快速查询某个位置的节点占用情况。但是,以上相关技术在面对稠密或大尺度点云时,单个哈希表内元素数量过多。易出现哈希冲突频率高,哈希表需多次扩容等问题,影响了哈希表插入与查询的效率。
点云数据(point cloud)是指透过3D扫描仪所取得之资料型式。点云数据除了具有几何位置以外,还有强度(Intensity)信息,强度信息的获取是激光扫描仪接受装置采集到的回波强度,此强度信息与目标的表面材质、粗糙度、入射角方向,以及仪器的发射能量,激光波长有关。当然还可以颜色、反射率等属性信息。本申请点云动态哈希划分方法应用于点云数据处理,具体应用于点云数据的压缩过程,例如,编码或解码。本申请点云动态哈希划分方法的执行主体可以是终端、计算机、编码端或解码端。
如图1所示,本发明的一种点云动态哈希划分方法,所述点云的位置数据是基于树结构存储的,树结构中有多个具有父子关系的节点。
具体地,点云中点的几何位置用三维笛卡尔坐标(X,Y,Z)表示。用N比特来表示每个坐标值,第k个点的坐标(Xk,Yk,Zk)可以表示成:
Figure BDA0002556586050000061
Figure BDA0002556586050000062
Figure BDA0002556586050000063
举例说明,Xk=(01011000),Yk=(10000100),Zk=(01111000),N为8,
Figure BDA0002556586050000064
为0,
Figure BDA0002556586050000065
为1,依次类推,
Figure BDA0002556586050000066
为0,
Figure BDA0002556586050000067
为0。
Figure BDA0002556586050000068
为1,
Figure BDA0002556586050000069
为0,
Figure BDA00025565860500000610
为0,
Figure BDA00025565860500000611
为0。
Figure BDA00025565860500000612
为0,
Figure BDA00025565860500000613
为1,
Figure BDA00025565860500000614
为0,
Figure BDA00025565860500000615
为0。当然,还可以采用其它比特位来表示坐标值。
k-th点对应的莫顿码可以表示如下:
Figure BDA00025565860500000616
将每三个比特用八进制数表示
Figure BDA00025565860500000617
则k-th点对应的莫顿码可以表示成
Figure BDA00025565860500000618
依据莫顿码,按照广度优先从根节点
Figure BDA00025565860500000619
(第0层)构建几何K叉树,K为大于1的整数。作为举例,所述K可以为2、4或8等,也就是说,根据点云中点的几何位置可构建二叉树或者四叉树或者八叉树或者此三种的混合树结构。
本实施例以构建八叉树为例,具体来讲,首先将所有的点根据莫顿码的第0个八进制数
Figure BDA0002556586050000071
分到八个子节点中:所有
Figure BDA0002556586050000072
的点分到第0个子节点
Figure BDA0002556586050000073
中,所有
Figure BDA0002556586050000074
的点分到第1个子节点
Figure BDA0002556586050000075
中,以此类推,所有
Figure BDA0002556586050000076
的点分到第7个子节点
Figure BDA0002556586050000077
中,则,八叉树第一层的节点由此八个节点构成。八比特
Figure BDA0002556586050000078
表示根节点
Figure BDA0002556586050000079
的八个子节点是否被占用,根节点是指树结构的最顶端的节点。如果
Figure BDA00025565860500000710
至少包含点云中的一个点,其对应的比特bk=1;如果该子节点不包含任何点,bk=0,子节点是指指树结构中,除根节点之外,并且本身下面还连接有节点的节点。根据几何位置的莫顿码的第1个八进制数
Figure BDA00025565860500000711
对第一层中被占用的节点
Figure BDA00025565860500000712
进一步划分成八个子节点;并用八个比特
Figure BDA00025565860500000713
表示其子节点的占用信息(ln是被占用节点的序号,n=0,...,N1-1,N1表示第一层被占用的节点数。)
Figure BDA00025565860500000714
再根据几何位置的莫顿码中的第j个八进制数
Figure BDA00025565860500000715
对j=2,3,...,N-2层中被占用的节点进一步划分成八个子节点;并用八个比特
Figure BDA00025565860500000716
表示将其子节点的占用信息。(ln是被占用节点的序号,n=0,...,Nj-1,Nj表示第j层被占用的节点数。)对第j=N-1层,所有的节点成为叶节点,叶节点是指本身下面不再连接有节点的节点,即末端。如果编码器配置允许重复点,需要在码流中记录每个被占用的叶节点上的重复点数。
在本例实施中,在编码端或解码端执行如下S100-S400的步骤,实现点云动态哈希划分方法。所述点云动态哈希划分方法包括以下步骤:
步骤S100、根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数。
具体地,本申请中点云动态哈希划分方法可通过广度优先搜索进行分层遍历,在编码或解码第j节点层的节点前,根据该节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述节点层对应的总划分次数,总划分次数为自然数。
具体地,所述总划分次数有两种计算方式方法,对于分布的划分方法,总划分次数为:
Figure BDA0002556586050000081
其中,E表示总划分次数,Nj表示第j个节点层的节点总数,T表示划分后单哈希表内平均节点数阈值,
Figure BDA0002556586050000082
表示向下取整函数。
对于基于平均的划分方法,总划分次数为:
Figure BDA0002556586050000083
其中,E表示总划分次数,Nj表示当前第j个节点层的占用节点总数,T表示划分后单哈希表内平均节点数阈值,
Figure BDA0002556586050000084
表示向下取整函数,K为大于1的正整数。例如,基于八叉树划分时,K为8。基于四叉树划分时,K为4。基于二叉树划分时,K为2。
举例说明,设第j个节点层的节点总数Nj为180000,T为10000,对于分布的划分方法
Figure BDA0002556586050000085
其中,log2(18)≈4.16。对于基于八叉树的划分方法,
Figure BDA0002556586050000086
其中log2(8)=3。
步骤S200、根据所述总划分次数确定所述当前节点层对应的哈希表数量。
具体地,基于总划分次数,确定哈希表的数量。就一个节点层来说,哈希表的数量可以是1个或多个,不同节点层的哈希表的数量可以相同,也可以不相同。
具体地,哈希表的数量为:
Nhash=2E
其中,E表示总划分次数,Nhash表示哈希表的数量。
举例说明,当E为4时,Nhash为16,也就是说,需要建立16个哈希表。再如,当E为0时,Nhash为1,也就是说,需要建立1个哈希表。
当节点层对应的哈希表的数量大于1时,就需要确定该节点层中的节点对应的哈希表。当该节点层对应的哈希表的数量等于1时,则可以直接将节点层中所有的节点添加到哈希表中。
具体地,采用Hc表示第C个哈希表,其中,C是哈希表序号,C为自然数。确定了C,就确定了节点对应的哈希表Hc
步骤S300、根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数。
具体地,计算节点对应的哈希表,需要得知每个坐标分量的划分次数。
计算每个坐标分量的划分次数有两种方法,一种是基于平均的划分方法,另一种是基于分布的划分方法。
步骤S300、根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数,包括:
步骤S310a、对于基于平均的划分方法,将所述总划分次数平均分配给每个坐标分量,得到每个坐标分量的划分次数。
举例说明,对于八叉树,将所述总划分次数平均分配给3个坐标分量,得到每个坐标分量的划分次数。对于四叉树,将所述总划分次数平均分配给2个坐标分量,得到每个坐标分量的划分次数。对于二叉树,将所述总划分次数分配给1个坐标分量,得到该坐标分量的划分次数。
具体地,步骤S300、根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数,包括:
步骤S310b、对于基于分布的划分方法,根据所述当前节点层的占用节点位置数据,得到每个坐标分量的分布范围。
具体的,遍历所有顶点的坐标,找到每个坐标分量上的最小值与最大值,求出每个坐标分量上的分布范围:
Dx=Xmax-Xmin,Dy=Ymax-Ymin,Dz=Zmax-Zmin
其中,Xmin,Xmax,Ymin,Ymax,Zmin,Zmax,是每个坐标分量上的最小值与最大值,Dx,Dy,Dz分别是x坐标分量的分布范围,y坐标分量的分布范围,z坐标分量的分布范围。
举例说明,设Xmin=10,Xmax=20,Ymin=5,Ymax=25,Zmin=3,Zmax=13,则Dx=20-10=10,Dy=25-5=20,Dz=13-3=10。
步骤S320b、根据所述每个坐标分量的分布范围按从大到小的顺序排列,得到每个坐标分量的顺位顺序。
步骤S330b、根据所述总划分次数和所述每个坐标分量的顺位顺序,确定每个坐标分量的划分次数。
具体的,若所述树结构为八叉树,则将Dx,Dy,Dz按从大到小的顺序排列,记Dx位于第Px顺位,Dy位于第Py顺位,Dz位于第Pz顺位,则三个坐标分量的划分次数为:
Figure BDA0002556586050000101
Figure BDA0002556586050000102
Figure BDA0002556586050000103
其中cmp是比较函数,其形式为
Figure BDA0002556586050000104
Ex,Ey,Ez分别是x坐标分量的划分次数,y坐标分量的划分次数,z坐标分量的划分次数;a,b均为中间变量,mod表示求余函数。
具体的,若所述树结构为四叉树,将Dx,Dy按从大到小的顺序排列,得到Dx位于第Px顺位,Dy位于第Py顺位,则两个坐标分量的划分次数为:
Figure BDA0002556586050000111
Figure BDA0002556586050000112
具体的,若所述树结构为二叉树,则坐标分量的划分次数Ex=E。
举例说明,对于基于平均的划分方法:设所述树为八叉树,设所述树为八叉树,E=6,则:
Figure BDA0002556586050000113
对于基于分布的划分方法:设所述树为八叉树,E=4,Dx=20,Dy=15,Dz=10,则:Px=1,Py=2,Pz=3。
Figure BDA0002556586050000114
Figure BDA0002556586050000115
Figure BDA0002556586050000116
步骤S400、根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,并将所述节点添加至所述节点对应的哈希表中。
根据所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,当然哈希表序号C小于哈希表数量Nhash,需要说明的是,哈希表序号C为自然数,从0开始算起。哈希表数量Nhash为正整数,从1开始算起。例如,哈希表序号C为0时,哈希表数量Nhash为1,这就意味着,只有一个哈希表,该哈希表为H0。再如,哈希表序号C为0、1、2时,哈希表数量Nhash为3,也就是说,有3个哈希表,分别为H0、H1、H2
具体地,若所述树结构为八叉树,所述节点对应的哈希表序号为:
Figure BDA0002556586050000117
其中,C表示哈希表序号,LA,LB,LC是X,Y,Z三个坐标轴的某一排列,也就是说,LA,LB,LC可以是X,Y,Z坐标轴,还可以是Y,X,Z坐标轴,还可以是Z,X,Y坐标轴等等,总共有6种排列方式。Eα,Eb,Ec分别表示与LA,LB,LC相对应的划分次数,
Figure BDA0002556586050000121
分别表示第k个节点在LA坐标轴(N-Ea)个比特位的值、在LB坐标轴(N-Eb)个比特位的值、在LC坐标轴(N-Ec)个比特位的值,N表示坐标值的比特位数。
具体的,若所述树结构为四叉树,所述节点对应的哈希表序号为:
Figure BDA0002556586050000122
其中,C表示哈希表序号,LA,LB是X,Y,Z三个坐标轴中任意两个坐标轴的某一排列,Ea,Eb分别表示与LA,LB相对应的划分次数,
Figure BDA0002556586050000123
Figure BDA0002556586050000124
分别表示第k个节点在LA坐标轴(N-Ea)个比特位的值、在LB坐标轴(N-Eb)个比特位的值,N表示坐标值的比特位数。
具体的,若所述树结构为二叉树,所述哈希表序号为:
Figure BDA0002556586050000125
其中,C表示哈希表序号,LA是X,Y,Z三个坐标轴的任意一个坐标轴,Ea分别表示与LA相对应的划分次数,
Figure BDA0002556586050000126
分别表示第k个节点在LA坐标轴(N-Ea)个比特位的值,N表示坐标值的比特位数。
举例说明,设所述树为八叉树,E=4,Ea=2,Eb=1,Ec=1,Xk=(1100100),Yk=(0100010),Zk=(1000001),LA为X轴,LB为Y轴,LC为Z轴,则
N=7,Ea=Ex=2,Eb=Ey=1,Ec=Ez=1,
Figure BDA0002556586050000127
Figure BDA0002556586050000128
即该节点应被放入13号哈希表H13中。
将所述节点添加至所述节点对应的哈希表中,具体地,将节点添加至该节点对应的哈希表中,例如,节点对应的哈希表H2,则该节点添加至H2哈希表中。
当所述哈希表的数量等于1时,将所述节点层中节点均添加至所述哈希表中。
具体地,如果节点层仅对应有1个哈希表,也就是说,该节点层中的节点只有一个可选的哈希表,只能选该哈希表,则将该节点层中所有节点添加至该节点层对应的哈希表中。
步骤S500、遍历所述节点的邻居节点,确定邻居节点对应的哈希表序号,并关联所述节点以及所述邻居节点。
具体地,若第k1个节点与第k2个节点满足如下条件,则称第k1个节点与第k2个节点为邻居节点:
|Xk1-Xk2|≤1,|Yk1-Yk2|≤1,|Zk1-Zk2|≤1
其中,Xk1,Yk1,Zk1分别为第k1个节点的坐标,Xk2,Yk2,Zk2分别为第k2个节点的坐标。也就是说,两个节点在X坐标之间的距离、Y坐标之间的距离以及Z坐标之间的距离均小于或等于1时,则两个节点为邻居节点。
每个节点层的节点存在若干个邻居节点。为了便于在哈希表中查找某一节点的邻居节点的占用情况,可以将该节点添加至所述邻居节点对应的哈希表中,从而可以仅查找节点,就能得到邻居节点的占用情况;或者可以将所述邻居节点添加至该节点对应的哈希表中;或者可以记录邻居节点与其所属哈希表的对应关系,在查询邻居节点的占用情况时,在对应的哈希表中查询。
具体地,步骤500、遍历所述节点的邻居节点,确定邻居节点对应的哈希表序号,并关联所述节点以及所述邻居节点,包括:
步骤S510、遍历该节点的邻居节点,确定邻居节点对应的哈希表序号,将该节点添加至所述邻居节点对应的哈希表中。
具体地,若Nhash的值大于1,则遍历节点(该节点对应的哈希表序号为C)的同层邻居节点,并计算邻居节点所属的哈希表序号,同层邻居节点所属的不同的哈希表序号为C0,C1,…,Ci,且这些编号均与C不同。将当前所述节点放入HC0,HC1,…,HCi中,使用该方法的流程图见图2。
举例说明,设当前所述节点应放入的哈希表为H0,其仅有一个邻居节点,该邻居节点所属的哈希表序号为1。当前所述节点将被放入H0与H1哈希表中。
步骤S520、遍历所述节点的邻居节点,将所述邻居节点添加至所述节点对应的哈希表中。
具体地,若Nhash的值大于1,则遍历当前所述节点(该节点对应的哈希表序号为C)的同层邻居节点。将邻居节点放入当前所述节点对应的哈希表HC中。
举例说明,设当前节点应放入哈希表HC中,在查询当前节点的邻居节点时,仅在该节点对应的哈希表HC中查询即可。
步骤S530、遍历所述节点的邻居节点,确定邻居节点对应的哈希表序号,并保存所述邻居节点位置与哈希表序号的对应关系。
具体地,若Nhash的值大于1,则遍历节点(该节点对应的哈希表序号为C)的同层邻居节点,并计算邻居节点所对应的哈希表序号,同层邻居节点所属的哈希表序号为C0,C1,…,Ci。将邻居节点与其所对应的哈希表序号保存。
举例说明,设当前所述节点应放入的哈希表为H0,其仅有一个邻居节点,该节点所属的哈希表序号为1,将该邻居节点所属的哈希表编号记录。在查询当前所述节点的邻居时,从记录中得知,需在H1中查询。
为了验证本发明的效果,将本发明的点云动态哈希划分方法与测试平台PCEM的基准结果的性能进行对比。对于几何位置,在有限有损几何条件下,本发明不会导致质量上的损失。对于编码速度,编码小尺度模型时,该算法的性能与基准相当,编码大尺度模型时,该算法比基准节省了约2%的几何编码时间。
本发明还提供了一种点云动态哈希划分设备的较佳实施例:
如图3所示,本发明实施例的点云动态哈希划分设备,包括存储器20和处理器10,所述存储器20存储有计算机程序,所述处理器10执行所述计算机程序时实现上述任一实施例所述的点云动态哈希划分方法的步骤。具体如上所述。
本发明还提供了一种存储介质的较佳实施例:
本发明实施例的存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的点云动态哈希划分方法的步骤。具体如上所述。
综上所述,本发明所提供的一种点云动态哈希划分方法及设备,点云动态哈希划分方法包括步骤:根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数;根据所述总划分次数确定所述当前节点层对应的哈希表数量;根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数;根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,并将所述节点添加至所述节点对应的哈希表中。由于在节点层上配置若干个哈希表,并根据节点上点云的位置数据确定节点对应的哈希表,并将节点添加至该节点对应的哈希表中,不同哈希表中的节点不会出现哈希冲突。从而在不损失性能的情况下,优化了哈希表的存取性能,提高了哈希表插入与查询的效率。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种点云动态哈希划分方法,所述点云的位置数据是基于树结构存储的,其特征在于,包括步骤:
根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数;
根据所述总划分次数确定所述当前节点层对应的哈希表数量;
根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数;
根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,并将所述节点添加至所述节点对应的哈希表中。
2.根据权利要求1所述的点云动态哈希划分方法,其特征在于,所述根据所述树结构的当前节点层的占用节点总数和划分后单哈希表内平均节点数阈值,确定所述当前节点层对应的总划分次数,具体包括:
对于基于分布的划分方法,所述总划分次数为:
Figure FDA0002556586040000011
或者
对于基于平均的划分方法,所述总划分次数为:
Figure FDA0002556586040000012
其中,E表示总划分次数,Nj表示当前第j个节点层的占用节点总数,T表示划分后单哈希表内平均节点数阈值,
Figure FDA0002556586040000013
表示向下取整函数,K为大于1的正整数。
3.根据权利要求1所述的点云动态哈希划分方法,其特征在于,所述根据所述总划分次数确定所述当前节点层对应的哈希表数量,具体为:
Nhash=2E
其中,E表示总划分次数,Nhash表示当前节点层对应的哈希表数量。
4.根据权利要求1所述的点云动态哈希划分方法,其特征在于,所述根据所述总划分次数和所述当前节点层的占用节点位置数据,确定每个坐标分量的划分次数,包括步骤:
对于基于平均的划分方法:
将所述总划分次数平均分配给每个坐标分量,得到每个坐标分量的划分次数;
或者,对于基于分布的划分方法:
根据所述当前节点层的占用节点位置数据,得到每个坐标分量的分布范围;
根据所述每个坐标分量的分布范围按从大到小的顺序排列,得到每个坐标分量的顺位顺序;
根据所述总划分次数和所述每个坐标分量的顺位顺序,确定每个坐标分量的划分次数。
5.根据权利要求4所述的点云动态哈希划分方法,其特征在于,所述根据所述总划分次数和所述每个坐标分量的顺位顺序,确定每个坐标分量的划分次数,包括步骤:
若所述树结构为八叉树,则各坐标分量的划分次数分别为:
Figure FDA0002556586040000021
Figure FDA0002556586040000022
Figure FDA0002556586040000023
若所述树结构为四叉树,则各坐标分量的划分次数为:
Figure FDA0002556586040000031
Figure FDA0002556586040000032
若所述树结构为二叉树,则各坐标分量的划分次数为:
Ex=E;
其中,E是总划分次数,Px、Py、Pz分别是x坐标分量的顺位顺序、y坐标分量的顺位顺序、z坐标分量的顺位顺序,cmp(·)是比较函数,
Figure FDA0002556586040000033
Ex、Ey、Ez分别是x坐标分量的划分次数、y坐标分量的划分次数、z坐标分量的划分次数;a,b均为中间变量,mod表示求余函数。
6.根据权利要求1所述的点云动态哈希划分方法,其特征在于,所述根据所述当前节点层对应的哈希表数量、所述坐标分量的划分次数和所述当前节点层的占用节点位置数据确定节点对应的哈希表序号,具体包括:
若所述树结构为八叉树,所述节点对应的哈希表序号为:
Figure FDA0002556586040000034
若所述树结构为四叉树,所述节点对应的哈希表序号为:
Figure FDA0002556586040000035
若所述树结构为二叉树,所述节点对应的哈希表序号为:
Figure FDA0002556586040000036
其中,C表示哈希表序号,LA,LB,LC是X,Y,Z三个坐标轴的某一排列,Ea,Eb,Ec分别表示与LA,LB,LC相对应的划分次数,
Figure FDA0002556586040000037
Figure FDA0002556586040000038
分别表示第k个节点在LA坐标轴(N-Ea)个比特位的值、在LB坐标轴(N-Eb)个比特位的值、在LC坐标轴(N-Ec)个比特位的值,N表示坐标值的比特位数。
7.根据权利要求1所述的点云动态哈希划分方法,其特征在于,所述的点云动态哈希划分方法还包括:
遍历所述节点的邻居节点,确定所述邻居节点对应的哈希表序号,将所述节点添加至所述邻居节点对应的哈希表中;或者
遍历所述节点的邻居节点,将所述邻居节点添加至所述节点对应的哈希表中;或者
遍历所述节点的邻居节点,确定所述邻居节点对应的哈希表序号,并保存所述邻居节点位置与哈希表序号的对应关系。
8.根据权利要求1-7任意一项所述的点云动态哈希划分方法,其特征在于,所述树结构包括:二叉树、四叉树或八叉树的一种或多种。
9.一种点云动态哈希划分设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的点云动态哈希划分方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的点云动态哈希划分方法的步骤。
CN202010593384.8A 2020-06-27 2020-06-27 一种点云动态哈希划分方法及设备 Pending CN113849495A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010593384.8A CN113849495A (zh) 2020-06-27 2020-06-27 一种点云动态哈希划分方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010593384.8A CN113849495A (zh) 2020-06-27 2020-06-27 一种点云动态哈希划分方法及设备

Publications (1)

Publication Number Publication Date
CN113849495A true CN113849495A (zh) 2021-12-28

Family

ID=78972324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010593384.8A Pending CN113849495A (zh) 2020-06-27 2020-06-27 一种点云动态哈希划分方法及设备

Country Status (1)

Country Link
CN (1) CN113849495A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710451A (zh) * 2022-04-08 2022-07-05 中山大学 基于扩展哈希和knn的区块链应用流量识别方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710451A (zh) * 2022-04-08 2022-07-05 中山大学 基于扩展哈希和knn的区块链应用流量识别方法及系统
CN114710451B (zh) * 2022-04-08 2023-06-23 中山大学 基于扩展哈希和knn的区块链应用流量识别方法及系统

Similar Documents

Publication Publication Date Title
CN109345619B (zh) 基于类八叉树编码的海量点云空间管理方法
CN106846425B (zh) 一种基于八叉树的散乱点云压缩方法
CN106407408B (zh) 一种海量点云数据的空间索引构建方法及装置
CN102682103B (zh) 一种面向海量激光雷达点云模型的三维空间索引方法
CN114008997B (zh) 基于八叉树的点云编码中的平面模式的上下文确定
JP7461389B2 (ja) オクツリーベースの点群コーディングにおける平面モード
JP4372477B2 (ja) 2分木を巡回する方法およびシステム
CN101976468B (zh) 一种多分辨率动态地形可视化方法及系统
CN102289466A (zh) 一种基于区域覆盖的k近邻查询方法
CN114529633B (zh) 一种支持gis线对象和面对象连续lod绘制的方法
KR20090091617A (ko) 이웃 포인트의 탐색이 용이한 3d 영상 처리 방법
CN111090712A (zh) 一种数据处理方法、装置、设备及计算机存储介质
CN108446357A (zh) 一种基于二维地理位置的海量数据空间范围查询方法
CN116860905B (zh) 一种城市信息模型的空间单元编码生成方法
CN112035586A (zh) 基于可扩展学习索引的空间范围查询方法
CN113868476A (zh) 一种基于局部密度的八叉树点云预处理方法
CN114930395A (zh) 基于八叉树的点云编解码中的平面的模式的上下文确定
CN112102467A (zh) 一种基于gpu的并行八叉树生成、装置及电子设备
CN113094463A (zh) 一种非结构化点云存储方法、装置、设备及介质
CN110097581B (zh) 基于点云配准icp算法构建k-d树的方法
KR102441902B1 (ko) 시계열 3차원 시각화 데이터 생성 방법 및 장치
CN113849495A (zh) 一种点云动态哈希划分方法及设备
CN112132951B (zh) 一种基于视觉的网格语义地图的构建方法
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
CN113076334A (zh) 数据查询方法、索引生成方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination