一种海量点云数据的处理方法与流程

文档序号:18624400发布日期:2019-09-06 22:50阅读:2836来源:国知局
一种海量点云数据的处理方法与流程

本发明涉及点云数据处理领域,尤其涉及一种海量点云数据的存储、渲染和捕捉方法。



背景技术:

目前,随着大数据的到来,硬件设备的不断升级,目前通过测量仪器获得产品外观表面的点数据集合称之为点云,由于每一个扫描获得的点都包含三维坐标,还有可能含有颜色信息或反射强度信息,因此点云数据越来越庞大,随之应用行业也越来越广泛,因此点云显示和捕捉的效率也必须随之进行提升。

而现有的点云存储格式,如las格式,虽然支持了海量数据的存储,但是对于快速渲染必须额外建立空间索引才能提高显示效率,但是额外建立空间索引这种方法获取得到的点是离散的,导致降低了获取的速度,导致显示效率和捕捉效率得不到提高;而且建立空间索引的算法一般采取八叉树或kd-tree或者多种算法结合的方式进行,其建立空间索引的算法效率在渲染和捕捉的效率是不平衡的,因此对于快速渲染和捕捉没有一个很好的解决方案。



技术实现要素:

为了克服现有技术的不足,本发明的目的在于提供一种海量点云数据的数据处理方法,采用非平衡八叉树存储方式提高数据获取的速度,从而提高点云显示和捕捉的效率。

本发明的目的采用如下技术方案实现:

一种海量点云数据的处理方法,包括:

步骤s1:利用非平衡八叉树存储点云数据,将非平衡八叉树中的同一个叶子节点中的点集合连续存储在同一文件中;

步骤s2:设置的最大渲染点数,在步骤s1非平衡八叉树存储方法的基础上获知特定叶子节点中的点的个数,按比例抽稀点数据并对其进行渲染绘制;其中特定叶子节点为进入非平衡八叉树进行相交判断后所获得的相交的叶子节点;

步骤s3:设置捕捉射线或包围盒的精度,在步骤s1非平衡八叉树存储方法的基础上逐个对特定叶子节点的点组进行最近点判断,捕捉并返回第一个满足精度要求的点;其中特定叶子节点为进入非平衡八叉树进行相交判断后所获得的相交的叶子节点。

进一步地,所述步骤s1的存储方法包括:

步骤s1.1:将新的单个三维坐标点逐点插入非平衡八叉树中;

步骤s1.2:递归进入非平衡八叉树,根据非平衡八叉树的叶子节点空间范围找到步骤s1.1中每个插入坐标点所归属的叶子节点;

步骤s1.3:判断步骤s1.2中找到的叶子节点数量是否超过非平衡八叉树的最大叶子节点个数,若未超过,则执行步骤s1.4;若超过,则执行步骤s1.5;

步骤s1.4:将所有插入的坐标点分别写入对应的叶子节点的临时文件或者内存中进行存储,执行步骤s1.6;

步骤s1.5:分裂叶子节点并往下新增新的叶子节点,新的坐标点从当前节点继续往下传递并插入到新的叶子节点中;重新从步骤s1.2开始循环;

步骤s1.6:将非平衡八叉树中的同一个叶子节点所存储的点集合连续存储在同一文件中。

进一步地,所述步骤s1.1中新的点数据附带有属性特征,所述属性特征包括但不限于颜色、强度。

进一步地,所述步骤s1.6的存储方式为判断待存储的点集合的存储内存是否超出当前文件的剩余内存容量,若超过,则将点集合全部存储在下一个文件中;若未超过,则将该点集合存储在当前文件中,保持叶子里面的节点连续存放在一起。

进一步地,所述步骤s2的渲染方法包括:

步骤s2.1:根据不同硬件设备性能,设置最大渲染点数;

步骤s2.2:进入非平衡八叉树进行相交判断,获取相交的叶子节点;

步骤s2.3:按照步骤s1非平衡八叉树的连续存储规律返回相交的叶子节点中点组的首地址,从中获取当前叶子节点的点的个数;

步骤s2.4:将点的个数再结合根据步骤s2.1设置的最大渲染点数按比例抽稀点数据,并对其进行绘制。

进一步地,所述步骤s2.4中抽稀点数据后对点数据进行属性过滤。

进一步地,所述属性过滤包括但不限于高程过滤、强度属性过滤、颜色属性过滤。

进一步地,所述步骤s3中的捕捉方法包括:

步骤s3.1:传入捕捉的射线或者包围盒,设置精度;

步骤s3.2:与内存映射的非平衡八叉树进行相交运算,获得相交的叶子节点;

步骤s3.3:按照步骤s1非平衡八叉树的连续存储规律逐个对叶子节点的点组进行最近点判断,直至捕捉到第一个满足精度要求的最近点,并将其进行返回。

相比现有技术,本发明的有益效果在于:

利用非平衡八叉树算法和内存映射方式处理点云数据,对点云数据进行连续存储,减少叶子节点个数和存储的空间,提高查找速度;并在非平衡八叉树存储的基础上对点云数据进行渲染和捕捉,可进一步提升数据获取的速度,从而提高点云显示和捕捉的效率。

附图说明

图1为本发明一种海量点云数据的存储方法的流程示意图;

图2为本发明一种海量点云数据的渲染方法的流程示意图;

图3为本发明一种海量点云数据的捕捉方法的流程示意图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

实施例一

一种海量点云数据的存储方法,如图1所示,包括:

步骤s1.1:将新的单个三维坐标点逐点插入非平衡八叉树中;其中新的三维坐标点除了具有几何位置以外,还包括颜色信息、强度信息,其中颜色信息是通过相机获取彩色影像,然后将对应位置的像素的颜色信息赋予点云中对应的点,而强度信息的获取是激光扫描仪接收装饰采集到的回波强度,强度信息与目标的表面材质、粗糙度、入射角方向以及仪器的发生能量、激光波长有关。

步骤s1.2:递归进入非平衡八叉树,根据非平衡八叉树的叶子节点空间范围找到步骤s1.1中每个插入坐标点所归属的叶子节点;

所述非平衡八叉树类似与八叉树,其叶子节点个数可以为零到八任一个,非平衡八叉树减少叶子节点个数和存储的空间,方便快速查找,可明显提高查找速度。

步骤s1.3:判断步骤s1.2中找到的叶子节点数量是否超过非平衡八叉树的最大叶子节点个数,若未超过,则执行步骤s1.4;若超过,则执行步骤s1.5;

步骤s1.4:将所有插入的坐标点分别写入对应的叶子节点的临时文件或者内存中进行存储,可平衡内存与速度,其后执行步骤s1.6;

步骤s1.5:分裂叶子节点并往下新增新的叶子节点,新的坐标点从当前节点继续往下传递并插入到新的叶子节点中;重新从步骤s1.2开始循环;

步骤s1.6:将非平衡八叉树中的同一个叶子节点所存储的点集合连续存储在同一文件中。其中存储方式为判断待存储的点集合的存储内存是否超出当前文件的剩余内存容量,若超过,则将点集合全部存储在下一个文件中;若未超过,则将该点集合存储在当前文件中。目的是将同一个叶子节点所存储的点集合放在一起,方便后面写入到同一个文件中;采用本实施例的方式将叶子节点的点集合连续存储可便于数据的快速读取,从而提高后续渲染和捕捉的效率。

实施例二

一种海量点云数据的渲染方法,是在实施例一采用非平衡八叉树存储点云数据的结构基础上进行渲染处理,如图2所示,所述渲染方法包括:

步骤s2.1:根据不同硬件设备性能,设置最大渲染点数x;由于不同硬件设备的性能不同,因此设置不同的值,达到快速浏览、不卡顿的同时,尽量显示更多的点以达到渲染出最好的效果,从而提高渲染效率。

步骤s2.2:进入非平衡八叉树进行相交判断,获取相交的叶子节点;

步骤s2.3:按照步骤s1非平衡八叉树的连续存储规律返回相交的叶子节点中点组的首地址,从中获取当前叶子节点的点的个数;

由于本实施例的渲染前提是采用实施例一中的采用非平衡八叉树的连续存储方式对数据进行存储处理,按照连续存储的规律可找到叶子节点存储的点的个数和点组的首地址,所述点组的首地址是叶子节点第一个点的位置,根据连续存储的规律可从第一个点的位置延伸到当前叶子节点的所有点,从而获知该叶子节点所有点集合,进而得到该叶子节点的所有点的个数y。

步骤s2.4:将点的个数再结合根据步骤s2.1设置的最大渲染点数按比例抽稀点数据,并对其进行绘制。

所述抽稀比例的公式为叶子节点的所有点的个数y/试剂渲染需要抽稀的点数x=z,根据抽稀比例即可按照z的间距抽取x个点进行渲染,从而提高显示的性能和显示效果。利用点云抽稀,按百分比抽样,对海量点云数据进行简化,使得数据处理量变小,从而加快数据处理时间。

在所述步骤s2.4中抽稀点数据后对点数据进行属性过滤,所述属性过滤包括但不限于高程过滤、强度属性过滤、颜色属性过滤,从而提高显示效果。

实施例三

一种海量点云数据的捕捉方法,是在实施例一采用非平衡八叉树存储点云数据的结构基础上进行捕捉处理,在快速读取数据的基础上可进一步提高捕捉速度,如图3所示,所述捕捉方法包括:

步骤s3.1:传入捕捉的射线或者包围盒,设置精度;

步骤s3.2:与内存映射的非平衡八叉树进行相交运算,获得相交的叶子节点;

步骤s3.3:按照步骤s1非平衡八叉树的连续存储规律逐个对叶子节点的点组进行最近点判断,直至捕捉到第一个满足精度要求的最近点,并将其进行返回。

最近点判断是对单个叶子节点的最近点进行判断,若判断最近点不满足精度要求,则继续进行下一个叶子节点中的最近点计算,只要遇到一个满足精度要求的节点,则代表捕捉到了,即可返回第一个满足精度要求的节点,完成捕捉操作。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1