CN109410118A - 一种用于海量的点云数据快速加载显示方法 - Google Patents
一种用于海量的点云数据快速加载显示方法 Download PDFInfo
- Publication number
- CN109410118A CN109410118A CN201811063332.9A CN201811063332A CN109410118A CN 109410118 A CN109410118 A CN 109410118A CN 201811063332 A CN201811063332 A CN 201811063332A CN 109410118 A CN109410118 A CN 109410118A
- Authority
- CN
- China
- Prior art keywords
- unit
- file
- octree
- grade
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013519 translation Methods 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims abstract description 6
- 241001269238 Data Species 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 7
- 230000006641 stabilisation Effects 0.000 claims description 7
- 238000011105 stabilization Methods 0.000 claims description 7
- 238000007599 discharging Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 5
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Digital Computer Display Output (AREA)
Abstract
本发明公开一种用于海量的点云数据快速加载显示方法,包括:对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元;本发明方法引用了金字塔结构,八叉树结构和多线程实现对数据文件的预处理,结合当前缩放等级和所需缩放的等级对比,通过释放不需要显示的数据解决了传统加载方法耗时过长,内存不足的缺点,提高了程序加载海量点云数据的效率,进行快速地显示,降低数据加载所需的时间,提升了用户体验,达到了海量点云数据快速加载显示的效果。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种用于海量的点云数据快速加载显示方法。
背景技术
正常的情况下,通过扫描设备(如三维激光扫描仪)对现实中的物体进行扫描后,会生成包含扫描物体的点云数据的文件(如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,一种用于海量的点云数据快速加载显示方法,包括预处理方法和加载显示方法,预处理方法:对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;加载显示方法:对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元。
参照图2,为实施例中预处理方法的具体流程步骤:
1、从点云数据文件中读取一定数量N(数量N可由软件自行设置)的点数据,根据这些数据估算其点云密度,其计算公式为:
Density=N÷Volume
Volume=(maxX-minX)×(maxY-minY)×(maxZ-minZ)
其中maxX,minX,maxY,minY,maxZ,minZ分别为点坐标的最大值和最小值。
2、根据估算后的密度Density,估算属于这个点云的金字塔底层的缩放等级,超过设定的最低缩放等级就让底层的缩放等级为设定最低缩放等级。根据金字塔底层的缩放等级Level,计算该层的八叉树每个单元的大小CellSize,其公式为:
CellSize=2Level
当DECOMPOSE_NUM<CellSize3×Density时,为估算的缩放等级,其DECOMPOSE_NUM为设定的一个单元文件包含的最大点个数。
3、根据计算后得到的金字塔底层八叉树单元大小CellSize,加载原来海量点云数据文件,读取文件中的每一个点,根据该点的坐标值,计算其应该属于金字塔底层的哪一个八叉树单元中,将该点的坐标值,颜色等信息保存到对应的单元文件中。记录此时每个单元文件点数目,若存在某个单元文件的点数目大于设定的一个单元文件包含的最大点个数DECOMPOSE_NUM而且估算的缩放等级还没有达到设定的最低缩放等级,则重复步骤1,读取这个大于设定值的单元文件进行重新估算。
4、根据当前层级(如金字塔底层的上一层),计算其八叉树单元大小,从金字塔的下一层(如金字塔底层)数据中,根据八叉树的原理,读取下一层中对应单元文件,对这些点数据进行采样抽稀处理(如使用随机采样一定数目),生成当前层新的单元文件。
5、金字塔的构建到达顶层或者到达最高的缩放等级时结束,否则重复步骤4。
每一个原始的海量点云数据文件只需处理一次,预处理完后将得到相应的金字塔信息及其保存的相应单元点云数据文件,其中文件的储存方式定义如下:
a)对原始的点云数据文件生成一个为该点云名称的文件夹,名称文件夹内包含若干个层级文件夹,每个层级文件夹的命名对应着金字塔的一个缩放等级Level,如图4所示,名为9的层级文件夹意味着是缩放等级Level=9。缩放等级的最小值为Levelmin=-32,最大值为Levelmax=32,每个缩放等级对应着一个显示比例尺,同时也对应着八叉树单元的大小CellSize,其计算公式为:
CellSize=2Level
b)单元文件的命名方式为X_Y_Z,并且X,Y,Z的值就是单元文件的索引值,如图5所示。根据点云数据中的每个坐标点P以及缩放等级Level,就可以计算该点所要保存(或所在)的单元文件,其计算公式为:
X=xp÷CellSize
Y=yp÷CellSize
Z=zp÷CellSize
其中xp代表坐标点的x方向坐标值,yp代表坐标点的y方向坐标值,zp代表坐标点的z方向坐标值
八叉树单元文件划分时,并不需要使用传统的计算方式:先进行计算原始点云数据文件的最大包裹范围,然后根据最大包裹范围进行划分。而是直接根据坐标点的数值进行划分,这样避免了传统方法中由于每个点云文件的八叉树单元代表的数据精度不一致只能加载一个点云文件的缺点。
每个单元文件为加载显示提供相应数据,其中通过数据的采样抽稀手段来减少每个单元点云数据文件的数据量,并且每个单元文件的数据量维持在设定的数值内(最大点个数DECOMPOSE_NUM),以此提升加载速度和显示速度以及内存使用的稳定。高缩放等级的数据是由低等级的数据抽稀而来,也就是说低缩放等级的拥有更详细的数据。
预处理的目的是利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行划分处理,为快速加载实时显示提供必要的技术支持,避免传统加载方式因数据量过大而加载速度慢,耗时漫长,不能实时更新和内存不足的问题。
参照图3,为实施例中加载显示方法的具体流程步骤:
1、根据当前软件的比例尺(即分辨率),计算其最近的缩放等级Level,其计算公式:
Level=log2Size,其中Size为当前屏幕显示的实际数据范围大小。
然后需要确定应该加载该层的金字塔单元数据,确定的条件是结合当前软件的显示范围,计算该层金字塔的八叉树单元的数据范围是在当前显示范围内,确定需要加载的单元索引,根据计算后的缩放等级Level和单元索引(X,Y,Z),加载相应缩放等级文件夹下的单元文件X_Y_Z的点云数据。
2、用户对软件进行缩放操作,即更新了比例尺,计算其最近的缩放等级,如果缩放等级改变了,确定应该加载的层级的金字塔单元数据,结合当前软件的显示范围,计算该层金字塔的八叉树单元的数据范围是在当前显示范围内,确定需要加载的单元索引,如果线程处于空闲状态,则根据缩放等级和单元索引,加载相应的单元文件,同时释放之前上次用于加载显示的相关内存数据,保持内存使用的稳定。
3、用户对软件进行平移操作,即没要更新比例尺,可能改变了当前软件的显示范围,那么计算该层金字塔的八叉树单元的数据范围是在当前显示范围内,确定需要加载的单元索引,以及不在显示范围的内存中单元数据,如果线程处于空闲状态,则根据缩放等级和单元索引,加载相应的单元文件,同时释放不在显示范围的内存中单元数据,保持内存使用的稳定。
其中步骤2和步骤3中,判断单元文件是否能当前显示范围内的方法为:
利用点P到平面的距离进行判断,其计算公式:
其中B平面上任意一点,为平面的法向量
具体判断如下:
读取单元文件中的一个点P,分别计算点P与三维投影视景体中的6个平面的距离d,若存在任意一个满足d<0或者d<CellSize,则单元文件能够在当前显示范围内。
根据常规的使用需求(软件都会有通过缩放操作,更新显示的比例尺即分辨率的功能),当显示的比例尺比较大的时候,如传统的方法把全部的数据一次性加载到内存进行显示,这样做是没有必要的,因为物体的许多细节部分不能真正显示出来,只是显示出物体的大概轮廓,基于这个原因,加载经过数据采用抽稀后的数据也能满足条件,显示出物体的大概轮廓,而且还能实现快速加载和实时显示。
当用户进行缩放操作,更改了显示的比例尺,加载显示只需计算与显示比例尺相合适的金字塔缩放等级Level,其计算公式:
Level=log2Size,其中Size为当前屏幕显示的实际数据范围大小。
再根据当前显示的实际范围Size,计算该缩放等级下能够在显示范围内的所有数据单元,其原理是利用点P到平面的距离进行判断,其计算公式:
其中B平面上任意一点,为平面的法向量;
具体判断如下:
读取单元文件中的一个点P,分别计算点P与三维投影视景体中的6个平面的距离d,若存在任意一个满足d<0或者d<CellSize,则单元文件能够在当前显示范围内,需进行加载。
然后通过线程的方法,异步加载计算得到的单元数据文件到内存上和删除上一次加载过的已经不合适的内存数据,这样就能实现快速加载,实时显示而且不耗过多内存。
当用户进行平移操作,由于没有更改显示的比例尺,只是显示的范围有所改变,所以,只需计算能够在显示范围内的那些新增单元和已经在显示范围外的删除单元,同样利用线程,异步加载新增单元数据文件和删除对应的删除单元的内存数据。
本发明旨在提高程序加载海量点云数据的效率,进行快速地显示,提升用户体验,解决传统数据加载方式的缺陷。而且经过程序预处理之后的多个点云文件,能够同时在当前缩放等级下进行实时显示,也就是说即使原始点云文件的数据单位精度不一样也能同时在程序中进行实时显示,作用类似于地图显示的方式,避免只能单一加载一个点云文件进行显示。点云数据量巨大,意味着扫描的物体精度较高或者扫描的物体比较庞大(如一栋建筑物),加载这个文件后,对这个点云进行整体显示时,其实物体的许多细节并不能真正呈现出来(这是因为三维的数据进行二维的屏幕投影,在较小的比列尺即分辨率下,数据呈现在屏幕的像素位置将会重复),只有通过进行放大操作更多的细节才能呈现出来,也就是通过缩放操作(更改比例尺即分辨率),对点云进行整体和局部细节的切换。基于这个原因,并没有必要将全部的点云数据一次性加载到内存当中。
本发明采用金字塔分层技术对海量的点云数据文件进行预先处理,而金字塔则采用八叉树技术进行构建,与传统的八叉树生成方式不一样的地方:并不需要一开始计算整个点云的数据包裹范围后再进行八叉树单元划分这一传统的方式,而是根据实际的数据点的单位进行八叉树的单元划分,这样避免了传统方法中由于每个点云文件的八叉树单元代表的数据精度不一致只能加载一个点云文件的缺点。然后根据设置的缩放等级(每一个等级就是金字塔的一层,一层也就代表了固定的比列尺即分辨率)对点云数据进行抽稀处理,这意味着金字塔的顶层比列尺较大,数据量相对较小,是整体的描述。越靠近金字塔底层,数据量越大,所包含的细节越多。
采用金字塔技术处理后的加载方法,能够快速地呈现点云数据,程序只需加载对应比例尺下的点云数据文件,随着用户进行缩放等操作,释放之前的数据,加载对应比例尺的点云数据文件,这样能够实时的显示点云,有效解决传统加载方法的耗时过长,内存不足等缺点。
综上所述,本发明提供一种用于海量的点云数据快速加载显示方法,具有以下优点:引用了金字塔结构,八叉树结构和多线程实现对数据文件的预处理,结合当前缩放等级和所需缩放的等级对比,通过释放不需要显示的数据解决了传统加载方法耗时过长,内存不足的缺点,提高了程序加载海量点云数据的效率,进行快速地显示,降低数据加载所需的时间,提升了用户体验,达到了海量点云数据快速加载显示的效果。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明的精神和原则内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
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中加载单元数据文件的同时还释放不在显示范围的内存单元数据,保持内存使用的稳定。
8.根据权利要求3所述的快速加载显示方法,其特征在于,所述步骤S24中加载单元数据文件的加载方法为线程异步加载。
9.一种用于海量的点云数据快速加载显示方法,其特征在于,包括:
S1,对数据文件进行预处理,利用金字塔和八叉树实现原理,对原始具有海量点云数据文件进行分析处理;
S2,对进行平移或缩放操作后的等级进行计算并对比当前缩放等级,加载显示需要更新的八叉树单元或者该等级下能够在显示范围内的所有八叉树单元;
所述步骤S1具体包括:
S11,加载点云数据文件,读取一定数量的点数据,估算其点云的密度;
S12,根据估算后的密度,估算其金字塔底层的缩放等级;
S13,根据金字塔底层的缩放等级,计算该层的八叉树每个单元的大小;
S14,读取点云数据文件中的每一个点数据,对每个点数据根据八叉树的生成原理划分到相应的单元中,保存到相应的单元文件中;
S15,记录此时每个单元文件点数目,若存在某个单元文件的点数目大于设定的一个单元文件包含的最大点个数,而且估算的缩放等级还没有达到设定的最低缩放等级,则重复步骤S11;
S16,根据当前层级计算其八叉树单元大小,从金字塔的下一层数据中,根据八叉树的原理,读取下一层中对应单元文件,对这些点数据进行采样抽稀处理,生成当前层新的单元文件;
S17,构建金字塔到达顶层或者到达最高的缩放等级时结束,否则重复步骤S16;
所述步骤S2具体包括:
S21,根据显示比例尺和显示范围计算其缩放等级及该缩放等级下能够在显示范围内的八叉树单元,读取相应预处理后的金字塔中的单元数据文件,进行显示;
S22,根据用户进行平移或者缩放操作后的比例尺计算其缩放等级;
S23,将步骤S22计算得出的等级与当前缩放等级比较,若相同,则根据当前的显示范围计算其需要更新的八叉树单元,若不同,则根据要加载的等级和显示范围,计算该缩放等级下能够在显示范围内的所有八叉树单元;
S24,判断线程是否空闲,若是,则加载相应的金字塔单元数据文件,若否,则转到步骤S22;
所述步骤S12中估算底层缩放等级,当超过设定的最低缩放等级就让底层的缩放等级为设定最低缩放等级;
所述步骤S14中保存在单元的每个点数据信息包括该点数据的坐标值和颜色;
所述步骤S23中计算显示范围内的八叉树单元这一步骤还包括了确定需要加载的单元索引,根据缩放等级和单元索引加载相应的单元文件;
所述步骤S24中加载单元数据文件的同时还释放不在显示范围的内存单元数据,保持内存使用的稳定;
所述步骤S24中加载单元数据文件的加载方法为线程异步加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811063332.9A CN109410118B (zh) | 2018-09-12 | 2018-09-12 | 一种用于海量的点云数据快速加载显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811063332.9A CN109410118B (zh) | 2018-09-12 | 2018-09-12 | 一种用于海量的点云数据快速加载显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109410118A true CN109410118A (zh) | 2019-03-01 |
CN109410118B CN109410118B (zh) | 2023-06-13 |
Family
ID=65464053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811063332.9A Active CN109410118B (zh) | 2018-09-12 | 2018-09-12 | 一种用于海量的点云数据快速加载显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109410118B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297924A (zh) * | 2019-06-26 | 2019-10-01 | 深圳飞马机器人科技有限公司 | 点云数据的处理及渲染方法、装置、设备及存储介质 |
CN111080518A (zh) * | 2019-11-27 | 2020-04-28 | 贝壳技术有限公司 | 点云图像的拼接方法、装置及存储介质 |
CN111858827A (zh) * | 2020-07-31 | 2020-10-30 | 成都新潮传媒集团有限公司 | 一种地图点位抽稀展示方法、装置及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999187A (en) * | 1996-06-28 | 1999-12-07 | Resolution Technologies, Inc. | Fly-through computer aided design method and apparatus |
CN101615191A (zh) * | 2009-07-28 | 2009-12-30 | 武汉大学 | 海量点云数据的存储与实时可视化方法 |
US20150006117A1 (en) * | 2013-07-01 | 2015-01-01 | Here Global B.V. | Learning Synthetic Models for Roof Style Classification Using Point Clouds |
CN104750854A (zh) * | 2015-04-16 | 2015-07-01 | 武汉海达数云技术有限公司 | 一种海量三维激光点云压缩存储及快速加载显示方法 |
-
2018
- 2018-09-12 CN CN201811063332.9A patent/CN109410118B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999187A (en) * | 1996-06-28 | 1999-12-07 | Resolution Technologies, Inc. | Fly-through computer aided design method and apparatus |
CN101615191A (zh) * | 2009-07-28 | 2009-12-30 | 武汉大学 | 海量点云数据的存储与实时可视化方法 |
US20150006117A1 (en) * | 2013-07-01 | 2015-01-01 | Here Global B.V. | Learning Synthetic Models for Roof Style Classification Using Point Clouds |
CN104750854A (zh) * | 2015-04-16 | 2015-07-01 | 武汉海达数云技术有限公司 | 一种海量三维激光点云压缩存储及快速加载显示方法 |
Non-Patent Citations (1)
Title |
---|
梁钰立: "海量车载点云数据组织与快速可视化技术研究", 《首都师范大学硕士论文集》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297924A (zh) * | 2019-06-26 | 2019-10-01 | 深圳飞马机器人科技有限公司 | 点云数据的处理及渲染方法、装置、设备及存储介质 |
CN111080518A (zh) * | 2019-11-27 | 2020-04-28 | 贝壳技术有限公司 | 点云图像的拼接方法、装置及存储介质 |
CN111080518B (zh) * | 2019-11-27 | 2023-10-20 | 贝壳技术有限公司 | 点云图像的拼接方法、装置及存储介质 |
CN111858827A (zh) * | 2020-07-31 | 2020-10-30 | 成都新潮传媒集团有限公司 | 一种地图点位抽稀展示方法、装置及计算机设备 |
CN111858827B (zh) * | 2020-07-31 | 2023-11-14 | 成都新潮传媒集团有限公司 | 一种地图点位抽稀展示方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109410118B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6873329B2 (en) | System and method for caching and rendering images | |
CN109410118A (zh) | 一种用于海量的点云数据快速加载显示方法 | |
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
US20120268465A1 (en) | Image file generation device, image processing device, image file generation method, image processing method, and data structure for image files | |
CN106843756A (zh) | 基于页面分类的内存页面回收方法及系统 | |
US8898208B2 (en) | Method and system for processing images | |
CN105956183A (zh) | 一种分布式数据库中海量小文件的多级优化存储方法及系统 | |
CN106155934B (zh) | 一种云环境下基于重复数据的缓存方法 | |
US8577858B2 (en) | Data retrieval apparatus, data retrieval method, and program | |
JPS62145369A (ja) | 図形デ−タの検索方法 | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
CN103645873B (zh) | 一种在趋势曲线系统中实现高效数据缓存的方法 | |
KR20170065085A (ko) | 시스템 리소스 관리를 위한 방법 및 장치 | |
CN114661839A (zh) | 一种基于瓦片的轨迹地图的展示方法、装置、介质和设备 | |
US20090157624A1 (en) | System and method for indexing high-dimensional data in cluster system | |
US20090249205A1 (en) | Display position determination apparatus and method thereof | |
CN103605743A (zh) | 一种移动终端空文件夹删除的方法及装置 | |
CN111581233A (zh) | 电网设备矢量图形数据的实时切片方法及存储介质 | |
CN102096563B (zh) | 一种打印控制器客户端预览作业的方法与系统 | |
CN112363986B (zh) | 一种针对文件缓存的时间优化方法 | |
CN112529984A (zh) | 绘制多边形的方法、装置、电子设备及存储介质 | |
CN112669426A (zh) | 基于生成对抗网络的三维地理信息模型渲染方法及系统 | |
CN111507885A (zh) | 一种基于最佳缓存空间计算的混合图元渲染方法及系统 | |
CN117078825B (zh) | 一种点云数据线上渲染修改方法、系统、设备及介质 | |
CN115878920B (zh) | 基于WebGL的动态高性能批量图片显示方法、系统及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |