本申请涉及点云处理,尤其涉及一种点云处理方法、装置、电子设备及计算机可读存储介质。
背景技术:
1、点云数据(point cloud data)是指在一个三维坐标系统中的一组向量的集合,在显示时以点的形式进行渲染(例如在opengl中,绘制的图元类型为gl_points)。
2、在一种需求场景中,用户需要对点云的局部区域进行选择,选中点云表面的点,从而对选中的三维点进行某些处理。
3、相关技术中的一种点云选择方式是基于三维点的法向量方向来进行选择,具体来说,使用穿透的方法进行选择,将法向量方向与屏幕所在平面存在相交的点(也就是法向量朝向屏幕外)、且在选择区域内的三维点,作为最终的选择结果。但是,上述选择方式存在漏选或者多选的问题,无法完全选中属于点云表面的点。
4、因此,有必要提供一种点云处理方法,以实现对点云表面的点的选择。
技术实现思路
1、有鉴于此,本申请提供一种点云处理方法、装置、电子设备及计算机可读存储介质。
2、具体地,本申请是通过如下技术方案实现的:
3、根据本申请实施例的第一方面,提供一种点云处理方法,包括:
4、响应于对点云的选择操作,根据所述点云中的每一个三维点与相邻三维点之间的距离,将所述点云从三维空间映射到二维空间,获得当前视角下的深度图;其中,所述深度图中的深度值为在当前视角下处于点云表面的至少部分三维点的深度值;
5、确定点云中的每一个三维点在所述深度图中的映射位置;
6、根据所述点云中的每一个三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差异,确定在当前视角下处于点云表面的所有三维点;
7、从当前视角下处于点云表面的所有三维点中,确定处于所述选择操作指示的选择区域内的目标三维点。
8、可选的,所述根据所述点云中的每一个三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差异,确定在当前视角下处于点云表面的所有三维点,包括:
9、对于所述点云中的每一个三维点,若所述三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差值小于预设阈值,确定该三维点为在当前视角下处于点云表面的三维点;否则,确定该三维点为在当前视角下处于点云非表面的三维点。
10、可选的,所述根据所述点云中的每一个三维点与相邻三维点之间的距离,将所述点云从三维空间映射到二维空间,获得当前视角下的深度图,包括:
11、根据所述点云中的每一个三维点与相邻三维点之间的距离,确定每一个三维点的显示尺寸,所述显示尺寸用于使三维点与其相邻三维点在显示时无间隙;
12、将确定了每一个三维点的显示尺寸的点云从三维空间映射到二维空间,获得当前视角下的深度图;其中,所述深度图中的像素为在当前视角下处于点云表面的部分三维点的映射结果。
13、可选的,所述点云中的每一个三维点与相邻三维点之间的距离为预设值;
14、其中,若所述点云为间隙均匀的点云,所述预设值根据所述点云中所有三维点分别与其相邻三维点之间的距离的统计值确定;
15、若所述点云为间隙不均匀的点云,所述预设值根据所述点云的业务场景指示的相邻条件确定。
16、可选的,每一个三维点的显示尺寸根据该三维点与其相邻三维点之间的距离、以及预存的三维空间中的距离与二维空间中的像素个数之间的换算关系确定。
17、可选的,所述将确定了每一个三维点的显示尺寸的点云从三维空间映射到二维空间,获得当前视角下的深度图,包括:
18、将确定了每一个三维点的显示尺寸的点云从三维空间映射到二维空间得到第一映射结果;
19、对所述第一映射结果进行深度测试,得到当前视角下的深度图。
20、可选的,所述确定点云中的每一个三维点在所述深度图中的映射位置,包括:
21、将所述点云从三维空间再次映射到二维空间得到第二映射结果;
22、根据所述第二映射结果,确定点云中的每一个三维点在所述深度图中的映射位置。
23、可选的,还包括:
24、在显示界面上以指定颜色和/或指定纹理显示所述目标三维点;或者
25、将所述目标三维点设置为选中状态;或者
26、删除所述目标三维点。
27、根据本申请实施例的第二方面,提供一种点云处理装置,包括:
28、深度图获取模块,用于响应于对点云的选择操作,根据所述点云中的每一个三维点与相邻三维点之间的距离,将所述点云从三维空间映射到二维空间,获得当前视角下的深度图;其中,所述深度图中的深度值为在当前视角下处于点云表面的至少部分三维点的深度值;
29、映射位置确定模块,用于确定点云中的每一个三维点在所述深度图中的映射位置;
30、表面三维点确定模块,用于根据所述点云中的每一个三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差异,确定在当前视角下处于点云表面的所有三维点;
31、目标三维点确定模块,用于从当前视角下处于点云表面的所有三维点中,确定处于所述选择操作指示的选择区域内的目标三维点。
32、根据本申请实施例的第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令;
33、其中,所述处理器执行所述可执行指令时实现如第一方面任意一项所述方法中的步骤。
34、根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现第一方面任意一项所述方法的步骤。
35、本公开的实施例提供的技术方案可以包括以下有益效果:
36、本公开实施例中,响应于对点云的选择操作,根据所述点云中的每一个三维点与相邻三维点之间的距离,将所述点云从三维空间映射到二维空间,获得当前视角下的深度图;其中,考虑到了不同三维点之间存在间隙的问题,为了避免在深度图中通过间隙呈现非点云表面的三维点,因此参考了所述点云中的每一个三维点与相邻三维点之间的距离,保证所述深度图中的深度值为在当前视角下处于点云表面的至少部分三维点的深度值;然后在确定点云中的每一个三维点在所述深度图中的映射位置之后,通过所述点云中的每一个三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差异可以确定出该三维点是否处于点云表面,在遍历完点云中的所有三维点之后可以确定在当前视角下处于点云表面的所有三维点,以及可以确定处于所述选择操作指示的选择区域内的目标三维点,实现对点云表面的三维点的准确选择。
37、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
1.一种点云处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述点云中的每一个三维点的深度值与该三维点在所述深度图中的映射位置处的深度值之间的差异,确定在当前视角下处于点云表面的所有三维点,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述点云中的每一个三维点与相邻三维点之间的距离,将所述点云从三维空间映射到二维空间,获得当前视角下的深度图,包括:
4.根据权利要求1或3所述的方法,其特征在于,所述点云中的每一个三维点与相邻三维点之间的距离为预设值;
5.根据权利要求3所述的方法,其特征在于,每一个三维点的显示尺寸根据该三维点与其相邻三维点之间的距离、以及预存的三维空间中的距离与二维空间中的像素个数之间的换算关系确定。
6.根据权利要求3所述的方法,其特征在于,所述将确定了每一个三维点的显示尺寸的点云从三维空间映射到二维空间,获得当前视角下的深度图,包括:
7.根据权利要求1所述的方法,其特征在于,所述确定点云中的每一个三维点在所述深度图中的映射位置,包括:
8.根据权利要求1所述的方法,其特征在于,还包括:
9.一种点云处理装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令;
11.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1至8任意一项所述方法的步骤。