点云数据处理方法、装置及设备转让专利

申请号 : CN202211616833.1

文献号 : CN115601272B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 伍章熙陈国虎肖斌薛红军刘涛

申请人 : 海纳云物联科技有限公司青岛海纳云智能系统有限公司青岛海纳云数字科技有限公司

摘要 :

本申请涉及数据处理技术,提供一种点云数据处理方法、装置及设备。该方法包括:在激光扫描时,将实时采集的点云数据缓存至缓存空间中。当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据,该第一点云数据缺少至少一个空间维度的数据。若存在第一点云数据时,则对第一点云数据进行数据修复,得到修复后的第一点云数据。将修复后的第一点云数据,以及,第二点云数据存储至持久化存储空间中,该第二点云数据为缓存的点云数据中除第一点云数据之外的点云数据。本申请的方法,修复了激光扫描设备采集的存在缺失数据的点云数据,提高了激光扫描设备存储的点云数据的完整性。

权利要求 :

1.一种点云数据处理方法,其特征在于,所述方法应用于激光扫描设备,所述激光扫描设备的存储空间包括:缓存空间和持久化存储空间,所述方法包括:在激光扫描时,将实时采集的点云数据缓存至所述缓存空间中;

当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据;

所述第一点云数据缺少至少一个空间维度的数据;所述M为大于或等于2的整数;

若存在所述第一点云数据时,则对所述第一点云数据进行数据修复,得到修复后的第一点云数据;

将所述修复后的第一点云数据,以及,第二点云数据存储至所述持久化存储空间中,所述第二点云数据为所述缓存的点云数据中除所述第一点云数据之外的点云数据;

所述对所述第一点云数据进行数据修复,得到修复后的第一点云数据,包括:从缓存的点云数据中获取与所述第一点云数据相关的N个第三点云数据,所述N小于所述M;

采用所述N个第三点云数据修复所述第一点云数据中缺失的数据,得到所述修复后的第一点云数据;

所述采用所述N个第三点云数据修复所述第一点云数据中缺失的数据,得到所述修复后的第一点云数据,包括:获取所述第一点云数据的曲面拟合算子,所述曲面拟合算子用于使所述N个第三点云数据的误差平方和最小;

采用所述N个第三点云数据,以及,所述曲面拟合算子,获取所述第一点云数据中缺失的数据;

将所述第一点云数据中缺失的数据填充至所述第一点云数据中,得到所述修复后的第一点云数据。

2.根据权利要求1所述的方法,其特征在于,所述在激光扫描时,将实时采集的点云数据缓存至所述缓存空间中之前,还包括:响应于设备启动指令,执行设备初始化操作;

和/或,

响应于激光扫描指令,执行存储空间初始化操作;所述存储空间初始化操作包括下述至少一项:分区操作,以创建所述缓存空间和所述持久化存储空间;

数据写入指针和数据读取指针的创建操作,所述数据写入指针用于向所述缓存空间写入点云数据,所述数据读取指针用于从所述缓存空间中读取点云数据。

3.根据权利要求2所述的方法,其特征在于,所述分区操作,还包括:在所述缓存空间创建缓存文件,以及,在所述持久化存储空间创建存储文件,以及,存储目录;所述缓存文件用于缓存点云数据,所述存储文件包括:数据链表,以及,所述持久化存储空间中的存储文件的标识文件,所述存储文件用于持久化存储点云数据,所述存储目录用于记录存储文件的顺序。

4.根据权利要求3所述的方法,其特征在于,所述将所述修复后的第一点云数据,以及,第二点云数据存储至所述持久化存储空间中,包括:根据所述修复后的第一点云数据的数据量、所述第二点云数据的数据量,以及,第一存储文件的剩余存储量,确定是否在所述持久化存储空间中创建第二存储文件;

若确定在所述持久化存储空间中创建第二存储文件,则创建所述第二存储文件,并更新所述存储目录;

将所述修复后的第一点云数据、所述第二点云数据填充至所述第一存储文件中,并在所述第一存储文件填满后,将剩余点云数据存储至所述第二存储文件中;

更新所述标识文件。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:确定激光扫描是否结束;

若激光扫描结束,则在所述标识文件中添加各存储文件的校验信息;所述校验信息用于验证存储文件中存储的点云数据的完整性。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:根据所述标识文件中的校验信息,验证各存储文件中存储的点云数据的完整性;

在完整性验证通过后,将各所述存储文件存储的点云数据转存至服务端。

7.一种点云数据处理装置,其特征在于,应用于激光扫描设备,所述激光扫描设备的存储空间包括:缓存空间和持久化存储空间,包括:第一保存模块,用于在激光扫描时,将实时采集的点云数据缓存至所述缓存空间中;

处理模块,用于当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据;所述第一点云数据缺少至少一个空间维度的数据;所述M为大于或等于2的整数;若存在所述第一点云数据时,则对所述第一点云数据进行数据修复,得到修复后的第一点云数据;

第二保存模块,用于将所述修复后的第一点云数据,以及,第二点云数据存储至所述持久化存储空间中,所述第二点云数据为所述缓存的点云数据中除所述第一点云数据之外的点云数据;

所述处理模块,具体用于从缓存的点云数据中获取与所述第一点云数据相关的N个第三点云数据,所述N小于所述M;

采用所述N个第三点云数据修复所述第一点云数据中缺失的数据,得到所述修复后的第一点云数据;

所述处理模块,还用于获取所述第一点云数据的曲面拟合算子,所述曲面拟合算子用于使所述N个第三点云数据的误差平方和最小;

采用所述N个第三点云数据,以及,所述曲面拟合算子,获取所述第一点云数据中缺失的数据;

将所述第一点云数据中缺失的数据填充至所述第一点云数据中,得到所述修复后的第一点云数据。

8.一种电子设备,其特征在于,包括:处理器,通信接口以及存储器,所述处理器分别与所述通信接口和所述存储器通信连接;

所述存储器存储计算机执行指令;

所述通信接口与外部设备进行通信交互;

所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1‑6中任一项所述的方法。

说明书 :

点云数据处理方法、装置及设备

技术领域

[0001] 本申请涉及数据处理技术,尤其涉及一种点云数据处理方法、装置及设备。

背景技术

[0002] 三维激光扫描技术是近年来出现的新技术,广泛的应用在测量领域。三维激光扫描技术利用激光测距的原理,通过记录被测物体表面大量的密集的点的三维坐标、反射率和纹理等点云数据,可快速复建出被测目标的三维模型及线、面、体等。目前,激光扫描设备对物体进行扫描,获得该物体的点云数据后,将采集到的点云数据存储到自身磁盘。
[0003] 然而,目前的激光扫描设备扫描到的点云数据存在部分轴的数据丢失的问题,导致激光扫描设备存储的点云数据的完整性较差。

发明内容

[0004] 本申请提供一种点云数据处理方法、装置及设备,用以解决目前的激光扫描设备扫描到的点云数据存在部分轴的数据丢失,导致激光扫描设备存储的点云数据的完整性较差的问题。
[0005] 第一方面,本申请提供一种点云数据处理方法,所述方法应用于激光扫描设备,所述激光扫描设备的存储空间包括:缓存空间和持久化存储空间,所述方法包括:
[0006] 在激光扫描时,将实时采集的点云数据缓存至所述缓存空间中;
[0007] 当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据;所述第一点云数据缺少至少一个空间维度的数据;所述M为大于或等于2的整数;
[0008] 若存在所述第一点云数据时,则对所述第一点云数据进行数据修复,得到修复后的第一点云数据;
[0009] 将所述修复后的第一点云数据,以及,第二点云数据存储至所述持久化存储空间中,所述第二点云数据为所述缓存的点云数据中除所述第一点云数据之外的点云数据。
[0010] 第二方面,本申请提供一种点云数据处理装置,应用于激光扫描设备,所述激光扫描设备的存储空间包括:缓存空间和持久化存储空间,包括:
[0011] 第一保存模块,用于在激光扫描时,将实时采集的点云数据缓存至所述缓存空间中;
[0012] 处理模块,用于当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据;所述第一点云数据缺少至少一个空间维度的数据;所述M为大于或等于2的整数;若存在所述第一点云数据时,则对所述第一点云数据进行数据修复,得到修复后的第一点云数据;
[0013] 第二保存模块,用于将所述修复后的第一点云数据,以及,第二点云数据存储至所述持久化存储空间中,所述第二点云数据为所述缓存的点云数据中除所述第一点云数据之外的点云数据。
[0014] 第三方面,本申请提供一种电子设备,包括:处理器,通信接口以及存储器,所述处理器分别与所述通信接口和所述存储器通信连接;
[0015] 所述存储器存储计算机执行指令;
[0016] 所述通信接口与外部设备进行通信交互;
[0017] 所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中任一项所述的方法。
[0018] 第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中任一项所述的点云数据处理方法。
[0019] 第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的方法。
[0020] 本申请提供的点云数据处理方法、装置及设备,通过将激光扫描设备采集到的点云数据以二级存储的形式进行存储,并在二级存储过程中检测是否存在缺失至少一个空间维度的数据,若存在则修复该缺失至少一个空间维度的数据,从而提高激光扫描设备获取的点云数据的完整性。

附图说明

[0021] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0022] 图1为本申请实施例提供的一种点云数据处理方法的流程示意图;
[0023] 图2为本申请实施例提供的另一种点云数据处理方法的流程示意图;
[0024] 图3为本申请实施例提供的一种第一点云数据的的位置示意图;
[0025] 图4为本申请实施例提供的另一种第一点云数据的的位置示意图;
[0026] 图5为本申请实施例提供的一种持久化存储空间中存储文件的示意图;
[0027] 图6为本申请实施例提供的再一种点云数据处理方法的流程示意图;
[0028] 图7为本申请实施例提供的又一种点云数据处理方法的流程示意图;
[0029] 图8为本申请实施例提供的一种点云数据处理装置的结构示意图;
[0030] 图9为本申请实施例提供的一种电子设备的结构示意图。
[0031] 通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

[0032] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0033] 目前,激光扫描设备在对物体进行扫描后,会直接将扫描获取的该物体的点云数据存储入该激光扫描设备的磁盘中。然后用户在需要时可以使用存储介质(例如磁盘、硬盘、USB闪存盘(USB flash disk)等)、或者终端设备等从该磁盘中读取该点云数据,以进行后续的处理和使用。
[0034] 然而,在激光扫描设备进行激光扫描时,可能会因为外部原因或者操作等因素导致三维点云数据丢失。然而点云数据中一些关键点的数据丢失很可能会在点云数据重构时造成影响,例如在静态建模或动态建模时会导致模型失真、特征值计算、点云匹配等受到影响。
[0035] 因此,如何处理目前的激光扫描设备获取的存在丢失数据的点云数据,提高激光扫描设备存储的点云数据的完整性是亟需解决的问题。
[0036] 有鉴于此,本申请提供了一种点云数据处理方法,通过将激光扫描设备采集到的点云数据以二级存储的形式进行存储,并在二级存储过程中检测是否存在缺失至少一个空间维度的数据,若存在则修复该缺失至少一个空间维度的数据,从而提高激光扫描设备获取的点云数据的完整性。
[0037] 本申请提供的点云数据处理方法的执行主体可以为激光扫描设备,也可以是该激光扫描设备中的处理芯片。当执行主体为激光扫描设备时,该激光扫描设备例如可以是手持激光扫描设备、激光扫描车、激光扫描无人机等。该激光扫描设备上可以部署有运行该点云数据处理方法的软件或者程序代码,通过软件或者程序代码存储并修复该激光扫描设备获取的点云数据,该点云数据存储在该激光扫描设备的存储空间中,该存储空间例如可以是由该激光扫描设备的硬盘、磁盘、紧凑式闪存(Compact Flash,CF)卡、安全数码卡(Secure Digital Memory Card,SD Card)等提供的。该激光扫描设备的存储空间包括缓存空间和持久化存储空间,该缓存空间用于暂时存储获取的点云数据,该持久化存储空间用于存储缓存空间中的点云数据,该点云数据可以包括缓存空间中已暂存的数据,和将缓存空间中暂存的数据修复后的点云数据。或者,该缓存空间中已暂存的数据不需要进行数据修复,则该点云数据包括缓存空间中已暂存的数据。
[0038] 下面,以该点云数据处理方法的执行主体为激光扫描设备的处理芯片为例,通过具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
[0039] 图1为本申请实施例提供的一种点云数据处理方法的流程示意图。如图1所示,该方法可以包括:
[0040] S101、在激光扫描时,将实时采集的点云数据缓存至缓存空间中。
[0041] 其中,该点云数据可以包括该被扫描物体上一个点的空间数据,该点是以多维空间坐标表征的,例如可以是以三维空间坐标表征的,则该点云数据的三维空间坐标可以表征为 。示例性的,以该三维空间坐标为三维直角坐标系下的数据为例,为横轴的坐标,为纵轴的坐标, 为竖轴的坐标。为方便理解,本申请后续实施例以点云数据为被扫描物体上一个点的三维空间中三维直角坐标系下的坐标为例进行说明。
[0042] 激光扫描设备上的处理芯片将采集的点云数据直接存储入该缓存空间中。缓存该点云数据时可以是根据采集点云数据的顺序逐个存储的。
[0043] S102、当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据。
[0044] 其中,该第一点云数据缺少至少一个空间维度的数据,M为大于或等于2的整数。该预设数量M可以是根据实际需求确定的,本申请对此不做限制。继续以该点云数据表征为为例,该第一点云数据可能为仅包括两个空间维度的数据,也可能仅包括一个空间维度的数据。
[0045] 激光扫描设备的处理芯片通过访问缓存空间,获取当前该缓存空间中点云数据的数量,该处理芯片访问缓存空间可以通过现有的缓存访问方法实现,此处不再赘述。当该数量达到预设数量M时,对该M个点云数据中每个点云数据包括的坐标轴上的数据进行检测,检测是否缺少至少一个空间维度的坐标的数据。
[0046] 若存在该第一点云数据时,说明存在缺失至少一个空间维度的数据的点云数据,即,M个点云数据中存在不完整的点云数据,则执行步骤S103,以对缺失数据的点云数据进行修复。
[0047] 若不存在该第一点云数据时,说明不存在缺失至少一个空间维度的数据的点云数据,即,该M个点云数据均为完整的点云数据,则执行步骤S105,以将缓存的M个点云数据存储至持久化存储空间中。
[0048] 可选的,当缓存的点云数据达到预设数量M时,还可以对该M个点云数据进行数据分析,例如可以分析该M个点云数据是否包括噪点数据,该噪点数据例如可以是在曲面上与其他点云数据距离较远的数据。若存在噪点数据,则剔除该M个点云数据中的噪点数据。该剔除噪点数据的方法可以是现有的任意一种点云数据噪点剔除方法,此处不再赘述。
[0049] S103、对第一点云数据进行数据修复,得到修复后的第一点云数据。
[0050] 一种可能的实现方式,使用缓存空间中与该第一点云数据相关的其他点云数据对该第一点云数据进行数据修复,该相关的其他点云数据例如可以是与该第一点云数据在曲面上位置相近的数据,或者与该第一点云数据获取顺序相邻的预设数量的点云数据。例如对与该第一点云数据相关的数据进行拟合,获取该第一点云数据缺失的空间维度的数据。该拟合例如可以是将该第一点云数据所在曲面上的其他点云数据通过每个空间维度的数据进行拟合,当所有空间维度的拟合误差综合最小时,拟合获得的该第一点云数据缺失数据最接近该缺失数据的真实值。因此,通过该方法,可以较为精准的对该第一点云数据进行数据修复。
[0051] 另一种可能的实现方式,根据第一点云数据中未缺失的空间维度的坐标轴上的数据对该第一点云数据进行数据修复。例如,根据该第一点云数据中未缺失的空间维度的坐标轴上的数据,以及,多个空间维度坐标轴上的数据之间的映射关系,获取该缺失的空间维度的数据。该映射关系可以是根据实际需求预先设定的,本申请对此不做限制。
[0052] 在对所有第一点云数据完成修复后,获得每个第一点云数据对应的修复后的第一点云数据。
[0053] S104、将修复后的第一点云数据,以及,第二点云数据存储至持久化存储空间中。
[0054] 其中,该第二点云数据为缓存的点云数据中除第一点云数据之外的点云数据,该第二点云数据不缺少任意一个空间维度的数据。
[0055] S105、将第二点云数据存储至持久化存储空间中。
[0056] 本申请提供的点云数据处理方法,通过将激光扫描设备采集到的点云数据由直接进行持久化存储,调整为先存储到缓存空间中,当点云数据达到预设数量时,检测是否存在缺失至少一个空间维度的数据,若存在则对该数据进行修复,并将修复后的数据以及不需要修复的数据转存到持久化存储空间中进行持久化存储,从而在缓存空间中将采集到的初始点云数据划分为多个区域,通过每个区域中不存在缺失数据的点云数据修复该区域中存在缺失数据的点云数据,然后获取完整性更高的点云数据,将该完整性更高的点云数据进行持久化存储,进而提高激光扫描设备存储的点云数据的完整性。
[0057] 下面,以根据缓存空间中与该第一点云数据相关的数据对该第一点云数据进行数据修复为例,对本申请步骤S103中所说的如何对第一点云数据进行数据修复,得到修复后的第一点云数据进行详细说明。
[0058] 图2为本申请实施例提供的另一种点云数据处理方法的流程示意图。如图2所示,前述步骤S103可以包括:
[0059] S201、从缓存的点云数据中获取第一点云数据相关的N个第三点云数据。
[0060] 其中,N小于M。该第三点云数据为第二点云数据中的部分数据或者全部数据,即该第三点云数据为第二点云数据中与第一点云数据相关的第二点云数据。对于每个第一点云数据,与该第一点云数据相关的第三点云数据的数量N可以是相同的,即N为固定值,也可以是不同的,即针对该第一点云数据在M个点云数据中的位置不同,确定不同数量N的第三点云数据。
[0061] 可选的,如何确定该第三点云数据,可以参照任意一种现有的曲面拟合的用于拟合的基础数据的选择方式。例如可以预设的规则,或者,实际需求确定第二点云数据中的第三点云数据。该预设的规则例如可以包括第三点云数据与第一点云数据的距离、第三点云数据之间的几何关系(例如尽量不在一条直线上)、第三点云数据位于预设的区域范围内等一项或多项。
[0062] 示例性的,一种确定该第三点云数据的方式可以为:在长和宽均为30cm的矩形邻域内选择20个点云数据用于拟合,该邻域为第一点云数据的邻域,该邻域为M个缓存的点云数据组成的曲面区域;或者该邻域为固定形状的区域,该区域能够将该M个缓存的点云数据包括在内,该固定形状的区域例如可以是矩形区域、圆形区域等。选取的点云数据个数和邻域大小是根据激光扫描设备实际采样的数据确定的。
[0063] 可选地,确定该第三点云数据的方法与第一点云数据在缓存的点云数据中的几何位置有关。例如,该第一点云数据在缓存的点云数据的几何位置可以为缓存的点云数据所构成的曲面的边缘位置,也可以为非边缘位置。该边缘位置可以根据第三点云数据的数量N确定。例如,当N为20时,可以设定该第一点云数据和与其距离最近的曲面边缘之间存在至少3个其他点云数据,即该第一点云数据不处于曲面的边缘位置。
[0064] 可选的,当该第一点云数据为缓存的点云数据中非边缘位置的点云数据时,其示意图如图3所示,其中A为该第一点云数据的位置,该区域内还包括多个其他点云数据,如图中的黑点所示。在该实现方式下,可以从在该第一点云数据的周围所有方向上的点云数据中确定第三点云数据,从而修复第一点云数据。
[0065] 可选的,当该第一点云数据为缓存的点云数据中边缘位置的点云数据时,其示意图如图4所示,其中A为该第一点云数据的位置,该区域内还包括多个其他点云数据,如图中的黑点所示,其中A点右侧靠近该区域边缘,不存在其他点云数据。因此,在该实现方式下,可以从在该第一点云数据的周围其他方向上的点云数据中确定第三点云数据,从而修复第一点云数据。
[0066] S202、采用N个第三点云数据修复第一点云数据中缺失的数据,得到修复后的第一点云数据。
[0067] 其中,可以根据与该第一点云数据相关的数据中与该第一点云数据缺失的空间维度相同的空间维度的坐标数据,获取该第一点云数据缺失的空间维度数据。或者,可以根据与该第一点云数据相关的数据中的所有空间维度的坐标数据,获取该第一点云数据缺失的空间维度数据。
[0068] 一种可能的实现方式,根据与该第一点云数据相关的数据中的所有空间维度的坐标数据,获取该第一点云数据缺失的空间维度数据。
[0069] S2021、获取该第一点云数据的曲面拟合算子,该曲面拟合算子用于使N个第三点云数据的误差平方和最小。
[0070] 该曲面拟合算子用于根据N个第三点云数据拟合获取该第一点云数据,当该曲面拟合算子使N个第三点云数据的误差平方和最小时,拟合获得的第一点云数据的准确性最高。
[0071] 继续以点云数据表征为 为例,每个第三点云数据为 ,其中,
[0072] ,即i该每个第三点云数据的编号,一共有N个第三点云数据用于拟合获取该第一点云数据的缺失数据。在该情况下,以缺失的空间维度数据为竖轴的数据为例,该点云数据的拟合曲面方程可以为 。基于最小二乘法,该第一点云数据的曲面拟合算子 为:
[0073]                   (1)
[0074] 当使得该曲面拟合算子最小时,即使N个第三点云数据的误差平方和最小,拟合获得的第一点云数据的准确性最高。
[0075] 在曲面拟合过程中,还可以通过N个常数项 ,降低该曲面拟合算子 的值,以使该曲面拟合算子最小。在该实现方式下,该曲面拟合算子为:
[0076]              (2)
[0077] 为了便于计算,可以假设该点云数据的拟合曲面方程为线性方程,即假设:
[0078]                    (3)
[0079] 其中,(3)式为根据第一点云数据未缺失的横轴数据 、纵轴数据 计算获取缺失的竖轴数据 的函数,为(2)式中所有常数项 的和,用于表征该函数的常数项,为横轴数据 的系数, 为纵轴数据 的系数。本方法通过N个第三点云数据,拟合获取上述的值,从而获取计算缺失的竖轴数据 的函数。当上述 三个系数确定后,将该第一点云数据未缺失的横轴数据 、纵轴数据 代入(3)式中,即可获取该第一点云数据缺失的竖轴数据 。
[0080] 将(3)式带入到(1)式中,得到下述公式(4):
[0081]                    (4)
[0082] S2022、采用该N个第三点云数据,以及,该曲面拟合算子,获取该第一点云数据中缺失的数据。
[0083] 根据最小二乘法的定义可知,若要使得(4)式最小,则需要满足如下条件:
[0084]                       (5)
[0085] 将(4)式带入到(5)式中,则有
[0086]          (6)
[0087] 由(6)式变化,可得:
[0088]        (7)
[0089] 以矩阵形式表示(7)式,可得:
[0090]        (8)
[0091] 根据(8)式,可以获得该点云数据的拟合曲面方程(即(3)式)的系数 :
[0092]       (9)
[0093] 将根据(9)式获得的系数 代入到(3)式中,获得误差平方和最小的拟合曲面方程,即为该曲面拟合算子。然后将该第一点云数据中未缺失的数据代入到该曲面拟合算子中,获得该第一点云数据缺失的竖轴数据 。
[0094] 应了解,为方便理解,以上仅是以该第一点云数据缺失的空间维度数据为三维空间数据中竖轴的数据为例进行说明,该第一点云数据缺失的空间维度数据也可以是其他纬度空间中的任一轴的数据,本申请对此不做限制。
[0095] 该方法使用与该第一点云数据相关的N个第三点云数据,将第三点云数据中每个坐标轴上的数据进行拟合,当拟合的曲面拟合算子的误差平方和最小时,说明该次拟合得到的在所有轴上的数据的误差是最小的,此时得到的该第一点云数据的拟合曲面方程的函数最接近该第一点云数据各个轴上的数据之间的函数关系。因此,将该第一点云数据中未缺失的轴上的数据代入该第一点云数据的拟合曲面方程中,即可获取该第一点云数据缺失的轴上的修复数据。通过该方法,能够根据与该第一点云数据相关的N个第三点云数据对该第一点云数据的缺失数据进行修复,从而减少该激光扫描设备存储的点云数据中的缺失数据,提高该激光扫描设备存储的点云数据的完整性。
[0096] S2023、将第一点云数据中缺失的数据填充至该第一点云数据中,得到修复后的第一点云数据。
[0097] 另一种可能的实现方式,根据与该第一点云数据相关的数据中与该第一点云数据缺失的空间维度相同的空间维度的坐标数据,获取该第一点云数据缺失的空间维度数据。例如可以通过该第一点云数据周围的N个第三点云数据对应空间维度的坐标数据,通过取平均值的方式获取该第一点云数据中缺失的数据,得到修复后的第一点云数据。
[0098] 本申请实施例提供的方法,根据N个第三点云数据每个维度的数据拟合第一点云数据时的误差最小,从而使得拟合缺失数据时的误差最小,获得较为精准的第一点云数据中缺失的数据,完成对第一点云数据的修复,从而减少该激光扫描设备存储的点云数据中的缺失数据,提高该激光扫描设备存储的点云数据的完整性。
[0099] 下面对于激光扫描设备的处理芯片在将实时采集的点云数据缓存至缓存空间中之前,如何进行初始化进行详细说明。
[0100] 该激光扫描设备的初始化可以包括:响应于设备启动指令,执行设备初始化操作。和/或,响应于激光扫描指令,执行存储空间初始化操作。
[0101] 该设备启动指令可以是通过操作该激光扫描设备上的按钮、屏幕等发出的,该激光扫描设备的处理芯片通过总线获取该设备启动指令。该设备启动指令还可以是该激光扫描设备通过无线连接获取的,例如通过获取遥控器指令、获取用户终端设备发出的指令等。该激光扫描指令的获取方式也可以是通过以上所说的设备启动指令的获取方式,获取激光扫描指令的方式可以是与获取设备启动指令的方式相同的,也可以是不同的,本申请对此不做限制。
[0102] 其中,该设备初始化操作可以包括设备上电、初始化该设备的激光扫描配置、校正该设备的激光扫描配置等内容,该设备初始化可以参考现有的激光扫描设备的初始化操作,此处不再赘述。
[0103] 该存储空间初始化操作用于初始化存储采集到的点云数据的存储空间。该存储空间初始化操作包括下述至少一项:分区操作、数据写入指针和数据读取指针的创建操作。
[0104] 其中,分区操作用于创建缓存空间和持久化存储空间。该缓存空间用于存储该设备实时采集到的点云数据,可以通过在该设备的存储器、或者、服务器的存储器中选择预设大小的区域,清空该区域中的所有数据,创建该缓存空间,该缓存空间例如可以包括至少一个缓存文件。该持久化存储空间用于存储从该缓存空间中转存过来的点云数据,该转存过来的点云数据可以包括该设备实时采集到的点云数据,和修复后的点云数据,或者,在不存在缺失数据的点云数据时,该转存过来的点云数据仅包括该设备实时采集到的点云数据。该持久化存储空间为该存储器中与缓存空间不相交的存储空间,该持久化存储空间可以包括至少一个存储文件。
[0105] 对于创建缓存空间的分区操作:
[0106] 该分区操作还可以包括数据写入指针和数据读取指针的创建操作。该操作用于创建数据写入指针和数据读取指针。该数据写入指针用于向缓存空间写入点云数据,该数据读取指针用于从缓存空间中读取点云数据。在该设备采集到点云数据后,可以通过调用该数据写入指针,将该点云数据写入到该缓存空间中对应的缓存地址中。当该缓存空间中写入的点云数据达到预设数量M后,可以通过调用该数据读取指针,从该缓存空间中对应的缓存地址中读取点云数据,以用于检测这些点云数据中是否存在第一点云数据。
[0107] 对于创建持久化存储空间的分区操作:
[0108] 一种可能的实现方式,该激光扫描设备的存储空间中包括持久化存储空间,该分区操作通过在该持久化存储空间中划分出部分存储空间,清空该部分存储空间中的所有数据,将该部分存储空间划分为缓存空间,以缓存该激光扫描设备实时采集到的点云数据。或者,在该激光扫描设备的存储空间中除持久化存储空间之外的存储空间中,划分出部分存储空间,清空该部分存储空间中的所有数据,将该部分存储空间划分为缓存空间。
[0109] 另一种可能的实现方式,该激光扫描设备的存储空间尚未分区,该分区操作将该激光扫描设备的存储空间中的部分或者全部进行分区,并将这些存储空间划分为缓存空间和持久化存储空间。
[0110] 在上述的分区操作中,对于如何存储点云数据可以有以下实现方式:
[0111] 一种可能的实现方式,在该缓存空间中直接以该缓存空间中的地址存储点云数据,以及,在该持久化存储空间中直接以该持久化存储空间中的地址存储从该缓存空间中转存过来的点云数据。
[0112] 另一种可能的实现方式,在该缓存空间中和该持久化存储空间中创建用于存储数据的文件,以文件的方式存储对应的点云数据。其中,在该缓存空间创建缓存文件,该缓存文件用于缓存点云数据,可以在该缓存空间中创建至少一个缓存文件,将实时采集的点云数据存储入对应的缓存文件中,该存储文件大小可以是根据预设数量M确定的,该点云数据与缓存文件的对应关系可以是根据实际需求确定的,本申请对此不做限制。
[0113] 在该实现方式下,在该持久化存储空间创建存储文件,以及,存储目录。该存储文件包括:数据链表,以及,持久化存储空间中的存储文件的标识文件,该存储文件用于持久化存储点云数据,当一个存储文件被点云数据存储满后,将后续的点云数据存储到下一个存储文件中,然后通过该存储目录记录这些存储文件的顺序。该标识文件用于记录该存储文件存储点云数据的标志信息,该标志信息例如可以包括以下中的至少一项:存储文件的起始时间、存储文件的结束时间、存储文件的大小、存储文件状态、存储文件的起始编号等,其中,存储文件的状态可以包括:存储文件为空、存储文件已存满、正在写入存储文件等。
[0114] 示例性的,图5为本申请提供的一种持久化存储空间中存储文件的示意图。如图5所示,该持久化存储空间中包括P个存储文件,每个存储文件中包括Q个数据文件,以及,标识文件,P和Q为大于或等于1的整数。其中,每个存储文件中用于根据数据文件顺序持久化存储点云数据,每个存储文件的标识文件用于根据存储的点云数据更新标识文件中的标志信息,以表征该存储文件当前的情况。当一个存储文件存满后,将后续的点云数据存储到下一个存储文件中,然后通过该存储目录记录这些存储文件的顺序。
[0115] 以通过文件的方式存储对应的点云数据为例,对步骤S104中如何将修复后的第一点云数据,以及,第二点云数据存储至持久化存储空间中进行详细介绍。图6为本申请实施例提供的再一种点云数据处理方法的流程示意图。如图6所示,步骤S104可以包括:
[0116] S601、根据修复后的第一点云数据的数据量、第二点云数据的数据量,以及,第一存储文件的剩余存储量,确定是否在持久化存储空间中创建第二存储文件。
[0117] 若确定在持久化存储空间中创建第二存储文件,说明当前第一存储文件的剩余存储量已不足以存储此次的修复后的第一点云数据和第二点云数据,需新增存储文件来存储点云数据,执行步骤S602;若确定在持久化存储空间中无需创建第二存储文件,说明当前第一存储文件的剩余存储量可以存储此次的修复后的第一点云数据和第二点云数据。
[0118] 一种可能的实现方式,当修复后的第一点云数据的数据量和第二点云数据的数据量的和等于第一存储文件的剩余存储量,或者,修复后的第一点云数据的数据量和第二点云数据的数据量的和,与,第一存储文件的剩余存储量的差小于一个点云数据的数据量时,确定需要在持久化存储空间中创建第二存储文件。
[0119] 另一种可能的实现方式,第一存储文件设置有剩余存储量阈值,当修复后的第一点云数据的数据量和第二点云数据的数据量的和达到第一存储文件的剩余存储量阈值时,确定需要在持久化存储空间中创建第二存储文件。
[0120] S602、创建第二存储文件,并更新存储目录。
[0121] 根据创建第一存储文件相同的方式创建第二存储文件。在创建第二存储文件后,在存储目录中更新第二存储文件的信息,该信息例如可以包括第二存储文件的名字,第二存储文件的顺序等。该第二存储文件的顺序在第一存储文件之后。
[0122] S603、将修复后的第一点云数据、第二点云数据填充至第一存储文件中,并在第一存储文件填满后,将剩余点云数据存储至第二存储文件中。
[0123] S604、更新标识文件。
[0124] 该标识文件为第一存储文件的标识文件,以及,第二存储文件的标识文件。对于第一存储文件的标识文件,可以将该标识文件包括的标志信息中的文件状态由文件正在保存更新为文件已存满,还可以更新存储文件存储时间,存储文件数据大小等内容。对于第二存储文件的标识文件,可以将该标识文件包括的标志信息中的文件状态由文件为空更新为文件正在保存。
[0125] 可选的,图6所示的方法还可以包括为标识文件添加各存储文件的校验信息,从而验证存储文件中存储的点云数据的完整性。
[0126] 一种可能的实现方式,在激光扫描结束后添加校验信息。
[0127] 确定激光扫描是否结束,若激光扫描结束,则在存储文件的标识文件中添加该存储文件的校验信息,该校验信息用于验证存储文件中存储的点云数据的完整性。该校验信息例如可以包括该存储文件中存储的点云数据的数量,当该存储文件中实际存储的点云数据的数量与该存储文件中应该存储的点云数据的数量不同,则可以表征该存储文件中存储的点云数据不完整。该校验信息例如还可以是现有技术中其他能够实现对存储文件内容完整性进行校验的信息,本申请对此不做限制。
[0128] 另一种可能的实现方式,在存储过程中获取校验信息。在存储每个点云数据时,更新该校验信息,待改存储文件完成存储后,根据该最后一次更新的校验信息判断该存储文件存储的点云数据的完整性。
[0129] 在标识文件添加各存储文件的校验信息的情况下,将各存储文件存储的点云数据转存至服务端前,还可以根据该校验信息进行完整性验证,根据完整性验证结果确定是否将各存储文件存储的点云数据转存至服务端。
[0130] 首先,根据标识文件中的校验信息,校验各存储文件中存储的点云数据的完整性,该校验点云数据的完整性的方法与该校验信息的类别相关,可以参照前述校验信息的作用。若完整性验证通过,说明该存储文件中不存在缺失点云数据点的情况,将各存储文件存储的点云数据转存至服务端。可选的,可以通过存储介质(例如磁盘、硬盘、USB闪存盘等)将将各存储文件存储的点云数据转存至服务端;或者,可以通过无线网络将各存储文件存储的点云数据转存至服务端等。
[0131] 本申请实施例提供的方法,通过对存储器进行分区,获得缓存空间和持久化存储空间。首先将采集到的点云数据缓存入缓存空间中,然后当点云数据达到一定的数量M后,读取该缓存空间中的点云数据,并判断这些点云数据中是否存在需要修复的点云数据。若存在,则将修复后的点云数据与其他不需要修复的点云数据存储到持久化空间中进行存储。该持久化空间通过给用于存储点云数据的存储文件添加校验信息,进一步防止有丢失数据点的点云数据存入服务端,从而提高激光扫描设备存储的点云数据的完整性。
[0132] 下面,以激光扫描设备启动到完成点云数据的持久化存储的流程为例,对本申请提供的方法进行详细介绍。图7为本申请实施例提供的又一种点云数据处理方法的流程示意图。如图7所示,该方法可以包括:
[0133] S701、启动激光扫描设备,并进行该激光扫描设备的初始化。
[0134] 该启动激光扫描设备可以是通过用户终端设备启动的,也可以是通过该激光扫描设备的遥控器启动的,还可以是操作该激光扫描设备上的按钮、屏幕等启动的。该激光扫描设备的初始化包括设备初始化,以及,存储空间初始化。该存储空间初始化将该激光扫描设备的存储空间分区为缓存空间和持久化存储空间。
[0135] S702、进行扫描,将采集的点云数据缓存至缓存空间。
[0136] S703、判断缓存空间中缓存的点云数据是否达到数量M。
[0137] S704、进行数据预处理。
[0138] 该数据预处理可以包括点云数据的噪点数据去除。
[0139] S705、判断数据预处理后的点云数据是否存在第一点云数据,若存在则执行步骤S706;若不存在则将数据预处理后的点云数据存储至持久化存储空间中。
[0140] 该第一点云数据中缺失了至少一个空间维度的数据。
[0141] S706、获取与该第一点云数据相关的N个第三点云数据,通过该N个第三点云数据拟合获得该第一点云数据缺失的数据,得到修复后的第一点云数据。
[0142] 该通过与该第一点云数据相关的N个第三点云数据修复第一点云数据的方法与图2中的方法相同,此处不再赘述。
[0143] S707、将修复后的第一点云数据与第二点云数据存储至持久化存储空间中。
[0144] S708、更新持久化存储空间中的标识文件。
[0145] 该标识文件中包括该存储文件的校验信息,该校验信息用于对存储文件中存储的点云数据的完整性进行验证,以防该存储文件中缺少部分存储的点云数据。
[0146] 上述步骤S702‑S708可以重复进行,直至该激光扫描设备停止采集点云数据。
[0147] S709、停止扫描,关闭存储文件。
[0148] S710、验证标识文件中的校验信息,若完整性验证通过,将持久化存储空间中的存储文件转存至服务端;若完整性验证失败,发出完整性验证不通过提醒。
[0149] 通过该校验信息判断存储文件中存储的点云数据是否存在数据丢失,若不存在则通过完整性验证,若存在则无法通过完整性验证。
[0150] 完整性验证通过时,用户可以通过存储介质将持久化存储空间中的存储文件转存指服务端,也可以通过无线连接将持久化存储空间中的存储文件转存指服务端。
[0151] 完整性验证失败时,该激光扫描设备的处理芯片可以主动将该存储文件反馈至用户的终端设备,以提示用户对该存储文件进行人为处理;或者,该激光扫描设备的处理芯片可以将完整性验证失败的提示信息提供给用户,例如可以发送至用户终端设备,或者通过该激光扫描设备直接提示用户。该通过该激光扫描设备直接提示用户例如可以包括通过声音或语音提示用户、通过屏幕显示提示用户、或者通过指示灯提示用户等。
[0152] 图8为本申请实施例提供的一种点云数据处理装置的结构示意图。该点云数据处理装置例如可以是前述所说的激光扫描设备的处理芯片,该激光扫描设备的存储空间包括:缓存空间和持久化存储空间。如图8所示,该点云数据处理装置包括:第一保存模块11,处理模块12,第二保存模块13。在一种可能的实现方式下,还包括:转存模块14。
[0153] 第一保存模块11,用于在激光扫描时,将实时采集的点云数据缓存至该缓存空间中。
[0154] 处理模块12,用于当缓存的点云数据达到预设数量M时,确定缓存的点云数据中是否存在第一点云数据;该第一点云数据缺少至少一个空间维度的数据;该M为大于或等于2的整数。若存在该第一点云数据时,则对该第一点云数据进行数据修复,得到修复后的第一点云数据。
[0155] 第二保存模块13,用于将该修复后的第一点云数据,以及,第二点云数据存储至该持久化存储空间中,该第二点云数据为该缓存的点云数据中除该第一点云数据之外的点云数据。
[0156] 一种可能的实现方式,处理模块12,具体用于从缓存的点云数据中获取与该第一点云数据相关的N个第三点云数据,该N小于该M。采用该N个第三点云数据修复该第一点云数据中缺失的数据,得到该修复后的第一点云数据。
[0157] 在该实现方式下,处理模块12,具体用于获取该第一点云数据的曲面拟合算子,该曲面拟合算子用于使该N个第三点云数据的误差平方和最小。采用该N个第三点云数据,以及,该曲面拟合算子,获取该第一点云数据中缺失的数据。将该第一点云数据中缺失的数据填充至该第一点云数据中,得到该修复后的第一点云数据。
[0158] 上述任一种实现方式中,处理模块12,在第一保存模块11激光扫描时,将实时采集的点云数据缓存至该缓存空间中之前,还用于响应于设备启动指令,执行设备初始化操作;和/或,响应于激光扫描指令,执行存储空间初始化操作。其中,该存储空间初始化操作包括下述至少一项:分区操作,以创建该缓存空间和该持久化存储空间。数据写入指针和数据读取指针的创建操作,该数据写入指针用于向该缓存空间写入点云数据,该数据读取指针用于从该缓存空间中读取点云数据。
[0159] 其中,对于该分区操作,处理模块12还用于在该缓存空间创建缓存文件,以及,在该持久化存储空间创建存储文件,以及,存储目录。其中,该缓存文件用于缓存点云数据,该存储文件包括:数据链表,以及,该持久化存储空间中的存储文件的标识文件,该存储文件用于持久化存储点云数据,该存储目录用于记录存储文件的顺序。
[0160] 可选的,处理模块13,具体用于根据该修复后的第一点云数据的数据量、该第二点云数据的数据量,以及,第一存储文件的剩余存储量,确定是否在该持久化存储空间中创建第二存储文件。若确定在该持久化存储空间中创建第二存储文件,则创建该第二存储文件,并更新该存储目录。第二保存模块13,具体用于将该修复后的第一点云数据、该第二点云数据填充至该第一存储文件中,并在该第一存储文件填满后,将剩余点云数据存储至该第二存储文件中。可选的,处理模块12还用于更新该标识文件。
[0161] 在该实现方式下,处理模块12还用于,确定激光扫描是否结束。若激光扫描结束,则在该标识文件中添加各存储文件的校验信息。该校验信息用于验证存储文件中存储的点云数据的完整性。
[0162] 此外,处理模块12还用于,根据该标识文件中的校验信息,验证各存储文件中存储的点云数据的完整性。在完整性验证通过后,转存模块14,用于将各该存储文件存储的点云数据转存至服务端。
[0163] 本申请实施例提供的点云数据处理装置,可以执行上述方法实施例中的点云数据处理方法,其实现原理和技术效果类似,在此不再赘述。
[0164] 图9为本申请实施例提供的一种电子设备的结构示意图。其中,该电子设备用于执行前述所说的点云数据处理方法,例如可以是前述所说的激光扫描设备。如图9所示,该电子设备900可以包括:至少一个处理器901、存储器902、通信接口903。
[0165] 存储器902,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
[0166] 存储器902可能包含高速RAM存储器,也可能还包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。
[0167] 处理器901用于执行存储器902存储的计算机执行指令,以实现前述方法实施例所描述的方法。其中,处理器901可能是一个CPU,或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
[0168] 处理器901通过通信接口903可以与外部设备进行通信交互,外部设备例如可以是前述所说的服务端。在具体实现上,如果通信接口903、存储器902以及处理器901独立实现,则通信接口903、存储器902以及处理器901可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
[0169] 可选的,在具体实现上,如果通信接口903、存储器902和处理器901集成在一块芯片上实现,则通信接口903、存储器902和处理器901可以通过内部接口完成通信。
[0170] 应理解,当上述电子设备900为点云数据处理设备时,该电子设备900例如还可以包括用于实现自身其他功能的部件或器件,对此不再赘述。
[0171] 本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
[0172] 本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。计算设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得计算设备实施上述点云数据处理方法。
[0173] 最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。