CN113487691B - 一种点云编码方法、系统及存储介质 - Google Patents
一种点云编码方法、系统及存储介质 Download PDFInfo
- Publication number
- CN113487691B CN113487691B CN202111046705.3A CN202111046705A CN113487691B CN 113487691 B CN113487691 B CN 113487691B CN 202111046705 A CN202111046705 A CN 202111046705A CN 113487691 B CN113487691 B CN 113487691B
- Authority
- CN
- China
- Prior art keywords
- box
- layer
- point cloud
- side length
- cloud 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 title claims abstract description 25
- 238000001514 detection method Methods 0.000 claims description 16
- 238000009826 distribution Methods 0.000 abstract description 11
- 238000007906 compression Methods 0.000 abstract description 5
- 230000006835 compression Effects 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 238000005520 cutting process Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种点云编码方法、系统及存储介质,用以增加深度图的压缩率。所述方法包括:获取待编码的点云数据;计算所述点云数据的包围盒;将所述包围盒内每一个体素确定为单位边长的盒子;基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;对所述八叉堆结构进行熵编码,得到编码后的点云数据。采用本申请所提供的方案,将点云数据转换为八叉堆结构,之后通过编码生成字符串结构,实现了对点云数据的压缩编码,降低了点云数据占用的存储空间,降低存储和网络分发成本,而堆结构的收敛特性导致每一层的计算量逐渐下降,也提升了编码效率。
Description
技术领域
本申请涉及图像压缩编码技术领域,特别涉及一种点云编码方法、系统及存储介质。
背景技术
点云是指目标表面特性的海量点集合,通常是使用三维坐标测量机得到,或者使用三维激光扫描仪扫描得到,也可以通过照相式扫描仪得到,另外,也可以通过深度图转化得到。其相当于是某个坐标系下的点的数据集。这些点包含了丰富的信息,包括三维坐标(x,y,z)、颜色、分类值、强度值、时间、材料特性、纹理信息、反射率、运动参数、拟态参数等。可见,点云包含大量的数据,存储和网络分发成本高。
因此,如何提供一种点云编码方法,实现对点云数据的压缩,以降低点云数据占用的存储空间,降低存储和网络分发成本,是一亟待解决的技术问题。
发明内容
本申请提供一种点云编码方法、系统及存储介质,用以降低点云数据占用的存储空间,降低存储和网络分发成本。
本申请提供一种点云编码方法,包括:
获取待编码的点云数据;
计算所述点云数据的包围盒;
将所述包围盒内每一个体素确定为单位边长的盒子;
基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;
对所述八叉堆结构进行熵编码,得到编码后的点云数据。
本申请的有益效果在于:将点云数据转换为八叉堆结构,之后通过编码生成字符串结构,实现了对点云数据的压缩编码,降低了点云数据占用的存储空间,降低存储和网络分发成本,而堆结构的收敛特性导致每一层的计算量逐渐下降,也提升了编码效率。
在一个实施例中,基于所述单位边长的盒子进行建堆操作包括:
将所述单位边长的盒子作为第一层,以第一层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。
在一个实施例中,将所述单位边长的盒子作为第一层,以第一层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;包括:
S111:针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
S112:令k的取值依次为0、1…n,重复执行步骤S111,直至得到的上一层盒子的边长等于所述包围盒的边长,则停止执行步骤S111,得到所述点云数据的八叉堆结构;其中,n为整数。
在一个实施例中,针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子,包括:
针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。
在一个实施例中,基于所述单位边长的盒子进行建堆操作,包括:
基于所述单位边长的盒子,选取部分样本体素作为探测数据,以第一层为起始层,逐层向上归并,得到各层的盒子数量;
从第二层开始,针对任一层盒子,计算当前层盒子的数量与当前层的下一层盒子的数量之比,比值为当前层的探测衰减因子;
当所述探测衰减因子低于设定阈值时,将当前探测衰减因子对应的当前层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。
在一个实施例中,基于所述单位边长的盒子,选取部分样本体素作为探测数据,以第一层为起始层,逐层向上归并,得到各层的盒子数量,包括:
S211:针对选取的部分样本体素中的任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
S212:令k的取值依次为0、1…n,重复执行步骤S211,并统计各层对应的盒子数量。
在一个实施例中,当所述探测衰减因子低于设定阈值时,将当前探测衰减因子对应的当前层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构,包括:
S311:根据第一层盒子的边长,计算得到第m层盒子的边长;其中,第m层为初始层;
S312:针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
S313:令k的取值依次为m、m+1…n,重复执行步骤S312,直至得到的上一层盒子的边长等于所述包围盒的边长,则停止执行步骤S312,得到所述点云数据的八叉堆结构;其中,m为初始层的层数、n为整数。
在一个实施例中,针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子,包括:
针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。
本申请还提供一种点云编码系统,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现上述任一实施例所记载的点云编码方法。
本申请还提供一种计算机可读存储介质,当存储介质中的指令由点云编码系统对应的处理器执行时,使得点云编码系统能够实现上述任一实施例所记载的点云编码方法。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。
附图说明
附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:
图1为本申请一实施例中一种点云编码方法的流程图;
图2为本申请一实施例中一种衰减因子低于设定阈值时,将衰减因子所对应的第m层作为初始层开始归并的流程图;
图3为本申请另一实施例中一种点云编码方法的流程图;
图4为本申请一实施例中z轴上三维特征点分布情况的示意图;
图5为本申请一实施例中一种点云编码系统的硬件结构示意图。
具体实施方式
以下结合附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。
为了解决背景技术中提出的技术问题,本申请首先提出了一种通过树结构来对点云数据进行压缩的方案,具体的算法简述如下:步骤1,计算出点云数据的包围盒;步骤2,沿着各面中线切割分为8个小正方体,如果有点存在于小正方体内,将该小正方体标记为1,如果正方体内不存在点,将其标记为0;步骤3:在标记为1的小正方体内部重复步骤2,即在标记为1的小正方体内再分8个更小的正方体,如果更小的正方体内有点存在,标为1,再继续分割,不存在点的小正方体标为0即可。最后得到一个只包含0和1的数据,将其记录成一个树,树包含n层。以深度图为例:在深度图中,假设深度的范围为0-65535,0代表着这个像素位置没有深度数据,如果该点存在着非零值,说明该点存在着深度图数据。因此,在位置坐标(x,y)的基础上,增加一个z表示深度,所以一个点可以用(x,y,z)来表示。即将像素点的深度值作为第三维坐标,得到各个像素点对应的三维坐标值(x,y,z);
根据三维坐标值将各个像素点移动至各个像素点对应的三维坐标值所在位置,其中,移动至各个像素点对应的三维坐标值的像素点具有深度方向坐标的体素。
构建用于完全包裹所有点云信息的最小正方体;如果最小正方体的棱边为L,且L满足L≤2n时,将最小正方体的棱边长度扩大至2n,以构成棱边长度为2n的包围盒来包裹深度图对应的点云信息。
之后执行对包围盒的切割操作,以将包围盒切割为多个体积相同的第一正方体;对第一正方体进行分析操作,以确定每个第一正方体中是否存在体素;将不存在体素的第一正方体标记为0;将存在体素的第一正方体标记为1;对标记为1的第一正方体继续执行切割和分析操作,直至切割操作的次数达到m次时,确定包围盒切割完成,其中,m为正整数;将切割完成的包围盒编码为包含0和1的m层树结构。
将深度图转换为m层树的过程为划分过程,假设点云中的点的数目为p个,上次切割操作执行m次,那么,整个过程的运算规模为p×m次。
例如,p为279664,那么,整个计算过程的处理次数如下表1所示:
表1
切割次数 | 标记为1的正方体个数 | 处理次数 |
1 | 4 | 279664 |
2 | 16 | 279664 |
3 | 59 | 279664 |
4 | 257 | 279664 |
5 | 1028 | 279664 |
6 | 4083 | 279664 |
7 | 16537 | 279664 |
8 | 68213 | 279664 |
可见,上述方式最终需要进行2237312(279664×8)次运算,运算规模较为庞大,八叉树性能堪忧。
有鉴于此,本申请提供一种更高性能的点云编码方案,本申请改变思路,从几何级数的收敛上来考虑这个问题:
若存在数列如下:p1,p1*r,p1*r2,...p1*r(n-1),...;其和为: Sn= ∑ p1*r(n-1);求和公式为:Sn= p1*(rn-1)/(r-1);若0<r<1 则Sn收敛。
基于这样的思想,若将体素由上述划分过程改为归并过程,由至顶向下划分改为至底向上归并,那么,就有可能产生上述几何级数的收敛过程中的衰减因子r,随着归并过程的不断进行,衰减因子会不断减小,从而使得每一层的运算量都会下降,加速完成数据压缩。可见,归并过程比建树过程拥有更加良好的性能。下面对于归并过程进行详细介绍:
图1为本申请一实施例中一种点云编码方法的流程图,该方法可被实施为以下步骤S11-S14:
在步骤S11中,获取待编码的点云数据;
在步骤S12中,计算点云数据对应的包围盒;
在步骤S13中,将所述包围盒内每一个体素确定为单位边长的盒子;
在步骤S14中,基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;
在步骤S15中,对所述八叉堆结构进行熵编码,得到编码后的点云数据。
因此,本申请中,获取待编码的点云数据;该点云数据可以是由深度图转换而来,具体的转换过程将在下文中详细介绍。计算所述点云数据的包围盒;该包围盒可以是用于完全包裹点云数据的包围盒。将所述包围盒内每一个体素确定为单位边长的盒子;基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;对所述八叉堆结构进行熵编码,得到编码后的点云数据。
其中,上述步骤S14可通过以下步骤a1实现:
在步骤a1中,将所述单位边长的盒子作为第一层,以第一层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。
具体的,该步骤a1还可以进一步通过步骤S111-S112实现:
在步骤S111中:针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
在步骤S112中:令k的取值依次为0、1…n,重复执行步骤S111,直至得到的上一层盒子的边长等于所述包围盒的边长,则停止执行步骤S111,得到所述点云数据的八叉堆结构;其中,n为整数。
而上述步骤S111可以进一步实施为:针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。
具体而言:单位边长可视为1,那么,将所述包围盒内每一个体素确定为单位边长的盒子即将每个体素视为1x1x1的盒子,有如下算法:
第一步:将当前每一个2k*2k*2k盒子,求其落入的高一层边长大一倍的2k+1*2k+1*2k +1父盒子位置。此时,最多可有八个盒子有相同的父盒子。
第二步:令k=k+1, 重复第一步,直到当前盒子等于包围盒的边长。
这个过程符合堆的思想,结束时产生堆顶。
需要说明的是,k=k+1属于编程思想,并不是数学意义上的公式,k=k+1的意义在于,每次执行一次上述第一步,则k进行一次步长为1的自加操作。
整个归并过程的计算次数如下:
表2:
第几层 | 子盒子个数 | 父盒子个数 | 衰减因数 |
1 | 279664 | 68213 | 0.244 |
2 | 68213 | 16537 | 0.242 |
3 | 16537 | 4083 | 0.247 |
4 | 4083 | 1028 | 0.252 |
5 | 1028 | 257 | 0.250 |
6 | 257 | 59 | 0.230 |
7 | 59 | 16 | 0.271 |
8 | 16 | 4 | 0.250 |
9 | 4 | 1 | 0.250 |
从上表可以看出,虽然并不存在一个确定的衰减因子,但是大致可以得到一个近似值,使得r≈0.24。
与上述划分过程相比,子盒子数目一共有369861个,因此,归并过程一共执行369861次。也就是说,单纯的划分过程需要运算2237312次,而归并过程则需要运算369861次。从运算次数上来看,归并方案的性能优于划分方案。
表2反映的是体素较为稠密的情况下的衰减因子。而对于体素稀疏的情况,它的衰减形态有可能无法达到表2的衰减效果,在前几层衰减率很小甚至不衰减,具体的,体素系数的情况下,衰减形态可如下表3所示:
表3
第几层 | 子盒子个数 | 父盒子个数 | 衰减因数 |
1 | 4097231 | 4097176 | 1.000 |
2 | 4097176 | 4096771 | 1.000 |
3 | 4096771 | 4093156 | 0.999 |
4 | 4093156 | 4061440 | 0.992 |
5 | 4061440 | 3856886 | 0.950 |
6 | 3856886 | 3245454 | 0.841 |
7 | 3245454 | 2347784 | 0.723 |
8 | 2347784 | 1406766 | 0.599 |
9 | 1406766 | 658274 | 0.468 |
10 | 658274 | 243878 | 0.370 |
11 | 243878 | 78989 | 0.324 |
12 | 78989 | 23325 | 0.295 |
13 | 23325 | 6166 | 0.264 |
14 | 6166 | 1515 | 0.246 |
15 | 1515 | 364 | 0.240 |
16 | 364 | 95 | 0.261 |
17 | 95 | 28 | 0.295 |
18 | 28 | 7 | 0.250 |
19 | 7 | 2 | 0.286 |
20 | 2 | 1 | 0.500 |
从上表3可以看出,第5层以前,衰减效果不佳。这是由于体素在整数空间上的分布非常稀疏,因此,建堆效果在底下几层效果不佳。
针对上述情况,上述步骤S14还可通过以下方式b1-b3实现:
在步骤b1中,基于所述单位边长的盒子,选取部分样本体素作为探测数据,以第一层为起始层,逐层向上归并,得到各层的盒子数量;
在步骤b2中,从第二层开始,针对任一层盒子,计算当前层盒子的数量与当前层的下一层盒子的数量之比,比值为当前层的探测衰减因子;
步骤b1具体可被实施为以下步骤S211-S212:
在步骤S211中:针对选取的部分样本体素中的任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
在步骤S212中:令k的取值依次为0、1…n,重复执行步骤S211,并统计各层对应的盒子数量。
在步骤b3中,当所述探测衰减因子低于设定阈值时,将当前探测衰减因子对应的当前层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。
如图2所示,步骤b3具体可被实施为以下步骤S311- S313:
在步骤S311中,根据第一层盒子的边长,计算得到第m层盒子的边长;其中,第m层为所述初始层;
在步骤S312中,针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
步骤S312具体可被实施为:针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。
在步骤S313中,令k的取值依次为m、m+1…n,重复执行步骤S312,直至得到的上一层盒子的边长等于所述包围盒的边长,则停止执行步骤S312,得到所述点云数据的八叉堆结构;其中,m为初始层的层数、n为整数。
对每一层非空盒子的数量进行统计;根据统计结果确定盒子的衰减率达到预设比率的目标层;从目标层开始根据每一层盒子的位置及其对应的下一层盒子进行建堆操作:而针对目标层以上的盒子:获取目标层以上的每一层盒子的位置;通过划分的方式记录目标层以上的每一层盒子的位置。
具体的,针对体素较为稀疏的情况,可以再定一个探测衰减因子r1,使得:r1=Cur_B_Count/Point_Count;若 r1<T 则从该层开始建堆。其中Cur_B_Count为本层的归并后的父盒子数量,Point_Count为原体素数目。T为经验阈值,通常设定为0.6,从上述表格可知,第8层的衰减因子<0.6,则从第8层开始建堆能迅速衰减。
引入堆的概念在稠密点云下具有无可比拟的速度优势,在稀疏点云下依旧能保持良好的速度。这是根据树结构进行压缩编码的方案之外的另一种良性的编码方法。
本申请的有益效果在于:将点云数据转换为八叉堆结构,之后通过编码生成字符串结构,实现了对点云数据的压缩编码,降低了点云数据占用的存储空间,降低存储和网络分发成本,而堆结构的收敛特性导致每一层的计算量逐渐下降,也提升了编码效率。
在一个实施例中,如图3所示,上述步骤S11可被实施为以下步骤S31-S35:
在步骤S31中,获取待压缩的深度图;
在步骤S32中,确定深度图的分辨率信息;
在步骤S33中,根据深度图的分辨率信息计算各个像素点的坐标值;
在步骤S34中,获取各个像素点所在位置的深度值;
在步骤S35中,根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素,以通过所有具有深度方向坐标的体素构成点云信息。
在一个实施例中,上述步骤S32可被实施为以下步骤:
确定图像的宽为w像素,高为h像素;
上述步骤S33可被实施为以下步骤:
根据如下公式计算出各个像素点的二维坐标值:
x= i%w,y=[i/w];
其中,i表示任一行的第i个像素点,x表示第i个像素点的横坐标;y表示第i个像素点的纵坐标;%表示取余数;[]表示舍弃掉小数部分,向下取整。
在一个实施例中,上述步骤S35可被实施为如下步骤B1-B3:
在步骤B1中,在计算出各个像素点的二维坐标值之后,确定各个像素点的深度值;
在步骤B2中,将像素点的深度值作为第三维坐标,得到各个像素点对应的三维坐标值(x,y,z);
在步骤B3中,根据三维坐标值将各个像素点移动至各个像素点对应的三维坐标值所在位置,其中,移动至各个像素点对应的三维坐标值的像素点为具有深度方向坐标的体素。
本实施例中,在计算出各个像素点的二维坐标值之后,确定各个像素点的深度值;在深度图中,假设深度的范围为0-65535,0代表着这个像素位置没有深度数据,如果该点存在着非零值,说明该点存在着深度图数据。因此,在位置坐标(x,y)的基础上,增加一个z表示深度,所以一个点可以用(x,y,z)来表示。即将像素点的深度值作为第三维坐标,得到各个像素点对应的三维坐标值(x,y,z);根据三维坐标值将各个像素点移动至各个像素点对应的三维坐标值所在位置,其中,移动至各个像素点对应的三维坐标值的像素点为具有深度方向坐标的体素。
在一个实施例中,计算所述点云数据的包围盒,包括:
构建用于完全包裹所有点云信息的最小包围盒;
如果最小包围盒的棱边为L,且L满足L≤2n时,将最小包围盒的棱边长度扩大至2n,以构成棱边长度为2n的包围盒来包裹深度图对应的点云信息。
通过前文记载的通过m层树结构实现对深度图的压缩方案可以看出,这样的方案需要对包围盒沿中线切割,建堆过程反之,因此,应尽量保证各层正方体的棱边长度为整数,因此,在构建用于包裹点云信息的包围盒时,可以先构建用于包裹点云信息的最小正方体;如果最小正方体的棱边为L,且L满足L≤2n时,将最小正方体的棱边长度扩大至2n,以构成棱边长度为2n的包围盒来包裹深度图对应的目标对象,其中,n为正整数。例如,n为1,那么,执行1次上述步骤A1中的切割操作之后,能够保证切割后的最小正方体的边长为正数1,n为2,那么,执行两次上述步骤A1中的切割操作之后,能够保证切割后的最小正方体的边长为正数1。可见,当m≤n时,能够保证整个计算过程中不会出现浮点型数据,因此,该方案中,通过适度扩大棱边长度,使得包围盒的棱边长度为2n,从而提高了切割后的正方体棱边长度为整数的概率,减少了计算量,提升了计算速度。
本实施例的有益效果在于:通过适度扩大棱边长度,使得包围盒的棱边长度为2n,从而提高了切割后的正方体棱边长度为整数的概率,减少了计算量,提升了计算速度。
在一个实施例中,上述步骤S11还可被实施为以下步骤:
获取待压缩的深度图;确定深度图的分辨率信息;根据深度图的分辨率信息计算各个像素点的坐标值;获取各个像素点所在位置的深度值;根据像素点的坐标值和深度值将像素点转换为具有深度方向坐标的体素;生成用于记录同一坐标轴上的点的分布情况的第一表格;根据第一表格判断同一坐标轴上的点之间是否存在间隙;当存在间隙时,减小间隙之后各个点在坐标轴上的坐标值,以消除点之间的间隙;确定消除间隙后的点所构成的对象为点云信息。
举例而言,以z轴为例,z轴表示深度图的深度方向,如图4所示,假设z轴只有4个位置有深度值,分别为87、987、6793和31723这四个位置,如果对着四个深度值进行熵编码,计算量会很大,因此,本申请中,生成用于记录z轴上的体素分布情况的第一表格如下表4所示:
表4
通过该表4可知,z轴上的体素之间存在间隙,因此,需要消除体素之间的间隙,具体的,将87移动到z轴坐标为0的位置,将987移动到z轴坐标为1的位置,将6793移动到z轴坐标为2的位置,将31723移动到z轴坐标为3的位置。之后对上表4进行映射,生成与第一表格存在映射关系的第二表格,其中,第二表格用于记录消除间隙后的体素的分布情况,第二表格如下表5所示:
表5
不难理解的是,在将压缩后的深度图还原程原始深度图时,可以参考上述表4和表5的映射关系进行还原。
图5为本申请提供的一种点云编码系统的硬件结构示意图,包括:
至少一个处理器520;以及,
与至少一个处理器通信连接的存储器504;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述任一实施例所记载的点云编码方法。
参照图5,该点云编码系统500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出接口512,传感器组件514,以及通信组件516。
处理组件502通常控制点云编码系统500的整体操作,处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在点云编码系统500的操作。这些数据的示例包括用于在点云编码系统500上操作的任何应用程序或方法的指令,如文字,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为点云编码系统500的各种组件提供电源。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为点云编码系统500生成、管理和分配电源相关联的组件。
多媒体组件508包括在点云编码系统500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508还可以包括一个前置摄像头和/或后置摄像头。当点云编码系统500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当点云编码系统500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
输入/输出接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为点云编码系统500提供各个方面的状态评估。例如,传感器组件514可以包括声音传感器。另外,传感器组件514可以检测到点云编码系统500的打开/关闭状态,组件的相对定位,例如组件为点云编码系统500的显示器和小键盘,传感器组件514还可以检测点云编码系统500或点云编码系统500的一个组件的位置改变,用户与点云编码系统500接触的存在或不存在,点云编码系统500方位或加速/减速和点云编码系统500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为使点云编码系统500提供和其他设备以及云平台之间进行有线或无线方式的通信能力。点云编码系统500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,点云编码系统500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述点云编码方法。
本申请还提供一种计算机可读存储介质,当存储介质中的指令由点云编码系统对应的处理器执行时,使得点云编码系统能够实现上述任一实施例所记载的点云编码方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种点云编码方法,其特征在于,包括以下步骤S11-S15:
步骤S11:获取待编码的点云数据;
步骤S12:计算所述点云数据的包围盒;
步骤S13:将所述包围盒内每一个体素确定为单位边长的盒子;
步骤S14:基于所述单位边长的盒子进行建堆操作,得到所述点云数据的八叉堆结构;
步骤S15:对所述八叉堆结构进行熵编码,得到编码后的点云数据;
上述步骤S14包括以下步骤b1-b3:
步骤b1:基于所述单位边长的盒子,选取部分样本体素作为探测数据,以第一层为起始层,逐层向上归并,得到各层的盒子数量;
步骤b2:从第二层开始,针对任一层盒子,计算当前层盒子的数量与当前层的下一层盒子的数量之比,比值为当前层的探测衰减因子;
步骤b3:当所述探测衰减因子低于设定阈值时,将当前探测衰减因子对应的当前层作为初始层,逐层向上归并,直至第n层的盒子的边长等于所述包围盒的边长,则停止归并,得到所述点云数据的八叉堆结构;其中,n为正整数。
2.根据权利要求1所述的方法,其特征在于,步骤b1包括以下步骤S211-S212:
步骤S211:针对选取的部分样本体素中的任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
步骤S212:令k的取值依次为0、1…n,重复执行步骤S211,并统计各层所对应的盒子的数量。
3.根据权利要求1所述的方法,其特征在于,步骤b3包括以下步骤S311-S313:
步骤S311:根据第一层盒子的边长,计算得到第m层盒子的边长;其中,第m层为所述初始层;
步骤S312:针对任一2k*2k*2k的盒子,计算该盒子对应的上一层盒子;其中,上一层盒子的边长为2k+1*2k+1*2k+1;
步骤S313:令k的取值依次为m、m+1…n,重复执行步骤S312,直至得到的上一层盒子的边长等于所述包围盒的边长,则停止执行步骤S312,得到所述点云数据的八叉堆结构;其中,m为初始层的层数、n为整数。
4.根据权利要求3所述的方法,其特征在于,步骤S312包括:
针对任一2k*2k*2k的盒子,若该盒子不存在对应的上一层盒子,则建立与该盒子对应的上一层盒子;若该盒子存在对应的上一层盒子,则将该盒子归并入对应的上一层盒子。
5.一种点云编码系统,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现如权利要求1-4任意一项所述的点云编码方法。
6.一种计算机可读存储介质,其特征在于,当存储介质中的指令由点云编码系统对应的处理器执行时,使得点云编码系统能够实现如权利要求1-4任意一项所述的点云编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046705.3A CN113487691B (zh) | 2021-09-08 | 2021-09-08 | 一种点云编码方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046705.3A CN113487691B (zh) | 2021-09-08 | 2021-09-08 | 一种点云编码方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113487691A CN113487691A (zh) | 2021-10-08 |
CN113487691B true CN113487691B (zh) | 2022-01-28 |
Family
ID=77947359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111046705.3A Active CN113487691B (zh) | 2021-09-08 | 2021-09-08 | 一种点云编码方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113487691B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407408B (zh) * | 2016-09-22 | 2019-08-16 | 北京数字绿土科技有限公司 | 一种海量点云数据的空间索引构建方法及装置 |
CN109345619B (zh) * | 2018-08-10 | 2023-05-16 | 华北电力大学(保定) | 基于类八叉树编码的海量点云空间管理方法 |
CN110349230A (zh) * | 2019-07-15 | 2019-10-18 | 北京大学深圳研究生院 | 一种基于深度自编码器的点云几何压缩的方法 |
US11368717B2 (en) * | 2019-09-16 | 2022-06-21 | Tencent America LLC | Method and apparatus for point cloud compression |
EP3828704B1 (en) * | 2019-11-29 | 2023-06-28 | My Virtual Reality Software AS | Real-time data acquisition and visualization for point-cloud recording |
CN112465949B (zh) * | 2020-11-26 | 2024-08-06 | 陕西铁道工程勘察有限公司 | 基于嵌套八叉树的大规模点云数据组织方法 |
CN112489177B (zh) * | 2020-11-30 | 2024-04-09 | 深圳供电局有限公司 | 一种点云数据渲染展示方法及系统 |
CN112581552B (zh) * | 2020-12-14 | 2023-04-07 | 深圳大学 | 自适应分块的基于体素的点云压缩方法及装置 |
CN112911302B (zh) * | 2021-01-20 | 2022-07-26 | 南京邮电大学 | 一种面向动态点云几何信息压缩的新型合并预测编码方法 |
CN113178004A (zh) * | 2021-04-28 | 2021-07-27 | 北京东方耀阳信息技术有限公司 | 一种基于超核八叉树海量点云显示方法 |
-
2021
- 2021-09-08 CN CN202111046705.3A patent/CN113487691B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113487691A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108629354B (zh) | 目标检测方法及装置 | |
US11308351B2 (en) | Method and apparatus for recognizing sequence in image, electronic device, and storage medium | |
KR101670004B1 (ko) | 화상 분할 방법, 장치, 프로그램 및 기록매체 | |
TWI766228B (zh) | 網路模組、分配方法及裝置、電子設備和電腦可讀儲存媒體 | |
CN106295515B (zh) | 确定图像中的人脸区域的方法及装置 | |
JP2018124984A (ja) | モバイル装置の環境の3d再構成のための方法および対応するコンピュータ・プログラム・プロダクトおよび装置 | |
US20160314616A1 (en) | 3d identification system with facial forecast | |
US10165168B2 (en) | Model-based classification of ambiguous depth image data | |
US20120327172A1 (en) | Modifying video regions using mobile device input | |
CN108875797B (zh) | 一种确定图像相似度的方法、相册管理方法及相关设备 | |
CN103019537B (zh) | 一种图像预览方法及装置 | |
CN110569708A (zh) | 文本检测方法及装置、电子设备和存储介质 | |
CN105426878B (zh) | 人脸聚类方法及装置 | |
US20220351478A1 (en) | Stereoscopic image acquisition method, electronic device and storage medium | |
CN113727105B (zh) | 一种深度图压缩方法、装置、系统及存储介质 | |
CN112508974B (zh) | 图像分割模型的训练方法、装置、电子设备和存储介质 | |
US20220222831A1 (en) | Method for processing images and electronic device therefor | |
CN113505707A (zh) | 吸烟行为检测方法、电子设备及可读存储介质 | |
CN113487690B (zh) | 一种深度图处理方法、系统及存储介质 | |
US20210166073A1 (en) | Image generation method and computing device | |
CN113487691B (zh) | 一种点云编码方法、系统及存储介质 | |
CN111914774B (zh) | 基于稀疏卷积神经网络的3d物体检测方法及装置 | |
CN113870413A (zh) | 三维重建方法、装置、电子设备及存储介质 | |
CN115995091B (zh) | 一种流程图读取方法及装置、电子设备和存储介质 | |
CN116310633A (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Huang Fupeng Inventor after: Qu Tan Inventor after: Li Xiangyu Inventor after: Fan Wenxin Inventor after: Guo Li Inventor before: Huang Fupeng Inventor before: Li Xiangyu Inventor before: Fan Wenxin Inventor before: Guo Li |
|
CB03 | Change of inventor or designer information |