CN103440350A - 一种基于八叉树的三维数据检索方法及装置 - Google Patents

一种基于八叉树的三维数据检索方法及装置 Download PDF

Info

Publication number
CN103440350A
CN103440350A CN2013104322029A CN201310432202A CN103440350A CN 103440350 A CN103440350 A CN 103440350A CN 2013104322029 A CN2013104322029 A CN 2013104322029A CN 201310432202 A CN201310432202 A CN 201310432202A CN 103440350 A CN103440350 A CN 103440350A
Authority
CN
China
Prior art keywords
data
octree
data block
file
node
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.)
Granted
Application number
CN2013104322029A
Other languages
English (en)
Other versions
CN103440350B (zh
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.)
Jilin University
Original Assignee
Jilin University
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 Jilin University filed Critical Jilin University
Priority to CN201310432202.9A priority Critical patent/CN103440350B/zh
Publication of CN103440350A publication Critical patent/CN103440350A/zh
Application granted granted Critical
Publication of CN103440350B publication Critical patent/CN103440350B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请提供了一种基于八叉树的三维数据检索方法及装置,其中一种基于八叉树的三维数据检索方法,包括:获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置;在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识;接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识;从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。

Description

一种基于八叉树的三维数据检索方法及装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种基于八叉树的三维数据检索方法及装置。
背景技术
随着硬件技术的进步,在地球深部探测等领域中三维数据产生量级的快速增长。虽然用于处理数据的计算机的性能在不断提高,但三维数据的爆炸式增长仍然超越了计算机内存的发展速度。因此对于三维地震数据建立合理的存储格式非常重要。
SEG-Y格式是由SEG(Society of Exploration Geophysicists)提出的标准磁带格式之一,该SEG-Y格式的结构参见图1所示。由于其在数据采集时存储方便,且整体存储结构简单,是目前地球深部探测行业曾使用的用来存储三维数据的格式。但是当数据量较大时,采用SEG-Y格式存储数据不利于数据的随机读取和快速访问。为此本申请提出了一种基于八叉树结构的三维数据检索方法和装置。
发明内容
本申请所要解决的技术问题是提供一种基于八叉树的三维数据检索方法和装置,用于对现有基于八叉树存储三维数据的进行数据检索。技术方案如下:
本申请实施例提供一种基于八叉树的三维数据检索方法,包括:
获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
优选地,获取三维数据文件的八叉树文件,包括:
将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为P为所述三维数据的三个体素数中的最大体素数;
对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
将所述三维数据文件转换为八叉树文件。
优选地,将三维数据置于一八叉树中之后,在对八叉树中的每个节点进行节点编码,得到每个节点的标识之前,所述方法还包括:删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点。
优选地,所述对八叉树中的每个节点进行节点编码,得到每个节点的标识包括:
对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
优选地,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置包括:
依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;
依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块。
优选地,所述方法还包括:
采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
本申请实施例还提供一种基于八叉树的三维数据检索装置,包括:
获取单元,用于获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
生成单元,用于在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
接收单元,用于接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
查找单元,用于从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
优选地,所述获取单元包括:
构建子单元,用于将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为
Figure BDA00003852445200031
P为所述三维数据的三个体素数中的最大体素数;
编码子单元,用于对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
记录子单元,用于将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
转换子单元,用于将所述三维数据文件转换为八叉树文件。
优选地,所述获取单元还包括:删除子单元,用于删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点;
所述编码子单元,具体用于对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
优选地,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
所述查找单元,具体用于依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;以及依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块;
所述装置还包括:采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
与现有技术相比,本申请包括以下优点:
本申请实施例提供的基于八叉树的三维数据检索方法,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有SEG-Y格式的结构示意图;
图2是本申请提供的基于八叉树的三维数据检索方法的一种流程图;
图3是本申请提供的八叉树的示意图;
图4是本申请提供的八叉树文件的示意图;
图5是本申请提供的基于八叉树的三维数据检索方法的一种子流程图;
图6是本申请提供的基于八叉树的三维数据检索装置的一种结构示意图;
图7是本申请提供的基于八叉树的三维数据检索装置的一种子结构示意图;
图8是本申请提供的基于八叉树的三维数据检索装置的另一种子结构示意图。
具体实施方式
首先对本申请实施例提供的基于八叉树的三维数据检索方法进行简单说明,可以包括:
获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置。
在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。
接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识。
从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。
从上述方案可以看出,本申请实施例提供的基于八叉树的三维数据检索方法,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图2,其示出了本申请实施例提供的一种基于八叉树的三维数据检索方法的流程图,可以包括以下步骤:
步骤101:获取三维数据文件的八叉树文件。
可以理解的是:八叉树对三维形体的表示及应用是在上世纪80年代后展开,其可以看成二维图像处理中使用的图像金子塔的四叉树结构在三维空间中的推广。八叉树结构对三维形体的划分可以用下面的方法递归定义:
一个三维形体被一个正方体“完全占据”的定义:三维形体中有给定大小的体素或体积包含于正方体中;一个三维形体在一个正方体中“完全空白”的定义:三维形体中没有任何体素或体积包含于正方体中;
用一个足够大的正方体将一个三维形体v包含,每次将正方体八等分得到正方体的子体。如果正方体或者正方体的子体被其所划分的三维形体v的子体“完全占据”或“完全空白”,则停止划分;否则将正方体的子体继续八等分。正方体的子体作为八叉树的节点构成八叉树。
如三维数据是一个体素数为2001×201×221的体数据时,将其置于八叉树中的过程如下:首先定义八叉树节点为64×64×64的体素块;
然后计算最长边的节点数:2001/64=31.3;由于24<2001/64<25,所以八叉树中的最后一层节点数量是:32×32×32,该最后一层所有节点包括体素数为2001×201×221的体数据的全部数据,结束划分,得到如图3所示的八叉树,该八叉树包括6层节点,每层的节点数为:13,23,43,83,163,323,且上一层节点的体数据通过对其下一层的八个子节点的体数据采样得到。在图3中采用箭头指示方式表示上下两层节点的对应关系,如第三层的第1至8个节点是第二层的第一个节点的子节点,则第二层的第一个节点的体数据是通过第三层的第1至8个节点的子数据采样得到。
在构建出三维数据的八叉树后,获得三维数据文件的八叉树文件,其中三维数据文件是包含三维数据的文件,八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,即一个节点的体数据为一个数据块,以图3所示为例,数据块是一个体素数为64×64×64的体素块,数据信息文件用于记录每个数据块在数据文件中的位置。
步骤102:在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。
在本申请实施例中,数据块索引表为每个数据块分配一标识,以将不同数据块加以区分,该标识可以是按照Morton码对八叉树中的节点进行节点编码后,得到的按照节点在八叉树中排序分配的一个自然数,且所有数据块的标识之间符合递增或者递减变化。
如图3所示八叉树的第一层的唯一一个节点被分配0,则该节点对应的数据块的标识也为0。八叉树的第二层的8个节点被依次分配1~8,则该8个节点对应的数据块的标识分别为1~8,依次类推,最后一层的323个节点被依次分配4681~37448,则该层节点对应的数据块的标识分别为4681~37448,符合递增变化。
步骤103:接收携带有数据块标识的三维数据检索请求。
其中三维数据检索请求用于指示对数据文件中的某一个数据块的具体位置进行检索,以为后续加载该数据块和进行三维可视化操作。数据块标识是当前要检索的数据块的标识。
步骤104:从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。
在进行查找之前,可以首先将数据信息文件加载到内存中。因为内存的读取速度优于其他设备,所以将数据信息文件加载到内存中可以加快查找速度。
数据文件和数据信息文件的格式请参阅图4所示,数据块按照其标识依次存储在数据文件中。数据信息文件包括数据块偏移索引表和数据块尺寸索引表,该数据块偏移索引表用于表示每个数据块在数据文件中的偏移量,偏移量以数据块与数据文件头之间的偏移量为基准,数据块尺寸索引表则用于表示每个数据块的长度。从中可以看出,第i个数据块的偏移量为第1个至第i-1个数据块的长度之和。数据信息文件中各个字节表示内容如下:
1~4字节:数据块尺寸(浮点型);5~8字节:源数据(三维数据)的数据类型(整型);9~12字节:八叉树层数(整型);13~24字节:源数据在横、纵方向及时间维上的尺寸(整型);25~28字节:源数据在去噪后的上界(浮点型);29~32字节:源数据在去噪后的下界(浮点型);33~36字节:标识数据是否经过压缩,如果经过压缩采用了何种压缩技术(整型)37~40字节:压缩级别(整型)41~48字节:索引表的长度(长整型);49~56字节:源文件头的长度(长整型);57~(56+索引表长度×8)字节:数据块偏移索引;(57+索引表长度×8)~(56+索引表长度×12)字节:数据块长度索引;(57+索引表长度×12)字节~文件尾:源文件头。
这里需要指出的是:当33~36字节值为0时表示没有采用数据压缩技术;值为1时认为采用了gzip技术,如果采用gzip技术压缩每个数据块,将可以选择的0~9个压缩级别选择为1时,将数据文件从591MB压缩至237MB;值为2时认为采用了openjpeg技术。当有采用其它压缩技术的需要时可以对本字段进行拓展。37~40字节记录采用的压缩级别。当49~56字节值为0时认为不保留源文件头。
在本申请实施例中,从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置具体过程可以是:依据数据块标识,在数据块偏移索引表中查找数据块标识对应的数据块与数据文件头之间的偏移量;依据数据块标识,在数据块尺寸索引表中查找数据块标识对应的数据块的长度,并在数据文件中查找到偏移量位置处具有所长度的数据块。
如三维数据检索请求中携带的是第三层的第一个节点对应的数据块的标识9,则需要在数据块索引表查找标识为9的数据块。首先获得该数据块的标识9,然后根据该标识在数据块偏移索引表和数据块尺寸索引表中检索该数据块在数据文件中的偏移和长度即可。
应用上述技术方案,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
在上述实施例中,获取三维数据文件的八叉树文件的过程可以参阅图5所述,可以包括:
步骤1011:将三维数据置于一八叉树中,八叉树是包含三维数据的所有数据的最小八叉树,且八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,八叉树的层数M为
Figure BDA00003852445200091
P为三维数据的三个体素数中的最大体素数。
仍以三维数据是一个体素数为2001×201×221的体数据,八叉树的节点是64×64×64的体素块为例,在该三维数据中,P为2001,N为64,则八叉树的层数M为
Figure BDA00003852445200092
步骤1012:对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中节点之间的标识符合递增变化或递减变化。
具体的,对八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
如图3所示八叉树的第一层的唯一一个节点被分配0,八叉树的第二层的8个节点被依次分配1~8,则该8个节点对应的数据块的标识分别为1~8,依次类推,最后一层的323个节点被依次分配4681~37448,符合递增变化。
步骤1013:将三维数据和八叉树中所有节点标识记录在三维数据文件中。
步骤1014:将三维数据文件转换为八叉树文件。转换后的八叉树文件格式如图4所示,本申请实施例不再加以阐述。需要说明的一点是:每个三维数据仅进行一次转换得到八叉树文件,后续对该三维数据的检索可以直接获得八叉树文件,无需再对三维数据文件进行转换。
从图3所示的八叉树可以看出,最后一层节点的体数据总量为2048×2048×2048,大于2001×201×221的体数据,因此八叉树中有部分节点为空节点,在对八叉树的每个节点进行节点编码时,可以首先删除空节点,降低编码时间。其中空节点是未包括有三维数据的节点,即节点对应的数据块内未包括三维数据。
在上述所有方法实施例中,本申请实施例提供的基于八叉树的三维数据检索方法还可以包括:采用直方图对三维数据进行去噪处理,以删除三维数据中的最大数据和最小数据。具体过程是:通过直方图对三维数据进行统计,得到三维数据中的最大数据和最小数据。由于最大数据和最小数据较其他数据来说分布分散,在进行地球深部探测过程以及三维可视化中可以忽略不计,所以在得到最大数据和最小数据后可以删除,降低后续加载的数据量。通过多次实验将直方图统计得出的占三维数据千分之一的较大数据和占三维数据千分之一的较小数据作为噪声可以获得较好的去噪效果。
与上述方法实施例相对应,本申请实施例还提供一种基于八叉树的三维数据检索装置,其结构示意图请参阅图6所示,包括:获取单元11、生成单元12、接收单元13和查找单元14。其中,
获取单元11,用于获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置。
生成单元12,用于在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。
在本申请实施例中,生成单元12得到的数据块索引表为每个数据块分配一标识,以将不同数据块加以区分,该标识可以是按照Morton码对八叉树中的节点进行节点编码后,得到的按照节点在八叉树中排序分配的一个自然数,且所有数据块的标识之间符合递增或者递减变化。
接收单元13,用于接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识。
其中三维数据检索请求用于指示对数据文件中的某一个数据块的具体位置进行检索,以为后续加载该数据块和进行三维可视化操作。数据块标识是当前要检索的数据块的标识。
查找单元14,用于从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。进行查找之前,可以首先将数据信息文件加载到内存中。因为内存的读取速度优于其他设备,所以将数据信息文件加载到内存中可以加快查找速度。
数据文件和数据信息文件的格式请参阅图4所示,数据块按照其标识依次存储在数据文件中。数据信息文件包括数据块偏移索引表和数据块尺寸索引表,该数据块偏移索引表用于表示每个数据块在数据文件中的偏移量,偏移量以数据块与数据文件头之间的偏移量为基准,数据块尺寸索引表则用于表示每个数据块的长度。从中可以看出,第i个数据块的偏移量为第1个至第i-1个数据块的长度之和。
在本申请实施例中,查找单元14具体用于依据数据块标识,在数据块偏移索引表中查找数据块标识对应的数据块与数据文件头之间的偏移量。以及依据数据块标识,在数据块尺寸索引表中查找数据块标识对应的数据块的长度,并在数据文件中查找到偏移量位置处具有所长度的数据块。
如三维数据检索请求中携带的是第三层的第一个节点对应的数据块的标识9,则需要在数据块索引表查找标识为9的数据块。首先获得该数据块的标识9,然后根据该标识在数据块偏移索引表和数据块尺寸索引表中检索该数据块在数据文件中的偏移和长度即可。
在本申请实施例中,获取单元11的结构示意图请参阅图7所示,可以包括:构建子单元111、编码子单元112、记录子单元113和转换子单元114。其中,
构建子单元111,用于将三维数据置于一八叉树中,八叉树是包含三维数据的所有数据的最小八叉树,且八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,八叉树的层数M为
Figure BDA00003852445200111
P为三维数据的三个体素数中的最大体素数。
仍以三维数据是一个体素数为2001×201×221的体数据,八叉树的节点是64×64×64的体素块为例,在该三维数据中,P为2001,N为64,则八叉树的层数M为
Figure BDA00003852445200121
编码子单元112,用于对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中节点之间的标识符合递增变化或递减变化。
具体的,编码子单元112对八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
如图3所示八叉树的第一层的唯一一个节点被分配0,八叉树的第二层的8个节点被依次分配1~8,则该8个节点对应的数据块的标识分别为1~8,依次类推,最后一层的323个节点被依次分配4681~37448,符合递增变化。
从图3所示的八叉树可以看出,最后一层节点的体数据总量为2048×2048×2048,大于2001×201×221的体数据,因此八叉树中有部分节点为空节点,相应的,本申请实施例提供的基于八叉树的三维数据检索装置中获取单元还包括删除子单元115,如图8所示,该删除子单元115用于删除八叉树中的空节点,其中空节点是未包括有三维数据的节点。
记录子单元113,用于将三维数据和八叉树中所有节点标识记录在三维数据文件中。
转换子单元114,用于将三维数据文件转换为八叉树文件。需要说明的是:每个三维数据仅进行一次转换得到八叉树文件,后续对该三维数据的检索可以直接从转换子单元114中获得八叉树文件,转换子单元114无需再对三维数据文件进行转换。
此外,本申请实施例提供的基于八叉树的三维数据检索装置还包括:采用直方图对三维数据进行去噪处理,以删除三维数据中的最大数据和最小数据。具体过程是:通过直方图对三维数据进行统计,得到三维数据中的最大数据和最小数据。由于最大数据和最小数据较其他数据来说分布分散,在进行地球深部探测过程以及三维可视化中可以忽略不计,所以在得到最大数据和最小数据后可以删除,降低后续加载的数据量。通过多次实验将直方图统计得出的占三维数据千分之一的较大数据和占三维数据千分之一的较小数据作为噪声可以获得较好的去噪效果。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种基于八叉树的三维数据检索方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种基于八叉树的三维数据检索方法,其特征在于,包括:
获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
2.根据权利要求1所述的方法,其特征在于,获取三维数据文件的八叉树文件,包括:
将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为
Figure FDA00003852445100011
P为所述三维数据的三个体素数中的最大体素数;
对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
将所述三维数据文件转换为八叉树文件。
3.根据权利要求2所述的方法,其特征在于,将三维数据置于一八叉树中之后,在对八叉树中的每个节点进行节点编码,得到每个节点的标识之前,所述方法还包括:删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点。
4.根据权利要求3所述的方法,其特征在于,所述对八叉树中的每个节点进行节点编码,得到每个节点的标识包括:
对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置包括:
依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;
依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
7.一种基于八叉树的三维数据检索装置,其特征在于,包括:
获取单元,用于获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
生成单元,用于在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
接收单元,用于接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
查找单元,用于从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
8.根据权利要求7所述的装置,其特征在于,所述获取单元包括:
构建子单元,用于将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为
Figure FDA00003852445100031
P为所述三维数据的三个体素数中的最大体素数;
编码子单元,用于对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
记录子单元,用于将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
转换子单元,用于将所述三维数据文件转换为八叉树文件。
9.根据权利要求8所述的装置,其特征在于,所述获取单元还包括:删除子单元,用于删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点;
所述编码子单元,具体用于对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
10.根据权利要求7至9任意一项所述的装置,其特征在于,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
所述查找单元,具体用于依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;以及依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块;
所述装置还包括:采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
CN201310432202.9A 2013-09-22 2013-09-22 一种基于八叉树的三维数据检索方法及装置 Expired - Fee Related CN103440350B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310432202.9A CN103440350B (zh) 2013-09-22 2013-09-22 一种基于八叉树的三维数据检索方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310432202.9A CN103440350B (zh) 2013-09-22 2013-09-22 一种基于八叉树的三维数据检索方法及装置

Publications (2)

Publication Number Publication Date
CN103440350A true CN103440350A (zh) 2013-12-11
CN103440350B CN103440350B (zh) 2016-10-05

Family

ID=49694043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310432202.9A Expired - Fee Related CN103440350B (zh) 2013-09-22 2013-09-22 一种基于八叉树的三维数据检索方法及装置

Country Status (1)

Country Link
CN (1) CN103440350B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104156242A (zh) * 2014-08-05 2014-11-19 吉林大学 一种缓存数据预加载、加载方法及装置
CN107251099A (zh) * 2015-01-30 2017-10-13 惠普发展公司,有限责任合伙企业 对n维物体的单元格进行索引
CN107507276A (zh) * 2016-06-14 2017-12-22 中国石油化工股份有限公司 用于任意方向的岩心切片显示的三维数字岩心存储方法
CN108268879A (zh) * 2016-12-30 2018-07-10 乐视汽车(北京)有限公司 三维全卷积网络实现方法、设备及电子设备
CN109313820A (zh) * 2016-06-14 2019-02-05 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、编码装置、解码装置
CN110297597A (zh) * 2018-03-23 2019-10-01 中国石油化工股份有限公司 地震数据的存储方法及读取方法
CN110320554A (zh) * 2018-03-30 2019-10-11 中国石油化工股份有限公司 一种地震数据切分速度和合并速度的优化方法
CN110334290A (zh) * 2019-06-28 2019-10-15 中南大学 一种基于MF-Octree的时空数据快速检索方法
CN110555043A (zh) * 2018-03-30 2019-12-10 中国石油化工股份有限公司 一种基于八叉树的地震数据多级缓存方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2339481A1 (en) * 2009-12-03 2011-06-29 National Digital Research Centre Enablement of three-dimensional hosting, indexing, analysing and querying structure for spatial systems
CN102306180A (zh) * 2011-08-29 2012-01-04 北京建筑工程学院 一种基于海量激光雷达栅格点云数据的建模方法
CN102395965A (zh) * 2009-04-17 2012-03-28 弗兰霍菲尔运输应用研究公司 用于在数据库中搜索对象的方法
CN102682103A (zh) * 2012-04-28 2012-09-19 北京建筑工程学院 一种面向海量激光雷达点云模型的三维空间索引方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102395965A (zh) * 2009-04-17 2012-03-28 弗兰霍菲尔运输应用研究公司 用于在数据库中搜索对象的方法
EP2339481A1 (en) * 2009-12-03 2011-06-29 National Digital Research Centre Enablement of three-dimensional hosting, indexing, analysing and querying structure for spatial systems
CN102306180A (zh) * 2011-08-29 2012-01-04 北京建筑工程学院 一种基于海量激光雷达栅格点云数据的建模方法
CN102682103A (zh) * 2012-04-28 2012-09-19 北京建筑工程学院 一种面向海量激光雷达点云模型的三维空间索引方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104156242B (zh) * 2014-08-05 2017-05-31 吉林大学 一种缓存数据预加载、加载方法及装置
CN104156242A (zh) * 2014-08-05 2014-11-19 吉林大学 一种缓存数据预加载、加载方法及装置
CN107251099A (zh) * 2015-01-30 2017-10-13 惠普发展公司,有限责任合伙企业 对n维物体的单元格进行索引
CN107507276B (zh) * 2016-06-14 2020-06-23 中国石油化工股份有限公司 用于任意方向的岩心切片显示的三维数字岩心存储方法
CN107507276A (zh) * 2016-06-14 2017-12-22 中国石油化工股份有限公司 用于任意方向的岩心切片显示的三维数字岩心存储方法
CN109313820A (zh) * 2016-06-14 2019-02-05 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、编码装置、解码装置
CN109313820B (zh) * 2016-06-14 2023-07-04 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、编码装置、解码装置
CN108268879A (zh) * 2016-12-30 2018-07-10 乐视汽车(北京)有限公司 三维全卷积网络实现方法、设备及电子设备
CN110297597A (zh) * 2018-03-23 2019-10-01 中国石油化工股份有限公司 地震数据的存储方法及读取方法
CN110297597B (zh) * 2018-03-23 2023-06-13 中国石油化工股份有限公司 地震数据的存储方法及读取方法
CN110555043A (zh) * 2018-03-30 2019-12-10 中国石油化工股份有限公司 一种基于八叉树的地震数据多级缓存方法
CN110320554A (zh) * 2018-03-30 2019-10-11 中国石油化工股份有限公司 一种地震数据切分速度和合并速度的优化方法
CN110334290A (zh) * 2019-06-28 2019-10-15 中南大学 一种基于MF-Octree的时空数据快速检索方法
CN110334290B (zh) * 2019-06-28 2021-12-03 中南大学 一种基于MF-Octree的时空数据快速检索方法

Also Published As

Publication number Publication date
CN103440350B (zh) 2016-10-05

Similar Documents

Publication Publication Date Title
CN103440350B (zh) 一种基于八叉树的三维数据检索方法及装置
Nießner et al. Real-time 3D reconstruction at scale using voxel hashing
US9245383B2 (en) Accelerated three-dimensional intersection testing using compressed volumes
CN110969691B (zh) 基于WebGL的摄影数据调度方法及系统
CN111291016A (zh) 一种海量遥感影像数据分层混合存储与索引方法
CN111125392B (zh) 一种基于矩阵对象存储机制的遥感影像存储、查询方法
CN100595758C (zh) 游戏地图的存储方法及系统、游戏地图的获取方法及系统
CN103106284B (zh) 用于三维数据球信息关联的剖分中间件和信息关联方法
CN103279487A (zh) 一种地图瓦片缓存的组织和管理方法
KR20200105630A (ko) 다차원 데이터를 저장 및 액세스하기 위한 방법들 및 장치들
CN103198150B (zh) 一种大数据索引方法及系统
CN109299202B (zh) 一种基于GeoSciML的地质空间数据共享方法
CN110928878A (zh) 基于hdfs的点云数据处理方法及装置
CN103476003B (zh) 针对移动设备的地理信息存储方法及移动设备
CN111367649A (zh) 高精地图数据并行处理方法和装置
JP4924850B2 (ja) コンピュータプログラム及び装置
CN111046005B (zh) 一种城市三维实景数据的网格化编码方法
CN111666508A (zh) 经纬度对应的详细地址提取方法及装置
Uznir et al. Improving 3D spatial queries search: Newfangled technique of space filling curves in 3D city modeling
CN114372034A (zh) 一种基于遥感影像地图服务的存取方法
CN111767264B (zh) 基于地质信息编码的分布式存储方法和数据读取方法
CN116091715A (zh) 一种基于三维gis引擎的poi点聚合方法
Ujang et al. 3d hilbert space filling curves in 3d city modeling for faster spatial queries
CN103514017B (zh) 一种三维数据加载方法及装置
CN113032405A (zh) 时空数据管理方法、系统、主机及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161005

Termination date: 20180922

CF01 Termination of patent right due to non-payment of annual fee