基于时空数据融合的三维点云压缩存储方法及系统
技术领域
本发明涉及一种点云压缩存储方法及系统,属于GIS信息技术领域,具体涉及一种基于时空数据融合的三维点云压缩存储方法及系统。
背景技术
点云数据(Point Cloud Data)是三维(或三维以上)几何模型表面采样点的集合,是分散在三维空间中的离散点集。每一个点都包含该点的三维坐标信息,以及颜色(RGB)、反射强度等其它属性信息,但不包含任何拓扑信息。点云之间相互独立,可根据调用规则,组合成任意形状的几何模型,不需要受曲面连续性的约束。同时,由于传感器技术、多维扫描技术的发展,几何数据的规模也急剧增长,所构建的三维点云模型变得越来越复杂、体量越来越大,导致点云数据的组织与存储开销日益增大;且庞大的点云数据还对硬件设备的存储能力、传输能力造成了巨大压力。因此,研究点云数据的压缩存储,具有十分重要的现实意义。
据可查阅的文献资料显示,近几年来国内外已有较多的科研人员从事点云数据压缩存储相关的研究工作,提出了一系列压缩存储方案,包括:包围盒法、三角网格法、角度法、均匀网格法、随机采样法、曲率采样法、聚类分析法等。以上点云数据的精简算法,均实现了不同程度的压缩效果,但其都是从点云数据的三维组织方面入手,实现的有损压缩。而点云数据在实际的应用场合,经常用于描述并存储几何对象在不同时间上的不同版本,以上方法并未对时间序列上同一区域的点云数据的存储特征加以分析利用,进一步实现时序点云数据的优化存储。
因此,设计并实现一种有着广泛适用性、针对时间序列的点云数据存储方法,具有较强的现实意义和应用价值。
发明内容
本发明主要是解决现有技术所存在的上述的技术问题,提供了一种基于时空数据融合的三维点云压缩存储方法及系统。该方法及系统主要针对不同时间同一区域内点云对象的压缩存储问题。采用数据融合的方式,将不同版本的点云数据统一存储,保存点云数据最关键的坐标信息,实现对不同版本中相同的点云部分一次存储、多版本使用,从而实现对多版本点云数据的优化存储。解决时序海量点云数据的优化压缩存储,为三维点云数据更加广泛的应用与推广提供技术支撑。
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种基于时空数据融合的三维点云压缩存储方法,包括:
点云匹配索引步骤,用于在数据库中匹配新增的点云数据对应的存储网格块;
点云格式转换步骤,用于在确认新增点云数据时,将新增的三维点云数据格式,转换为预先定义的点云数据格式;
点云数据融合步骤,用于融合新增点云数据以及历史点云数据并存储和管理融合后的数据。
一种基于时空数据融合的三维点云压缩存储系统,包括:
点云匹配索引模块,用于在数据库中匹配新增的点云数据对应的存储网格块;
点云格式转换模块,用于在确认新增点云数据时,将新增的三维点云数据格式,转换为预先定义的点云数据格式;
点云数据融合模块,用于融合新增点云数据以及历史点云数据并存储和管理融合后的数据。
因此,本发明具有如下优点:本发明通过对点云数据存储格式的改变,结合分网格存储多版本点云数据的思路,将不同时间的、具有相同位置信息的点云数据融合后一体化存储,从而实现了同一区域和同一几何对象多版本数据的压缩存储,可有效提高海量点云数据的存储效率、节省存储空间;同时,三维点云数据的融合一体化压缩存储方式,也能为其它具有三维属性的时空数据,提供辅助和借鉴作用。
附图说明
附图1是本发明实施例提供的基于时空数据融合的三维点云压缩存储方法的流程图;;
附图2是本发明实施例提供的基于时空数据融合的三维点云压缩存储系统的结构框图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
本实施例提供一种基于时空数据融合的三维点云压缩存储方法,如图1所示,具体包括:
S1、点云数据匹配。
此步骤实现对新增三维的入库前处理。首先将新增点云数据的坐标系转换为数据库中存储点云数据所采用的坐标系;接着计算新增点云三维空间区域最小外接立方体的顶点坐标,便于后续匹配到具体的数据库存储网格中融合存储;最后需要生成索引表,记录该新增点云数据将存储在数据库哪些存储网格块中;
S2、点云时序索引。
此步骤实现对数据库中存储网格的文件头定义,以及索引新增点云数据的版本确定。首先需要根据前述点云数据匹配步骤,找到数据库中预存储的对应存储网格,匹配新增点云数据和存储网格中点云数据的版本;接着读取该存储网格的头文件,确定存储空间是否已满,若未满,则更新状态,准备对新增点云数据入库存储;若该网格存储空间已满,则另开辟新的存储空间,定义存储网格的文件头字段。
S3、点云格式转换。
此步骤实现将新增点云数据的存储格式,转换为本发明所设计的点云数据存储格式。首先,将新增点云数据转换为通用的LAS格式;其次,拓展标准点云格式LAS文件的文件头部分,保存该点云数据的区域信息,具体来说就是最小外接立方体的顶点信息;最后,在点数据记录区域为每个点新增2字节字段,用于保存该点云数据入库后的版本信息;
S4、点云数据融合。
此步骤实现新增点云数据的入库处理。首先查询存储空间是否存储满,根据S3步骤的查询结构,选择已有未满的存储网格或新构建的存储网格;接着逐个点的入库,通过八叉树的索引方式,逐点搜索存储网格中与其位置相同或最接近的点,将该点的坐标信息作为新入库点云数据对应点进行存储;全部点融合完后,更新对应存储网格块的版本信息(VerID);最后还需在对应存储网格块的头文件更新相应字段,标明加入了哪一组点云数据;
S5、点云数据解码。
此步骤完成在点云调用时,快速的将数据库中保存的点云数据取出,并转换为通用的点云数据格式。首先,在调用点云数据时,搜寻该点云数据的文件头,查询该点云数据存储在哪些网格块中;接着在网格块中根据指定版本,读取数据;在全部网格块中该点云数据读取完毕后,将组合并转换成该点云数据的通用格式;将该点云块数据的通用格式存储于缓冲区中,便于下次调用时,无需再次索引存储网格块。
S6、点云格式管理。
此步骤完成对点云通用格式的管理。支持国内外常用的点云存储格式与本发明所设计点云格式的互相转换;同时支持用户自定义新的点云格式。
如图2所示:本发明实施例提供的基于时空数据融合的三维点云压缩存储系统,其包括:
数据库索引模块10。
数据库索引模块的主体功能为:首先需要将新增点云数据的坐标系转换为与数据库中存储数据相同的坐标系统;接着确定新增三维点云数据的空间位置,通过计算构成该三维点云数据的所有点的三维坐标X、Y、Z的最大最小值,确定其最小外接立方体;之后通过将该立方体与数据库中存储网格块比较,确定外接立方体是否需要切割、并存储在哪些存储网格中。
进一步确定了新增点云数据的最小外接立方体,相当于确定了立方体的8个顶点坐标,可根据每个顶点的三维坐标值,计算8个顶点应该对应存储于数据库的哪些存储网格中。待确定了顶点所在的至多8个存储网格后,这8个存储网格之间所有的连续网格,则均为新增点云数据的预存储网格。
可选的是通过上述步骤确定了新增点云在数据库中的预存储网格块后,由于三维点云的形状问题,可能有些存储网格块并没有对应的点云数据需要存储。在此情况下,依旧将该网格块作为该新增点云的预存储网格,以简化入库操作及后续的点云检索。
点云版本管理模块20。
点云版本管理模块的主体功能为:通过读取新增点云数据文件头中的属性信息,确定该新增点云数据在存储数据库中是否有相同的存储版本。若无相同版本,则继续数据入库存储流程;若已经存储了相同的数据版本,则提示用户需要选择再次覆盖存储或取消存储。
特别的是点云数据的存储版本的确定主要包括数据的时间字段、数据的编号字段。同一几何对象或同一区域,由于数据的采集时间或编号不同,视为不同版本的数据。
存储网格管理模块30。
由于数据库中的存储空间,是按照三维几何空间分网格存储,每个存储网格存储的点云对象不同,数据量大小也不一致,因此每个存储网格需要建立一个记录表,记录该存储网格中数据存储的情况。
同时,对于每个入库的三维点云数据,文件头部分将保存在数据库的非网格存储区域中,数据库的存储网格中仅仅存储点云文件中的点信息。
进一步数据库中的每个存储网格的记录表中,将记录以下信息:该网格的存储容量情况,包括总的存储量与已用存储量,通过版本号VerID来管理;还记录该网格存储了哪些点云文件中的点信息,同样通过版本号与数据库中其非网格区域存储的点云文件头建立对应索引关系。
特别的是当网格块存储空间已用完时,即已存储满16个版本的点云数据,将在数据库中分配新的存储空间,对应于该存储网格,同时新增网格存储空间的索引,将保存在上一个已满存储网格的记录表中。同一空间区域的存储网格,只有已存储满时,才能开辟新的存储空间,以此类推。
格式转换模块40。
此步骤的主体功能为:为使后续格式转换标准一致,在新增点云数据入库前,首先需要将点云数据转换为某种统一且通用的点云数据存储格式,默认情况下,将转换为标准的LAS格式(V1.3)。转换好LAS格式的新增点云数据,将在该LAS文件的文件头部分,新增24个字节,分别存储新增点云最小外接立方体的一组对角顶点数据。由于确定立方体的对角顶点,即可唯一确定立方体的具体位置,因此只需记录任意一组对角顶点,用于存储数据库检索模块10部分,计算得出的外接立方体一组顶点坐标。每个顶点的X、Y、Z坐标分别用4字节存储,总共需24字节新增存储空间。最后,在转换好LAS格式文件头后,还需要对LAS文件中的点存储区域的格式做适当修改:为点云数据的LAS文件中的点数据记录区域的每个点增加2个字节存储空间,16位二进制标识该点将会出现在哪些该几何对象点云数据的历史版本中,最多可保存16个点云数据版本,记为VerID;初始情况下,16位二进制均为0。
可选的是原始新增点云数据初次转换的通用点云格式,可由数据格式管理模块80选择不同的初始存储格式,并支持用户自定义点云格式。
数据融合处理模块50。
此模块为新增点云数据入库的主要功能模块,主要为:首先需要查询对应的需要存储的网格块,核实网格块中是否已经存储满数据,存储容量通过网格块文件头中的版本信息VerID的16位二进制值,此功能实现对点云版本管理模块20同样的存储空间判断功能,目的在于二次判断,增加文件入库操作的安全性,防止误操作覆盖掉数据库中已存储的点云数据。其次,对新增点云数据中的每个点,在对应的存储网格块中,索引找到坐标相同的存储点,作为融合存储的目标。融合后,原先点的坐标信息,也将同时作为新增点云该点的坐标信息,同时也标明融合完成,更新存储网格块中该点的VerID。
进一步新增点云点在与数据库存储网格中某点的融合过程之前,需要先匹配到对应的点。理想情况下,新增点匹配到坐标完全相同的点,则匹配成功。通常情况,采用最接近点做为新增点云中点的融合存储目标:先通过八叉树索引找到大致区域点的几何,然后逐点计算与新增点的欧式几何距离,用最小距离的点作为新增点的融合存储目标。
可选的是数据库中非网格存储区域存储的点云数据文件头,可以索引到具体点的存储网格。同时支持存储网格块头文件自定义的方式,实现由存储网格到各个在该网格存储的点云数据(文件头)的反向索引。
数据解码模块60。
此模块的主体功能为:在用户需调用数据库中的存储网格中的点云数据时,将首先找到数据库网格存储区域外对应的该点云数据的文件头,然后按照文件头索引到具体的存储模块,将所有数据读取出来,和点云文件头组成完整的点云数据。
进一步组合点云数据,默认情况下,将组合好的点云数据的格式自动做标准化转换,转换成通用格式的点云数据(如LAS格式),便于提高与其它外接应用的兼容性,同时也通过这种预处理的方式,提高用户导出文件标准格式点云数据的速度。
可选的是用户可由数据解码模块60,控制直接输出组合后的本发明专利扩展后的点云数据格式,或是转换成标准格式;同时支持用户选择点云数据解码的具体格式。
进一步数据解码模块60与数据格式管理模块80联动,可以实现点云数据出库和解码的用户自定义格式选择。
缓冲区管理模块70。
此模块的主体功能为:为保证点云数据的调用和加载速度,设定点云数据缓冲区。缓冲区大小根据用户自定义选择,用户首次调用点云数据时,将点云数据的头文件,和存储在存储网格中的点数据组合,并转换为标准的点云数据格式(如LAS格式),同时将该LAS格式的点云数据加入缓冲区,用户在下次使用时,则不需重新做点云数据的格式转换,可直接从缓冲区读取转换好的通用格式点云数据,实现快速加载。
进一步缓冲区将设计成队列的数据结构,缓冲区中的各点云数据实行先进先出的入缓冲区、出缓冲区规则,确保最久没被使用的点云数据最优先出缓冲区。
可选的是缓冲区大小可在已存储有点云数据的情况下,由用户动态调整大小,但应根据所在磁盘剩余存储空间的大小,设置缓冲区容量上限。
数据格式管理模块80。
数据格式管理模块实现两种主要功能:其一是,设置各功能模块所需转换格式时,默认格式的种类;其二是,支持用户上传自定义格式的数据格式模型,用户可以根据实际的需求选择修改已有模型、新建新的数据格式模型。用于解码格式的管理,支持多种通用的点云数据格式,支持用户自定义点云数据格式。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。