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

文档序号:6512469阅读:213来源:国知局
一种基于八叉树的三维数据检索方法及装置制造方法
【专利摘要】本申请提供了一种基于八叉树的三维数据检索方法及装置,其中一种基于八叉树的三维数据检索方法,包括:获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置;在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识;接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识;从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
【专利说明】—种基于八叉树的三维数据检索方法及装置
【技术领域】
[0001]本申请涉及数据处理【技术领域】,特别涉及一种基于八叉树的三维数据检索方法及
>J-U ρ?α装直。
【背景技术】
[0002]随着硬件技术的进步,在地球深部探测等领域中三维数据产生量级的快速增长。虽然用于处理数据的计算机的性能在不断提高,但三维数据的爆炸式增长仍然超越了计算机内存的发展速度。因此对于三维地震数据建立合理的存储格式非常重要。
[0003]SEG-Y 格式是由 SEG(Society of Exploration Geophysicists)提出的标准磁带格式之一,该SEG-Y格式的结构参见图1所示。由于其在数据采集时存储方便,且整体存储结构简单,是目前地球深部探测行业曾使用的用来存储三维数据的格式。但是当数据量较大时,采用SEG-Y格式存储数据不利于数据的随机读取和快速访问。为此本申请提出了一种基于八叉树结构的三维数据检索方法和装置。

【发明内容】

[0004]本申请所要解决的技术问题是提供一种基于八叉树的三维数据检索方法和装置,用于对现有基于八叉树存储三维数据的进行数据检索。技术方案如下:
[0005]本申请实施例提供一种基于八叉树的三维数据检索方法,包括:.[0006]获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
[0007]在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
[0008]接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
[0009]从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
[0010]优选地,获取三维数据文件的八叉树文件,包括:
[0011]将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八
叉树的层数M为[log2(P/iV)l + l, P为所述三维数据的三个体素数中的最大体素数;
[0012]对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
[0013]将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
[0014]将所述三维数据文件转换为八叉树文件。
[0015]优选地,将三维数据置于一八叉树中之后,在对八叉树中的每个节点进行节点编码,得到每个节点的标识之前,所述方法还包括:删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点。
[0016]优选地,所述对八叉树中的每个节点进行节点编码,得到每个节点的标识包括:
[0017]对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
[0018]优选地,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
[0019]从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置包括:
[0020]依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;
[0021]依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块。
[0022]优选地,所述方法还包括:
[0023]采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
[0024]本申请实施例还提供一种基于八叉树的三维数据检索装置,包括:
[0025]获取单元,用于获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置;
[0026]生成单元,用于在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识;
[0027]接收单元,用于接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识;
[0028]查找单元,用于从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
[0029]优选地,所述获取单元包括:
[0030]构建子单元,用于将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方
体数据块,所述八叉树的层数M为「log P/iVD + l,P为所述三维数据的三个体素数中的
最大体素数;
[0031]编码子单元,用于对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化;
[0032]记录子单元,用于将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中;
[0033]转换子单元,用于将所述三维数据文件转换为八叉树文件。
[0034]优选地,所述获取单元还包括:删除子单元,用于删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点;
[0035]所述编码子单元,具体用于对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行 映射。
[0036]优选地,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表;
[0037]所述查找单元,具体用于依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;以及依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块;
[0038]所述装置还包括:采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
[0039]与现有技术相比,本申请包括以下优点:
[0040]本申请实施例提供的基于八叉树的三维数据检索方法,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
【专利附图】

【附图说明】
[0041]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0042]图1是现有SEG-Y格式的结构示意图;
[0043]图2是本申请提供的基于八叉树的三维数据检索方法的一种流程图;
[0044]图3是本申请提供的八叉树的示意图;
[0045]图4是本申请提供的八叉树文件的示意图;
[0046]图5是本申请提供的基于八叉树的三维数据检索方法的一种子流程图;
[0047]图6是本申请提供的基于八叉树的三维数据检索装置的一种结构示意图;
[0048]图7是本申请提供的基于八叉树的三维数据检索装置的一种子结构示意图;
[0049]图8是本申请提供的基于八叉树的三维数据检索装置的另一种子结构示意图。
【具体实施方式】
[0050]首先对本申请实施例提供的基于八叉树的三维数据检索方法进行简单说明,可以包括:
[0051]获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置。
[0052]在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。
[0053]接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识。[0054]从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。
[0055]从上述方案可以看出,本申请实施例提供的基于八叉树的三维数据检索方法,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
[0056]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0057]请参阅图2,其示出了本申请实施例提供的一种基于八叉树的三维数据检索方法的流程图,可以包括以下步骤:
[0058]步骤101:获取三维数据文件的八叉树文件。
[0059]可以理解的是:八叉树对三维形体的表示及应用是在上世纪80年代后展开,其可以看成二维图像处理中使用的图像金子塔的四叉树结构在三维空间中的推广。八叉树结构对三维形体的划分可以用下面的方法递归定义:
[0060]—个三维形体被一个正方体“完全占据”的定义:三维形体中有给定大小的体素或体积包含于正方体中;一个三维形体在一个正方体中“完全空白”的定义:三维形体中没有任何体素或体积包含于正方体中;
[0061]用一个足够大的正方体将一个三维形体V包含,每次将正方体八等分得到正方体的子体。如果正方体或者正方体的子体被其所划分的三维形体V的子体“完全占据”或“完全空白”,则停止划分;否则将正方体的子体继续八等分。正方体的子体作为八叉树的节点构成八叉树。
[0062]如三维数据是一个体素数为2001X201X221的体数据时,将其置于八叉树中的过程如下:首先定义八叉树节点为64X64X64的体素块;
[0063]然后计算最长边的节点数:2001/64=31.3 ;由于24〈2001/64〈25,所以八叉树中的最后一层节点数量是=32X32X32,该最后一层所有节点包括体素数为2001X201X221的体数据的全部数据,结束划分,得到如图3所示的八叉树,该八叉树包括6层节点,每层的节点数为:13,23,43,83,163,323,且上一层节点的体数据通过对其下一层的八个子节点的体数据采样得到。在图3中采用箭头指示方式表示上下两层节点的对应关系,如第三层的第I至8个节点是第二层的第一个节点的子节点,则第二层的第一个节点的体数据是通过第三层的第I至8个节点的子数据采样得到。
[0064]在构建出三维数据的八叉树后,获得三维数据文件的八叉树文件,其中三维数据文件是包含三维数据的文件,八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,即一个节点的体数据为一个数据块,以图3所示为例,数据块是一个体素数为64X64X64的体素块,数据信息文件用于记录每个数据块在数据文件中的位置。
[0065]步骤102:在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。[0066]在本申请实施例中,数据块索引表为每个数据块分配一标识,以将不同数据块加以区分,该标识可以是按照Morton码对八叉树中的节点进行节点编码后,得到的按照节点在八叉树中排序分配的一个自然数,且所有数据块的标识之间符合递增或者递减变化。
[0067]如图3所示八叉树的第一层的唯一一个节点被分配0,则该节点对应的数据块的标识也为O。八叉树的第二层的8个节点被依次分配I?8,则该8个节点对应的数据块的标识分别为I?8,依次类推,最后一层的323个节点被依次分配4681?37448,则该层节点对应的数据块的标识分别为4681?37448,符合递增变化。
[0068]步骤103:接收携带有数据块标识的三维数据检索请求。
[0069]其中三维数据检索请求用于指示对数据文件中的某一个数据块的具体位置进行检索,以为后续加载该数据块和进行三维可视化操作。数据块标识是当前要检索的数据块的标识。
[0070]步骤104:从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。
[0071]在进行查找之前,可以首先将数据信息文件加载到内存中。因为内存的读取速度优于其他设备,所以将数据信息文件加载到内存中可以加快查找速度。
[0072]数据文件和数据信息文件的格式请参阅图4所示,数据块按照其标识依次存储在数据文件中。数据信息文件包括数据块偏移索引表和数据块尺寸索引表,该数据块偏移索引表用于表示每个数据块在数据文件中的偏移量,偏移量以数据块与数据文件头之间的偏移量为基准,数据块尺寸索引表则用于表示每个数据块的长度。从中可以看出,第i个数据块的偏移量为第I个至第i_l个数据块的长度之和。数据信息文件中各个字节表示内容如下:
[0073]I?4字节:数据块尺寸(浮点型);5?8字节:源数据(三维数据)的数据类型(整型);9?12字节:八叉树层数(整型);13?24字节:源数据在横、纵方向及时间维上的尺寸(整型);25?28字节:源数据在去噪后的上界(浮点型);29?32字节:源数据在去噪后的下界(浮点型);33?36字节:标识数据是否经过压缩,如果经过压缩采用了何种压缩技术(整型)37?40字节:压缩级别(整型)41?48字节:索引表的长度(长整型);49?56字节:源文件头的长度(长整型);57?(56+索引表长度X8)字节:数据块偏移索引;(57+索引表长度X8)?(56+索引表长度X 12)字节:数据块长度索引;(57+索引表长度X 12)字节?文件尾:源文件头。
[0074]这里需要指出的是:当33?36字节值为O时表示没有采用数据压缩技术;值为I时认为采用了 gzip技术,如果采用gzip技术压缩每个数据块,将可以选择的O?9个压缩级别选择为I时,将数据文件从591MB压缩至237MB ;值为2时认为采用了 openjpeg技术。当有采用其它压缩技术的需要时可以对本字段进行拓展。37?40字节记录采用的压缩级另IJ。当49?56字节值为O时认为不保留源文件头。
[0075]在本申请实施例中,从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置具体过程可以是:依据数据块标识,在数据块偏移索引表中查找数据块标识对应的数据块与数据文件头之间的偏移量;依据数据块标识,在数据块尺寸索引表中查找数据块标识对应的数据块的长度,并在数据文件中查找到偏移量位置处具有所长度的数据块。
[0076]如三维数据检索请求中携带的是第三层的第一个节点对应的数据块的标识9,则需要在数据块索引表查找标识为9的数据块。首先获得该数据块的标识9,然后根据该标识在数据块偏移索引表和数据块尺寸索引表中检索该数据块在数据文件中的偏移和长度即可。
[0077]应用上述技术方案,在获取到三维数据文件的八叉树文件,在内存中生成八叉树文件所包括的数据文件的数据块索引表,以为每个数据看分配一标识。当接收到携带有数据块标识的三维数据检索请求,则可以直接从八叉树文件所包括的数据信息文件中查找该数据块标识对应的数据块在数据文件中的位置,从而实现了对基于八叉树存储的三维数据的数据检索。
[0078]在上述实施例中,获取三维数据文件的八叉树文件的过程可以参阅图5所述,可以包括:
[0079]步骤1011:将三维数据置于一八叉树中,八叉树是包含三维数据的所有数据的最小八叉树,且八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,八叉树的
层数M为PlOg2(ZViV)I +1,P为三维数据的三个体素数中的最大体素数。
[0080]仍以三维数据是一个体素数为2001X201X221的体数据,八叉树的节点是64X64X64的体素块为例,在该三维数据中,P为2001,N为64,则八叉树的层数M为
[0081]步骤1012:对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中节点之间的标识符合递增变化或递减变化。
[0082]具体的,对八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
[0083]如图3所示八叉树的第一层的唯一一个节点被分配0,八叉树的第二层的8个节点被依次分配I?8,则该8个节点对应的数据块的标识分别为I?8,依次类推,最后一层的323个节点被依次分配4681?37448,符合递增变化。
[0084]步骤1013:将三维数据和八叉树中所有节点标识记录在三维数据文件中。
[0085]步骤1014:将三维数据文件转换为八叉树文件。转换后的八叉树文件格式如图4所示,本申请实施例不再加以阐述。需要说明的一点是:每个三维数据仅进行一次转换得到八叉树文件,后续对该三维数据的检索可以直接获得八叉树文件,无需再对三维数据文件进行转换。
[0086]从图3所示的八叉树可以看出,最后一层节点的体数据总量为2048X2048X2048,大于2001X201X221的体数据,因此八叉树中有部分节点为空节点,在对八叉树的每个节点进行节点编码时,可以首先删除空节点,降低编码时间。其中空节点是未包括有三维数据的节点,即节点对应的数据块内未包括三维数据。
[0087]在上述所有方法实施例中,本申请实施例提供的基于八叉树的三维数据检索方法还可以包括:采用直方图对三维数据进行去噪处理,以删除三维数据中的最大数据和最小数据。具体过程是:通过直方图对三维数据进行统计,得到三维数据中的最大数据和最小数据。由于最大数据和最小数据较其他数据来说分布分散,在进行地球深部探测过程以及三维可视化中可以忽略不计,所以在得到最大数据和最小数据后可以删除,降低后续加载的数据量。通过多次实验将直方图统计得出的占三维数据千分之一的较大数据和占三维数据千分之一的较小数据作为噪声可以获得较好的去噪效果。
[0088]与上述方法实施例相对应,本申请实施例还提供一种基于八叉树的三维数据检索装置,其结构示意图请参阅图6所示,包括:获取单元11、生成单元12、接收单元13和查找单元14。其中,
[0089]获取单元11,用于获取三维数据文件的八叉树文件,其中八叉树文件包括一数据信息文件和一数据文件,数据文件用于存数三维数据的所有数据块,每个数据块对应八叉树中的一个节点,数据信息文件用于记录每个数据块在数据文件中的位置。
[0090]生成单元12,用于在内存中生成数据文件的数据块索引表,数据块索引表为每个数据块分配一标识。
[0091]在本申请实施例中,生成单元12得到的数据块索引表为每个数据块分配一标识,以将不同数据块加以区分,该标识可以是按照Morton码对八叉树中的节点进行节点编码后,得到的按照节点在八叉树中排序分配的一个自然数,且所有数据块的标识之间符合递增或者递减变化。
[0092]接收单元13,用于接收携带有数据块标识的三维数据检索请求,数据块标识是当前要检索的数据块的标识。
[0093]其中三维数据检索请求用于指示对数据文件中的某一个数据块的具体位置进行检索,以为后续加载该数据块和进行三维可视化操作。数据块标识是当前要检索的数据块的标识。
[0094]查找单元14,用于从数据信息文件中查找数据块标识对应的数据块在数据文件中的位置。进行查找之前,可以首先将数据信息文件加载到内存中。因为内存的读取速度优于其他设备,所以将数据信息文件加载到内存中可以加快查找速度。
[0095]数据文件和数据信息文件的格式请参阅图4所示,数据块按照其标识依次存储在数据文件中。数据信息文件包括数据块偏移索引表和数据块尺寸索引表,该数据块偏移索引表用于表示每个数据块在数据文件中的偏移量,偏移量以数据块与数据文件头之间的偏移量为基准,数据块尺寸索引表则用于表示每个数据块的长度。从中可以看出,第i个数据块的偏移量为第I个至第1-ι个数据块的长度之和。
[0096]在本申请实施例中,查找单元14具体用于依据数据块标识,在数据块偏移索引表中查找数据块标识对应的数据块与数据文件头之间的偏移量。以及依据数据块标识,在数据块尺寸索引表中查找数据块标识对应的数据块的长度,并在数据文件中查找到偏移量位置处具有所长度的数据块。
[0097]如三维数据检索请求中携带的是第三层的第一个节点对应的数据块的标识9,则需要在数据块索引表查找标识为9的数据块。首先获得该数据块的标识9,然后根据该标识在数据块偏移索引表和数据块尺寸索引表中检索该数据块在数据文件中的偏移和长度即可。
[0098]在本申请实施例中,获取单元11的结构示意图请参阅图7所示,可以包括:构建子单元111、编码子单元112、记录子单元113和转换子单元114。其中,
[0099]构建子单元111,用于将三维数据置于一八叉树中,八叉树是包含三维数据的所有数据的最小八叉树,且八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,八叉树的层数M为
【权利要求】
1.一种基于八叉树的三维数据检索方法,其特征在于,包括: 获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置; 在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识; 接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识; 从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
2.根据权利要求1所述的方法,其特征在于,获取三维数据文件的八叉树文件,包括: 将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为Plog2(RZY)I +1,P为所述三维数据的三个体素数中的最大体素数; 对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化; 将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中; 将所述三维数据文件转换为八叉树文件。
3.根据权利要求2所述的 方法,其特征在于,将三维数据置于一八叉树中之后,在对八叉树中的每个节点进行节点编码,得到每个节点的标识之前,所述方法还包括:删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点。
4.根据权利要求3所述的方法,其特征在于,所述对八叉树中的每个节点进行节点编码,得到每个节点的标识包括: 对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表; 从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置包括: 依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量; 依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
7.一种基于八叉树的三维数据检索装置,其特征在于,包括: 获取单元,用于获取三维数据文件的八叉树文件,其中所述八叉树文件包括一数据信息文件和一数据文件,所述数据文件用于存数所述三维数据的所有数据块,每个所述数据块对应所述八叉树中的一个节点,所述数据信息文件用于记录每个所述数据块在数据文件中的位置; 生成单元,用于在内存中生成所述数据文件的数据块索引表,所述数据块索引表为每个所述数据块分配一标识; 接收单元,用于接收携带有数据块标识的三维数据检索请求,所述数据块标识是当前要检索的数据块的标识; 查找单元,用于从所述数据信息文件中查找所述数据块标识对应的数据块在数据文件中的位置。
8.根据权利要求7所述的装置,其特征在于,所述获取单元包括: 构建子单元,用于将三维数据置于一八叉树中,所述八叉树是包含所述三维数据的所有数据的最小八叉树,且所述八叉树的每个节点是三个体素数N为预设体素数的正方体数据块,所述八叉树的层数M为pog2(//,V;)l+l,P为所述三维数据的三个体素数中的最大体素数; 编码子单元,用于对八叉树中的每个节点进行节点编码,得到每个节点的标识,其中所述节点之间的标识符合递增变化或递减变化; 记录子单元,用于将所述三维数据和所述八叉树中所有节点标识记录在三维数据文件中; 转换子单元,用于 将所述三维数据文件转换为八叉树文件。
9.根据权利要求8所述的装置,其特征在于,所述获取单元还包括:删除子单元,用于删除八叉树中的空节点,其中所述空节点是未包括有三维数据的节点; 所述编码子单元,具体用于对所述八叉树中的每个节点进行基于Morton码的节点编码,以按照节点在所述八叉树中的排序,将所有节点标识按照从零起始的自然数序列进行一一映射。
10.根据权利要求7至9任意一项所述的装置,其特征在于,所述数据信息文件包括数据块偏移索引表和数据块尺寸索引表; 所述查找单元,具体用于依据所述数据块标识,在所述数据块偏移索引表中查找所述数据块标识对应的数据块与所述数据文件头之间的偏移量;以及依据所述数据块标识,在所述数据块尺寸索引表中查找所述数据块标识对应的数据块的长度,并在所述数据文件中查找到偏移量位置处具有所长度的数据块; 所述装置还包括:采用直方图对所述三维数据进行去噪处理,以删除所述三维数据中的最大数据和最小数据。
【文档编号】G06F17/30GK103440350SQ201310432202
【公开日】2013年12月11日 申请日期:2013年9月22日 优先权日:2013年9月22日
【发明者】魏晓辉, 白鑫, 李洪亮, 胡亮, 黄大年 申请人:吉林大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1