一种用于海量的点云数据快速加载显示方法技术

技术编号:20487891 阅读:22 留言:0更新日期:2019-03-02 20:20
本发明专利技术公开一种用于海量的点云数据快速加载显示方法,包括:对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元;本发明专利技术方法引用了金字塔结构,八叉树结构和多线程实现对数据文件的预处理,结合当前缩放等级和所需缩放的等级对比,通过释放不需要显示的数据解决了传统加载方法耗时过长,内存不足的缺点,提高了程序加载海量点云数据的效率,进行快速地显示,降低数据加载所需的时间,提升了用户体验,达到了海量点云数据快速加载显示的效果。

A Fast Loading and Displaying Method for Massive Point Cloud Data

The invention discloses a fast loading and displaying method for massive point cloud data, which includes: pretreatment of data files, analysis and processing of original massive point cloud data files based on the principle of pyramid and octree implementation; calculation of the level after translation or scaling operation and comparison of the current scaling level, loading and displaying octree units that need to be updated, or The method of the present invention refers to pyramid structure, octree structure and multi-threading to realize the preprocessing of data files, combines the current scaling level with the required scaling level comparison, and solves the shortcomings of the traditional loading method, such as too long time consuming, insufficient memory, and improves the program addition by releasing the data that does not need to be displayed. The efficiency of loading massive point cloud data can be displayed quickly, which reduces the time needed for loading data, improves user experience and achieves the effect of fast loading and displaying massive point cloud data.

【技术实现步骤摘要】
一种用于海量的点云数据快速加载显示方法
本专利技术涉及数据处理领域,尤其涉及一种用于海量的点云数据快速加载显示方法。
技术介绍
正常的情况下,通过扫描设备(如三维激光扫描仪)对现实中的物体进行扫描后,会生成包含扫描物体的点云数据的文件(如txt格式),传统的加载方法是直接加载数据文件后在界面进行显示,这只能适用数据文件较小,点云数据量较小的情况,但如果数据文件包含的数据比较多(即数据量比较大,如扫描了上亿甚至数十亿的点数据),本身文件就占数十个G,这种情况下,加载这个文件将花费漫长的时间,而且以现有常用的计算机内存配置(通常8G到16G),未必能将文件中的数据完全读进内存当中,这意味着计算机内存耗尽,从而加载文件失败。再者,如果数据量过大,当软件进行某些处理后(如,用户对软件呈现的点云进行旋转或平移操作),软件进行刷新显示时间也变得漫长(通常的情况下,软件将出现卡顿,不能立即显示点云),所以传统的点云数据加载方法对于海量的点云数据文件并不友好。
技术实现思路
本专利技术针对现有技术中存在的问题,提供一种用于海量的点云数据快速加载显示方法,引用了金字塔结构,八叉树结构和多线程实现对数据文件的预处理,结合当前缩放等级和所需缩放的等级对比,通过释放不需要显示的数据解决了传统加载方法耗时过长,内存不足的缺点,提高了程序加载海量点云数据的效率,进行快速地显示,降低数据加载所需的时间,提升了用户体验,达到了海量点云数据快速加载显示的效果。为实现上述目的,本专利技术提供的技术方案如下:一种用于海量的点云数据快速加载显示方法,包括:S1,对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;S2,对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元。进一步地,所述步骤S1具体包括:S11,加载点云数据文件,读取一定数量的点数据,估算其点云的密度;S12,根据估算后的密度,估算其金字塔底层的缩放等级;S13,根据金字塔底层的缩放等级,计算该层的八叉树每个单元的大小;S14,读取点云数据文件中的每一个点数据,对每个点数据根据八叉树的生成原理划分到相应的单元中,保存到相应的单元文件中;S15,记录此时每个单元文件点数目,若存在某个单元文件的点数目大于设定的一个单元文件包含的最大点个数,而且估算的缩放等级还没有达到设定的最低缩放等级,则重复步骤S11;S16,根据当前层级计算其八叉树单元大小,从金字塔的下一层数据中,根据八叉树的原理,读取下一层中对应单元文件,对这些点数据进行采样抽稀处理,生成当前层新的单元文件;S17,构建金字塔到达顶层或者到达最高的缩放等级时结束,否则重复步骤S16。进一步地,所述步骤S2具体包括:S21,根据显示比例尺和显示范围计算其缩放等级及该缩放等级下能够在显示范围内的八叉树单元,读取相应预处理后的金字塔中的单元数据文件,进行显示;S22,根据用户进行平移或者缩放操作后的比例尺计算其缩放等级;S23,将步骤S22计算得出的等级与当前缩放等级比较,若相同,则根据当前的显示范围计算其需要更新的八叉树单元,若不同,则根据要加载的等级和显示范围,计算该缩放等级下能够在显示范围内的所有八叉树单元;S24,判断线程是否空闲,若是,则加载相应的金字塔单元数据文件,若否,则转到步骤S22;进一步地,所述步骤S12中估算底层缩放等级,当超过设定的最低缩放等级就让底层的缩放等级为设定最低缩放等级;进一步地,所述步骤S14中保存在单元的每个点数据信息包括该点数据的坐标值和颜色;进一步地,所述步骤S23中计算显示范围内的八叉树单元这一步骤还包括了确定需要加载的单元索引,根据缩放等级和单元索引加载相应的单元文件;进一步地,所述步骤S24中加载单元数据文件的同时还释放不在显示范围的内存单元数据,保持内存使用的稳定;进一步地,所述步骤S24中加载单元数据文件的加载方法为线程异步加载一种用于海量的点云数据快速加载显示方法,包括:S1,对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;S2,对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元;所述步骤S1具体包括:S11,加载点云数据文件,读取一定数量的点数据,估算其点云的密度;S12,根据估算后的密度,估算其金字塔底层的缩放等级;S13,根据金字塔底层的缩放等级,计算该层的八叉树每个单元的大小;S14,读取点云数据文件中的每一个点数据,对每个点数据根据八叉树的生成原理划分到相应的单元中,保存到相应的单元文件中;S15,记录此时每个单元文件点数目,若存在某个单元文件的点数目大于设定的一个单元文件包含的最大点个数,而且估算的缩放等级还没有达到设定的最低缩放等级,则重复步骤S11;S16,根据当前层级计算其八叉树单元大小,从金字塔的下一层数据中,根据八叉树的原理,读取下一层中对应单元文件,对这些点数据进行采样抽稀处理,生成当前层新的单元文件;S17,构建金字塔到达顶层或者到达最高的缩放等级时结束,否则重复步骤S16。所述步骤S2具体包括:S21,根据显示比例尺和显示范围计算其缩放等级及该缩放等级下能够在显示范围内的八叉树单元,读取相应预处理后的金字塔中的单元数据文件,进行显示;S22,根据用户进行平移或者缩放操作后的比例尺计算其缩放等级;S23,将步骤S22计算得出的等级与当前缩放等级比较,若相同,则根据当前的显示范围计算其需要更新的八叉树单元,若不同,则根据要加载的等级和显示范围,计算该缩放等级下能够在显示范围内的所有八叉树单元;S24,判断线程是否空闲,若是,则加载相应的金字塔单元数据文件,若否,则转到步骤S22;所述步骤S12中估算底层缩放等级,当超过设定的最低缩放等级就让底层的缩放等级为设定最低缩放等级;所述步骤S14中保存在单元的每个点数据信息包括该点数据的坐标值和颜色;所述步骤S23中计算显示范围内的八叉树单元这一步骤还包括了确定需要加载的单元索引,根据缩放等级和单元索引加载相应的单元文件;所述步骤S24中加载单元数据文件的同时还释放不在显示范围的内存单元数据,保持内存使用的稳定;所述步骤S24中加载单元数据文件的加载方法为线程异步加载。与现有技术相比,本专利技术引用了金字塔结构,八叉树结构和多线程实现对数据文件的预处理,结合当前缩放等级和所需缩放的等级对比,通过释放不需要显示的数据解决了传统加载方法耗时过长,内存不足的缺点,提高了程序加载海量点云数据的效率,进行快速地显示,降低数据加载所需的时间,提升了用户体验,达到了海量点云数据快速加载显示的效果。附图说明图1:为本专利技术快速加载显示方法的具体总步骤流程图;图2:为本专利技术快速加载显示方法的步骤S1的具体流程图;图3:为本专利技术快速加载显示方法的步骤S2的具体流程图;图4:为本专利技术方法实施例中金字塔层级目录示意图;图5:为本专利技术方法实施例中层级目录下的单元数据文件示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。参照图1,一种本文档来自技高网...

【技术保护点】
1.一种用于海量的点云数据快速加载显示方法,其特征在于,包括:S1,对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;S2,对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元。

【技术特征摘要】
1.一种用于海量的点云数据快速加载显示方法,其特征在于,包括:S1,对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;S2,对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元。2.根据权利要求1所述的快速加载显示方法,其特征在于,所述步骤S1具体包括:S11,加载点云数据文件,读取一定数量的点数据,估算其点云的密度;S12,根据估算后的密度,估算其金字塔底层的缩放等级;S13,根据金字塔底层的缩放等级,计算该层的八叉树每个单元的大小;S14,读取点云数据文件中的每一个点数据,对每个点数据根据八叉树的生成原理划分到相应的单元中,保存到相应的单元文件中;S15,记录此时每个单元文件点数目,若存在某个单元文件的点数目大于设定的一个单元文件包含的最大点个数,而且估算的缩放等级还没有达到设定的最低缩放等级,则重复步骤S11;S16,根据当前层级计算其八叉树单元大小,从金字塔的下一层数据中,根据八叉树的原理,读取下一层中对应单元文件,对这些点数据进行采样抽稀处理,生成当前层新的单元文件;S17,构建金字塔到达顶层或者到达最高的缩放等级时结束,否则重复步骤S16。3.根据权利要求1所述的快速加载显示方法,其特征在于,所述步骤S2具体包括:S21,根据显示比例尺和显示范围计算其缩放等级及该缩放等级下能够在显示范围内的八叉树单元,读取相应预处理后的金字塔中的单元数据文件,进行显示;S22,根据用户进行平移或者缩放操作后的比例尺计算其缩放等级;S23,将步骤S22计算得出的等级与当前缩放等级比较,若相同,则根据当前的显示范围计算其需要更新的八叉树单元,若不同,则根据要加载的等级和显示范围,计算该缩放等级下能够在显示范围内的所有八叉树单元;S24,判断线程是否空闲,若是,则加载相应的金字塔单元数据文件,若否,则转到步骤S22。4.根据权利要求2所述的快速加载显示方法,其特征在于,所述步骤S12中估算底层缩放等级,当超过设定的最低缩放等级就让底层的缩放等级为设定最低缩放等级。5.根据权利要求2所述的快速加载显示方法,其特征在于,所述步骤S14中保存在单元的每个点数据信息包括该点数据的坐标值和颜色。6.根据权利要求3所述的快速加载显示方法,其特征在于,所述步骤S23中计算显示范围内的八叉树单元这一步骤还包括了确定需要加载的单元索引,根据缩放等级和单元索引加载相应的单元文件。7.根据权利要求3所述的快速加载显示方法,其特征在于,所述步骤S24...

【专利技术属性】
技术研发人员:王江林文述生闫少霞肖浩威李宁周光海徐丹龙丁永祥庄所增潘伟峰张珑耀刘国光郝志刚陶超韦锦超闫志愿黄伟健
申请(专利权)人:广州南方卫星导航仪器有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1