CN116109752B - 一种点云实时采集结构化及渲染方法 - Google Patents
一种点云实时采集结构化及渲染方法 Download PDFInfo
- Publication number
- CN116109752B CN116109752B CN202310383173.5A CN202310383173A CN116109752B CN 116109752 B CN116109752 B CN 116109752B CN 202310383173 A CN202310383173 A CN 202310383173A CN 116109752 B CN116109752 B CN 116109752B
- Authority
- CN
- China
- Prior art keywords
- octree
- point cloud
- node
- frame
- rendering
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000009877 rendering Methods 0.000 title claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000005070 sampling Methods 0.000 claims description 25
- 238000012360 testing method Methods 0.000 claims description 16
- 230000000694 effects Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明涉及点云渲染技术领域,尤其涉及点云实时采集结构化方法,包括逐帧获取点云数据;确定首帧对应的八叉树;在当前帧为所述首帧以外的后续帧的情况下,根据所述当前帧对应的包围盒、所述当前帧的前一帧对应的八叉树,更新所述八叉树,更新后的八叉树的根节点边长为2n×L,其中n为大于等于0的整数,L为所述当前帧的前一帧对应的八叉树的边长;将所述当前帧的点云数据分配到更新后的八叉树。能够更好地适应大规模实时采集的点云数据结构化处理,加速点云处理过程,解决普通硬件设备处理大规模、海量点云数据的性能和资源限制问题。
Description
技术领域
本发明涉及点云渲染技术领域,尤其涉及一种点云实时采集结构化及渲染方法。
背景技术
点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为点云,点云渲染后可以用来描述3D场景。
通过雷达、ToF(Time of Flight,飞行时)、LiDAR(激光雷达)等手段可以直接采集环境场景的点云数据,通过RGB摄像头捕获图像进行特征点三角化也可以计算获取场景的点云信息。通常而言,这类点云中三维点数量非常多,数据量非常大,在特定硬件条件下,实时完整地显示这些点云需要精心设计三维点的存储格式、显示渲染层级、数据加载模式等等。
发明内容
本发明提供了一种点云实时采集结构化方法及实时采集渲染方法,旨在解决现有技术中对于大规模实时采集的点云进行渲染的问题。
为解决上述技术问题,本发明的第一方案提供一种点云实时采集结构化方法,包括:
逐帧获取点云数据;
确定首帧对应的八叉树;
在当前帧为所述首帧以外的后续帧的情况下,根据所述当前帧对应的包围盒、所述当前帧的前一帧对应的八叉树,更新所述八叉树,更新后的八叉树的根节点边长为2n×L,其中n为大于等于0的整数,L为所述当前帧的前一帧对应的八叉树的边长;
将所述当前帧的点云数据分配到更新后的八叉树。
进一步,根据所述当前帧的包围盒、所述当前帧的前一帧对应的八叉树,更新所述八叉树,包括:
对所述包围盒与所述八叉树进行相交测试,得到测试结果;
根据所述测试结果更新所述八叉树。
进一步,根据所述测试结果更新所述八叉树,包括:
所述包围盒在至少一个维度上具有所述八叉树未包括的部分的情况下,对所述八叉树进行扩展,且所述八叉树的扩展方向包括所述维度方向。
进一步,根据所述测试结果更新所述八叉树,包括:
所述包围盒在所有维度上全部被所述八叉树包括的情况下,更新后的八叉树与前一帧的八叉树相同。
进一步,确定首帧对应的八叉树,包括:
根据首帧对应的包围盒以及预设大小的最细叶节点确定八叉树的深度,确定八叉树根节点,建立八叉树结构。
进一步,将所述当前帧的点云数据分配到更新后的八叉树,包括:
对任意三维点,由根节点开始逐层判断该三维点是否能存放到某节点内,三维点在某节点范围内时,
当节点内不存在三维点时,将该三维点存放到该节点内;
当节点内存在三维点时,将该三维点与节点内所有已有三维点的距离的最小值与该节点所在层的点云采样半径相比,若大于则将该三维点存放到该节点,若小于则该三维点不能存放到该节点,计算该三维点在该节点的哪个子节点范围内,重复上述判断;
当节点为最底层级的节点时,将该三维点存放到该节点内;
其中,每层节点均设有点云采样半径,相邻的两层节点,下层节点的点云采样半径为上层节点的点云采样半径的一半。
本发明的第二方案提供了一种点云实时采集渲染方法,包括:
使用上述任一项的方法对点云数据进行实时空间结构化处理,得到八叉树数据结构;
每一渲染帧前,对八叉树所有节点进行遍历,确定八叉树节点显示优先级;
在视锥体范围内按优先级由高到低对八叉树节点进行渲染显示。
进一步,确定八叉树节点显示优先级,包括:
根据节点中心与渲染相机的距离、节点在屏幕投影面积占比确定八叉树节点的显示优先级。
进一步,在视锥体范围内按优先级由高到低对八叉树节点进行渲染显示,包括:
按显示优先级由高到低渲染显示八叉树节点,直至当前已显示的三维点数量大于或等于预设的最大显示数值。
进一步,还包括:
将内存中连续未修改的次数超过第一次数阈值、且连续未显示的次数超过第二次数阈值的节点写出到外存。
进一步,根据内存中存储的三维点总数,以及预设的内存中三维点存储数量阈值,调整所述第一次数阈值和所述第二次数阈值。
进一步,还包括:点云采集渲染过程中使用多线程并行处理。
本发明的有益效果:
本发明根据已有的八叉树节点与新增的后续帧的包围盒,由小到大扩展八叉树,可以在逐帧获取点云数据的情况下,任意扩展八叉树,实时将点云数据结构化,适应实时采集渲染场景中场景变化的情况,改变了现有技术中构建八叉树需要先确定点云范围才能够由大到小构建八叉树的方法,解决了因此导致的现有技术中只能对点云数据进行离线结构化处理,无法实时处理的问题,能够更好地适应大规模实时采集的点云数据结构化处理,加速点云处理过程,解决普通硬件设备处理大规模、海量点云数据的性能和资源限制问题。
通过对实时点云帧进行空间结构化,可以直接导出分层分块的空间结构化点云数据文件,如Potree,无需再次进行数据格式转换。生成八叉树,解决海量点云数据全量渲染显示性能问题,能在不进行降采样的情况下完整地实时渲染海量点云数据。
在点云空间结构化处理时,采用点云采样算法,在不同层级实现不同细节、分布均匀的点云结构,可按视锥体实现LOD,优化渲染显示性能,最佳化渲染效果。
本发明按照八叉树节点优先级对三维点进行渲染显示,并通过将三维点分情况存储在内存和外存之中,进行内外存交换,不需要对点云进行降采样,不损失点云,通过控制内存点云数据量和渲染显示点云数据量,确保长时间、不间断的实时点云流处理,维持内存消耗稳定,结合对实时点云帧进行空间结构化生成八叉树,和整个采集渲染过程中多线程并行处理的方法,能够适应对大规模实时采集的点云进行渲染的场景,在保证渲染效果和渲染速度的情况下,大大降低对大规模实时采集的点云进行渲染对设备的要求。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为点云数据空间结构化流程图;
图2为新到点云帧包围盒与八叉树根节点包围盒空间位置关系一;
图3为新到点云帧包围盒与八叉树根节点包围盒空间位置关系二;
图4为点云数据空间结构化与渲染显示综合流程图。
实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。基于本公开中描述的实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本公开的保护范围之内。
目前,行业内对于点云的采集与渲染通常是将数据采集与数据渲染分开,在数据采集阶段,通常的做法是将硬件设备采集的数据增量存储为无序、非空间结构化的数据格式,如LAS、PLY等,然后对采集完成的点云文件进行离线格式转换,按照点云中三维点的空间位置属性划分到不同的层级进行存储和显示渲染,如MNO、Potree等格式,主流点云渲染方法主要针对已预先构建成MNO、Potree等格式的点云进行加载显示。但是,离线构建点云空间结构、进行格式转换需要先结束数据采集,再通过算法处理所有点云数据,实时性差,无法应对时效性要求高的场合,也无法实时全量式查看已采集的数据。
行业内也有一些对采集捕获的三维点云数据实时构建空间数据结构方法,这种方法一般需要对点云中的空间三维点遍历并计算每一个空间三维点与已有空间结构区域的关系,并将每一个空间三维点放置到合适的位置,对设备计算硬件、实时采集的三维点数量、采集频率要求苛刻;目前已有的算法、方法无法应对高频率、大规模、实时点云数据流,实时采集的三维点数量比较大时会导致无法实时响应或者数据丢失。
在渲染阶段,主要是对结构化的点云进行渲染,对于大规模实时采集的点云进行渲染,其主要难度在于,数据随时间快速累积,以采集频率10Hz、每帧三维点数量10000个为例,每秒累积的数据量即为10万,以目前主流移动手机硬件1000万个点渲染能力计算,如果不做任何处理,100秒左右手机就会出现卡顿并迅速导致性能恶化。目前对实时采集的大规模点云数据进行高效渲染显示的方案主要是降采样,但降采样一方面会导致显示效果退化,另一方面也无法解决快速累积的点云数量问题,并最终导致耗尽设备CPU、GPU、内存硬件资源。另外也有对已采集的非结构化点云进行分层渲染的方法,该类方法可以通过控制读取数据的速度来均衡性能与渲染,但只能对已有采集的数据进行后处理,不能应对采集点云数据与渲染显示同步的情况。
本发明的实施例提供了一种点云实时采集结构化方法,包括:
点云帧接收和解压,从各类通信网络(WiFi、有线、4G、5G、光纤)中接收数据采集设备发送的点云数据帧,这些数据帧可以是非压缩的,也可以是压缩的,如果是压缩数据,则需要将点云数据进行解压。
点云数据空间结构化,假定点云采集设备以固定频率发送点云数据帧,在接收到点云帧后,以八叉树的方式进行点云数据空间结构化,整体流程如图1所示。
对于首帧数据,
S1,计算该帧点云的包围盒,将点集、物体或一组物体完全包含在相对简单的一个封闭空间,这个密闭空间称为包围盒,本发明中所述包围盒均为立方体;
S2,预设一个最细叶节点的大小,即最底层节点的边长,如5米,根据上述确定的该帧点云的包围盒确定该帧八叉树的深度,确定八叉树根节点的中心点、包围盒、节点立方体的边长,建立八叉树结构,即根据预设的最底层节点可以在本层中扩展出其他七个节点,并能够基于此继续向上一层一层扩展至能够完全包围盒,即为八叉树的根节点;
S3,将本帧点云的三维点按点云采样算法分配到八叉树中,得到首帧数据的完整空间结构。
对于后续帧数据,在首帧数据建立八叉树之后,当后续点云帧到达后,需要对当前八叉树根节点包围盒与新到点云帧的包围盒做相交测试,根据测试结果确定八叉树是否需要扩展、扩展方向、扩展深度等。具体包括以下步骤:
S31,计算新到帧点云的包围盒;
S32,与前续帧八叉树根节点进行空间相交测试,根据测试结果决定是否需要扩展八叉树,
如果新到点云帧的包围盒尺寸小于等于现有八叉树根节点包围盒尺寸,结果共有如图2所示的以下5种情况:
第1种,新帧与八叉树空间没有任何交集;
第2种,新帧完全在八叉树空间内部;
第3种,新帧只在1个维度上扩展了八叉树空间;
第4种,新帧在2个维度上扩展了八叉树空间;
第5种,新帧在3个维度上扩展了八叉树空间;
如果新到点云帧的包围盒尺寸大于现有八叉树根节点包围盒尺寸,结果共有如图3所示的以下5种情况:
第1种,新帧与八叉树空间没有任何交集;
第2种,新帧完全覆盖八叉树空间;
第3种,新帧在5个维度上扩展了八叉树空间;
第4种,新帧在4个维度上扩展了八叉树空间;
第5种,新帧在3个维度上扩展了八叉树空间;
S33,根据上述的相交测试结果更新八叉树空间,上述情况可以归类为两种情况:
需要扩展的情况,包围盒在至少一个维度上具有八叉树未包括的部分的情况下,即上述除新帧完全在八叉树空间内部之外的其他9种情况,对所述八叉树进行扩展,且八叉树的扩展方向包括维度方向。扩展过程为以当前的八叉树的根节点作为一个最细叶节点,向上进行层级扩展,即由一个节点扩展出其他同一层级的七个节点,扩展的方向根据新帧包围盒确定,以上仅为向上扩展一层的情况,另外还有向上扩展多层的情况,每一层的扩展都根据已有的一个节点扩展出该层的另外七个节点,其最终要求是更新后的八叉树将新帧的包围盒包围在内。
不需要扩展的情况,包围盒在所有维度上全部被八叉树包括的情况下,即上述新帧完全在八叉树空间内部这种情况,不需要进行扩展,更新后的八叉树与前一帧的八叉树相同。
S34,将本帧点云的三维点按点云采样算法分配到八叉树中。
在点云数据空间结构化中,无论是对首帧数据还是后续帧数据,为了得到好的覆盖率和视觉效果,同时不冗余数据,八叉树每个节点都需要存储三维点数据,对每帧点云数据进行点云采样,将点云分配到八叉树中,对八叉树每一层节点设定一个点云采样半径Spacing,如根节点设为2.0f,然后每下一层Spacing=Spacing/2,即采样半径减半,点云采样半径可以根据节点边长确定,以能被节点边长整除为好。对于一个三维点p将其分配到节点内的具体步骤如下:
(1)遍历八叉树根节点存储的数据,如果根节点内没有储存三维点,则直接将点p放到根节点内,则流程结束。如果根节点内已储存有三维点,将点p与根节点所有数据进行距离比较,如果与所有已有三维点的距离的最小值都大于根节点的点云采样半径Spacing,即确定与所有已有三维点的距离都不会小于点云采样半径Spacing值,说明点p可以放在根节点中,将点p放到根节点内,则流程结束;反之,点p则不能放到到根节点内;
(2)如果点p不能放在根节点,则计算出点p在八叉树根节点的哪个子节点范围,然后在点p与所在八叉树根节点的子节点重复(1)的过程。通过递归,从八叉树根节点向最底层的子节点方向重复步骤(1)(2)过程,如果点p可以分配到某一个中间节点,则流程结束;
(3)如果点p没有能在中间节点得到分配,最后到了最底层的子节点,由于最底层的子节点的边长为某一个确定值,不会再向下分子空间,则将点p存储在最底层的子节点中。
本发明的实施例中,无论是对初始帧的八叉树还是对后续帧的八叉树,其建立的逻辑均是从小到大进行构建或者扩展,可以在逐帧获取点云数据的情况下,任意扩展八叉树,实时将点云数据结构化,适应实时采集渲染场景中场景变化的情况,改变了现有技术中构建八叉树需要先确定点云范围才能够由大到小构建八叉树的方法,解决了因此导致的现有技术中只能对点云数据进行离线结构化处理,无法实时处理的问题,能够更好地适应大规模实时采集的点云数据结构化处理,加速点云处理过程,解决普通硬件设备处理大规模、海量点云数据的性能和资源限制问题。
将点云分配到八叉树过程中,传统的分配方法会从底层开始分配,更多的将三维点分配到最底层的节点,当数据规模较大时,这样会导致节点内点云数量过多,密度过大,为了保证渲染效率需要进行降采样,这样会影响显示效果。区别于传统由底层分配的方法,本发明的实施例中,采用从根节点所在的顶层开始分配的方法,并确定了判断点云能否分配到节点内的逻辑,即待分配点与所有节点内已有三维点的距离都不会小于点云采样半径,根据设定的点云采样半径可以控制节点内的三维点密度和数量,无需为了保证渲染速度进行降采样,避免因为降采样影响显示效果。
本发明的实施例还提供了一种点云实时采集渲染方法,对大规模实时采集的点云进行渲染计算量大,硬件压力高,为实现高效点云实时结构化处理和渲染显示,整个过程综合使用多个线程并行以提高处理能力。综合处理流程如图4所示。其中,
线程1:负责从WiFi/有线/4G/5G通信网络中接收点云数据,并对点云数据帧进行解压,并通过队列缓存点云数据帧,并与线程2共享数据,在有数据时通知线程2进行后续处理;
线程2:负责对新到点云帧包围盒计算、新帧点云包围盒与八叉树根节点进行相交测试,根据相交情况对八叉树进行扩展。然后通过线程池,并发对新帧中三维点,通过点云采样分配到八叉树中,完成八叉树数据插入,完成点云数据的空间结构化组织管理;
线程3:进行点云渲染显示操作,包括点云数据对象化、着色器处理、CPU与GPU数据通信、点云数据着色渲染等;
线程4:按渲染频率(如30FPS)每一帧(这里的帧为渲染帧,不是点云数据帧)对八叉树进行遍历,检查八叉树与场景相机视锥体的关系,进行视锥体裁剪,同时按八叉树节点的可见性、节点三维点数据修改情况决定节点是否渲染、是否转移到外部存储器。
线程5:负责数据IO,根据线程4八叉树遍历结果,将不渲染、未修改的八叉树节点的点云数据写入到外存中暂存,或者当视锥变化需要显示节点数据时,将不在内存中的八叉树节点数据从外存中回读显示。
当然以上仅为多线程处理的一种示例,在实际应用时并不限于使用5个线程同时处理,而可以根据实际情况进行调整。
本发明实施例中,应用本申请提出的点云实时采集结构化方法对实时采集的点云数据进行空间结构化处理,建立八叉树。
本发明实施例中,每一渲染帧在渲染前对八叉树所有节点进行一次遍历,通过每个节点中心点与渲染相机距离、点云节点屏幕投影面积占比确定节点显示优先级,其计算公式如下:
其中,
:相机视场角,/>:倾斜度,/>:屏幕高度(单位:像素),:节点在屏幕上的投影面积,/>:节点的半径,/>:相机前向方向,/>:相机到节点中心方向,/>:相机前向方向与相机到节点中心方向两个向量的夹角,/>:优先级;
通过计算得到的值大小决定点云节点的显示优先级,值越大,显示优先级越高,设置场景渲染点云最大数值maxRender,遍历结束,按显示优先级渲染显示八叉树节点,同时记录已显示的三维点数量,当已显示三维点数量大于maxRender则停止后续节点的渲染,如果场景中还存在其他已显示的节点,则这些不在视锥体范围内、在视锥体范围内但显示优先级低的节点都将不被渲染,从而维持点云渲染最大数量可控。
本发明实施例中,在整个采集渲染过程中,根据视锥体裁剪结果,一定时间没有被显示并且没有被修改的八叉树节点数据将被写出到外存中。在实施时,每个八叉树节点设置两个计数器invisibleCount、unModifyCount,其中invisibleCount用于记录未显示次数,unModifyCount用于记录节点未修改次数,初始值均为0。
unModifyCount值由线程2(点云空间结构化处理线程)设置,节点被修改,该值置0;节点未修改,该值+1;
invisibleCount由线程4(视锥裁剪和遍历线程)设置,节点显示,该值置0;节点未显示,每遍历一次其值+1,如果invisibleCount大于某设置阈值N且unModifyCount大于某设置阈值M,则将该节点放置到外存队列,由线程5将其写出到外存上。
如果新到点云帧数据有插入到已被写出到外存储器节点的需求,则将该节点数据回读到内存进行相关插入处理,处理完毕再按上述规则进行内外存交换;如果相机视锥发生变化,需要显示已被写出到外存储器的节点数据,则将该节点数据回读到内存进行显示,并重新计数。
为控制内存中三维点总数,设置一个阈值maxCache,该值监控内存中已有点云三维点总数,通过动态调整invisibleCount、unModifyCount值控制内外存数据交换频率,从而维持内存消耗稳定。
本发明实施例中,点云渲染可以借助目前主流图像API(包括DirectX、OpenGL、Metal等)现实,也可以借助3D引擎(unReal、Unity等)实现,不局限于某一特定渲染系统。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”“包含”“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
还需要指出的是,在本公开的系统和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (11)
1.一种点云实时采集结构化方法,其特征在于,包括:
逐帧获取点云数据;
确定首帧对应的八叉树;
在当前帧为所述首帧以外的后续帧的情况下,根据所述当前帧对应的包围盒、所述当前帧的前一帧对应的八叉树,更新所述八叉树,更新后的八叉树的根节点边长为2n×L,其中n为大于等于0的整数,L为所述当前帧的前一帧对应的八叉树的边长;
将所述当前帧的点云数据分配到更新后的八叉树,包括:
对任意三维点,由根节点开始逐层判断该三维点是否能存放到某节点内,三维点在某节点范围内时,
当节点内不存在三维点时,将该三维点存放到该节点内;
当节点内存在三维点时,将该三维点与节点内所有已有三维点的距离的最小值与该节点所在层的点云采样半径相比,若大于则将该三维点存放到该节点,若小于则该三维点不能存放到该节点,计算该三维点在该节点的哪个子节点范围内,重复上述判断;
当节点为最底层级的节点时,将该三维点存放到该节点内;
其中,每层节点均设有点云采样半径,相邻的两层节点,下层节点的点云采样半径为上层节点的点云采样半径的一半。
2.根据权利要求1所述的点云实时采集结构化方法,其特征在于,根据所述当前帧的包围盒、所述当前帧的前一帧对应的八叉树,更新所述八叉树,包括:
对所述包围盒与所述八叉树进行相交测试,得到测试结果;
根据所述测试结果更新所述八叉树。
3.根据权利要求2所述的点云实时采集结构化方法,其特征在于,根据所述测试结果更新所述八叉树,包括:
所述包围盒在至少一个维度上具有所述八叉树未包括的部分的情况下,对所述八叉树进行扩展,且所述八叉树的扩展方向包括维度方向。
4.根据权利要求2所述的点云实时采集结构化方法,其特征在于,根据所述测试结果更新所述八叉树,包括:
所述包围盒在所有维度上全部被所述八叉树包括的情况下,更新后的八叉树与前一帧的八叉树相同。
5.根据权利要求1-4中任一项所述的点云实时采集结构化方法,确定首帧对应的八叉树,包括:
根据首帧对应的包围盒以及预设大小的最细叶节点确定八叉树的深度,确定八叉树根节点,建立八叉树结构。
6.一种点云实时采集渲染方法,其特征在于,包括:
使用如权利要求1-5任一项的方法对点云数据进行实时空间结构化处理,得到八叉树数据结构;
每一渲染帧前,对八叉树所有节点进行遍历,确定八叉树节点显示优先级;
在视锥体范围内按优先级由高到低对八叉树节点进行渲染显示。
7.根据权利要求6所述的点云实时采集渲染方法,其特征在于,确定八叉树节点显示优先级,包括:
根据节点中心与渲染相机的距离、节点在屏幕投影面积占比确定八叉树节点的显示优先级。
8.根据权利要求6所述的点云实时采集渲染方法,其特征在于,在视锥体范围内按优先级由高到低对八叉树节点进行渲染显示,包括:
按显示优先级由高到低渲染显示八叉树节点,直至当前已显示的三维点数量大于或等于预设的最大显示数值。
9.根据权利要求6所述的点云实时采集渲染方法,其特征在于,还包括:
将内存中连续未修改的次数超过第一次数阈值、且连续未显示的次数超过第二次数阈值的节点写出到外存。
10.根据权利要求9所述的点云实时采集渲染方法,其特征在于,根据内存中存储的三维点总数,以及预设的内存中三维点存储数量阈值,调整所述第一次数阈值和所述第二次数阈值。
11.根据权利要求6所述的点云实时采集渲染方法,其特征在于,还包括:点云采集渲染过程中使用多线程并行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310383173.5A CN116109752B (zh) | 2023-04-12 | 2023-04-12 | 一种点云实时采集结构化及渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310383173.5A CN116109752B (zh) | 2023-04-12 | 2023-04-12 | 一种点云实时采集结构化及渲染方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116109752A CN116109752A (zh) | 2023-05-12 |
CN116109752B true CN116109752B (zh) | 2023-06-20 |
Family
ID=86254692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310383173.5A Active CN116109752B (zh) | 2023-04-12 | 2023-04-12 | 一种点云实时采集结构化及渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116109752B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112802179A (zh) * | 2021-01-18 | 2021-05-14 | 南京航空航天大学 | 一种基于法向的大规模点云可视化方法 |
CN114387375A (zh) * | 2022-01-17 | 2022-04-22 | 重庆市勘测院((重庆市地图编制中心)) | 一种海量点云数据多视图渲染方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8169434B2 (en) * | 2008-09-29 | 2012-05-01 | Microsoft Corporation | Octree construction on graphics processing units |
CN112465949B (zh) * | 2020-11-26 | 2024-08-06 | 陕西铁道工程勘察有限公司 | 基于嵌套八叉树的大规模点云数据组织方法 |
CN112509118B (zh) * | 2020-12-02 | 2021-10-08 | 南京航空航天大学 | 一种可预加载节点和自适应填充的大规模点云可视化方法 |
EP4373096A1 (en) * | 2021-07-14 | 2024-05-22 | LG Electronics Inc. | Point cloud data transmission device and method, and point cloud data reception device and method |
-
2023
- 2023-04-12 CN CN202310383173.5A patent/CN116109752B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112802179A (zh) * | 2021-01-18 | 2021-05-14 | 南京航空航天大学 | 一种基于法向的大规模点云可视化方法 |
CN114387375A (zh) * | 2022-01-17 | 2022-04-22 | 重庆市勘测院((重庆市地图编制中心)) | 一种海量点云数据多视图渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116109752A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110070613B (zh) | 基于模型压缩和异步加载的大型三维场景网页展示方法 | |
CN111858828B (zh) | 一种面向三维地理数据的传输和渲染方法及系统 | |
CN108520557B (zh) | 一种图形图像融合的海量建筑绘制方法 | |
CN110443893B (zh) | 大规模建筑场景渲染加速方法、系统、装置和存储介质 | |
CN107274476B (zh) | 一种阴影图的生成方法及装置 | |
CN103093499B (zh) | 一种适用于网络传输的城市三维模型数据组织方法 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
KR101546703B1 (ko) | 대용량 건물 bim데이터의 시각화 시스템 | |
US11532123B2 (en) | Method for visualizing large-scale point cloud based on normal | |
CN113178014A (zh) | 场景模型渲染方法、装置、电子设备和存储介质 | |
CN115272637B (zh) | 面向大区域的三维虚拟生态环境可视化集成和优化系统 | |
CN112765513A (zh) | 大规模建筑场景的细粒度化Web3D在线可视化方法 | |
CN112435335A (zh) | 一种三维矢量瓦片数据生成方法及系统 | |
CN109712242B (zh) | 一种支持大规模三维场景虚拟漫游的模型数据组织方法 | |
CN112509118A (zh) | 一种可预加载节点和自适应填充的大规模点云可视化方法 | |
CN112070909A (zh) | 一种基于3D Tiles的工程三维模型LOD输出方法 | |
US20230042578A1 (en) | Method for Generating a Hierarchical Data Structure, Hierarchical Data Structure, and Method for Streaming Three-Dimensional Objects | |
CN112785673A (zh) | 一种基于WebGL批量三维模型数据的渲染方法 | |
CN112948043A (zh) | 大规模建筑场景的细粒度化Web3D在线可视化方法 | |
CN111815770A (zh) | Web模型轻量化处理方法、装置及可读存储介质 | |
CN116758243B (zh) | 基于实时点云流的场景网格划分生成及渲染显示方法 | |
CN113610982B (zh) | 基于大规模模型场景的邻域查询方法 | |
CN116109752B (zh) | 一种点云实时采集结构化及渲染方法 | |
Kohek et al. | Interactive Large‐Scale Procedural Forest Construction and Visualization Based on Particle Flow Simulation | |
CN112906125A (zh) | 铁路固定设施bim模型轻量化加载方法 |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Wang Xiangchun Inventor after: Zhao Kaiyong Inventor before: Wang Xiangchun |
|
CB03 | Change of inventor or designer information |