一种海量点云数据的空间索引构建方法及装置
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种海量点云数据的空间索引构建方法及装置。
背景技术
激光雷达扫描技术是一种新兴的三维数据获取技术,利用搭载在三脚架、汽车、飞机及卫星等不同平台上的激光雷达扫描仪能够快速获取海量点云数据。点云数据中包含了每个点的经纬度坐标、强度、多次回波及颜色等丰富的信息,在测绘、林业、农业及数字城市等领域均有相关应用。目前常用的激光雷达扫描仪设备,如Riegl、Faro及Leica等,每秒均能产生成千上万个点,每次扫描获取的数据点数能达到数十万或数百万,数据量达几十至几百G。如此庞大的数据量给数据的存储和处理均带来了负担。
如何对海量数据进行有效的组织、管理和动态调度显示,对数据的进一步分析和应用至关重要,相关领域的研究如火如荼。空间索引是点云数据组织管理中的一项关键技术,不同空间索引方式的结构复杂度、构建、查询效率以及空间利用率有所不同。目前常用的点云数据空间索引方式包括格网索引、四叉树索引、八叉树索引和KD(k-dimensional)树索引等。格网索引容易构建且易于编码,但是构建时未考虑数据的空间分布情况,而且不利于点云数据的快速可视化;四叉树索引结构简单,但对海量点云构建四叉树索引时难以确定叶子节点包含的点数,而且数据分布不均匀时,构建和查询效率降低;KD树索引在数据的查询检索方面具有优势,但是建立点的邻域关系需要大量的时间;八叉树索引是由四叉树索引扩展到三维空间的三维空间索引结构,构建过程比较简单,具有较高的索引效率,但对于海量点云数据来说,随着八叉树的深度不断增加,构建索引时会占用较大的内存空间,查询效率也随之降低。
发明内容
本发明实施例的目的是提供一种海量点云数据的空间索引构建方法及装置,以优化现有的海量点云数据的空间索引构建方案。
一方面,本发明实施例提供了一种海量点云数据的空间索引构建方法,包括:
对获取的原始点云数据进行分块处理,得到多个点云数据块;
对于每个点云数据块,构建当前点云数据块的八叉树索引;
将多个点云数据块的八叉树索引进行合并处理,得到所述原始点云数据的空间索引结构。
另一方面,本发明实施例提供了一种海量点云数据的空间索引构建装置,包括:
分块模块,用于对获取的原始点云数据进行分块处理,得到多个点云数据块;
八叉树索引构建模块,用于对于每个点云数据块,构建当前点云数据块的八叉树索引;
合并模块,用于将多个点云数据块的八叉树索引进行合并处理,得到所述原始点云数据的空间索引结构。
本发明实施例中提供的海量点云数据的空间索引构建方案,对获取的原始点云数据进行分块处理,并对每个点云数据块分别构建八叉树索引,再对多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构。通过采用上述技术方案,对传统的八叉树索引结构进行了改进,通过对原始点云数据进行分块处理,可将海量点云数据进行分解,减少在构建空间索引时对内存空间的占用。此外,在对多个八叉树索引进行合并后,在进行后续的查询时,可先找到目标数据所在的八叉树索引,再基于找到的八叉树索引查找目标数据,可有效提升查询效率。
附图说明
图1为本发明实施例一提供的一种海量点云数据的空间索引构建方法的流程示意图;
图2为本发明实施例一提供的一种空间索引结构示意图;
图3为本发明实施例二提供的一种海量点云数据的空间索引构建方法的流程示意图;
图4为本发明实施例二提供的一种八叉树索引结构示意图;
图5为本发明实施例三提供的一种海量点云数据的空间索引构建方法的流程示意图;
图6为本发明实施例三提供的一种基于八叉树索引的分层显示示意图;
图7为本发明实施例四提供的一种海量点云数据的空间索引构建装置的结构框图;
图8为本发明实施例六提供的一种终端的结构框图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种海量点云数据的空间索引构建方法的流程示意图,该方法可以由海量点云数据的空间索引构建装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机等终端中。如图1所示,该方法包括:
步骤110、对获取的原始点云数据进行分块处理,得到多个点云数据块。
示例性的,可根据运行环境信息对获取的原始点云数据进行分块处理,运行环境信息可包括内存容量等,此处的内存容量具体可指终端的可用内存容量。例如,可根据可用内存容量的大小来确定每个点云数据块所包含的数据量的大小,在读取原始点云数据时,根据点云数据块所包含的数据量的大小来读取相应数量的点云数据,得到当前的点云数据块。假设原始点云数据包含2000万个点,若根据终端的可用内存容量大小确定点云数据块中可包含500万个点,那么可在读取500万个点后,将该500万个点对应的数据作为当前点云数据块。
步骤120、对于每个点云数据块,构建当前点云数据块的八叉树索引。
示例性的,构建当前点云数据块的八叉树索引可包括如下步骤:在当前点云数据块中随机选取一个点作为八叉树的根节点,沿着X,Y和Z三个方向对当前点云数据块进行划分,获得八个子节点;如果某个子节点中包含的点数小于设定划分阈值,则不再划分,反之,则以该子节点为根节点继续划分为八个子节点,以此类推,构建出当前点云数据的八叉树索引。其中,未被划分为八个子节点的节点可称为叶子节点,被划分为八个子节点的节点可称为非叶子节点。
示例性的,可按照如上方式依次建立各点云数据块的八叉树索引,减少对终端内存空间的占用。
步骤130、将多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构。
示例性的,可基于多个点云数据块的空间范围为多个点云数据块的八叉树索引建立格网索引,得到原始点云数据的空间索引结构。
示例性的,图2为本发明实施例一提供的一种空间索引结构示意图,原始点云数据被划分为4个点云数据块,分别构建每个点云数据块的八叉树索引,得到了4个八叉树索引,在对这4个八叉树索引进行合并处理时,可基于每个点云数据块的空间范围建立格网索引,从而得到原始点云数据的空间索引结构,在后续的数据查询过程中,只需要知道想要查询的目标数据落在4个点云数据块中的哪个部分,即可继续根据相应的八叉树索引找到目标数据,相比于传统的根据整个原始点云数据构建1个较大的八叉树索引来说,本实施例中构建的空间索引结构的查询效率有了明显提升。需要说明的是,如图2所示,由于点的分布是杂散的,所以4个点云数据块在空间范围内可能存在交叠,本实施例对于是否存在交叠以及交叠程度不做具体限定。
本发明实施例一提供的海量点云数据的空间索引构建方法,对获取的原始点云数据进行分块处理,并对每个点云数据块分别构建八叉树索引,再对多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构。通过采用上述技术方案,对传统的八叉树索引结构进行了改进,通过对原始点云数据进行分块处理,可将海量点云数据进行分解,减少在构建空间索引时对内存空间的占用。此外,在对多个八叉树索引进行合并后,在进行后续的查询时,可先找到目标数据所在的八叉树索引,再基于找到的八叉树索引查找目标数据,可有效提升查询效率。
实施例二
图3为本发明实施例二提供的一种海量点云数据的空间索引构建方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,将步骤“对于每个点云数据块,构建当前点云数据块的八叉树索引”优化为:对于每个点云数据块,构建当前点云数据块的八叉树索引,并按照所构建的八叉树索引的层次对所述当前点云数据块进行存储。其中,对于当前层次中的叶子节点,在当前层次中存储所述叶子节点对应的包围盒中的所有未存储数据,对于当前层次中的非叶子节点,在当前层次中按照预设比例随机存储所述非叶子节点对应的包围盒中的部分未存储数据,各层次所存储的数据的总和为所述当前点云数据块包含的所有点云数据。
相应的,本实施例的方法包括如下步骤:
步骤310、对获取的原始点云数据进行分块处理,得到多个点云数据块。
步骤320、对于每个点云数据块,构建当前点云数据块的八叉树索引,并按照所构建的八叉树索引的层次对所述当前点云数据块进行存储。
其中,对于当前层次中的叶子节点,在当前层次中存储所述叶子节点对应的包围盒中的所有未存储数据,对于当前层次中的非叶子节点,在当前层次中按照预设比例随机存储所述非叶子节点对应的包围盒中的部分未存储数据,各层次所存储的数据的总和为所述当前点云数据块包含的所有点云数据。
一个节点的包围盒可理解为将该节点所包含的所有点包含在内的立方空间。所述预设比例可根据所对应层次的不同而不同,具体可参照同层的叶子节点所包含的数据量来确定。
图4为本发明实施例二提供的一种八叉树索引结构示意图,如图4所示,该八叉树索引包含了三个层次。第一层为八叉树的根节点;第二层的第3个和第7个节点为非叶子节点,剩余节点为叶子节点;第三层包含了16个叶子节点。
传统的八叉树索引的数据存储策略中,需要对同样的数据进行重复存储,会占用较大的存储空间。例如,参照图4,在第二层中,只有2个节点被继续划分了8个子节点,而另外6个节点是没有子节点的,但是在第三层中进行数据存储时,不仅需要存储本层的16个叶子节点的数据,还需要将第二层中的6个叶子数据重复进行存储,使得文件量变大。
本实施例中,可根据八叉树的层次深度进行自适应存储,对于当前层次中的叶子节点,在当前层次中存储该叶子节点对应的包围盒中的所有未存储数据,对于当前层次中的非叶子节点,在当前层次中按照预设比例随机存储该非叶子节点对应的包围盒中的部分未存储数据,各层次所存储的数据的总和为当前点云数据块包含的所有点云数据。参照图4,在第一层中,根节点为非叶子节点,此时的所有数据均处于未存储状态,在第一层中按照第一预设比例随机存储部分数据;在第二层中,以第1个叶子节点为例,该叶子节点对应的包围盒中的数据可能被根节点随机抽取了部分进行了存储,此时,仅需要存储该叶子节点对应的包围盒中剩余的数据即可,即所有未存储数据;在第二层中,以第1个非叶子节点(第3个节点)为例,该非叶子节点对应的包围盒中的数据可能被根节点随机抽取了部分进行了存储,而该非叶子节点又被划分为了8个子节点,所以,需要按照第二预设比例随机存储该非叶子节点对应的包围盒中的部分未存储数据,并将剩余的未存储数据留到后面的层次中进行存储;在第三层中,每个叶子节点存储所对应的包围盒中的所有未存储数据。这样,每个层次中的每个节点都会存储部分数据,且各层次所存储的数据的总和为当前点云数据块包含的所有点云数据,不存在重复存储的现象,有效节约了存储空间。
步骤330、将多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构。
本发明实施例二在上述实施例的基础上对数据存储策略进行了优化,将数据合理分配至各个层次进行存储,避免重复存储,从而有效节约了存储空间。
实施例三
图5为本发明实施例三提供的一种海量点云数据的空间索引构建方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,在将多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构之后,增加了步骤:基于多细节层次(Levels of Detail,LOD)技术根据当前视点到目标点的距离从原始点云数据的空间索引结构中调度相应的数据进行显示。
相应的,本实施例的方法包括如下步骤:
步骤510、对获取的原始点云数据进行分块处理,得到多个点云数据块。
步骤520、对于每个点云数据块,构建当前点云数据块的八叉树索引,并按照所构建的八叉树索引的层次对所述当前点云数据块进行存储。
其中,对于当前层次中的叶子节点,在当前层次中存储所述叶子节点对应的包围盒中的所有未存储数据,对于当前层次中的非叶子节点,在当前层次中按照预设比例随机存储所述非叶子节点对应的包围盒中的部分未存储数据,各层次所存储的数据的总和为所述当前点云数据块包含的所有点云数据。
步骤530、将多个点云数据块的八叉树索引进行合并处理,得到原始点云数据的空间索引结构。
步骤540、基于LOD技术根据当前视点到目标点的距离从原始点云数据的空间索引结构中调度相应的数据进行显示。
示例性的,在当前视点到目标点的距离较大时,能够看到的场景范围较大,而在当前视点到目标点的距离较小时,能够看到的场景范围较小。可根据所看到的场景范围的大小来确定该场景范围的坐标,根据场景范围的坐标来确定需要从原始点云数据的空间索引结构中调度哪个或哪些点云数据块对应的数据。
示例性的,在大规模场景渲染时,为了提高速度和效率往往不会调度所有的数据,而是根据不同的视点抽稀出其中的部分数据。LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。图6为本发明实施例三提供的一种基于八叉树索引的分层显示示意图,如图所示,八叉树索引包含三个层次,分别为第一层(Level 1)、第二层(Level 2)和第三层(Level 3),层次数越大,点越密集,所显示的细节信息越多。
在对原始点云数据进行调度时,可根据当前视点到目标点的距离确定需要从原始点云数据的空间索引结构中调度的点云数据块,再根据对细节信息的需求情况基于LOD技术从所确定的点云数据块的八叉树索引中调度相应层次对应的数据。
本发明实施例三提供的海量点云数据的空间索引构建方法,在原始点云数据的空间索引结构构建完成后,基于LOD技术进行了分级显示,能够实现点云数据的实时可视化,并方便后续对点云数据的编辑。为了验证实施例所提出的方法的有效性和高效性,以无人机激光雷达扫描仪获取的容量为42.1GB激光雷达点云数据为测试数据构建了空间索引,构建索引的时间为1.5小时,构建索引之后数据容量为36.1GB。测试所用电脑处理器的配置为:Intel(R)Core(TM)i5-4460CPU@3.2GHz,测试结果表明该方法能够很好地管理海量点云,并且可以进行动态调度显示和编辑。构建索引之后,后续使用数据时可以秒开,可以大幅节省时间。
实施例四
图7为本发明实施例四提供的一种海量点云数据的空间索引构建装置的结构框图,该装置可由软件和/或硬件实现,一般集成在计算机等终端中,可通过执行海量点云数据的空间索引构建方法来构建点云数据的空间索引。如图7所示,该装置包括分块模块71、八叉树索引构建模块72和合并模块73。
其中,分块模块71,用于对获取的原始点云数据进行分块处理,得到多个点云数据块;八叉树索引构建模块72,用于对于每个点云数据块,构建当前点云数据块的八叉树索引;合并模块73,用于将多个点云数据块的八叉树索引进行合并处理,得到所述原始点云数据的空间索引结构。
本发明实施例四提供的海量点云数据的空间索引构建装置,对传统的八叉树索引结构进行了改进,通过对原始点云数据进行分块处理,可将海量点云数据进行分解,减少在构建空间索引时对内存空间的占用。此外,在对多个八叉树索引进行合并后,在进行后续的查询时,可先找到目标数据所在的八叉树索引,再基于找到的八叉树索引查找目标数据,可有效提升查询效率。
在上述实施例的基础上,所述八叉树索引构建模块具体用于:对于每个点云数据块,构建当前点云数据块的八叉树索引,并按照所构建的八叉树索引的层次对所述当前点云数据块进行存储,其中,对于当前层次中的叶子节点,在当前层次中存储所述叶子节点对应的包围盒中的所有未存储数据,对于当前层次中的非叶子节点,在当前层次中按照预设比例随机存储所述非叶子节点对应的包围盒中的部分未存储数据,各层次所存储的数据的总和为所述当前点云数据块包含的所有点云数据。
在上述实施例的基础上,所述分块模块具体用于:根据运行环境信息对获取的原始点云数据进行分块处理,得到多个点云数据块,其中,所述运行环境信息包括内存容量。
在上述实施例的基础上,所述合并模块具体用于:基于所述多个点云数据块的空间范围为多个点云数据块的八叉树索引建立格网索引,得到所述原始点云数据的空间索引结构。
在上述实施例的基础上,该装置还包括调度模块,用于在将多个点云数据块的八叉树索引进行合并处理,得到所述原始点云数据的空间索引结构之后,基于多细节层次LOD技术根据当前视点到目标点的距离从所述原始点云数据的空间索引结构中调度相应的数据进行显示。
实施例五
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种点云数据的空间索引构建方法,该方法包括:
对获取的原始点云数据进行分块处理,得到多个点云数据块;对于每个点云数据块,构建当前点云数据块的八叉树索引;将多个点云数据块的八叉树索引进行合并处理,得到所述原始点云数据的空间索引结构。
可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本发明任意实施例所提供的海量点云数据的空间索引构建方法的技术方案。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例六
本发明第六实施例提供了一种终端,包括本发明任意实施例所提供的海量点云数据的空间索引构建装置。
具体的,图8为本发明实施例六提供的一种终端的结构框图,如图8所示,本发明实施例提供一种终端,该终端包括处理器80、存储器81、输入装置82和输出装置83;终端中处理器80的数量可以是一个或多个,图8中以一个处理器80为例;终端中的处理器80、存储器81、输入装置82和输出装置83可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器81作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的海量点云数据的空间索引构建方法对应的程序指令/模块(例如,海量点云数据的空间索引构建装置中的分块模块71、八叉树索引构建模块72和合并模块73)。处理器80通过运行存储在存储器81中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的海量点云数据的空间索引构建方法。
存储器81可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器81可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器81可进一步包括相对于处理器80远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置82可用于接收输入的数字或字符信息,以及产生与终端的用户设置以及功能控制有关的键信号输入。输出装置83可包括显示屏等显示设备。
上述实施例中提供的海量点云数据的空间索引构建装置、存储介质及终端可执行本发明任意实施例所提供的海量点云数据的空间索引构建方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的海量点云数据的空间索引构建方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。