CN107798721A - 一种点云数据的处理方法及装置和点云渲染方法及装置 - Google Patents
一种点云数据的处理方法及装置和点云渲染方法及装置 Download PDFInfo
- Publication number
- CN107798721A CN107798721A CN201610798887.2A CN201610798887A CN107798721A CN 107798721 A CN107798721 A CN 107798721A CN 201610798887 A CN201610798887 A CN 201610798887A CN 107798721 A CN107798721 A CN 107798721A
- Authority
- CN
- China
- Prior art keywords
- cloud
- cloud data
- node
- leaf nodes
- point
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及计算机技术领域,具体涉及一种点云数据的处理方法及装置和点云渲染方法及装置。其中,点云数据的处理方法包括:基于原始点云数据的空间特性构建原始点云数据的八叉树结构,八叉树结构包括叶子节点和非叶子节点;将非叶子节点按照空间结构等分成多个空间块;遍历多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。通过对八叉树结构的非叶子节点进行抽稀处理,使得在利用非叶子节点的点云数据进行场景渲染时,从而提高了渲染效率。另外,由于抽稀得到的点云均匀地分散在包含有点云的空间块中,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种点云数据的处理方法及装置和点云渲染方法及装置。
背景技术
图形处理器的性能相比过去有了飞速的发展,但是对于大规模复杂的场景进行渲染时,仍然存在局限。在对大规模复杂场景的渲染过程中,用于描述三维空间的树状数据结构的八叉树技术已经得到了广泛的应用。
现有技术中,通常是以八叉树结构的形式进行数据缓存,利用八叉树结构中当前视点的视椎体视野范围内可见的节点与子节点进行场景渲染并显示。然而,在对当前视点的视椎体视野范围内的场景进行渲染并显示时,如果可见的节点和子节点中包含的点云数据较大,其渲染效率比较低,容易产生卡顿现象。
发明内容
本发明要解决的技术问题在于现有技术中在对当前视点的视野范围内的场景进行渲染时效率低,从而提供一种点云数据的处理方法及装置和点云渲染方法及装置。
本发明实施例的一方面,提供了一种点云数据的处理方法,包括:基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构,所述八叉树结构包括叶子节点和非叶子节点;将所述非叶子节点按照空间结构等分成多个空间块;遍历所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
进一步地,在基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构之后,所述方法还包括:对于所述叶子节点,抽取所述叶子节点所有的点云数据。
进一步地,所述八叉树结构中每个节点对应一张描述表,其中,所述非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,所述叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。
进一步地,将所述非叶子节点按照空间结构等分成多个空间块包括:将所述非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
进一步地,对于所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据包括:从每个包含点云的空间块中随机抽取一个点云的点云数据;或者,从每个包含点云的空间块中抽取靠近其中心或者边缘的一个点云的点云数据。
本发明实施例的另一方面,提供了一种点云渲染方法,包括:加载当前视点的视野范围内的点云数据;基于加载的点云数据在内存中构建八叉树结构;确定所述当前视点的视野范围内可见的节点集,对所述当前视点的视野范围内的场景进行渲染,其中,对于所述当前视点的视野范围内可见的非叶子节点,利用所述的处理方法进行抽稀后的点云数据对其进行渲染。
进一步地,在确定所述当前视点的视野范围内可见的节点集之后,所述方法还包括:随着视点距离的缩小,判断所述节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;如果所述非叶子节点的视点距离小于其子节点的可视范围,则该非叶子节点分裂,将分裂的子节点加入到所述节点集中,将该非叶子节点从所述节点集中去掉。
本发明实施例的另一方面,提供了一种点云数据的处理装置,包括:构建单元,用于基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构,所述八叉树结构包括叶子节点和非叶子节点;划分单元,用于将所述非叶子节点按照空间结构等分成多个空间块;抽稀单元,用于遍历所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
进一步地,所述抽稀单元还用于在基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构之后,对于所述叶子节点,抽取所述叶子节点所有的点云数据。
进一步地,所述八叉树结构中每个节点对应一张描述表,其中,所述非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,所述叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。
进一步地,所述划分单元包括:划分模块,用于将所述非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
进一步地,所述抽稀单元包括:第一抽取模块,用于从每个包含点云的空间块中随机抽取一个点云的点云数据;或者,第二抽稀模块,用于从每个包含点云的空间块中抽取靠近其中心或者边缘的一个点云的点云数据。
本发明实施例的另一方面,提供了一种点云渲染装置,包括:加载单元,用于加载当前视点的视野范围内的点云数据;内存构建单元,用于基于加载的点云数据在内存中构建八叉树结构;渲染单元,用于确定所述当前视点的视野范围内可见的节点集,对所述当前视点的视野范围内的场景进行渲染,其中,对于所述当前视点的视野范围内可见的非叶子节点,利用所述的处理装置进行抽稀后的点云数据对其进行渲染。
进一步地,所述点云渲染装置还包括:判断单元,用于在确定所述当前视点的视野范围内可见的节点集之后,随着视点距离的缩小,判断所述节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;集合修改单元,用于在所述非叶子节点的视点距离小于其子节点的可视范围时,该非叶子节点分裂,将分裂的子节点加入到所述节点集中,将该非叶子节点从所述节点集中去掉。
根据本发明实施例,通过对八叉树结构的非叶子节点进行抽稀处理,使得在利用非叶子节点的点云数据进行场景渲染时,数据量相对于未进行抽稀处理的非叶子节点明显降低,从而提高了渲染效率。另外,由于抽稀得到的点云均匀地分散在包含有点云的空间块中,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中点云数据的处理方法的一个具体示例的流程图;
图2为本发明实施例中四叉树的节点分解示意图;
图3为本发明实施例中非叶子节点抽稀处理过程示意图;
图4为本发明实施例中点云渲染方法的一个具体示例的流程图;
图5为本发明实施例中视点距离缩小时父节点分解示意图;
图6为本发明实施例中点云数据的处理装置的一个具体示例的原理框图;
图7为本发明实施例中点云渲染装置的一个具体示例的原理框图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
本实施例提供一种点云数据的处理方法,该方法可以用于对原始点云数据进行初步处理,如图1所示,包括:
步骤S101,基于原始点云数据的空间特性构建原始点云数据的八叉树结构,八叉树结构包括叶子节点和非叶子节点。
八叉树是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积。所有具有子节点的父节点都是非叶子节点,叶子节点没有子节点。八叉树中每一个节点都有可视范围,可视范围跟包围盒半径是线性的关系,节点半径越大,则可视范围也越大,因此父节点的可视范围肯定比子节点可视范围大。
步骤S102,将非叶子节点按照空间结构等分成多个空间块。
对于非叶子节点,将其在空间上等分成若干空间块,需要说明的是,该空间块与八叉树中的父节点分解成子节点为不同的过程。这里的空间块可以是长方体、立方体、四面体等空间结构。由于非叶子节点中包含有点云,因此,这些点云会随着非叶子节点的划分,而分布在不同的空间块中,是的有些空间块中存在一个或多个点云,另一些空间快中不存在点云。
步骤S103,遍历多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
在将非叶子节点拆分之后,进行点云数据的抽取。遍历每个空间块,如果空间块中存在点云,则抽取其中一个点云的数据;如果不存在,则不抽取。这样,由抽取到的点云数据组成抽稀后的非叶子节点,在进行场景渲染过程中,利用抽稀后的非叶子节点的点云数据进行渲染,数据量大大降低。
本实施例中的抽稀处理过程,可以是在场景渲染显示之前,对点云数据做出的预处理过程中,也可以是在进行场景渲染显示过程中进行抽稀处理,为了提高渲染效率,本实施例优选先对点云数据进行预处理之后,再用于进行场景渲染。
根据本发明实施例,通过对八叉树结构的非叶子节点进行抽稀处理,使得在利用非叶子节点的点云数据进行场景渲染时,数据量相对于未进行抽稀处理的非叶子节点明显降低,从而提高了渲染效率。另外,由于抽稀得到的点云均匀地分散在包含有点云的空间块中,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
本发明实施例中,对于叶子节点,可以进行抽稀处理,也可以不进行抽稀处理,为了保证了点云特征的完整性,避免造成特征损失,本实施例优选不对叶子节点进行抽稀,具体地,在基于原始点云数据的空间特性构建原始点云数据的八叉树结构之后,方法还包括:对于叶子节点,抽取叶子节点所有的点云数据。
本实施例中,预先对原始点云数据进行预处理,处理成基于八叉树的点云存储格式,本实施例中成为npc格式。该格式主要包括:头文件、八叉树和原始点云数据等内容,其中,头文件主要描述了点云的信息(本发明的一个具体示例中共占用507字节),如节点数量,包围盒信息等,如表1所示:
表1
上述中八叉树是一个可序列化的数据结构,父节点是子节点的包络。需要说明的是,本发明实施例的八叉树并不是完全八叉树。某个八叉树节点是否拥有子节点取决于它是否满足分割条件。
具体地,设置切分阈值,在八叉树构建的过程中,判断当前的节点内点云的数量是否小于切分阈值;如果是,则不对当前的节点进行切分;反之,则将当前的节点平均切分成8个子节点。然后依次类推,切分后的每一子节点再进行点云的数量判断、然后切分。
由于无法制作三维图例,因此,本发明实例采用四叉树作为图例,如图2所示,八叉树是类似的,这里只是为了便于介绍本实施例的技术方案,并没有不当限定。
如图2所示,首先,将原始点云等分为4份,对每一份点云判断是否小于切分阈值nmax(这里设置为5),如果小于5则停止切分,否则继续切分,直到所有格网内的点云都小于5为止,这样就构建了一棵四叉树。需要说明的是,在构建八叉树的过程中,按照体积将原始点云等分成8份,类似上上述方式进行切分,然后直到所有网格内的点云小于5,则构建成了一棵八叉树。
本实施例的八叉树结构中,每个节点对应一张描述表,如表2所示:
表2
名称 | 类型 | 占用字节 | 备注 |
xmin | Double | 8 | 最小x |
ymin | Double | 8 | 最小y |
zmin | Double | 8 | 最小z |
xmax | Double | 8 | 最大x |
ymax | Double | 8 | 最大y |
zmax | Double | 8 | 最大z |
xcenter | Double | 8 | 中心点x |
ycenter | Double | 8 | 中心点y |
zcenter | Double | 8 | 中心点z |
length | Double | 8 | 包围盒直径 |
isLeafNode | Char | 1 | 1:叶子节点0:非叶子节点 |
key_x | Int | 4 | 八叉树节点x索引 |
key_y | Int | 4 | 八叉树节点y索引 |
key_z | Int | 4 | 八叉树节点z索引 |
Depth | Int | 4 | 八叉树节点深度 |
Count | Int | 4 | 八叉树节点点云个数 |
indices | Vector<int> | 可变 | 八叉树节点的点云索引 |
作为一种优选实施方式,本实施例的非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。如表2中的indices字段,其记录的是点云索引而不是点云坐标。
上述中原始点云数据,包含最全面的点云信息,如点云坐标、强度信息、颜色信息等。每个点云都是有序号的,序号即是它在原始点云列表里所处的位置,从0开始计数。八叉树正是通过序号索引到原始点云数据的。
需要说明的是,为了保证分类、识别等点云算法的准确性和稳定性,都是原始点云数据参与运算的,因此内存占用是不能减少的,只是利用了八叉树的特点对显存进行了抽稀以提高效率。
作为一种可选实施方式,本实施例中,将非叶子节点按照空间结构等分成多个空间块包括:将非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
本实施例中,将非叶子节点划等分成k3个立方体,如图3所示,其中,k=4,因此,该非叶子节点被分成64个小立方体,在进行抽稀处理时,遍历其中每个小立方体,如果其包含点云则随机抽取一个点云,如图3所示的虚线圈内的立方体,其包含有5个点云,抽取其左上角的一个点云;如果小立方体中没有点云则不抽取,这样抽稀后点云数量小于等于64。因为抽稀是按空间切割后再抽稀的,因此抽稀后的点云是离散的,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
作为一种可选的实施方式,对于包含点云的空间块,可以从中随机抽取一个点云的数据,也可以从中抽取靠近其中心或者边缘的一个点云的点云数据。
需要说明的是,本实施例中对于非叶子节点的点云抽稀处理中,划分的空间块数量越多,其非叶子节点的特征保留的越完整,划分的空间块数量越少,特征遗失的越多,但渲染处理时数据量越小,如何选择划分的空间块数量,可以根据经验或者试验结果确定。
本发明实施例还提供了一种点云渲染方法,该方法可以利用经过上述点云数据的处理方法处理后的点云数据进行场景渲染。如图4所示,该点云渲染方法包括:
步骤S401,加载当前视点的视野范围内的点云数据。
这里的点云数据可以是指原始点云数据的文件,将其加载到内存中。
步骤S402,基于加载的点云数据在内存中构建八叉树结构。
这里所述的在内存中构建八叉树结构可以是指:在内存中重建经过上述点云数据的处理方法构建好的八叉树结构。
步骤S403,确定当前视点的视野范围内可见的节点集,对当前视点的视野范围内的场景进行渲染,其中,对于当前视点的视野范围内可见的非叶子节点,利用抽稀后的点云数据对其进行渲染。
节点集为当前视点可见的叶子节点和/或非叶子节点的集合,也即是需要进行渲染处理的节点。利用节点集中的节点查询相应的点云数据对当前视点的视野范围内的场景进行渲染,其中,对于非叶子节点,则利用抽稀后的点云数据进行渲染,其中,该抽稀后的点云数据可以是采用本发明上述实施例中所述的点云数据的处理方法进行的抽稀处理的节点对应的点云数据。
根据本发明实施例,通过利用抽稀后的点云数据对非叶子节点进行渲染,减少了需要处理的数据量,从而提高了渲染效率。
优选地,由于经过抽稀后的非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。如表2中的indices字段,其记录的是点云索引而不是点云坐标。这样,在对非叶子节点进行渲染过程中,只需要利用描述表中的点云索引查询经过抽稀处理抽取到的点云数据,然后利用该点云数据对该非叶子节点进行渲染,降低了数据量,从而提高了渲染效率。
作为一种优选的实施方式,在确定当前视点的视野范围内可见的节点集之后,方法还包括:随着视点距离的缩小,判断节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;如果非叶子节点的视点距离小于其子节点的可视范围,则该非叶子节点分裂,将分裂的子节点加入到节点集中,将该非叶子节点从节点集中去掉。
本实施例中,随着视点距离的变化,节点集中所包含的节点会发生相应的变化。如图5所示,随着视点距离的缩小,在每一帧都会判断当前节点集中的每一个非叶子节点与视点的距离是否小于其子节点的可视范围,如果小于,则该非叶子节点开始分裂,然后将该非叶子节点从当前节点集中去掉,并从当前渲染场景中去掉,其子节点加入当前节点集,并加入当前渲染场景,直到节点不能分裂为止。
这样随着视点的推进,点云细节会慢慢丰富,由于其视野是有限的,所以当前渲染场景中的点云始终保持一定数目,不会因为点云数量过多造成卡顿等现象。
本发明实施例还提供一种点云数据的处理装置,该点云数据的处理装置可以用于执行本发明上述实施例中所述的点云数据的处理方法,如图6所示,该点云数据的处理装置包括:构建单元501、划分单元502和抽稀单元503。
构建单元501用于基于原始点云数据的空间特性构建原始点云数据的八叉树结构,八叉树结构包括叶子节点和非叶子节点。
八叉树是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积。所有具有子节点的父节点都是非叶子节点,叶子节点没有子节点。八叉树中每一个节点都有可视范围,可视范围跟包围盒半径是线性的关系,节点半径越大,则可视范围也越大,因此父节点的可视范围肯定比子节点可视范围大。
划分单元502用于将非叶子节点按照空间结构等分成多个空间块。
对于非叶子节点,将其在空间上等分成若干空间块,需要说明的是,该空间块与八叉树中的父节点分解成子节点为不同的过程。这里的空间块可以是长方体、立方体、四面体等空间结构。由于非叶子节点中包含有点云,因此,这些点云会随着非叶子节点的划分,而分布在不同的空间块中,是的有些空间块中存在一个或多个点云,另一些空间快中不存在点云。
抽稀单元503用于遍历多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
在将非叶子节点拆分之后,进行点云数据的抽取。遍历每个空间块,如果空间块中存在点云,则抽取其中一个点云的数据;如果不存在,则不抽取。这样,由抽取到的点云数据组成抽稀后的非叶子节点,在进行场景渲染过程中,利用抽稀后的非叶子节点的点云数据进行渲染,数据量大大降低。
本实施例中的抽稀处理过程,可以是在场景渲染显示之前,对点云数据做出的预处理过程中,也可以是在进行场景渲染显示过程中进行抽稀处理,为了提高渲染效率,本实施例优选先对点云数据进行预处理之后,再用于进行场景渲染。
根据本发明实施例,通过对八叉树结构的非叶子节点进行抽稀处理,使得在利用非叶子节点的点云数据进行场景渲染时,数据量相对于未进行抽稀处理的非叶子节点明显降低,从而提高了渲染效率。另外,由于抽稀得到的点云均匀地分散在包含有点云的空间块中,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
本发明实施例中,对于叶子节点,可以进行抽稀处理,也可以不进行抽稀处理,为了保证了点云特征的完整性,避免造成特征损失,本实施例优选不对叶子节点进行抽稀,具体地,抽稀单元还用于在基于原始点云数据的空间特性构建原始点云数据的八叉树结构之后,对于叶子节点,抽取叶子节点所有的点云数据。
作为一种优选实施方式,本实施例的非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。如表2中的indices字段,其记录的是点云索引而不是点云坐标。
作为一种可选实施方式,本实施例中的划分单元包括:划分模块,用于将非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
本实施例中,将非叶子节点划等分成k3个立方体,如图3所示,其中,k=4,因此,该非叶子节点被分成64个小立方体,在进行抽稀处理时,遍历其中每个小立方体,如果其包含点云则随机抽取一个点云,如图3所示的虚线圈内的立方体,其包含有5个点云,抽取其左上角的一个点云;如果小立方体中没有点云则不抽取,这样抽稀后点云数量小于等于64。因为抽稀是按空间切割后再抽稀的,因此抽稀后的点云是离散的,避免了由于抽稀结果过于集中将特征掩盖的问题,能很好地体现原始点云的特征。
作为一种可选的实施方式,抽稀单元包括:第一抽取模块,用于从每个包含点云的空间块中随机抽取一个点云的点云数据;或者,第二抽稀模块,用于从每个包含点云的空间块中抽取靠近其中心或者边缘的一个点云的点云数据。
对于包含点云的空间块,可以从中随机抽取一个点云的数据,也可以从中抽取靠近其中心或者边缘的一个点云的点云数据。
需要说明的是,本实施例中对于非叶子节点的点云抽稀处理中,划分的空间块数量越多,其非叶子节点的特征保留的越完整,划分的空间块数量越少,特征遗失的越多,但渲染处理时数据量越小,如何选择划分的空间块数量,可以根据经验或者试验结果确定。
本发明实施例还提供一种点云渲染装置,该点云渲染装置可以用于执行本发明上述实施例中所述的点云渲染方法,如图7所示,该点云渲染装置包括:加载单元601、内存构建单元602和渲染单元603。
加载单元601用于加载当前视点的视野范围内的点云数据。
这里的点云数据可以是指原始点云数据的文件,将其加载到内存中。
内存构建单元602用于基于加载的点云数据在内存中构建八叉树结构。
这里所述的在内存中构建八叉树结构可以是指:在内存中重建经过上述点云数据的处理方法构建好的八叉树结构。
渲染单元603用于确定当前视点的视野范围内可见的节点集,对当前视点的视野范围内的场景进行渲染,其中,对于当前视点的视野范围内可见的非叶子节点,利用抽稀后的点云数据对其进行渲染。
节点集为当前视点可见的叶子节点和/或非叶子节点的集合,也即是需要进行渲染处理的节点。利用节点集中的节点查询相应的点云数据对当前视点的视野范围内的场景进行渲染,其中,对于非叶子节点,则利用抽稀后的点云数据进行渲染,其中,该抽稀后的点云数据可以是采用本发明上述实施例中所述的点云数据的处理方法进行的抽稀处理的节点对应的点云数据。
根据本发明实施例,通过利用抽稀后的点云数据对非叶子节点进行渲染,减少了需要处理的数据量,从而提高了渲染效率。
优选地,由于经过抽稀后的非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。如表2中的indices字段,其记录的是点云索引而不是点云坐标。这样,在对非叶子节点进行渲染过程中,只需要利用描述表中的点云索引查询经过抽稀处理抽取到的点云数据,然后利用该点云数据对该非叶子节点进行渲染,降低了数据量,从而提高了渲染效率。
作为一种优选的实施方式,点云渲染装置还包括:判断单元,用于在确定当前视点的视野范围内可见的节点集之后,随着视点距离的缩小,判断节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;集合修改单元,用于在非叶子节点的视点距离小于其子节点的可视范围时,该非叶子节点分裂,将分裂的子节点加入到节点集中,将该非叶子节点从节点集中去掉。
本实施例中,随着视点距离的变化,节点集中所包含的节点会发生相应的变化。如图4所示,随着视点距离的缩小,在每一帧都会判断当前节点集中的每一个非叶子节点与视点的距离是否小于其子节点的可视范围,如果小于,则该非叶子节点开始分裂,然后将该非叶子节点从当前节点集中去掉,并从当前渲染场景中去掉,其子节点加入当前节点集,并加入当前渲染场景,直到节点不能分裂为止。
这样随着视点的推进,点云细节会慢慢丰富,由于其视野是有限的,所以当前渲染场景中的点云始终保持一定数目,不会因为点云数量过多造成卡顿等现象。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (14)
1.一种点云数据的处理方法,其特征在于,包括:
基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构,所述八叉树结构包括叶子节点和非叶子节点;
将所述非叶子节点按照空间结构等分成多个空间块;
遍历所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
2.根据权利要求1所述的点云数据的处理方法,其特征在于,在基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构之后,所述方法还包括:
对于所述叶子节点,抽取所述叶子节点所有的点云数据。
3.根据权利要求1所述的点云数据的处理方法,其特征在于,
所述八叉树结构中每个节点对应一张描述表,其中,所述非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,所述叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。
4.根据权利要求1所述的点云数据的处理方法,其特征在于,将所述非叶子节点按照空间结构等分成多个空间块包括:
将所述非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
5.根据权利要求1或2所述的点云数据的处理方法,其特征在于,对于所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据包括:
从每个包含点云的空间块中随机抽取一个点云的点云数据;或者
从每个包含点云的空间块中抽取靠近其中心或者边缘的一个点云的点云数据。
6.一种点云渲染方法,其特征在于,包括:
加载当前视点的视野范围内的点云数据;
基于加载的点云数据在内存中构建八叉树结构;
确定所述当前视点的视野范围内可见的节点集,对所述当前视点的视野范围内的场景进行渲染,其中,对于所述当前视点的视野范围内可见的非叶子节点,利用经过权利要求1至5任一项中所述的处理方法进行抽稀后的点云数据对其进行渲染。
7.根据权利要求6所述的点云渲染方法,其特征在于,在确定所述当前视点的视野范围内可见的节点集之后,所述方法还包括:
随着视点距离的缩小,判断所述节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;
如果所述非叶子节点的视点距离小于其子节点的可视范围,则该非叶子节点分裂,将分裂的子节点加入到所述节点集中,将该非叶子节点从所述节点集中去掉。
8.一种点云数据的处理装置,其特征在于,包括:
构建单元,用于基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构,所述八叉树结构包括叶子节点和非叶子节点;
划分单元,用于将所述非叶子节点按照空间结构等分成多个空间块;
抽稀单元,用于遍历所述多个空间块中的每个空间块,如果其中包含点云,则从中抽取一个点云的点云数据,得到抽稀后的非叶子节点。
9.根据权利要求8所述的点云数据的处理装置,其特征在于,
所述抽稀单元还用于在基于原始点云数据的空间特性构建所述原始点云数据的八叉树结构之后,对于所述叶子节点,抽取所述叶子节点所有的点云数据。
10.根据权利要求8所述的点云数据的处理装置,其特征在于,
所述八叉树结构中每个节点对应一张描述表,其中,所述非叶子节点的描述表中记录了经过抽稀后的点云数据的点云索引,所述叶子节点的描述表中记录了该叶子节点所有的点云数据的点云索引。
11.根据权利要求8所述的点云数据的处理装置,其特征在于,所述划分单元包括:
划分模块,用于将所述非叶子节点按照空间结构划分成k*k*k个小立方体,其中,k为大于等于3的整数。
12.根据权利要求8或9所述的点云数据的处理装置,其特征在于,所述抽稀单元包括:
第一抽取模块,用于从每个包含点云的空间块中随机抽取一个点云的点云数据;或者
第二抽稀模块,用于从每个包含点云的空间块中抽取靠近其中心或者边缘的一个点云的点云数据。
13.一种点云渲染装置,其特征在于,包括:
加载单元,用于加载当前视点的视野范围内的点云数据;
内存构建单元,用于基于加载的点云数据在内存中构建八叉树结构;
渲染单元,用于确定所述当前视点的视野范围内可见的节点集,对所述当前视点的视野范围内的场景进行渲染,其中,对于所述当前视点的视野范围内可见的非叶子节点,利用经过权利要求8至12任一项中所述的处理装置进行抽稀后的点云数据对其进行渲染。
14.根据权利要求13所述的点云渲染装置,其特征在于,所述点云渲染装置还包括:
判断单元,用于在确定所述当前视点的视野范围内可见的节点集之后,随着视点距离的缩小,判断所述节点集中每个非叶子节点的视点距离是否小于其子节点的可视范围,其中,视点距离是指节点的中心与视点之间的距离;
集合修改单元,用于在所述非叶子节点的视点距离小于其子节点的可视范围时,该非叶子节点分裂,将分裂的子节点加入到所述节点集中,将该非叶子节点从所述节点集中去掉。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798887.2A CN107798721B (zh) | 2016-08-31 | 2016-08-31 | 一种点云数据的处理方法及装置和点云渲染方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610798887.2A CN107798721B (zh) | 2016-08-31 | 2016-08-31 | 一种点云数据的处理方法及装置和点云渲染方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107798721A true CN107798721A (zh) | 2018-03-13 |
CN107798721B CN107798721B (zh) | 2021-03-16 |
Family
ID=61529690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610798887.2A Active CN107798721B (zh) | 2016-08-31 | 2016-08-31 | 一种点云数据的处理方法及装置和点云渲染方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107798721B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615254A (zh) * | 2018-03-28 | 2018-10-02 | 广州市本真网络科技有限公司 | 基于树型结构网格矢量量化的点云渲染方法、系统及装置 |
CN110211219A (zh) * | 2019-04-18 | 2019-09-06 | 广东满天星云信息技术有限公司 | 一种海量点云数据的处理方法 |
CN110297924A (zh) * | 2019-06-26 | 2019-10-01 | 深圳飞马机器人科技有限公司 | 点云数据的处理及渲染方法、装置、设备及存储介质 |
CN110910462A (zh) * | 2019-10-14 | 2020-03-24 | 广州南方智能技术有限公司 | 一种基于特征计算的点云轻量化方法及存储介质 |
CN111552765A (zh) * | 2020-05-19 | 2020-08-18 | 北京数字绿土科技有限公司 | 海量点云空间索引构建方法、装置、构建设备 |
CN111684808A (zh) * | 2019-05-31 | 2020-09-18 | 深圳市大疆创新科技有限公司 | 点云数据的编码方法、编码装置、解码方法与解码装置 |
CN111862292A (zh) * | 2020-07-29 | 2020-10-30 | 中国南方电网有限责任公司 | 输电线路走廊的数据渲染方法、装置和计算机设备 |
CN112365570A (zh) * | 2020-11-13 | 2021-02-12 | 广东电网有限责任公司 | 一种电力线路通道点云快速展示方法、装置和设备 |
CN112489177A (zh) * | 2020-11-30 | 2021-03-12 | 深圳供电局有限公司 | 一种点云数据渲染展示方法及系统 |
CN112630798A (zh) * | 2019-09-24 | 2021-04-09 | 北京百度网讯科技有限公司 | 用于估计地面的方法和装置 |
CN113034682A (zh) * | 2021-04-13 | 2021-06-25 | 阿波罗智联(北京)科技有限公司 | 点云数据处理方法、装置、设备及存储介质 |
CN113434514A (zh) * | 2021-07-19 | 2021-09-24 | 中海油能源发展装备技术有限公司 | 一种海上油气田点云模型的体素化索引和输出方法 |
WO2021207947A1 (en) * | 2020-04-14 | 2021-10-21 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus for processing a point cloud |
CN115063497A (zh) * | 2022-08-19 | 2022-09-16 | 北京山维科技股份有限公司 | 一种点云数据处理方法及装置 |
CN115630181A (zh) * | 2022-11-04 | 2023-01-20 | 中科星图数字地球合肥有限公司 | 一种数据抽稀方法、装置及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663237A (zh) * | 2012-03-21 | 2012-09-12 | 武汉大学 | 基于网格分块与移动最小二乘的点云数据全自动滤波方法 |
US20150125071A1 (en) * | 2013-11-07 | 2015-05-07 | Autodesk, Inc. | Pre-segment point cloud data to run real-time shape extraction faster |
CN104952107A (zh) * | 2015-05-18 | 2015-09-30 | 湖南桥康智能科技有限公司 | 基于车载LiDAR点云数据的桥梁三维重建方法 |
-
2016
- 2016-08-31 CN CN201610798887.2A patent/CN107798721B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663237A (zh) * | 2012-03-21 | 2012-09-12 | 武汉大学 | 基于网格分块与移动最小二乘的点云数据全自动滤波方法 |
US20150125071A1 (en) * | 2013-11-07 | 2015-05-07 | Autodesk, Inc. | Pre-segment point cloud data to run real-time shape extraction faster |
CN104952107A (zh) * | 2015-05-18 | 2015-09-30 | 湖南桥康智能科技有限公司 | 基于车载LiDAR点云数据的桥梁三维重建方法 |
Non-Patent Citations (1)
Title |
---|
王磊等: "基于改进的八叉树索引与分层渲染的海量激光点云可视化技", 《软件》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615254A (zh) * | 2018-03-28 | 2018-10-02 | 广州市本真网络科技有限公司 | 基于树型结构网格矢量量化的点云渲染方法、系统及装置 |
CN110211219A (zh) * | 2019-04-18 | 2019-09-06 | 广东满天星云信息技术有限公司 | 一种海量点云数据的处理方法 |
CN111684808A (zh) * | 2019-05-31 | 2020-09-18 | 深圳市大疆创新科技有限公司 | 点云数据的编码方法、编码装置、解码方法与解码装置 |
CN110297924A (zh) * | 2019-06-26 | 2019-10-01 | 深圳飞马机器人科技有限公司 | 点云数据的处理及渲染方法、装置、设备及存储介质 |
CN112630798A (zh) * | 2019-09-24 | 2021-04-09 | 北京百度网讯科技有限公司 | 用于估计地面的方法和装置 |
CN112630798B (zh) * | 2019-09-24 | 2022-11-29 | 北京百度网讯科技有限公司 | 用于估计地面的方法和装置 |
CN110910462A (zh) * | 2019-10-14 | 2020-03-24 | 广州南方智能技术有限公司 | 一种基于特征计算的点云轻量化方法及存储介质 |
CN110910462B (zh) * | 2019-10-14 | 2023-05-23 | 广州南方智能技术有限公司 | 一种基于特征计算的点云轻量化方法及存储介质 |
WO2021207947A1 (en) * | 2020-04-14 | 2021-10-21 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus for processing a point cloud |
CN111552765A (zh) * | 2020-05-19 | 2020-08-18 | 北京数字绿土科技有限公司 | 海量点云空间索引构建方法、装置、构建设备 |
CN111862292A (zh) * | 2020-07-29 | 2020-10-30 | 中国南方电网有限责任公司 | 输电线路走廊的数据渲染方法、装置和计算机设备 |
CN111862292B (zh) * | 2020-07-29 | 2024-04-26 | 南方电网数字电网科技(广东)有限公司 | 输电线路走廊的数据渲染方法、装置和计算机设备 |
CN112365570A (zh) * | 2020-11-13 | 2021-02-12 | 广东电网有限责任公司 | 一种电力线路通道点云快速展示方法、装置和设备 |
CN112489177A (zh) * | 2020-11-30 | 2021-03-12 | 深圳供电局有限公司 | 一种点云数据渲染展示方法及系统 |
CN112489177B (zh) * | 2020-11-30 | 2024-04-09 | 深圳供电局有限公司 | 一种点云数据渲染展示方法及系统 |
CN113034682A (zh) * | 2021-04-13 | 2021-06-25 | 阿波罗智联(北京)科技有限公司 | 点云数据处理方法、装置、设备及存储介质 |
CN113434514A (zh) * | 2021-07-19 | 2021-09-24 | 中海油能源发展装备技术有限公司 | 一种海上油气田点云模型的体素化索引和输出方法 |
CN115063497B (zh) * | 2022-08-19 | 2023-05-05 | 北京山维科技股份有限公司 | 一种点云数据处理方法及装置 |
CN115063497A (zh) * | 2022-08-19 | 2022-09-16 | 北京山维科技股份有限公司 | 一种点云数据处理方法及装置 |
CN115630181A (zh) * | 2022-11-04 | 2023-01-20 | 中科星图数字地球合肥有限公司 | 一种数据抽稀方法、装置及相关设备 |
CN115630181B (zh) * | 2022-11-04 | 2024-03-15 | 中科星图数字地球合肥有限公司 | 一种数据抽稀方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107798721B (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107798721A (zh) | 一种点云数据的处理方法及装置和点云渲染方法及装置 | |
CN107845144B (zh) | 一种高效组织和切换OpenGL渲染状态的方法 | |
DE102013204062A1 (de) | Voll-Parallel-am-Platz-Konstruktion von 3D-Beschleunigungs-Strukturen in einer Grafik-Verarbeitungs-Einheit | |
CN105389850B (zh) | 一种大规模三维场景的可见性生成方法 | |
CN106383965A (zh) | 一种三维数值大气可视化支撑系统 | |
CN110362927A (zh) | 一种多层逐级优化的bim模型轻量化处理方法及系统 | |
CN102509317A (zh) | 一种实时碰撞检测系统的实现方法 | |
CN109745704A (zh) | 一种体素地形的管理方法 | |
US8253738B2 (en) | Data processing apparatus and method | |
CN104143214A (zh) | 一种电子地图多边形三角剖分方法与装置 | |
CN109213763A (zh) | 车载激光扫描点云的组织管理方法及系统 | |
CN103700137A (zh) | 一种时空相关的层次遮挡剔除方法 | |
CN110490893A (zh) | 一种快速欧式距离点云分割方法 | |
De Floriani et al. | Spatial indexing on tetrahedral meshes | |
Hu et al. | Parallel BVH construction using locally density clustering | |
CN103678432B (zh) | 一种基于网页主体特征和中介真值的网页主体提取方法 | |
CN105512312A (zh) | 一种二维地图库加速的方法 | |
CN109461162A (zh) | 图像中目标分割的方法 | |
CN113840169B (zh) | 一种视频处理方法、装置、计算设备和存储介质 | |
CN104156999A (zh) | 一种三维场景渲染方法 | |
CN108346172B (zh) | 多维空间数据点阵vr展示方法及系统 | |
Mora et al. | Deep Partitioned Shadow Volumes Using Stackless and Hybrid Traversals. | |
Gong et al. | A new node-split algorithm in R-tree based on spatial clustering | |
CN110738719A (zh) | 一种基于视距分层优化的Web3D模型渲染方法 | |
CN110197528B (zh) | 一种地质体存储、可视化和交互方法及系统 |
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 |