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.在一种实现方式中,处理单元,还用于:
38.若当前待解码的点为重复点,则确定所述重复点的重复点数量;其中,所述当前待解码的点为重复点是指:所述当前待解码的点与所述当前待解码的点的任一个前序点的几何信息相同,所述当前待解码的点的前序点是指:在解码顺序中位于所述当前待解码的点之前的点;
39.将所述重复点的前序点的重建几何信息,作为所述重复点数量个重复点的重建几何信息。
40.在一种实现方式中,所述点云数据中是否存在重复点的判定方式,包括:
41.获取重复点检测标识位,并根据所述重复点检测标识位判定所述点云数据中是否存在重复点;
42.其中,重复点检测标识位是编码端与解码端协商设置的,或者,所述重复点检测标识位是解码端从编码码流或参数集中解析得到的。
43.在一种实现方式中,编码码流中包括重复点标识位;在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
44.按照所述点云数据中各点的解码顺序,逐个解析重复点标识位,得到每个重复点标识位的标识位解析结果;
45.根据所述每个重复点标识位的标识位解析结果,确定所述点云数据中的重复点;
46.以及,对所述点云数据中的重复点进行重复点数量解析,以得到所述点云数据中各重复点的重复点数量。
47.在一种实现方式中,在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
48.确定重复点检测间隔,所述重复点检测间隔指示:按照所述点云数据中各点的解码顺序,每间隔预设数量个点解析对应位置处的点的重复点数量;所述重复点检测间隔是编码端与解码端协商设置的,或者,所述重复点检测间隔是解码端从编码码流或参数集中解析得到的;
49.按照所述点云数据中各点的解码顺序,对所述点云数据中每间隔所述预设数量个
点对应位置处的点的重复点标识位进行解析;
50.若解析结果指示所述对应位置处的点是重复点,则解析所述对应位置处的点的重复点数量。
51.在一种实现方式中,若所述点云数据中除起始点之外的任一点的预测几何信息,是基于所述任一点的相邻前序点的预测几何信息预测得到的,则在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
52.若所述点云数据中的所述任一点的重建残差信息的k个方向均为预设值,则确定所述任一点为重复点;其中,所述k个方向包括x方向、y方向以及z方向,所述预设值为零;
53.对所述任一点进行重复点数量解析,以得到所述任一点的重复点数量。
54.在一种实现方式中,处理单元,还用于:
55.获取组内最大点数,所述组内最大点数指示点云组所允许被划分得到的点的最大数量;
56.根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组;l为大于1的整数。
57.在一种实现方式中,所述对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息;处理单元用于基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树时,具体用于:
58.对所述点云数据中每个点云组进行起始点解析,得到所述每个点云组的起始点的重建几何信息;
59.根据所述l个点云组中的每个点云组的起始点的重建几何信息,重建所述每个点云组的单链预测树;
60.基于所述l个点云组的分组顺序,将所述每个点云组的单链预测树进行连接,以生成所述点云数据的单链预测树。
61.在一种实现方式中,所述l个点云组中每个点云组的组内最大点数相同;处理单元用于获取组内最大点数时,具体用于:
62.对所述点云数据的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到每个点云组所允许被划分的组内最大点数;所述分组点数字段属于编码码流或参数集;
63.或者,对所述点云数据的组内最大点数信息进行解析,得到每个点云组所允许被划分的组内最大点数;所述组内最大点数信息属于编码码流或参数集。
64.在一种实现方式中,处理单元用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
65.按照所述点云数据中各点的解码顺序,将相邻所述组内最大点数的点划分至一个点云组,以得到l个点云组;
66.其中,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则将所述剩余未划分的点添加至第l个点云组;
67.或者,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组,若所述剩余未划分的点的数量小于所
述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
68.在一种实现方式中,处理单元用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
69.确定所述点云数据所包含的点的数量,与所述组内最大点数之间的点数关系;
70.若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则按照所述点云数据中各点的解码顺序,将所述点云数据中各点均匀划分至l个点云组;
71.或者,若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组;或者,若所述剩余未划分的点的数量小于所述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
72.在一种实现方式中,所述l个点云组中存在至少两个点云组的组内最大点数不同,且所述l个点云组中包括相邻的第k个点云组和第k+1个点云组,k=1,2,3,...,l-1;所述第k+1个点云组的目标组内最大点数的获取方式,包括:
73.在划分得到所述第k个点云组后,对所述第k+1个点云组的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述目标分组点数字段属于编码码流或参数集;
74.或者,在划分得到所述第k个点云组后,对所述第k+1个点云组的组内最大点数信息进行解析,得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述组内最大点数信息属于编码码流或参数集。
75.在一种实现方式中,处理单元用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
76.按照所述点云数据中各点的解码顺序,将位于所述第k个点云组中最后一个点之后的,相邻所述目标组内最大点数个点划分至第k+1个点云组。
77.在一种实现方式中,处理单元用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
78.根据所述组内最大点数确定分组点数,所述分组点数小于所述组内最大点数;
79.按照所述点云数据中各点的解码顺序,将所述点云数据中相邻所述分组点数个点划分至一个点云组中,以得到l个点云组。
80.在一种实现方式中,所述点云数据中包括重复点,处理单元,还用于:
81.获取重复点划分信息,所述重复点划分信息指示:将重复点划分至点云组,或者,所述重复点划分信息指示将重复点不划分至点云组;所述重复点划分信息是编码端与解码端协商设置的,或者,所述重复点划分信息属于编码码流或参数集;
82.根据所述重复点划分信息,对所述点云数据包括的重复点进行分组处理。
83.在一种实现方式中,参数集包括头信息文件和片头文件,所述头信息文件或所述片头文件中包括一个或多个分组标识位;处理单元,还用于:
84.对所述一个或多个分组标识位进行解析;
85.若所述一个或多个分组标识位的解析值满足分组条件,则触发执行所述获取组内
最大点数的步骤;
86.其中,所述一个或多个分组标识位至少包括分组点数字段。
87.在一种实现方式中,所述分组标识位的数量大于1,所述分组标识位还包括以下至少一个:预设树编码标识位、预测树状态标识位、稀疏标识位及几何树类型标识位;处理单元,用于对所述一个或多个分组标识位进行解析时,具体用于:
88.采用顺序解析规则对多个分组标识位进行解析;
89.其中,所述顺序解析规则指示:对所述多个分组标识进行并列解析,或者,对所述多个分组标识位进行递进解析。
90.在本技术实施例中,解码端在获取到待解码的点云数据后,可对点云数据进行起始点解析,得到点云数据的至少一个起始点的重建几何信息;再分别以各个起始点的重建几何信息为基准,重建点云数据的单链预测树;相比于只基于一个起始点进行重建而言,能够提升恢复单链预测树的速度和效率。上述方案中,通过在解码端按照编码端的方式重建点云数据的单链预测树,不仅完善解码端的单链预测树的构建步骤,而且有利于解码端基于单链预测树确定出点云数据中各点的连接顺序;同时,在重建出的点云数据中各点的重建几何信息后,按照点云数据中各点的重建几何信息的解码顺序,就可以快速构建点云数据的单链预测树的方式,在一定程度上提升预测树模式的传输效率。
91.另一方面,本技术实施例提供了一种点云编码装置,该装置包括:
92.获取单元,用于获取待编码的点云数据,所述点云数据包括多个待编码的点;
93.处理单元,用于为所述点云数据确定起始点;
94.所述处理单元,还用于基于所述点云数据的起始点构建所述点云数据的单链预测树;
95.所述处理单元,还用于根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理。
96.在一种实现方式中,处理单元用于根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理时,具体用于:
97.基于所述点云数据的起始点的真实几何信息,对所述点云数据中各点进行几何预测处理,得到所述点云数据中各点的预测几何信息;
98.基于所述点云数据中各点的预测几何信息和真实几何信息,确定所述点云数据中各点的残差信息;
99.为所述点云数据设置残差编码规则,并按照所述点云数据中各点的残差编码规则,对所述点云数据中各点的残差信息进行残差编码处理,得到编码处理后的编码码流。
100.在一种实现方式中,处理单元用于为所述点云数据设置残差编码规则时,具体用于:
101.为所述点云数据中的起始残差信息设置残差编码规则,所述起始残差信息是指:所述点云数据中与所述起始点相邻,且链接于所述起始点之后的点的残差信息;
102.以及,为所述点云数据中除所述起始残差信息之外的其他残差信息设置残差解码规则;
103.其中,所述起始残差信息的残差编码规则,和所述点云数据中除所述起始残差信息之外的其他残差信息的残差编码规则相同或不同。
104.本技术实施例中,在需要对待编码的点云数据中各个待编码的点进行编码处理时,编码端可以基于待编码的点云数据中各点的真实几何信息从点云数据中选取一个或多个起始点,并基于一个或多个起始点构建点云数据的单链预测树;再基于单链预测树对点云数据中各待编码的点进行编码处理,得到编码码流(或称为压缩码流)。这种基于多起始点构建点云树的单链预测树的方式,能够实现提升点云数据的单链预测树的构建速度,从而提高点云数据的编码效率。
105.另一方面,本技术实施例提供了一种计算机设备,该计算机设备包括:
106.处理器,用于加载并执行计算机程序;
107.计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,实现上述点云解码方法或点云编码方法。
108.另一方面,本技术提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行上述点云解码方法或点云编码方法。
109.另一方面,本技术提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述点云解码方法或点云编码方法。
附图说明
110.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
111.图1是本技术实施例提供的一种编码框架的结构示意图;
112.图2a是本技术实施例提供的一种八叉树编码结构的示意图;
113.图2b是本技术实施例提供的一种多链预测树编码结构的示意图;
114.图2c是本技术实施例提供的一种单链的预测树结构的示意图;
115.图3是本技术实施例提供的一种点云编解码系统的架构示意图;
116.图4是本技术实施例提供的一种点云解码方法的流程示意图;
117.图5是本技术实施例提供的一种起始点解析的示意图;
118.图6是本技术实施例提供的一种基于多种起始点选取规则重建起始点的重建几何信息的示意图;
119.图7是本技术实施例提供的一种重建点云数据的单链预测树的示意图;
120.图8是本技术实施例提供的一种从点云包围盒的各个顶点中确定起始点的示意图;
121.图9是本技术实施例提供的一种构建单链预测树的示意图;
122.图10是本技术实施例提供的一种确定重复点的重建几何信息的示意图;
123.图11是本技术实施例提供的一种基于重复点检测间隔,确定重复点的示意图;
124.图12是本技术实施例提供的另一种点云解码方法的流程示意图;
125.图13是本技术实施例提供的一种分组处理的示意图;
126.图14是本技术实施例提供的一种对重复点进行分组处理的示意图;
127.图15是本技术实施例提供的一种基于l个点云组的单链预测树,重建得到整个点云数据的单链预测树的示意图;
128.图16是本技术实施例提供的一种点云编码方法的流程示意图;
129.图17是本技术实施例提供的一种基于分组构建单链预测树的点云编码方法;
130.图18是本技术实施例提供的一种点云解码装置的结构示意图;
131.图19是本技术实施例提供的一种点云编码装置的结构示意图;
132.图20是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
133.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
134.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
135.为了更清楚地理解本技术实施例提供的技术方案,在此先对本技术实施例涉及的关键术语进行介绍:
136.一、点云数据(point cloud data)。
137.点云数据可以是指空间中一组无规则分布的、表达三维物体或三维场景的空间结构及表面属性的离散点集,点云数据中可以包括多个点,每个点具备几何信息和属性信息。其中,几何信息也可以称为三维位置信息,任一个点的几何信息可以是指该点的三维坐标(x,y,z),可以包括该点在三维坐标系统的各个坐标轴中的坐标值,即x轴的坐标值x,y轴的坐标值y,z轴的坐标值z。任一个点的属性信息可以包括以下至少一种:颜色信息、材质信息、激光反射强度信息(也可以称为反射率)。通常,点云数据中的每个点具有相同数量的属性信息;例如,点云数据中的每个点都可以具有颜色信息和激光反射强度两种属性信息;或者,点云数据中的每个点都可以具有颜色信息、材质信息和激光反射强度信息三种属性信息。另外,可以根据不同的分类标准将点云数据划分为不同的类别;例如,从点云数据的获取方式划分,可以分为将点云数据的类型分为密集型点云和稀疏型点云;又如,从点云数据的时序类型划分,可以将点云数据的类型分为静态点云和动态点云。
138.二、点云编码(point cloud compression,pcc)。
139.点云编码是指对点云数据进行编码,得到点云数据的压缩码流(或称为编码码流)的过程。点云编码可以包括几何信息编码和属性信息编码两个主要过程。目前主流的点云编码技术,针对点云数据的不同类型,可以分为基于几何结构的点云编码以及基于投影的点云编码;以mpeg(moving picture expert group,国际视音频编解码标准)中的g-pcc(geometry-based point cloud compression,基于几何结构的点云编码),以及avs(audiovideocodingstandard,中国国家视频编解码标准)中的点云编码标准avs-pcc为例
进行介绍。
140.g-pcc及avs-pcc均针对静态的稀疏性点云,两者的编码框架大致相同,如图1所示,可以分为几何信息编码过程以及属性信息编码过程。几何信息编码过程对点云数据中各点的几何信息进行编码,得到几何比特流;属性信息编码过程对点云数据中各点的属性信息进行编码,得到属性比特流;几何比特流和属性比特流共同组成点云数据的压缩码流。
141.1、对于几何信息编码过程,主要操作和处理可以参见如下描述:
142.(1)预处理(pre-processing):可以包括坐标变换(transform coordinates)和体素化(voxelize)。通过缩放和平移的操作,将三维空间中的点云数据转换成整数形式,并将其最小几何位置移至坐标原点处。
143.(2)几何编码(geometry encoding):可以包括多种模式,如几何八叉树编码、几何预测树编码及基于三角表示的几何编码等,在不同条件下可对点云数据使用不同的模式。下面对上述给出的三种模式进行介绍;其中:
144.①
几何八叉树编码(octree):八叉树是一种树形数据结构。对于3d空间中的点云数据,八叉树划分方式包括:逐层次地对预先设定的包围盒进行均匀划分,每个节点都具有八个子节点。通过对八叉树各个子节点的占用与否采用“1”和“0”指示,如图2a所示,获得占用码信息(occupancy code)作为点云几何信息的码流。其中,上述提及的包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。
145.目前支持基于莫顿序(morton)实现八叉树的构建,即将点云数据的3d坐标信息(即几何信息)通过查询莫顿顺序表,转换成对应的莫顿码。然后,根据每一位莫顿码的排序,获得每层八叉树的对应点。目前主流的点云编码技术是利用八叉树划分对点云数据进行表示,对几何信息和属性信息采用不同的处理流程。其中,莫顿序又称为莫顿曲线,是一种递归的空间分割技术,能够较好地把三维空间映射成一维的空间曲线,并且具有较好的局部特性。
146.②
几何预测树编码(predictive tree):分析点云数据中各点的三维坐标的邻近关系,设置一定的准则将各个点逐一连接成单链或是多链的树形结构,利用前后连接的父节点和子节点之间的坐标计算残差值,通过对残差值及可能存在的索引值及计算方法进行编码。
147.基于点云数据所包含的多个点构建预测树的过程,其实质是解决tsp(traveling salesman problem,旅行商问题)问题的过程。tsp问题是一个经典的组合优化问题。经典的tsp可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的回路。由于该问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸,它是一个np完全问题。由于其在交通运输、电路板线路设计以及物流配送等领域内有着广泛的应用,国内外学者对其进行了大量的研究。早期的研究者使用精确算法求解该问题,常用的方法包括:分枝定界法、线性规划法、动态规划法等。但是,随着问题规模的增大,精确算法将变得无能为力,因此,在后来的研究中,国内外学者重点使用近似算法或启发式算法,主要有遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、贪婪算法和神经网络等。
148.例如,用无向加权图来对tsp建模,则城市是图的顶点,道路是图的边,道路的距离就是该边的长度。它是起点和终点都在一个特定顶点,访问每个顶点恰好一次的最小化问题。通常,该模型是一个完全图(即每对顶点由一条边连接)。如果两个城市之间不存在路径,则增加一条非常长的边就可以完成图,而不影响计算最优回路。在对称tsp问题中,两座城市之间来回的距离是相等的,形成一个无向图。这种对称性将解的数量减少了一半。在非对称tsp问题中,可能不是双向的路径都存在,或是来回的距离不同,形成了有向图。交通事故、单行道和出发与到达某些城市机票价格不同等都是打破这种对称性的例子。
149.一种mpeg多链预测树编码结构的示意图可参见图2b,该多链预测树以点201为起始点,并在该起始点之后依次链接多个点;当链接至点202时,出现3条以点202为起始点的分支链路,如从左到右和从上至下分别包括:第一分支链路、第二分支链路以及第三分支链路。其中,第一分支链路和第二分支链路均为单链,第三分支链路在链接至点203时,出现以点203为起始点的两条分支链路。一种avs单链预测树编码结构的示意图可参见图2c,该单链预测树从起始点204开始,将点云数据所包含的所有点链接成为一个单一的预测树,该单链预测树中不存在分支链路。
150.③
基于三角表示的几何编码(trisoup):在点云块划分的基础上,定位点云表面在块的边缘的交点并构建三角形。通过编码交点位置实现几何信息的压缩。点云块是对点云数据中的各个点所处的三维空间进行划分得到的,每个点云块中包括点云数据中的部分点。
151.(3)几何量化(geometryquantization):量化的精细程度通常由量化参数(quantizerparameter,qp)来决定,qp取值较大大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真,及较低的码率;相反,qp取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。在点云编码中,量化是直接对点的坐标信息进行的。
152.(4)几何熵编码(geometryentropyencoding):是对量化(有损情况下)后的有符号属性预测残差或变换系数进行二值化和处理的编码模式;换句话说,是针对八叉树的占用码信息,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常用的统计编码方式是基于上下文的二值化算术编码(content adaptive binary arithmetic coding,cabac)。
153.2、对于属性信息编码过程,主要操作和处理可以参见如下描述:
154.(1)属性重上色(recoloring):有损编码情况下,在几何信息编码后,需编码端解码并重建几何信息,即恢复点云数据中各点的几何信息。在原始的点云数据中寻找对应一个或多个邻近点的属性信息,作为该重建点的属性信息。
155.(2)属性变换编码(transform):分析几何信息的邻近关系,通过变换矩阵将一定数量的点对应的真实属性信息转换为变换系数,对变换系数进行编码。属性变换编码中包括三种模式,如属性预测变换编码、属性提升变换编码及分层区域自适应变换编码。下面对上述给出的三种模式进行详细介绍,其中:
156.①
属性预测变换编码(predictingtransform):根据距离选择子点集,将点云数据划分成多个不同的层级(level ofdetail,lod),实现由粗糙到精细化的点云表示。相邻层之间可以实现自下而上的预测,即由粗糙层中的邻近点预测精细层中引入的点的属性信
息,获得对应的残差信号。其中,最底层的点作为参考信息进行编码。
157.②
属性提升变换编码(liftingtransform):在lod相邻层预测的基础上,引入邻域点的权重更新策略,最终获得各点的预测属性值,获得对应的残差信号。
158.③
分层区域自适应变换编码(region adaptive hierarchical transform,raht):属性信息经过raht变换,将信号转换到变换域中,称之为变换系数。
159.(3)属性信息量化(attribute quantization):量化的精细程度通常由量化参数来决定。在属性预测编码中,是对量化后的预测残差信息进行熵编码;在属性变换编码及属性预测变换编码中,是对量化后的变换系数进行熵编码。
160.(4)属性熵编码(attribute entropy coding):量化后的预测残差信息或变换系数一般使用行程编码(run length coding)及算数编码(arithmetic coding)实现最终的压缩。相应的编码模式,量化参数等信息也同样采用熵编码器进行编码。
161.三、点云解码。
162.点云解码是指对点云数据的压缩码流进行解码,以重建点云数据的过程。具体地,可以是基于压缩码流中的几何比特流和属性比特流,重建点云数据中各点的几何信息和属性信息的过程。在解码端获得点云数据的压缩码流之后,对于几何比特流,首先进行熵解码,获得各种模式信息、量化后的几何信息以及属性信息;然后几何信息经过反量化,得到重建的3d(3-dimensional)点位置信息(即几何信息)。对于属性比特流,首先进行熵解码,得到点云数据中各点量化后的预测残差信息或量化后的变换系数;然后对量化后的预测残差信息进行反量化得到重建残差信息,对量化后的变换系数进行反量化得到重建变换系数,重建变换系数经反变换后得到重建残差信息,根据点云数据中各点重建残差信息可以重建点云数据中各点的属性信息。将点云数据中各点重建的属性信息,按顺序与重建的几何信息一一对应,得到重建的点云数据。
163.基于上述关于点云数据、点云编码和点云解码的相关描述,本技术实施例提供了一种点云处理方案,该点云处理方案可以包括点云编码方案和点云解码方案,所谓点云编码方法是编码端对待编码的点云数据进行编码处理的方案,所谓点云解码方案是解码端对待解码的点云数据进行解码处理的方案。其中:
164.①
在点云编码方案中,在需要对待编码的点云数据中各个待编码的点进行编码处理时,可以基于点云数据中各点的几何信息从点云数据中选取起始点,并基于起始点构建点云数据的单链预测树;再基于单链预测树对点云数据中各待编码的点进行编码处理,得到编码码流(或称为压缩码流)。这种基于单链预测树对点云数据中各点进行编码的方式,可以提升点云数据的编码效率。
165.②
在点云解码方案中,在需要对待解码的点云数据中各个待解码的点进行解码处理时,可以按照编码端选取起始点的规则,在解码端重建起始点的重建几何信息;再分别以起始点的重建几何信息为基准,重建点云数据中其他待解码的点的重建几何信息;最后基于点云数据中所有点的重建几何信息的解码顺序,在解码端恢复点云数据的单链预测树。通过在解码端按照编码端的方式重建点云数据的单链预测树,不仅完善解码端的单链预测树的构建步骤,而且有利于解码端基于单链预测树确定出点云数据中各点的连接顺序;同时,在重建出的点云数据中各点的重建几何信息后,按照点云数据中各点的重建几何信息的解码顺序,就可以快速构建点云数据的单链预测树的方式,在一定程度上提升预测树模
式的传输效率。
166.另外,本技术实施例还支持在编码端选取至少两个起始点,相应地在解码端重建至少两个起始点的重建几何信息;相比于只基于一个起始点进行构建单链预测树而言,能够提升预测树构建效率。
167.本技术实施例提供的点云处理方案还可与云技术中的云计算、云存储等技术结合。其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务,云计算可为点云数据的编码阶段和点云数据的解码阶段提供强大的计算支持,这样可以大大提升点云数据的编码效率,提升点云数据的解码效率。云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统,云存储可为点云数据的编码阶段和点云数据的解码阶段提供强大的存储支持,这样可进一步提升点云数据的编码效率,提升点云数据的解码效率。
168.基于上述对点云数据、点云编码和点云解码的相关描述,本技术实施例提出一种点云编解码系统。如图3所示,点云编解码系统30中可以包括编码设备301和解码设备302,编码设备301或解码设备302可以是终端,也可以是服务器,编码设备301和解码设备302之间可以建立通信连接。其中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、智能电视等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content deliverynetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。为便于阐述,本技术实施例对编码设备和编码端不作区分描述,同理对解码设备和解码端不作区分描述。
169.基于图3所示的点云编解码系统,下面对编码设备301和解码设备302共同执行点云数据的编解码方案,进行简单介绍,其中:
170.(1)编码设备301获取待编码的点云数据。
171.其中,待编码的点云数据可以通过场景捕获或设备生成两种方式获取得到。其中,场景捕获点云数据可以是指:通过捕获设备或测量仪器采集真实世界的视觉场景得到点云数据;捕获设备可以是设置于编码设备301中的硬件组件,例如捕获设备是终端的摄像头、传感器等。捕获设备也可以是与编码设备301相连接的硬件装置,例如与服务器相连接的摄像头等;捕获设备用于为编码设备301提供点云数据的获取服务;捕获设备可以包括但不限于以下任一种:摄像设备、传感设备、扫描设备。其中,摄像设备可以包括普通摄像头、立体摄像头、光场摄像头等;传感设备可以包括激光设备、雷达设备等;扫描设备可以包括三维激光扫描设备等。设备生成点云数据可以是指:虚拟对象制作设备根据虚拟对象(例如通过三维建模得到的虚拟三维物体及虚拟三维场景)的生成点云数据。本技术实施例对点云数据的具体来源不作限定。
172.点云数据中可以至少包括待编码的点的真实几何信息;点云数据中待编码的点的
真实几何信息可以是指:该待编码的点在三维空间中的真实的空间位置信息,具体是指在三维空间中的三维坐标系中的坐标信息。例如,待编码的点在三维空间中的三维坐标系中的坐标信息为(x,y,z),则该待编码的点的真实几何信息为(x,y,z);这样通过多个待编码的点的真实几何信息,可以反映该多个待编码的点在三维空间中的空间位置关系。
173.(2)编码设备301对待编码点云数据进行编码处理,以得到编码码流。
174.在捕获设备获取到点云数据后,编码设备301可以基于点云数据中各点的真实几何信息进行起始点选取,为点云数据选取起始点;并基于起始点为点云数据构建得到单链预测数据。继而,可以对该点云数据的单链预测树进行编码处理,得到编码处理后的点云数据,进而得到编码码流,并将编码码流传输至解码设备302。其中,在为点云数据构建单链预测树的过程中,支持为点云数据选取一个或多个起始点,并以一个或多个起始点分别作为搜索起点,得到每个起始点对应的分支链路,最后将一个或多个起始点对应的分支链路进行链接,以得到点云数据的单链预测树。在多起始点情况下构建单链预测树,能够实现高效的预测树结构,提高三维空间中邻近的无序点的关联关系,提升点云数据的编码效率。
175.(3)解码设备302对待解码的点云数据进行解码处理,以恢复点云数据的单链预测树。
176.在解码设备302获取到压缩码流(即编码码流)时,确定获取到待解码的点云数据,此时解码设备302可以对待解码的点云数据进行起始点解析,解析得到点云数据的起始点的重建几何信息,其中起始点的数量可以为一个或多个。然后,可以基于起始点的重建几何信息,并按照点云数据中各点的解码顺序(即在编码设备301中对各点的编码顺序)对点云数据中各点进行几何解码处理,得到点云数据中各点的重建几何信息。最后,按照点云数据中各点的重建几何信息的解码顺序,依次连接解码后的点云数据中各点,以实现在解码端恢复点云数据的单链预测树。
177.上述解码方案中,一方面,通过在解码端按照编码端的方式重建点云数据的单链预测树,不仅完善解码端的单链预测树的构建步骤,而且有利于解码端基于恢复的单链预测树确定点云数据中各点的连接顺序。另一方面,在重建出点云数据中各点的重建几何信息后,按照点云数据中各点的重建几何信息的解码顺序,就可以快速构建点云数据的单链预测树的方式,相比于直接对单链预测树压缩后进行传输而言,能够提高恢复单链预测树的效率,从而提升预测树模式的传输效率。又一方面,由于解码得到起始点的数量可以为多个,因此可以分别基于多个起始点同步解码点云数据中各点,相比于基于单个起始点依次解码点云数据中各点而言,能够提升解码速度和效率。
178.可以理解的是,本技术实施例描述的点云编解码系统是为了更加清楚的说明本技术实施例的技术方案,并不对本技术实施例提供的技术方案构成限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
179.基于上述对预测树编解码方案的相关介绍,下面结合附图分别对本技术实施例涉及的点云编码方法和点云解码方法分别进行阐述。
180.本技术实施例提供一种点云解码方法,该点云解码方法的具体实现流程可参见图4;该点云解码方法可以由图3所示点云编解码系统30中的解码设备302执行。如图4所示,该点云解码方法可以包括以下步骤s401-s403:
181.s401:获取待解码的点云数据。
182.在解码设备具有对点云数据的解码需求时,解码设备可以获取待解码的点云数据,该待解码的点云数据包括多个待解码的点;其中,待解码的点云数据属于编码设备对待编码的点云数据中各点进行编码处理得到编码码流。根据点云编解码系统的不同,解码设备获取待解码的点云数据的方式也不相同。例如:在编码设备和解码设备为不同设备的场景中,当编码设备对待编码的点云数据进行编码处理后,可得到编码码流;编码设备再将编码码流传输至解码设备,以使解码设备基于编码码流获取到待解码的点云数据。再如:在编码设备和解码设备为同一设备的场景中,编码设备对点云数据编码结束后,可将编码处理后的编码码流存储至存储空间中;当解码设备(即编码设备)在具有解码需求时,可直接从存储空间中获取到待编码的点云数据。
183.s402:对点云数据进行起始点解析,得到点云数据的起始点的重建几何信息。
184.点云数据的起始点可以理解为搜索起点;所谓搜索起点可简单理解为链路(即多个点依次连接所形成的路径)中的最首点,即位于链路中第一位置(或称为最首位置)的点。在编码设备构建点云数据的单链预测树的过程中,需要先基于点云数据中各点的真实几何信息,为点云数据选取起始点;当点云数据中的某个点被确定为搜索起点时,确定以该点为基准从点云数据中搜索待编码的点,并将该待编码的点链接至以该点为起始点的链路上,以形成以该起始点为搜索起点的链路。需要说明的是,为点云数据选取的起始点的数量可以大于1,这样可以基于多个起始点同时构建多个分支链路,再将各个分支链路进行连接,以得到点云数据的总的单链预测树;这种基于多个起始点同时构建分支链路来构建单链预测树的方式,可以提升单链预测树的构建效率,从而提高点云数据的编码效率。
185.相应的,解码设备在获取到待解码的点云数据后,若想要恢复点云数据的单链预测树,则需要先对待解码的点云数据进行起始点解析,以得到点云数据的起始点的重建几何信息,再基于起始点的重建几何信息重建点云数据的单链预测树。
186.如图5所示,解码设备对点云数据进行起始点解析,得到点云数据的起始点的重建几何信息的具体实现过程可包括但不限于步骤s11-s12:
187.s11:获取待解码的起始点重建信息,该起始点重建信息是由编码设备编码处理得到的,包括以下至少一种:包围盒信息和起始点信息。
188.其中:
①
包围盒信息是编码设备对点云数据的点云包围盒的信息进行编码处理得到的,此处的点云包围盒的信息可包括但不限于:点云包围盒的至少一个顶点的顶点信息和/或点云包围盒的尺寸信息;点云包围盒是指涵盖了点云数据中所有点的三维空间体,如最小长方体、最小立方体或最小多面体(如十面体)等。当编码设备是从点云数据的点云包围盒的多个顶点中选取起始点时,编码设备可以对点云包围盒进行编码处理,得到起始点重建信息,此时的起始点重建信息包括点云包围盒的包围盒信息。
②
起始点信息是编码设备直接对点云数据的起始点进行编码处理得到的,具体是对点云数据的起始点的真实几何信息直接进行编码处理得到的。也就是说,本技术实施例支持编码设备直接对起始点的真实几何信息进行编码处理,得到起始点重建信息,此时该起始点重建信息包括编码后的起始点信息。
189.s12:对起始点重建信息进行起始点解析,得到点云数据的起始点的重建几何信息。正如前述所描述的,解码设备获取到的起始点重建信息可包括包围盒信息和起始点信
息,下面分别以起始点重建信息包括包围盒信息,以及,起始点重建信息包括起始点信息为例,对解码设备重建起始点的重建几何信息的具体实施过程进行说明;其中:
190.在一种实现方式中,待解码的起始点重建信息包括点云数据的包围盒信息。此实现方式下,解码设备可对点云数据的包围盒信息进行解析,得到点云数据的点云包围盒的各个顶点的顶点信息,并基于各个顶点的顶点信息确定起始点的重建几何信息。具体实现中,如果编码设备是从点云数据的点云包围盒的多个顶点中选取起始点,那么编码设备可以对点云包围盒进行编码处理,得到起始点重建信息“包围盒信息”。然后,编码设备将编码处理得到的起始点重建几何信息发送至解码设备。其次,解码设备接收到起始点重建几何信息后,具体是获取到包围盒信息后,可对点云数据的包围盒信息进行解析处理,得到点云数据的点云包围盒,从而得到点云数据的点云包围盒的各个顶点的顶点信息,如该顶点信息为顶点的几何信息。最后,解码设备按照与编码设备相同的起始点选取规则,从解析得到的点云包围盒的各个顶点中选取起始点,从而得到起始点的重建几何信息;例如,如将点云包围盒中被选取的顶点作为点云数据的起始点,并且将被选取的顶点的顶点信息(如几何信息),作为起始点的重建几何信息。
191.下面结合附图6,对解码设备基于多种起始点选取规则重建起始点的重建几何信息的过程进行说明。如图6所示,假设对点云数据的包围盒信息进行解析,重建得到点云数据的点云包围盒该点云包围盒表现为一个长方体,该长方体包括顶点601、顶点602、顶点603、顶点604、顶点605、顶点606、顶点607及顶点608;当然,点云数据的点云包围盒还可以表现为球形,不规则空间体或正方体等,本技术实施例对此不作限定。那么解码设备可以按照与编码设备相同的起始点选取规则,从点云包围盒的多个顶点中选取起始点,并将被选作为起始点的点的几何信息作为相应起始点的重建几何信息。
192.起始点选取规则可包括但不限于:随机选择,按点云包围盒中各顶点之间的几何距离关系选取,以及沿预设方向选取等。所谓随机选择可是指从多个顶点中随机选取至少一个顶点作为起始点;所谓按点云包围盒中各顶点之间的几何距离关系选取可是指:按照顶点之间的几何距离关系,将几何距离最远的至少两个顶点作为起始点;所谓沿预设方向选取可是指:沿x方向、y方向和/或z方向选取至少一个个起始点。继续参见图6,假设起始点选取规则为:按照点云包围盒中各顶点之间的几何距离关系选取,那么按照点云包围盒中各个顶点之间的几何距离最远的关系,可以从点云包围盒的八个顶点中按需选取顶点604和顶点605作为点云数据的起始点,此时选取的顶点604和顶点605不属于点云数据中的待编码点,即顶点604和顶点605是独立于点云数据的其他点。
193.其他实现方式中,待解码的起始点重建信息包括点云数据的起始点信息。此实现方式下,解码设备可直接对点云数据的起始点信息进行解析得到起始点的重建几何信息。也就是说,编码设备在对点云数据中各点进行编码处理的过程中,可以直接对起始点的真实几何信息进行编码处理,以便于解码端能够对编码得到的起始点信息进行解析,得到点云数据的起始点的重建几何信息。具体实现中,解码设备获取编码设备发送的编码码流,该编码码流是编码设备对点云数据进行编码处理得到的,该编码码流中包括起始点重建信息,此时该起始点重建信息包括起始点信息;然后,解码设备可以对该起始点重建信息进行解析,得到解析结果;最后,将解析结果直接作为点云数据的起始点的重建几何信息。
194.需要说明的是,本技术实施例并不限定只基于上述一种实现方式重建起始点的重
建几何信息。例如,解码设备获取到的起始点重建信息同时包括点云包围盒的包围盒信息和起始点信息,那么解码设备可以对包围盒信息进行解析,得到点云数据的点云包围盒,并按照起始点选取规则从该点云包围盒的各个顶点中选取起始点,以及将被选取的点的几何信息作为起始点的重建几何信息;如重建的点云包围盒为包围点云数据的长方体,将该长方体的左下角顶点作为起始点,那么确定该起始点不属于点云数据中的点。同理,解码设备还直接对起始点信息进行解析,得到的解析结果直接作为点云数据的起始点的重建几何信息。由此可见,编码设备可以对至少两种信息进行编码,得到起始点重建信息,此时该起始点重建信息包括被编码处理的至少两种信息,这样解码设备可以对起始点重建信息所包含的被编码处理的至少两种信息进行解析,以重建点云数据的起始点的重建几何信息。
195.s403:基于点云数据的起始点的重建几何信息,重建点云数据的单链预测树。
196.由前述描述可知,编码设备是基于选取的起始点构建点云数据的单链预测树,那么解码设备在重建得到点云数据的起始点的重建几何信息后,可以基于点云数据的起始点的重建几何信息还原点云数据的单链预测树。具体实现中,在重建得到点云数据的起始点的重建几何信息后,相当于获取到点云数据的单链预测树的最首点的重建几何信息,那么可以基于该起始点的重建几何信息对单链预测树中的后续点(即连接于起始点之后的点)进行几何解码处理,以重建得到点云数据中各点的重建几何信息。由于编码设备是按照点云数据的单链预测树中各点的连接顺序对各点进行编码处理的,即点云数据中各点的编码顺序与单链预测树中各点之间的连接顺序是相同的;因此,解码设备在解码得到点云数据中各点的重建几何信息后,可基于点云数据中各点的重建几何信息的解码顺序,依次连接点云数据中各点,并将连接得到的链路作为点云数据的单链预测树。
197.基于上述描述,下面结合图7对基于点云数据的重建几何信息,重建点云数据的单链预测树的详细过程进行介绍,包括但不限于步骤s21-s22:
198.s21:基于点云数据的起始点的重建几何信息,对点云数据中各点进行几个解码处理,得到点云数据中各点的重建几何信息。
199.(1)在解码设备获取到点云数据的起始点的重建几何信息后,可以基于点云数据的起始点的重建几何信息,对点云数据中各点进行几何预测处理,得到点云数据中各点的预测几何信息。值得注意的是,解码设备具体是基于几何解码模式和起始点的重建信息,对点云数据中各点进行几何预测处理的;例如,已知点云数据的单链预测树的起始点的重建几何信息,则可以基于该起始点的重建几何信息,并按照几何解码模式依次推导出其它各点的预测几何信息。还需注意的是,解码设备采用的几何解码模式与编码设备对点云数据进行编码处理采用的几何编码模式是相同的。
200.其中,解码设备采用的几何解码模式可包括但不限于:
201.1)不对待解码的点进行几何预测处理;
202.2)采用单个前序节点(parent点)对当前待解码的点进行几何预测处理;
203.3)采用s个前序节点(如parent点、grandparent点,或者,parent点、grandparent点以及grand-grandparent点)对当前待解码的点进行几何预测处理;假设点云数据中位于当前待解码的点之前的点数为q,那么s的取值为:2,3,4,
…
,q-1。
204.下面对上述给出的几种示例性的几何解码模式的具体实施过程进行介绍,其中:
205.1)对于单链预测树中位于第一位置的起始点而言,其预测几何信息可以通过前述
描述的包围盒信息解析得到,或者,通过前述描述的起始信息直接解析得到,因此,无需对该起始点进行几何预测处理。
206.2)采用单个前序节点对当前待解码的点进行几何预测处理;即支持基于单个前序节点(或简称为前序点)确定当前待解码的点的预测几何信息。假设点云数据中包括当前待解码的点,该当前待解码的点是指点云数据中除最首点之外的任一个待解码的点,那么根据单链预测树的几何解码模式,对当前待解码的点进行几何预测处理,得到该当前待解码的点的预测几何信息的过程,包括:获取解码顺序中位于当前待解码的点之前,且相邻的单个前序点的预测几何信息;然后,将该前序点的预测几何信息,作为当前待解码的点的预测几何信息。其中,解码顺序是指编码端对待编码的点云数据中各点进行编码处理的编码顺序;例如,编码设备对待编码的点云数据中各点进行编码处理的编码顺序为:点1
→
点3
→
点2
→
点5
→
点4,则确定解码设备对待解码的点云数据中各点进行解码处理的解码顺序为:点1
→
点3
→
点2
→
点5
→
点4。
207.3)采用s个前序节点对当前待解码的点进行几何预测处理,本技术实施例对s的具体取值不作限定;即本技术实施例支持基于多个前序节点共同计算当前待解码的点的预测几何信息。假设点云数据中包括当前待解码的点,该当前待解码的点是指点云数据中除最首点之外的任一个待解码的点,那么根据单链预测树的几何编码模式,对当前待解码的点进行几何预测处理,得到该当前待解码的点的预测几何信息的过程,包括:获取解码顺序中位于当前待解码的点之前,且相邻的多个前序点的预测几何信息,并对多个前序点的预测几何信息进行融合处理,得到当前待解码的点的预测几何信息。值得说明的是,本技术实施例对融合处理的具体过程不作限定,如融合处理可包括但不限于差分处理或平均值计算等。
208.(2)确定点云数据的残差解码规则(或称为残差解码方法,可简称为解码方法),并按照点云数据的残差解码规则,对点云数据的残差信息进行残差解码处理,得到点云数据中各点的重建残差信息。具体实现中,解码设备接收到的编码码流中还包括有编码处理后的各个点的残差信息,任一点的残差信息是编码设备将该任一点的真实几何信息和预测几何信息相减得到的;那么,解码设备在接收到编码处理后的点云数据后,还需根据残差解码规则对点云数据中编码处理后的各个点的残差信息进行解码,以得到各个点的重建残差信息。
209.本技术实施例提及的残差解码规则属于熵解码技术中的解码方法。正如前述所描述的,几何熵编码是对量化(有损情况下)后的有符号属性预测残差或变换系数进行二值化和处理的编码模式;熵编码技术具有消除数据之间统计冗余的功能,在编码端作为最后编码处理的一道工序,将语法元素写入编码码流中;同理,熵解码作为解码端对编码码流解码过程的第一步,将编码码流解析出语法元素供后续步骤重建图像使用。
210.熵编码技术中包括的编码方法可包括但不限于:变长编码和基于上下文的自适应二进制算法编码(cabac)。其中:
211.①
变长编码。变长编码是对信源输出的消息(一个信源符号或者固定数目的多个信源符号)采用不同长度的码字表示的一种编码方法,即采用不同长度的码字表示需要编码的残差或系数。在采用变长编码对点云数据进行编码的过程中,为了提高编码效率,需要根据符号出现的概率大小设计码长,即对于大概率符号采用较短的码字表示,小概率符号
采用较长的码字表示,以达到平均码长最短的目的。变长编码可包括但不限于:指数哥伦布编码(exponential-golomb coding)和算术编码。指数哥伦布编码是一种无损数据压缩方法,其硬件实现简单,无需事先建立和存储码表,不但可以通过硬件计算快速产生码字,而且可以根据信源pdf函数灵活调整级数k,因而可以达到很高的编码效率。算术编码是一种无损数据压缩方法,支持直接把整个输入的消息编码为一个数,该数是指一个属于零到1的小数。算术编码的本质是给整个输入序列分配一个码字,而不是给每个输入序列中的每个字符都分配码字,平均意义上可以为单个字符分配码长小于1的码字;也就是说,算术编码器可根据选择的概率模型(参考第三章)对每一个
‘
bin’进行编码。即对每一个二进制文件进行编码。
212.②
基于上下文的自适应二进制算法编码(cabac)。cabac编码是使用二进制算数编码的,这意味着仅仅有两个数字(1或0)被编码;因此,一个非二进制的数值符号,比如一个转换系数或者运动适量,在算术编码之前会首先被二值化或者转化成二进制码字。这个过程类似于将一个数值转化成可变长码字,但是这个二进制码字在传输之前会通过算术编码器进一步的编码。cabac编码是属于算术编码的范畴,也就意味着基本上遵守着算术编码的流程,这使得需要利用上下文模型来估计待编码位的概率。上下文模型就是一个概率模型,这个模型是根据最近的被编码的数据符号的统计数字而选择的一个模型;这个模型保存了每个
‘
bin’是1或者0的概率。上下文模型实际上有两个作用,一个是在编码下一个数据前,输出概率状态索引σ到二进制算法编码中控制编码的区间;二是当编码完成的时候更新概率状态索引σ。具体是采用概率模型来更新概率状态索引σ,实现概率更新(即被选中的上下文模型会根据实际的编码值而去更新,如bin的值是1,那么1的频率计数会增加),如根据当前编码的二进制通过查表来更新概率状态索引σ。
213.为便于阐述,本技术实施例以残差解码规则包括:基于比特位数解码的比特位数解码规则,和,基于指数哥伦布解码的指数哥伦布解码规则,为例,对按照点云数据的残差解码规则,对点云数据中各点的残差信息进行残差解码处理的实施过程进行介绍。
214.在对残差解码处理的实施过程进行介绍之前,还需特别说明的是,本技术实施例支持对点云数据中的点设置相同或不同的残差解码规则;理由如下:
215.为提高构建单链预测树的效率,构建高效的单链预测树结构,编码设备在实际为点云数据选取起始点时,往往沿着利于提高编码效率的方向选取起始点。例如,支持选取一些空间分布位置较偏的点作为起始点,所谓空间分布位置较偏的点可简单理解为:与点云数据中的大部分点之间的几何距离较远的点;这样可避免待链接的点被链接到极远距离的已编码点之后,从而提升点云数据的编码效率。由此描述可知,点云数据的起始点与单链预测树中与起始点相邻且链接于起始点之后的点(可称为目标点)之间的几何距离,要远大于单链预测树中除起始点之外其他任意相邻两点之间的几何距离;如图8所示的第一幅图,假设为点云数据选取的起始点为点云数据的点云包围盒的顶点801,那么该起始点与点云数据中的点802之间的几何距离,要大于点云数据所包含的任意相邻两个点之间的几何距离,因此可将点802称为点云数据中位于单链预测树的目标位置的目标点。其中,目标点在单链预测树中的目标位置可参见图8所示的第二幅图,即目标位置是指单链预测树中与起始点相邻且位于起始点之后的位置。由于目标点的残差信息是基于目标点的预测几何信息和真实几何信息确定的,而目标点的预测几何信息又是根据起始点的真实几何信息预测得到
的,因此不难看出,目标点的残差信息要大于点云数据中除目标点之外的其他点的残差信息。
216.考虑到目标点的残差信息和点云数据中其他点的残差信息的差异性,为提升编码效率,本技术实施例支持为目标点的残差信息和其他点的残差信息设置不同的残差编码规则,或者,为目标点的残差信息和其他点的残差信息设置相同的残差编码规则,但所采用的编码模型并不相同,以此来确保残差编码效率。为便于阐述,本技术实施例将目标点的残差信息称为起始残差信息,将点云数据中除目标点之外的其他点称为候选点,将该其他点的残差信息称为候选残差信息,特在此说明。
217.基于上述相关描述,本技术实施例提供的确定待解码的点云数据的残差解码规则的过程可包括但不限于:确定点云数据中的起始残差信息的残差解码规则,起始残差信息是指:点云数据中与起始点相邻,且链接于起始点之后的点的残差信息;以及,确定点云数据中除起始残差信息之外的其他残差信息(即前述提及的候选残差信息)的残差解码规则;其中,起始残差信息的残差解码规则,和点云数据中除起始残差信息之外的其他残差信息的残差解码规则相同或不同。
218.下面对确定点云数据中的目标点和候选点的残差解码规则,以及基于残差解码规则对残差信息进行解析,得到点的重建残差信息的几种示例性情况进行介绍,其中:
219.在一种实现方式中,基于比特位数确定起始残差信息和候选残差信息的残差解码规则。具体实现中,可对起始残差信息进行比特位数解析,得到起始残差信息所占的比特位数信息,将该比特位数信息确定为起始残差信息的比特位数解码规则。以及,对候选残差信息(即点云数据中除起始残差信息之外的其他残差信息)进行比特位数解析,得到候选残差信息(或称为其他残差信息)的比特位数信息,该比特位数信息确定为其他残差信息的比特位数解码规则。其中,点云数据中不同点的残差信息所占的比特位数可以是不同且固定的;或者,点云数据中不同点具有固定的不同上限值,可以逐一解码,以得到各点的残差信息所占比特位数。
220.在此实现方式下,基于起始残差信息的比特位数解码规则,和候选残差信息的比特位数解码规则,对起始残差信息和候选残差信息进行解码处理的过程可包括:基于起始点的比特位数解码规则确定起始残差信息的上下文解析模型,以及,基于候选残差信息的比特位数解码规则,确定候选残差信息的上下文解码模型。然后,基于起始残差信息的上下文解析模型,对起始残差信息对应的比特位数的比特位进行解析,根据解析得到的多个比特位重建得到目标点的重建残差信息。同理,基于候选残差信息的上下文解析模型,对候选残差信息进行解析,以重建得到候选点的重建残差信息。
221.另一种实现方式中,基于指数哥伦布方法,确定起始残差信息和候选残差信息的残差解码规则。具体实现中,可对起始残差信息进行指数哥伦布解析,得到起始残差信息的指数哥伦布解码规则(或称为指数哥伦布阶数);以及,对其他残差信息进行指数哥伦布解析,得到其他残差信息的指数哥伦布解码规则(或称为指数哥伦布阶数)。
222.此实现方式下,基于起始残差信息的指数哥伦布解码规则,和候选残差信息的指数哥伦布解码规则,对起始残差信息和候选残差信息进行解码处理的过程可包括:基于起始残差信息的指数哥伦布阶数(或指数哥伦布规则)确定的起始残差信息的上下文模型,并采用该起始残差信息的上下文模型解析起始残差信息,以得到目标点的重建残差信息。同
理,基于候选残差信息的指数哥伦布阶数确定候选残差信息的上下文模型,并采用候选残差信息的上下文模型解析候选残差信息,以得到候选点的重建残差信息。
223.其他实现方式中,还可以基于比特位数解析起始残差信息,并基于指数哥伦布解析候选残差信息;或者,基于指数哥伦布解析起始残差信息,并基于比特位数解析起始残差信息;本技术实施例对此不作限定。
224.可以理解的是,对于解码设备而言,具体是采用哪一种或多种残差解码规则,以及具体是采用相同或不同的残差解码规则来对起始残差信息和候选残差信息进行残差解码,是与编码设备对起始残差信息和候选残差信息所采用的残差编码规则对应的。例如,编码设备在对点云数据中各点进行编码处理时,对目标点的起始残差信息和候选点的候选残差信息选取了不同的残差编码规则,则解码设备也采用不同残差解码规则对目标点的起始残差信息和候选点的候选残差信息进行解码处理,且解码设备所采用的残差解码规则与编码设备所采用的残差编码规则相同。
225.(3)根据点云数据中各点的预测几何信息和重建残差信息,得到点云数据中各点的重建几何信息。具体是根据各个点的重建残差信息和预测几何信息,对点云数据中各待解码的点进行几何解码处理,以确定点云数据中各点的重建几何信息。由前述描述可知,编码设备是将点云数据中的任一点的真实几何信息与预测几何信息进行相减运算,得到该任一点的残差信息的;那么解码设备在解析得到该任一点的预测几何信息和重建残差信息后,可采用预测几何信息与重建残差信息进行相加运算,以得到该任一点的重建几何信息。
226.通过上述步骤(1)-(3)所示的具体实施过程,可实现基于点云数据的起始点的重建几何信息,重建得到点云数据中各点的重建几何信息。在点云数据中的起始点的数量大于1的情况下,解码设备可基于多个起始点,同时对点云数据中解码顺序位于相应起始点之后的各点进行几何解码处理,得到点云数据中各点的重建几何信息;这种基于点云数据中的至少两个起始点同时重建各点的重建几何信息的方式,相比于基于单个起始点依次重建点云数据中各点的重建几何信息而言,能够较大地提升解码速度,节省解码时间,从而提升解码设备的解码效率。
227.s22:将解码得到的点云数据中各点进行连接,以重建得到点云数据的单链预测树。
228.具体实现中,解码设备在已知点云数据中各点的重建几何信息的情况下,可按照点云数据中各点的重建几何信息的解码顺序,依次连接点云数据中的各点,重建得到点云数据的单链预测树;其中,解码设备所采用的解码顺序与编码设备对点云数据中各点进行编码处理的编码顺序相同。
229.一种示例性的按照点云数据中各点的重建几何信息的解码顺序,依次连接点云数据中各点构建得到点云数据的单链预测树的示意图可参见图9。如图9所示,假设点云数据包括:点1、点2、点3、点4、点5以及点6,且编码设备对点云数据中各点进行编码处理时的编码顺序为:点1
→
点2
→
点3
→
点4
→
点5
→
点6,即编码设备构建的点云数据的单链预测树中各点之间的链接顺序(或连接顺序)为编码顺序“点1
→
点2
→
点3
→
点4
→
点5
→
点6”。那么解码设备获取到编码设备发送的编码码流后,确定获取到待解码的点云数据。
230.进一步的,解码设备可以对点云数据中各点依次进行解析,具体是按照解码设备接收到点云数据中各点的顺序,对点云数据中各点依次进行解析,即按照编码设备对点云
数据中各点的编码顺序对点云数据中各点进行解析,得到点云数据中各点的重建几何信息。其中,任一点的重建几何信息指示了该任一点在三维空间中的空间位置,如解析得到的任一点的重建几何信息为(0,0,0),表示该任一点在三维空间中的坐标轴的原点位置处。然后,解码设备可以按照点云数据中各点的重建几何信息的解码顺序,依次将按照重建几何信息分布于三维空间中的各个点进行连接,从而在解码端实现恢复点云数据的单链预测树。
231.综上所述,通过上述步骤s21-s22所示的具体实施过程,可实现基于点云数据的重建几何信息,重建点云数据的单链预测树。通过解码设备重建点云数据的单链预测树,有利于在解码设备需要利用点云数据中各点之间的位置连接关系的情况下,能够及时获取到点云数据中各点的连接关系,提升单链预测树的用途和作用。
232.本技术实施例中,解码端在获取到待解码的点云数据后,可对点云数据进行起始点解析,得到点云数据的至少一个起始点的重建几何信息;再分别以各个起始点的重建几何信息为基准,重建点云数据的单链预测树;相比于只基于一个起始点进行重建而言,能够提升恢复单链预测树的速度和效率。上述方案中,通过在解码端按照编码端的方式重建点云数据的单链预测树,不仅完善解码端的单链预测树的构建步骤,而且有利于解码端基于单链预测树确定出点云数据中各点的连接顺序;同时,在重建出的点云数据中各点的重建几何信息后,按照点云数据中各点的重建几何信息的解码顺序,就可以快速构建点云数据的单链预测树的方式,在一定程度上提升预测树模式的传输效率。
233.另外,点云数据中还可能存在重复点,所谓重复点可是指点云数据中具有相同几何信息的至少两个点。例如,采用扫描设备扫描得到的点云数据包括:点1、点2、点3以及点4,且点1的真实几何信息为(x1,y1,z1),点2的真实几何信息为(x1,y2,z3),点3的真实几何信息为(x3,y3,z3),点4的真实几何信息为(x1,y1,z1);由此扫描结果可知,点云数据中的点1的真实几何信息与点4的真实几何信息相同,则确定点云数据中存在重复点,且点4为点1的重复点,或者,点1为点4的重复点。
234.基于此,在采用上述步骤对点云数据中各点进行几何解码处理,以得到点云数据中各点的重建几何信息的过程中,还可以检测点云数据中是否存在重复点。若点云数据中存在重复点,则无需对多个重复点均进行几何解码处理,而是可以只对多个重复点中的任一个重复点进行几何解码处理,得到该任一点的重建几何信息,再将该任一点的重复点赋值为该任一点的重建几何信息即可。对于解码设备而言,这样可以节省解码资源,提升点云数据的解码效率;对于编码设备而言,可以节省编码资源,节省码率,提升点云数据的编码效率。
235.其中,解码设备对待解码的点云数据中是否存在重复点的判断方式可包括但不限于:
236.在一种实现方式中,通过重复点检测标识位判定待解码的点云数据中是否存在重复点;且重复点检测标识位是编码设备和解码设备协商设置的。换句话说,编码设备和解码设备可以通过协商设置是否标识出点云数据中的重复点,这样对于编码设备或解码设备而言,均是默认点云数据中存在或不存在重复点。具体实现中,在需要对待解码的点云数据进行解码处理时,可以获取重复点默认设置信息,该重复点默认设置信息是编码端和解码端协商设置的;然后,根据该重复点默认设置信息判断点云数据中是否存在重复点;若重复点
默认设置信息指示点云数据中存在重复点,则判定点云数据中存在重复,反之,判定点云数据中不存在重复点。
237.可选的,编码设备和解码设备通过协商设定在点云数据中不标识出重复点;此实现方式下,编码设备和解码设备均可生成重复点默认设置信息,此时该重复点默认设置信息指示点云数据中不存在重复点,且重复点默认设置信息分别存储于编码设备和解码设备。在编码设备在对待编码的点云数据进行编码处理的过程中,编码设备可以从编码设备的存储空间中获取重复点默认设置信息;此时该重复点默认设置信息指示点云数据不存在重复点(具体是未标识重复点),这样即使点云数据中包括重复点,编码设备仍将重复点当作独立的正常点进行编码处理。
238.同理,解码设备在对待解码的点云数据进行解码处理的过程中,解码设备可以从解码设备的存储空间中获取重复点默认设置信息;此时该重复点默认设置信息指示点云数据中不存在重复点(具体是未标识重复点),这样即使点云数据中包括重复点,解码设备仍将重复点当前独立的正常点进行解码处理。
239.可选的,编码设备和解码设备通过协商设定在点云数据中标识出重复点;此实现方式下,编码设备和解码设备均可生成重复点默认设置信息,此时该重复点默认设置信息指示点云数据中存在重复点,且重复点默认设置信息分别存储于编码设备和解码设备。在编码设备在对待编码的点云数据进行编码处理的过程中,编码设备可以从编码设备的存储空间中获取重复点默认设置信息;此时该重复点默认设置信息指示点云数据存在重复点(具体是标识了重复点),这样编码设备在对待编码的点云数据进行编码处理时,可以针对重复点执行目标编码,以实现快速编码重复点。此处针对重复点的目标编码可包括:基于重复点编码得到重复点标识位和重复点数量信息,重复点标识位用于指示点云数据中的重复点,重复点数量信息用于指示点云数据中相同的重复点的个数。
240.同理,解码设备在对待解码的点云数据进行解码处理的过程中,解码设备可以从解码设备的存储空间中获取重复点默认设置信息;此时该重复点默认设置信息指示点云数据中存在重复点(具体是标识了重复点),这样解码设备在对待解码的点云数据进行解码处理时,可以针对重复点执行目标解码,以实现快速解码重复点。与前述描述的针对重复点的目标编码对应的,此处针对重复点的目标解码可包括:针对编码后的重复点标识位和重复点数量信息的解码,以实现通过解析重复点标识位和重复点数量信息,快速解析得到点云数据中多个重复点的重建几何信息,而不必针对每个重复点均进行几何解码处理,能够提升解码效率。
241.其他实现方式中,通过重复点检测标识位判定待解码的点云数据中是否存在重复点;且重复点检测标识位是解码端从编码码流或参数集中解析得到的。如重复点检测标识位为geom duplicate flag字段,该geom duplicate flag字段为一个二值变量;当该geom duplicate flag字段赋值为1时,该geom duplicate flag字段指示点云数据中存在重复点,当该geomduplicateflag字段赋值为0时,该geom duplicate flag字段指示点云数据中不存在重复点。
242.具体实现中,解码设备获取到的编码码流中包括重复点检测标识位,该重复点检测标识位的具体取值是编码设备在对待编码的点云数据进行编码处理时赋值的;若编码设备对该重复点检测标识位赋值为1,表示点云数据中存在重复点,且编码设备对重复点执行
了上述描述的目标编码;若编码设备对该重复点检测标识位赋值为0,表示点云数据中不存在重复点或未标识出重复点,且编码设备将重复点作为独立的正常点进行编码处理。解码设备可以对该重复点检测标识位进行解析处理,得到标志位解析结果,该标志位解析结果指示点云数据中是否存在重复点;若该标志位解析结果指示点云数据中存在点云数据,则根据该标志位解析结果可确定点云数据中存在重复点,即判定点云数据中存在重复点;反之,若该标志位解析结果指示点云数据中不存在重复点,则根据该标志位解析结果可确定点云数据中不存在重复点,即判定点云数据中不存在重复点。值得注意的是,即使标志位解析结果指示点云数据中不存在重复点,但并不代表点云数据中不包括重复点,只是编码设备未对重复点进行额外处理,而是将重复点作为独立的正常点进行编码处理,特在此说明。
243.基于上述任一种或多种实现方式,确定点云数据中存在重复点,且在解码设备对待解码的点云数据进行解码处理的过程中;若确定当前待解码的点为重复点,则可以进一步确定该重复点的重复点数量,其中,当前待解码的点为重复点是指:当前待解码的点与当前待解码的点的任一个前序点的几何信息相同,当前待解码的点的前序点是指:在解码顺序中位于当前待解码的点之前的点,前序点的几何信息与重复点的几何信息相同。然后,将重复点的前序点的重建几何信息,作为重复点数量个点的重复几何信息。也就是说,在确定当前待编码的点为重复点时,考虑到该重复点的几何信息与该重复点的前序点的几何信息是相同的,因此,可以不对该重复点执行几何解码处理,而是直接将前序点的重建几何信息作为重复点的重建几何信息。如图10所示,点云数据中的点7和点8是点6的重复点,即点6的几何信息、点7的几何信息和点8的几何信息相同,此时在已知点6的重建几何信息后,直接将点6的重建几何信息作为点7和点8的重建几何信息即可;这种充分考虑重重复点的编码或解码方式,可以快速缩短对点云数据的解码时间,提高点云数据的解码效率。
244.其中,在已知点云数据中存在重复点的情况下,点云数据中的重复点和重复点的重复点数量的确定方式可包括但不限于:
245.①
通过逐个解析重复点标识位,确定点云数据中的重复点和重复点数量。
246.具体实现中,编码码流中包括点云数据中各点的重复点标识位,每个点的重复点标识位指示该点是否为重复点;那么可以按照点云数据中各点的解码顺序,逐个解析编码码流中的重复点标识位,得到每个重复点标识位的标识位解析结果,任一标识位解析结果指示了相应的重复点标识位所指示的待解码的点是否为重复点。然后,可以根据每个重复点标识位的标识位解析结果,确定点云数据中的重复点;例如,重复点标识位1的标识位解析结果指示点云数据中的点2为重复点,重复点标识位2的标识位解析结果指示点云数据中的点10为重复点,则可以确定点云数据中存在重复点,且重复点为点2和点10,且点2是点2的前序点(如点1)的重复点,点10是点10的前序点(如点9)的重复点。
247.进一步的,还可以对点云数据中的重复点进行重复数量解析,以得到点云数据中的重复点的重复点数量。具体是,对每个重复点的重复点数量信息进行解析,以确定点云数据中的每个重复点的重复点数量,该重复点数量信息是编码设备编码处理得到的。例如,在编码码流中还包括重复点数量信息,该重复点数量信息是编码设备设置的,且该重复点数量信息指示了某个重复点的数量;那么解码设备通过逐个解析编码码流中的重复点数量信息,可直接得到点云数据中的各个重复点的重复点数量,实现快速获取到点云数据中各重复点的数量,从而实现为多个重复点一并赋值重建几何信息,提升解码设备的解码效率。
248.②
通过重复点检测间隔,确定点云数据中的重复点和重复点数量。
249.编码码流中包括重复点检测间隔信息,该重复点检测间隔信息是编码设备设置的,重复点检测间隔用于指示:按照点云数据中各点的解码顺序,每间隔预测数量个点解析对应位置处的点的重复点数量。换句话说,本技术实施例支持确定重复点检测间隔,按照点云数据中各点的解码顺序,每间隔重复点检测间隔个点时,就解析间隔位置处的点是否为重复点;若是重复点,则进一步解析该重复点的重复点数量;当然,如果实际应用中间隔位置处的点不为重复点,则无需解析该点的重复点数量。
250.具体实现中,在点云数据中存在重复点的情况下,点云数据中的重复点和重复点数量的确定方式可包括:首先,确定重复点检测间隔,该重复点检测间隔指示:按照点云数据中各点的解码顺序,每间隔预设数量个点解析对应位置处的点的重复点数量;重复点检测间隔是编码端与解码端协商设置的,或者,重复点检测间隔是解码端从编码码流或参数集中解析得到的。然后,按照点云数据中各点的解码顺序,对点云数据中每间隔预测数量个点对应位置处的点的重复点标识位进行解析;如该重复点检测间隔为m1,m1为大于1的整数,表示每隔m1个点解析解码顺序中对应位置处的点的重复点标识位,如图11所示的m1=3。最后,若解析结果指示对应位置处的点为重复点,则解析对应位置处的点的重复点数量。
251.③
通过解析残差信息,确定点云数据中的重复点和重复点数量。
252.由前述对重复点的相关描述可知,点云数据中相同的重复点的几何信息是相同的,此处的几何信息相同是体现在:多个重复点在k个方向上的坐标信息是相同的,k个方向包括x方向、y方向和z方向。例如,点云数据中的点3和点4是相同的重复点,那么确定点3的几何信息(x3,y3,z3)和点4的几何信息(x4,y4,z4)之间具有的几何关系为:x3=x4,y3=y4,z3=z4。那么在已知点云数据中除起始点之外的任一点的预测几何信息,是基于任一点的一个相邻前序点的预测几何信息预测得到的情况下,考虑到点4的预测几何信息是基于点3的真实几何信息预测得到的,因此,点4的真实几何信息和预测几何信息是相同的,确定点4的残差信息为0,具体是点4在k个方向上的残差信息均为0,即点4在x方向,y方向和z方向上的残差信息均为0。
253.基于此,若点云数据中除起始点之外的任一点的预测几何信息,是基于任一点的相邻前序点的预测几何信息预测得到的,那么在解码设备对待解码的点云数据中各点进行解码处理的过程中,若解析得到点云数据走的任一点的重建几何信息的k个方向均为预设值,如该预设值为零,则确定该任一点为重复点,即该任一点与该任一点的相邻前序点重复。进一步的,可以对该任一点进行重复点数量解析,以得到该任一点的重复点数量。
254.需要说明的是,重复点的重复点数量除了采用上述描述的,直接对重复点的重复点数量信息进行解析得到外,还支持采用如下实施过程,解析得到重复点数量,包括:在确定点云数据中的某点为重复点后,可对q个重复点数量标识位进行解析,q为大于等于0的整数,以解析得到该重复点的重复点数量。具体实现中,对q个重复点数量标识位中的第x个重复点数量标识位进行解析,如果解析值是第一数值(如1),则确定第i个重复点数量标识位对应的重复点数量作为该重复点的重复点数量;如果解析值是第二数值(如0),则对第i+1个重复点数量标识位进行解析,以此类推。若解析到第q个重复点数量标识位的解析值为第三数值(如0)时,则直接解析对应重复点数量,具体可采用指数哥伦布方法。
255.可以理解的是,确定点云数据中的重复点和重复点的数量的实现方式,并不仅限
于上述给出的几种示例性方式;本技术实施例对点云数据中的重复点和重复点数量的具体确定方式不作限定,在此说明。
256.综上所述,在点云数据的编解码过程中充分考虑重复点的存在,可避免对点云数据中繁多的重复点的冗余编码和解码,从而为点云数据的编解码节省码率,提升点云数据的编解码效率,也在一定程度上提升点云数据的单链预测树的重建效率,提高单链预测树模式传输的效率。
257.基于上述图4所示实施例,可实现基于整个点云数据的起始点重建整个点云数据的单链预测树;本技术实施例还支持对整个点云数据进行分组,并基于分组后的每个点云组重建整个点云数据的单链预测树。其中,基于分组在解码端构建单链预测树的点云解码方法的具体实现流程可参见图12;该点云解码方法可以由图3所示点云编解码系统30中的解码设备302执行。如图12所示,该点云解码方法可以包括以下步骤s1201-s1205:
258.s1201:获取待解码的点云数据。
259.需要说明的是,步骤s1201所示的获取待解码的点云数据的具体实施过程,可参见前述图4所示实施例中步骤s401所示的具体实施过程的相关描述,在此不作赘述。
260.s1202:对点云数据进行分组处理,得到点云数据的l个点云组。
261.为提升待解码的点云数据的单链预测树的重建效率,本技术实施例支持解码设备对待解码的点云数据信息划分,即将点云数据所包含的多个待解码的点划分至l个点云组中,l为大于1的整数;每个点云组可包括相同或不同数量的待解码的点。这样后续可基于每个点云组构建以组为单位的单链预测树,从而实现同步构建多个点云组的单链预测树,提升构建整个点云数据的单链预测树的速度和效率。
262.在实际应用中,解码设备可以获取组内最大点数,该组内最大点数指示点云组所允许被划分得到的点的最大数量;然后,根据组内最大点数对点云数据中各点进行分组处理,以得到l个点云组;l为大于1的整数。
263.其中,本技术实施例提供的对点云数据进行分组,以得到点云数据的l个点云组的具体实施过程可参见图13,其步骤包括但不限于步骤s31-s32:
264.s31:获取点云组所允许被划分的组内最大点数。
265.在一种实现方式中,每个点云组所允许被划分的点的组内最大点数是相同的,此时可直接对点云数据的分组点数字段进行解析,得到移动位数;并将设定值(如数值“1”)向左移位移动位数,以得到每个点云组所允许被划分的组内最大点数。或者,对点云数据的组内最大点数信息进行解析,得到每个点云组所允许被划分的组内最大点数,该组内最大点数信息是编码端编码得到的,该组内最大点数可属于参数集;当然,组内最大点数还可以属于编码码流,若宏块是预测树编码,则可以对宏块在编码码流中传输组内最大点数。
266.其他实现方式中,可能存在两个点云组所允许被划分的组内最大点数是不同的,此实现方式下,编码端可以对各个点云组的组内最大点数进行编码;这样解码端可以解码得到各个点云组对应的组内最大点数,并基于各个点云组的组内最大点数对点云数据进行分组处理。举例来说,假设l个点云组中存在至少两个点云组的组内最大点数不同,且l个点云组中包括相邻的第k个点云组和第k+1个点云组,k=1,2,3,...,l-1;那么第k+1个点云组的目标组内最大点数的获取方式可包括:在划分得到所述第k个点云组后,对第k+1个点云组的分组点数字段进行解析,得到移动位数;并将设定值向左移位移动位数,以得到第k+1
个点云组所允许被划分的目标组内最大点数。或者,在划分得到第k个点云组后,对第k+1个点云组的组内最大点数信息进行解析,得到第k+1个点云组所允许被划分的目标组内最大点数。其中,第k+1个点云组的组内最大点数可属于参数集;当然,第k+1个点云组的组内最大点数还可以属于编码码流,若当前宏块(如包含第k+1个点云组)是预测树编码,则可以对每个宏块在编码码流中传输对应的组内最大点数,以便于基于不同点云组的对应的组内最大点数对点云数据进行分组处理。
267.s32:根据组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组;l为大于1的整数。
268.在一种实现方式中,在每个点云组的组内最大点数相同,且解码端边解码边分组的情况下,根据组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组的具体实现过程可包括:按照点云数据中各点的解码顺序,将相邻组内最大点数的点划分至一个点云组,以得到l个点云组。
269.具体实现中,支持按照点云数据中各点的解码顺序对点云数据中各点进行解码处理的过程中,对点云数据中各点进行分组;也就是说,本技术实施例支持边解码边分组。以l个点云组中的第i个点云组和第i+1个点云组所包含的点的划分方式为例,i为整数且i∈[1,l-1];对边解码边分组的过程进行示例性说明,包括:解码设备在按照点云数据的起始点的重建几何信息,和点云数据中各点的解码顺序,对点云数据中各点进行几何解码处理的过程中,若解码得到相邻的组内最大点数个点的重建几何信息,则将相邻的组内最大点数个点划分至第i个点云组。继续对第i个点云组中最后一个点之后的点进行解码处理的过程中,若解码得到相邻的组内最大点数个点的重建几何信息,则将相邻的组内最大点数个点划分至第i+1个点云组。重复上述步骤,直至将点云数据中的每个点均划分至点云组中,以得到l个点云组。
[0270]
可以理解的是,待解码的点云数据所包含的待解码的点的数量,可能并非是组内最大点数的整数倍;例如,待解码的点云数据包含的待解码的点的数量为11个,组内最大点数为3,此时待解码的点的数量与组内最大点数之间的关系为:11=3*3+2,即按照点云数据中各点的解码顺序,将相邻3个点划分为一个点云组后,还剩余2个点未被划分至点云组。在此情况下,本技术实施例提供两种可选方式来将剩余的点划分至点云组。
[0271]
①
在划分得到第l-1个点云组时,若点云数据中剩余未划分的点的数量小于组内最大点数,则将剩余未划分的点添加至第l个点云组;此时,第l个点云组中包括的待解码的点的数量为:不足组内最大点数的剩余未划分的点的数量。换而言之,在点云数据中剩余未划分的点的数量不足组内最大阈值时,可将该剩余未划分的点所组成的点云组作为最后一个点云组。
[0272]
②
在划分得到第l-1个点云组时,若点云数据中剩余未划分的点的数量小于组内最大点数,则获取点数阈值;进一步的,若剩余未划分的点的数量大于等于点数阈值,则将剩余未划分的点添加至第l个点云组中;此时,第l个点云组中包括的待解码的点的数量为:不足组内最大点数的剩余未划分的点的数量;若剩余未划分的点的数量小于点数阈值,则将剩余未划分的点添加至第l个点云组,此时,第l个点云组中包括的待解码的点的数量为:组内最大点数+不足组内最大点数的剩余未划分的点的数量。
[0273]
另一种实现方式中,在每个点云组的组内最大点数相同,且先分组再解码的情况
下,根据组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组的具体实现过程可包括:确定点云数据所包含的点的数量,与组内最大点数之间的点数关系;根据点数关系对点云数据进行分组处理,以得到l个点云组。
[0274]
其中,若点数关系指示:按照组内最大点数对点云数据进行分组时,剩余未划分的点的数量小于组内最大点数,则按照点云数据中各点的解码顺序,将点云数据中各点均匀划分至l个点云组。或者,若点数关系指示:按照组内最大点数对点云数据进行分组时,剩余未划分的点的数量小于组内最大点数,则获取点数阈值;若剩余未划分的点的数量大于等于点数阈值,则将剩余未划分的点添加至第l个点云组;或者,若剩余未划分的点的数量小于点数阈值,则将剩余未划分的点添加至第l-1个点云组。
[0275]
其他实现方式中,在存在点云组的组内最大点数不同的情况下,根据组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组的具体实现过程可包括:按照点云数据中各点的解码顺序,并根据各个点云组的组内最大点数对点云数据进行分组处理,以得到l个点云组。正如前述所描述的,假设l个点云组中存在至少两个点云组的组内最大点数不同,且l个点云组中包括相邻的第k个点云组和第k+1个点云组,k=1,2,3,...,l-1;那么第k+1个点云组的划分方式可包括:按照点云数据中各点的解码顺序,将位于第k个点云组中最后一个点之后的,相邻目标组内最大点数个点划分至第k+1个点云组;也就是说,将位于前一个组的最后一个点之后的相邻目标组内最大点数个点,划分至第k+1个点云组。
[0276]
正如前述所描述的,点云数据中可能存在重复点,那么在对点云数据中各点进行分组处理的过程中,本技术实施例支持将重复点划分至点云组,或者,将重复点不划分至点云组。具体实现中,在对待解码的点云数据进行分组处理之前,可以先获取重复点划分信息,该重复点划分信息是编码端与解码端协商设置的,该默认重复点可以指示:将重复点划分至点云组,或者,将重复点不划分至点云组。那么解码设备可以根据该重复点划分信息对点云数据中的重复点进行分组处理。通过上述过程,可在分组过程中充分考虑重复点的分组情况。
[0277]
图14示出了本技术一个示例性实施例提供的一种对重复点进行分组处理的示意图;如图14所示,假设点云数据中的点5、点6、点7、点8、点9以及点10为重复点。若重复点划分信息指示将重复点计入点云组,且点云组的组内最大点数为3,即将解码顺序中相邻3个点划分至同一点云组中,则确定将重复点当做独立的正常点进行分组;此实现方式下,对点云数据中各点进行分组处理得到各个点云组包含点的情况为:点云组1包括点1
→
点2
→
点3,点云组2包含点4
→
点5
→
点6,点云组3包含点7
→
点8
→
点9,点云组4包括点10
→
点11
→
点12,等等;其中,点云组2中包括重复点“点5”和“点6”,点云组3中包括重复点“点7”、“点8”和“点9”,点云组4中包括重复点“点10”。若重复点划分信息指示将重复点计入点云组,则确定在点云数据中剔除重复点,并按照解码顺序和组内最大点数对剔除重复点之后的点云数据进行分组处理。
[0278]
需要说明的是,本技术实施例对分组的具体实施过程不作限定,除了采用上述两种示例性的分组方式外,本技术实施例还支持直接将点云数据中各点平均划分至l个点云组中。具体实现中,可先根据组内最大点数确定分组点数,该分组点数小于组内最大点数,如组内最大点数为10点,分组点数小于10点,如为9点;然后,按照点云数据中各点的解码顺序,可将点云数据中相邻分组点数的点划分至一个点云组中,即实现将点云数据中各点尽
可能平均的划分至l个点云组,以得到l个点云组。
[0279]
下面对上述步骤s31所涉及的高层语法表,以及语法元素进行介绍。具体实现中,参数集包括头信息文件和片头文件,头信息文件或片头文件中包括一个或多个分组标识位;那么可以对该一个或多个分组标识位进行解析,若一个或多个分组标识位中各分组标识位的解析结果满足分组条件,则触发执行获取组内最大点数的步骤;其中,根据分组标识位的不同,分组标识位对应的分组条件也不相同。其中,上述提及的一个或多个分组标识位中至少包括分组点数字段;分组点数字段可以为geom_max_tree_size_log2_minusx字段,该字段为无符号整数,x的取值范围为[0,8],为便于阐述以x=8为例进行说明;在本技术实施例中可以将字段称为语法元素,对此不作区分描述。
[0280]
每个点云组所允许承载的点的最大点数geom_max_tree_size可由如下公式计算得到:
[0281]
geom_max_tree_size=1《《(geom_max_tree_size_log2_minus+8)
[0282]
也就是说,每个点云组所允许承载的点的最大点数geom_max_tree_size的取值为:将设定值“1”向左移动对分组点数字段所解析得到的移动位数x位;如x=3,则表示将设定值“1”向左移动3位,得到二进制1000,该二进制1000转换为十进制数值为8,表示每个点云组所允许承载的点的最大点数为8个点,即允许将点云数据中的8个点划分至一个点云组中。
[0283]
上述描述的geom_max_tree_size_log2_minusx字段可以位于编码码流的头信息文件中;或者,该geom_max_tree_size_log2_minusx字段可以位于编码码流的片头文件中。下面分别对geom_max_tree_size_log2_minusx字段位于头信息文件和片头文件时,分组点数字段的获取过程进行介绍。
[0284]
一、分组点数字段geom_max_tree_size_log2_minusx位于头信息文件中。
[0285]
头信息文件是编码设备基于几何头信息语法表生成的。其中,几何头信息的语法表可参见表1。
[0286]
表1
[0287][0288]
如表1所示,geometry_header()字段表示几何头信息函数。
[0289]
gps_lcu_node_size_log2_minus_one字段表示几何宏块的节点大小,几何宏块可简称为宏块,是对画面进行分块划分得到的块,一个宏块可以包括一个或多个点云组。该gps_lcu_node_size_log2_minus_one字段的descriptor取值是无符号整数ue(v),v为整数。当v取值0时,gps_lcu_node_size_log2_minus_one字段表示关闭宏块结构编码;当v取值大于0时,表示打开宏块结构编码,且定义几何宏块的几何节点大小为:gps_lcu_node_size_log2=gps_lcu_node_size_log2_minus_one+1。
[0290]
gps_implicit_geom_partition_flag字段表示几何隐式划分标志,其descriptor取值是二值变量u(v),即v取值只有0或1;当v取值0时,表示关闭几何隐式划分,当v取值1时,表示打开几何隐式划分。
[0291]
gps_max_num_implicit_qtbt_before_ot字段表示在八叉树划分前最大四叉树/二叉树划分数量,其descriptor取值是无符号整数ue(v);v的取值可表示在几何隐式划分中,在八叉树划分之前最大被允许的四叉树或二叉树的划分数量。
[0292]
gps_min_size_implicit_qtbt字段表示四叉树/二叉树划分的最小尺寸,其descriptor取值是无符号整数ue(v);v的取值可表示在几何隐式划分中,四叉树或二叉树最小被允许的划分尺寸。
[0293]
gps_single_mode_flag字段表示几何孤立点编码模式标志,其descriptor取值是二值变量u(v),即v取值只有0或1;当v取值0时,表示关闭几何孤立点编码模式,当v取值1时,表示打开几何孤立点编码模式。
[0294]
gps_save_stat_flag字段表示几何编码状态存储标志,其descriptor取值是二值变量u(v),即v取值只有0或1。当v取值0时,表示不存储编码状态,即熵编码上下文和几何编码的哈希表信息;当v取值1时,表示存储编码状态。
[0295]
其中,在几何隐式划分标志gps_implicit_geom_partition_flag取值为1时,gps_
max_num_implicit_qtbt_before_ot字段和gps_min_size_implicit_qtbt字段需要根据单链预测树的根节点对数尺寸进行限制,具体过程如下:
[0296]
if(gps_max_num_implicit_qtbt_before_ot》(gsh_log2_max_nodesize-gsh_log2_min_nodesize))
[0297]
gps_max_num_implicit_qtbt_before_ot=gsh_log2_max_nodesize-gsh_log2_min_nodesize;
[0298]
if(gps_min_size_implicit_qtbt》gsh_log2_min_nodesize)
[0299]
gps_min_size_implicit_qtbt=gsh_log2_min_nodesize
[0300]
if(gsh_log2_max_nodesize==gsh_log2_min_nodesize)
[0301]
gps_min_size_implicit_qtbt=0
[0302]
上述代码可解释为如下含义:当gps_max_num_implicit_qtbt_before_ot大于(gsh_log2_max_nodesize-gsh_log2_min_nodesize)的差值时,确定gps_max_num_implicit_qtbt_before_ot等于gsh_log2_max_nodesize-gsh_log2_min_nodesize的差值。当gps_min_size_implicit_qtbt大于gsh_log2_min_nodesize时,确定gps_min_size_implicit_qtbt等于gsh_log2_min_nodesize。当gsh_log2_max_nodesize等于gsh_log2_min_nodesize是,确定gps_min_size_implicit_qtbt取值为0。
[0303]
基于上述对几何头信息的语法表的相关介绍,下面以几何头信息语法表为例,对本技术实施例对应的语法表进行介绍;具体是介绍分组点数字段geom_max_tree_size_log2_minusx位于几何头信息的语法表中的不同位置时,获取分组点数字段geom_max_tree_size_log2_minusx的实现过程。
[0304]
在分组标识位只包括分组点数字段的情况下,一种示例性的分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表2所示。
[0305]
表2
[0306]
[0307]
如表2所示,在解码设备获取到编码设备发送的编码码流时,确定获取到编码码流的头信息文件,则可执行头信息文件(即运行头信息文件所包含的代码);并对头信息文件中的分组点数字段geom_max_tree_size_log2_minusx进行解析,以获取到移动位数。
[0308]
正如前述所描述的,分组标识位的数量可以为多个,即除包含分组点数字段外,还可以包括其他的分组标识位;其中,分组标识位还包括以下至少一个:预设树编码标识位、预测树状态标识位、稀疏标识位及几何树类型标识位等等。在分组标识位的数量为多个情况下,可以采用顺序解析规则对多个分组标识位进行解析;其中,顺序解析规则指示:对多个分组标识位进行并列解析,或者,对多个分组标识位进行递进解析。下面对各种分组标识位的解析过程进行介绍,其中:
[0309]
可选的,在接下编码码流的头信息文件中的分组点数字段geom_max_tree_size_log2_minusx之前,还需判断是否开启预测树工具,只有开启预测树工具时才触发执行在头信息文件中查询分组点数字段geom_max_tree_size_log2_minusx的步骤。其中,本技术实施例涉及的预测树字段为geom_tree_enable字段,该geom_tree_enable字段是一个二值变量,指示是否开启预测树工具;当该geom_tree_enable字段取值为0时,表示开启八叉树编码,当该geom_tree_enable字段取值为1时,表示开启预测树编码。一种示例性的预测树字段geom_tree_enable,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表3所示。
[0310]
表3
[0311][0312]
如表3所示,头信息文件中包括条件语句if(geom_tree_enable){},若该条件语句中的预测树字段geom_tree_enable取值为1,则确定开启预测树编码。具体地,在解码设备获取到编码设备发送的编码码流后,若在编码码流的头信息文件中查询到预测树字段
geom_tree_enable,则对该预测树字段geom_tree_enable进行解析;当解析结果指示对点云数据采用预测树编码模式时,触发执行在编码码流的头信息文件中查询分组点数字段的步骤。
[0313]
可选的,头信息文件中包括的if条件语句中可以不止包括分组点数字段geom_max_tree_size_log2_minusx,如还可以在条件语句中包括预测树可行性符号编码标志geom_tree_sign_status_flag或表示为geom_tree_sign_status_enable,该预测树可行性符号编码标志为一个二值分量,指示是否开启预测树可行性符号编码工具;当其取值为0时,表示不开启预测树可行性符号编码工具,当其取值为1时,表示开启预测树可行性符号编码工具。一种示例性的预测树可行性符号编码标志geom_tree_sign_status_flag,预测树字段geom_tree_enable,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表4所示。
[0314]
表4
[0315][0316]
与表3所示的语法结构类似的,只是表4所示的语法表中在条件语句中新增预测树可行性符号编码标志geom_tree_sign_status_flag,表示在条件语句中的预测树字段geom_tree_enable取值为1时,可以执行预测树可行性符号编码标志geom_tree_sign_status_flag,和分组点数字段geom_max_tree_size_log2_minusx。
[0317]
可选的,头信息文件中包括的if条件语句中还可以内嵌一个或多个条件语句,如将预测树可行性符号编码标志geom_tree_sign_status_flag放置到内嵌的条件语句中。一种示例性的预测树可行性符号编码标志geom_tree_sign_status_flag,预测树字段geom_
tree_enable,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表5所示。
[0318]
表5
[0319][0320]
如表5所示,在解码设备获取到编码设备发送的编码码流后,若在编码码流的头信息文件中查询到预测树字段geom_tree_enable,则对该预测树字段geom_tree_enable进行解析;当解析结果指示对点云数据采用预测树编码模式时,在编码码流的头信息文件中查询预先树状态标志geom_tree_sign_status_flag;若对预先树状态标志geom_tree_sign_status_flag解析得到的解析结果指示开启预测树状态,则触发执行在编码码流的头信息文件中查询分组点数字段的步骤。更为详细的,在头信息文件中包括条件语句if(geom_tree_enable){},若该条件语句中的预测树字段geom_tree_enable取值为1,则确定开启预测树编码。该条件语句if(geom_tree_enable){}中还内嵌有条件语句if(geom_tree_sign_status_flag){},若该条件语句中的预测树可行性符号编码标志geom_tree_sign_status_flag取值为1,则确定开启预测树可行性符号编码工具。
[0321]
值得注意的是,上述只是本技术实施例给出的几种示例性的分组点数字段geom_max_tree_size_log2_minusx在头信息文件中的位置;在实际应用中,分组点数字段geom_max_tree_size_log2_minusx在头信息文件中的位置还可以发生适应性变化,在此不作一一穷举。
[0322]
二,分组点数字段geom_max_tree_size_log2_minusx位于片头文件中。
[0323]
该片头文件是编码设备基于几何片头语法表生成的。其中,几何片头语法表可参见表6。
[0324]
表6
[0325]
[0326][0327]
如表6所示,片标号slice_id是无符号整数,表示片的标号。其中,一帧视频图像可以编码成一个或多个片,每片包含整数个宏块,即每片至少包括一个宏块,最多时可包含一帧视频图像的所有宏块。
[0328]
片几何上下文模式标志gsh_context_mode,是二值变量;点云片根据值选择不同的几何八叉树编码中的上下文模式。
[0329]
片几何孤立点编码模式标志gsh_single_mode_flag是二值变量;当值为0时,表示关闭当前点云片几何孤立点编码模式;当值为1时,表示打开当前点云片几何孤立点编码模式。当码流中没有该语法元素(或称为符号)时,其默认值为0。
[0330]
片包围盒原点x坐标高16位部分gsh_bounding_box_offset_x_upper是16位数,表示片包围盒x坐标32位有符号整数的高16位。
[0331]
片包围盒原点x坐标低16位部分gsh_bounding_box_offset_x_lower是16位数,表示片包围盒原点x坐标32位有符号整数的低16位。
[0332]
其中,片包围盒原点x坐标的计算公式为:
[0333]
gsh_bounding_box_offset_x=(gsh_bounding_box_offset_x_upper)《《16+gsh_bounding_box_offset_x_lower
[0334]
片包围盒原点y坐标高16位部分gsh_bounding_box_offset_y_upper是16位数,表示片包围盒y坐标32位有符号整数的高16位。
[0335]
片包围盒原点y坐标低16位部分gsh_bounding_box_offset_y_lower是16位数,表
示片包围盒原点y坐标32位有符号整数的低16位。
[0336]
其中,片包围盒原点y坐标的计算公式为:
[0337]
gsh_bounding_box_offset_y=(gsh_bounding_box_offset_y_upper)《《16+gsh_bounding_box_offset_y_lower
[0338]
片包围盒原点z坐标高16位部分gsh_bounding_box_offset_z_upper是16位数,表示片包围盒z坐标32位有符号整数的高16位。
[0339]
片包围盒原点z坐标低16位部分gsh_bounding_box_offset_z_lower是16位数,表示片包围盒原点z坐标32位有符号整数的低16位。
[0340]
其中,片包围盒原点z坐标的计算公式为:
[0341]
gsh_bounding_box_offset_z=(gsh_bounding_box_offset_z_upper)《《16+gsh_bounding_box_offset_z_lower
[0342]
片包围盒x方向对数尺寸高位部分gsh_bounding_box_nodesizexlog2_upper是无符号整数,表示片包围盒x方向对数尺寸高于16位的位数。
[0343]
片包围盒x方向对数尺寸低位部分gsh_bounding_box_nodesizexlog2_lower是无符号整数,表示片包围盒x方向对数尺寸低16位。
[0344]
其中,片包围盒x方向对数尺寸的计算公式为:
[0345]
gsh_bounding_box_nodesizexlog2=(gsh_bounding_box_nodesizexlog2_upper)《《16+gsh_bounding_box_nodesizexlog2_lower
[0346]
片包围盒y方向对数尺寸高位部分gsh_bounding_box_nodesizeylog2_upper是无符号整数,表示片包围盒y方向对数尺寸高于16位的位数。
[0347]
片包围盒y方向对数尺寸低位部分gsh_bounding_box_nodesizeylog2_lower是无符号整数,表示片包围盒y方向对数尺寸低16位。
[0348]
其中,片包围盒y方向对数尺寸的计算公式为:
[0349]
gsh_bounding_box_nodesizeylog2=(gsh_bounding_box_nodesizeylog2_upper)《《16+gsh_bounding_box_nodesizeylog2_lower
[0350]
片包围盒z方向对数尺寸高位部分gsh_bounding_box_nodesizezlog2_upper是无符号整数,表示片包围盒z方向对数尺寸高于16位的位数。
[0351]
片包围盒z方向对数尺寸低位部分gsh_bounding_box_nodesizelog2_lower是无符号整数,表示片包围盒z方向对数尺寸低16位。
[0352]
其中,片包围盒z方向对数尺寸的计算公式为:
[0353]
gsh_bounding_box_nodesizezlog2=(gsh_bounding_box_nodesizezlog2_upper)《《16+gsh_bounding_box_nodesizezlog2_lower
[0354]
片所含点数高位部分num_points_upper是无符号整数,表示片所含点数高于16位的位数。
[0355]
片所含点数低位部分num_points_upper是无符号整数,表示片所含点数低16位。
[0356]
其中,片所含点数的计算公式为:
[0357]
num_points=((num_points_upper《《16)+num_points_lower)
[0358]
基于上述对几何片头的语法表的相关介绍,下面以几何片头语法表为例,对本技术实施例对应的语法表进行介绍;具体是介绍分组点数字段geom_max_tree_size_log2_
minusx位于几何片头的语法表中的不同位置时,获取分组点数字段geom_max_tree_size_log2_minusx的实现过程。
[0359]
一种示例性的分组点数字段geom_max_tree_size_log2_minusx在几何片头语法表中的位置如表7所示。
[0360]
表7
[0361]
[0362][0363]
如表7所示,在解码设备获取到编码设备发送的编码码流时,确定获取到编码码流的片头文件,则可执行头信息文件(即运行头信息文件所包含的代码);若运行片头文件时在片头文件中查询到分组点数字段geom_max_tree_size_log2_minusx,则触发执行前述描
述的对分组点数字段进行解析,得到移动位数的步骤。
[0364]
可选的,在解析编码码流的片头文件中的分组点数字段geom_max_tree_size_log2_minusx之前,还需判断是否开启片几何上下文模式,只有开启片几何上下文模式时才触发执行在片头文件中查询分组点数字段geom_max_tree_size_log2_minusx的步骤。其中,本技术实施例涉及的片几何上下文模式为gsh_context_mode字段,由前述对片头语法表的相关描述可知,该gsh_context_mode字段是一个二值变量,支持点云片根据值选择不同的几何八叉树编码中的上下文模式。一种示例性的片几何上下文模式gsh_context_mode,以及分组点数字段geom_max_tree_size_log2_minusx在几何片头语法表中的位置如表8所示。
[0365]
表8
[0366]
应当说明的是表8只是给出了,片头语法表中包括片几何上下文模式gsh_context_mode,以及分组点数字段geom_max_tree_size_log2_minusx的部分语法表。如表8所示,片头文件中包括条件语句if(gsh_context_mode){},若该条件语句中的片几何上下文模式gsh_context_mode取值为1,则确定开启上下文模式。具体地,在解码设备获取到编码设备发送的编码码流后,若在编码码流的片头文件中查询到片几何上下文模式gsh_context_mode,则对该片几何上下文模式gsh_context_mode进行解析;当解析结果指示对开启上下文模式时,触发执行在编码码流的片头文件中查询分组点数字段的步骤。
[0367]
可选的,片头文件中包括的if条件语句中可以不止包括分组点数字段geom_max_tree_size_log2_minusx,如还可以在条件语句中包括几何树类型标志geom_tree_type,该几何树类型标志geom_tree_type为一个二值分量,当其取值为0时,表示八叉树编码,当其取值为1时,表示预测树编码。一种示例性的片几何上下文模式gsh_context_mode,几何树类型标志geom_tree_type,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表9所示。
[0368]
表9
[0369][0370]
与表8所示的语法结构类似的,只是表9所示的语法表中在条件语句中新增几何树类型标志geom_tree_type,表示在条件语句中的片几何上下文模式gsh_context_mode取值为1时,可以执行几何树类型标志geom_tree_type,和分组点数字段geom_max_tree_size_log2_minusx。
[0371]
可选的,几何树类型标志geom_tree_type还可以位于片头文件中包括的if条件语句中。一种示例性的片几何上下文模式gsh_context_mode,几何树类型标志geom_tree_type,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表10所示。
[0372]
表10
[0373][0374][0375]
如表10所示,条件语句中同时包括片几何上下文模式gsh_context_mode,和,几何树类型标志geom_tree_type判断条件,表示在条件语句中的几何树类型标志geom_tree_type取值为1,且片几何上下文模式gsh_context_mode取值为1时,才可以执行分组点数字段geom_max_tree_size_log2_minusx。具体实现中,在解码设备获取到编码设备发送的编码码流后,若在编码码流的片头文件中查询到片几何上下文模式gsh_context_mode和几何树类型标志geom_tree_type,则分别对片几何上下文模式gsh_context_mode和几何树类型标志geom_tree_type进行解析;当片几何上下文模式标志的解析结果指示:编码端对点云数据采用不同上下文模式,且几何树类型标志的解析结果指示:编码端构建的几何数类型
为单链预测树类型时,才触发执行在编码码流的片头文件中查询分组点数字段的步骤。
[0376]
可选的,片头文件中包括的if条件语句中还可以内嵌一个或多个条件语句,如将几何树类型标志geom_tree_type放置到内嵌的条件语句中。一种示例性的片几何上下文模式gsh_context_mode,几何树类型标志geom_tree_type,以及分组点数字段geom_max_tree_size_log2_minusx在几何头信息语法表中的位置如表11所示。
[0377]
表11
[0378][0379]
如表11所示,在解码设备获取到编码设备发送的编码码流后,若在编码码流的片头文件中查询到片几何上下文模式gsh_context_mode,则对该片几何上下文模式gsh_context_mode进行解析;当解析结果指示编码端对所述点云数据采用不同上下文模式时,读取编码端构建的几何树类型标志geom_tree_type,且对几何树类型标志geom_tree_type进行解析;若对几何树类型标志geom_tree_type进行解析的解析结果指示:为点云数据构建的几何树类型为单链预测树类型时,触发执行在所述编码码流的片头文件中查询分组点数字段geom_max_tree_size_log2_minus8的步骤。更为详细的,在片头文件中包括条件语句if(geom_tree_enable){},若该条件语句中的片几何上下文模式gsh_context_mode取值为1,则确定开启上下文模式。该条件语句if(geom_tree_enable){}中还内嵌有条件语句if(geom_tree_type){},若该条件语句中的几何树类型标志geom_tree_type取值为1,则确定开启预测树编码。
[0380]
值得注意的是,上述只是本技术实施例给出的几种示例性的分组点数字段geom_max_tree_size_log2_minusx在片头文件中的位置;在实际应用中,分组点数字段geom_max_tree_size_log2_minusx在片头文件中的位置还可以发生适应性变化,在此不作一一穷举。
[0381]
另外,本技术实施例除涉及上述描述的几何头信息语法表和几何片头语法表外,还涉及几何数据语法表和几何节点语法表;下面对涉及的几何数据语法表和几何节点语法表进行简单介绍。其中,几何数据语法表可参见表12。
[0382]
表12
[0383]
[0384]
[0385]
[0386][0387]
如表12所示,几何树类型geom_tree_type为二值变量,值为0表示八叉树编码;值为1表示预测树编码。
[0388]
宏块(lcu)点数值占用字节数num_bits_in_lcu_num_points是5位无符号整数,表示宏块中点数值所用的字节数。
[0389]
宏块(lcu)点数值字节lcu_num_points[i]是二值变量,表示宏块(lcu)点数值的第i位字节。
[0390]
几何残差为零标志is_geom_residual_zero[n][k]是二值变量,表示第n个几何残差的第k分量是否为零,k=0,1,2;其取值为1表示残差值等于零;取值为0表示残差值不等于零。
[0391]
几何残差符号标志geom_residual_sign[n][k]是二值变量,表示第n个几何残差的第k分量的符号,k=0,1,2。取值为1表示残差值为正;取值为0表示残差值为负。
[0392]
几何残差绝对值减一占用字节数num_bits_in_abs_geom_residual_minus_one[n][k]是5位无符号整数,表示第n个几何残差的第k分量绝对值减一所占用的字节数,k=0,1,2。
[0393]
几何残差绝对值减一abs_geom_residual_minus_one[n][k][j]是二值变量,表示第n个几何残差的第k分量绝对值减一的第j字节,k=0,1,2。
[0394]
终止比特termination_bit_one是终止位,取值为1时,表示终止运行代码。
[0395]
其中,本技术实施例涉及的残差信息采用几何数据可描述为表13所示。
[0396]
表13
[0397]
[0398][0399]
几何节点语法表可参见表14。
[0400]
表14
[0401]
[0402]
[0403][0404]
如表14所示,几何孤立点模式标志符geom_single_flag是二值变量,取值为1时,表示当前节点按照孤立点模式编码;取值为0时,表示当前节点不按照孤立点模式编码。如果该语法元素不在码流中出现,其缺省值为0。
[0405]
几何占用码occupancy_code是8位无符号整数,8个比特分别表示当前节点的8个子节点是否被占用。
[0406]
孤立点x方向相对坐标的第i个比特point_offset_x[i],在孤立点编码中,表示其相对于其所属节点x坐标的相对位置的第i个比特值。
[0407]
孤立点y方向相对坐标的第i个比特point_offset_y[i],在孤立点编码中,表示其相对于其所属节点y坐标的相对位置的第i个比特值。
[0408]
孤立点z方向相对坐标的第i个比特point_offset_z[i],在孤立点编码中,表示其相对于其所属节点z坐标的相对位置的第i个比特值。
[0409]
几何子节点中重复点标志num_duplicated_points_eq_one,表示当前几何子节点中重复点数目是否为1。取值为1时,表示子节点中只有1个点,取值为0时,表示子节点中包含多于1个点。
[0410]
几何子节点中重复点数目减2num_duplicated_points_minus_two,表示当前几何子节点中重复点数目为num_duplicated_points_minus_two+2。
[0411]
s1203:对点云数据中每个点云组进行起始点解析,得到每个点云组的起始点的重建几何信息。
[0412]
考虑到一个点云组对应一个单链预测树,从而一个点云组对应有一个或多个起始点;那么在对点云数据进行分组处理,得到l个点云组后,可针对每个点云组进行起始点解析,得到每个点云组的起始点的重建几何信息。这样解码设备可以并行基于各个点云组的起始点的重建几何信息,对各个点云组中的点进行几何解码处理,实现快速重建各个点云组中各点的重建几何信息。
[0413]
需要说明的是,在图4所示实施例中已经给出以整个点云数据为单位时,对整个点云数据进行起始点解析,得到整个点云数据的起始点的重建几何信息的具体实施过程。在一种实现方式中,可针对整个点云数据的点云包围盒的包围盒信息进行解析,得到整个点云数据的点云包围盒的各个顶点的顶点信息,从而基于各个顶点的顶点信息确定整个点云数据的起始点的重建几何信息。在其他实现方式中,还支持对整个点云数据的起始点信息
直接进行解析,这样可以直接将解析结果作为整个点云数据的起始点的重建几何信息。
[0414]
与图4所示的重建整个点云数据的起始点的重建几何信息的具体实施过程类似的;针对单个点云组进行起始点解析可包括:基于该单个点云组的点云包围盒的包围盒信息进行起始点解析,或者,基于该单个点云组的起始点信息进行起始点解析。其中:
[0415]
在一种实现方式中,针对点云组的点云包围盒的包围盒信息进行起始点解析,得到该点云组的起始点的重建几何信息。具体地,可获取点云组的点云包围盒的包围盒信息,此处的点云组的点云包围盒是指包括有该点云组所有点的最小空间,点云组的点云包围盒的包围盒信息是编码设备进行编码得到的;然后,对该点云组的点云包围盒的包围盒信息进行解析处理,得到该点云组的点云包围盒的各个顶点的顶点信息;从而基于各个顶点的顶点信息,从该点云组的点云包围盒的各个顶点中为该点云组确定出起始点,并将确定为起始点的顶点的几何信息作为起始点的重建几何信息。
[0416]
其他实现方式中,针对点云组的起始点信息进行起始点解析,得到该点云组的起始点的重建几何信息。具体地,可获取点云组的起始点信息,该起始点信息是编码设备直接对该点云组的起始点的真实几何信息进行编码处理得到的;然后,解码设备可直接对该点云组的起始点信息进行解析处理,并直接将该解析结果作为该点云组的起始点的重建几何信息。
[0417]
可以理解的是,如果编码设备对点云组的起始点的真实几何信息的编码方式发生变化,那么解码设备对点云组进行起始点解析得到起始点的重建几何信息的具体实施过程可能发生变化;上述只是本技术实施例给出的两种示例性的重建点云组的起始点的重建几何信息的实施过程。
[0418]
s1204:基于每个点云组的起始点的重建几何信息,重建点云数据的单链预测树。
[0419]
在确定每个点云组的起始点的重建几何信息时,本技术实施例支持解码设备以点云组为单位,并行地针对每个点云组重建每个点云组的单链预测树,再基于每个点云组的单链预测树重建整个点云组的单链预测树。这种并行重建多个点云组的单链预测树,最终得到整个点云数据的单链预测树的预测树重建方式,能够提升预测树的构建速度和效率。需要说明的是,除了第一个点云组的单链预测树,不需要基于相邻前序点云组的最后一个点作为起始点重建外,其他点云组的单链预测树可能需要将相邻前序点云组中最后一个点作为起始点进行单链预测树的重建。也就是说,除第一个点云组之外的其他点云组的起始点可以是相邻前序点云组中的最后一个点。
[0420]
下面以点云数据的l个点云组中的第i个点云组为例,对重建第i个点云组的单链预测树的过程进行说明:
[0421]
首先,基于第i个点云组的起始点的重建几何信息,对第i个点云组中各点进行几何预测处理,得到第i个点云组中各点的预测几何信息。
[0422]
然后,可对第i个点云组中各点的残差信息进行解析处理,得到点云组中各点的重建残差信息。
[0423]
由前述描述可知,点云数据中的残差信息可分为目标点的残差信息和候选点的残差信息,那么如果以点云组为单位构建单链预测树,那么点云组中的目标点可是指:点云组中各点的解码顺序中,位于点云组的起始点相邻位置处的点;从而点云组中的起始残差是指点云组中的目标点的残差信息,即点云组中的首个残差信息,点云组中的候选残差信息
是指点云组中除该目标点以外的其他点的残差信息。同理,如果是以宏块为单位构建单链预测树,那么宏块中的目标点可是指:宏块所包含的多个点的解码顺序中,位于宏块的起始点相邻位置处的点;从而宏块中的起始残差是指宏块中的目标点的残差信息,即宏块中的首个残差信息,宏块中的候选残差信息是指宏块中除该目标点以外的其他点的残差信息点。当然,如果以片为单位构建单链预测树的具体实施过程,与上述描述的以点云组或宏块为单位构建单链预测树的具体实施过程是类似的,在此不作赘述。
[0424]
最后,基于第i个点云组中各点的重建几何信息,以及第i个点云组中各点的解码顺序,依次连接第i个点云组中的各点,以构建得到第i个点云组的单链预测树。
[0425]
进一步的,根据l个点云组中的每个点云组的起始点的重建几何新,重建得到每个点云组的单链预测树后,可基于l个点云组的分组顺序,即l个点云组被划分时的顺序,将每个点云组的单链预测树进行连接,以生成整个点云数据的单链预测树。一种基于l个点云组的单链预测树,重建得到整个点云数据的单链预测树的示意图可参见图15;如图15所示,点云数据包括l个点云组,每个点云组对应有一条单链预测树,则按照l个点云组被划分时的分组顺序,将每个点云组对应的单链预测树进行连接,得到点云数据的目标预测树。例如,l个点云组中包括相邻的第i个点云组和第i+1个点云组,i=1,2,
…
,l-1;则将第i个点云组的单链预测树中的最末点(或称为终止点),作为第i+1个点云组的单链预测树的最首点(或称为起始点),以得到整个点云数据的单链预测树。
[0426]
综上所述,本技术实施例中解码端在获取到待解码的点云数据后,支持对点云数据进行分组,得到多个点云组;并针对每个点云组重建每个点云组的单链预测树,再基于每个点云组的单链预测树重建整个点云组的单链预测树。这种并行重建多个点云组的单链预测树,最终得到整个点云数据的单链预测树的预测树重建方式,能够提升预测树的构建速度和效率,实现快速构建点云数据的单链预测树的方式,在一定程度上提升预测树模式的传输效率。
[0427]
前述图4所示实施例以及图12所示实施例,主要对本技术实施例提出的点云解码方法的具体实施过程进行介绍;在本技术实施例中的点云编码方法的具体实施过程与前述描述的点云解码方法的具体实施过程是类似。下面结合图16对本技术实施例提供的点云编码方法的具体实施过程进行介绍,该点云编码方法可由图3所示的点云编解码系统301中的点云编码设备301执行。如图16所示,该点云编码方法可以包括但不限于如下步骤s1601-s1604:
[0428]
s1601:获取待编码的点云数据。
[0429]
待编码的点云数据可以是对真实三维物体表面进行数字采集所得到的点集合。点云数据是以点为单位的集合,点云数据包括的每个点具有几何信息和属性信息,可用于表征真实三维物体的表面特性。当目标对象(如任一对象)具有分析三维物体表面的表面特性或传输物体表面的表面特征的需求时,可以采用捕获设备对三维物体表面进行扫描,以获取到待编码的点云数据,该待编码的点云数据包括从三维物体表面采集到的多个待编码的点。当然,对于编码设备而言,其除了通过如上述所描述的扫描方式采集到待编码的点云数据外,还可以从其他设备处获取待编码的点云数据,如捕获设备在扫描到点云数据后,可将点云数据发送给编码设备,此时确定编码设备获取到待编码的点云数据。本技术实施例对编码设备获取待编码的点云数据的具体获取方式不作限定,在此说明。
[0430]
s1602:为点云数据确定起始点。
[0431]
正如前述所描述的,点云数据的起始点可以理解为搜索起点,即链路中的最首点。在编码设备构建点云数据的单链预测树的过程中,需要先基于点云数据中各点的真实几何信息,为点云数据选取起始点;当点云数据中的某个点被确定为搜索起点时,确定以该点为基准从点云数据中搜索待编码的点,并将该待编码的点链接至以该点为起始点的链路上,以形成以该起始点为搜索起点的链路,从而构建点云数据的单链预测树。其中,为点云数据选取的起始点的数量可以大于1,这样可以基于多个起始点同时构建多个分支链路,再将各个分支链路进行连接,以得到点云数据的总的单链预测树;这种基于多个起始点同时构建分支链路来构建单链预测树的方式,可以提升单链预测树的构建效率,从而提高点云数据的编码效率。
[0432]
本技术实施例采用一种或多种方式为点云数据选取起始点,包括但不限于:基于点云数据的点云包围盒的各个顶点为点云数据选取起始点,或者,从点云数据的多个特殊点中选取起始点,或者,按照点云数据中待编码的点的排列顺序选取起始点,等等。下面对上述给出的几种示例性的为点云数据选取起始点的选取方式进行简单介绍,其中:
[0433]
1)从点云数据的点云包围盒的多个顶点中,选取起始点。为点云数据选取起始点的具体实现流程可包括步骤s41-s42:
[0434]
s41:确定点云数据的点云包围盒。点云数据的点云包围盒包括:涵盖了点云数据中所有点的三维空间体,如最小长方体、最小立方体或最小多面体(如十面体)等。其中,点云数据的点云包围盒的构建过程可包括:
[0435]
首先,基于点云数据中各待编码的点的真实几何信息,确定点云数据的点云包围盒的原点。假设点云数据的k-th点的浮点类型的坐标信息表示为(xk,yk,zk),k是点云数据中的待编码的点的点数,k=0,1,2,
…
,k-1,如k=2时,该点的坐标信息表示为(x2,y2,z2)。则基于点云数据中各点的真实几何信息,确定点云数据的点云包围盒的原点,包括:
[0436]
①
根据点云数据中各点的真实几何信息,确定在x方向、y方向以及z方向上均为最小数值的坐标点(x
min
,y
min
,z
min
)。其中,x
min
是点云数据中各个待编码的点中在x方向上的最小值,y
min
是点云数据中各个待编码的点中在y方向上的最小值,z
min
是点云数据中各个待编码的点中在z方向上的最小值。x
min
,y
min
以及z
min
的计算公式如下:
[0437]
x
min
=min(x0,x1,
…
,x
k-1
)
[0438]ymin
=min(y0,y1,
…
,y
k-1
)
[0439]zmin
=min(z0,z1,
…
,z
k-1
)
[0440]
其中,min(s0,s1,
…
,s
k-1
)是取最小值函数,表示从当前输入中取最小值。
[0441]
②
基于最小数值的坐标点(x
min
,y
min
,z
min
)计算点云数据的点云包围盒的原点(x
origin
,y
origin
,z
origin
)。其中,原点坐标中的x
origin
,y
origin
以及z
origin
可分别采用如下计算公式计算得到:
[0442]
x
origin
=int(floor(x
min
))
[0443]yorigin
=int(floor(y
min
))
[0444]zorigin
=int(floor(z
min
))
[0445]
int(s)函数和floor(s)函数均为取整函数;int(s)函数的取整原理为向下取整,支持返回小于或等于s的最大整数值,如int(7.3)=7;floor(s)函数取整函数可以返回小
于或等于s,且是指定基数的最大倍数值,如floor(23,3)表示需要返回小于或等于23且是3的最大整数倍的数值21。
[0446]
然后,基于点云包围盒的原点和点云数据中各个待编码的点的真实几何信息,计算点云包围盒在三维坐标系的各个方向上的尺寸,以此确定点云数据的点云包围盒。点云包围盒在x,y,z方向上的尺寸可以采用如下计算公式计算:
[0447]
boudingboxsize
x
=int(x
max-x
origin
)+1
[0448]
boudingboxsizey=int(y
max-yorigin)+1
[0449]
boudingboxsizez=int(z
max-z
origin
)+1
[0450]
其中,int(s)函数为向下取整函数,关于int(s)函数的相关介绍可参见上述相关描述,在此不作赘述。坐标点(x
max
,y
max
,z
max
)是在x方向、y方向以及z方向上均为最大数值的点,x
max
是点云数据中各个待编码的点中在x方向上的最大值,y
max
是点云数据中各个待编码的点中在y方向上的最大值,z
max
是点云数据中各个待编码的点中在z方向上的最大值;x
max
,y
max
以及z
max
的计算公式如下:
[0451]
x
max
=max(x0,x1,
…
,x
k-1
)
[0452]ymax
=max(y0,y1,
…
,y
k-1
)
[0453]zmax
=max(z0,z1,
…
,z
k-1
)
[0454]
其中,max(s0,s1,
…
,s
k-1
)是取最大值函数,表示从当前输入中取最大值。
[0455]
综上所述,基于计算得到的点云包围盒的原点,以及点云包围盒在x方向、y方向和z方向上的尺寸,可得到点云数据的点云包围盒。正如前述所提及的,包围盒的基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象;在本技术实施例中点云数据的点云包围盒,可用于包围点云数据中所有待编码点的最小长方体。
[0456]
s42,从点云数据的点云包围盒的多个顶点中,按照起始点选取规则选取一个或多个起始点。其中,关于起始点选取规则的具体内容可参见前述图4所示实施例中步骤s402所示的相关描述,在此不作赘述;如起始点选取规则可包括但不限于:随机选择,按点云包围盒的各顶点之间的几何距离关系选取,以及沿预设方向选取等。
[0457]
2)从点云数据的多个特殊点中选取起始点。具体实现中,可先确定点云数据的特殊点,该特殊点可以是指点云数据中几何距离大于距离阈值的多个点,如特殊点为点云数据中的极值点和中位点等;其中,极值点包括沿各个(如x方向、y方向以及z方向)的最大值点(或称为极大值点)和最小值点(或称为极小值点),中位点可包括点云数据中按序排列的多个点中的中间位置的点。然后,从点云数据的多个特殊点中,为点云数据选取起始点。例如,可以从极大值点和极小值点中选取极小值点作为点云数据的起始点,或者,同时选取极大值点和极小值点作为点云数据的起始点,等等。
[0458]
3)按照点云数据中待编码的点的排列顺序,选取起始点。具体实现中,按照点云数据中各个点的排列顺序,确定点云数据中的特殊点;此处的特殊点可包括点云数据中各点的排列顺序中的最首点,或最末点等。然后,从点云数据的多个特殊点中,为点云数据选取起始点;如选取点云数据中各点的排列顺序中的最首点和最末点为起始点。
[0459]
需要说明的是,本技术实施例并不限定只基于上述一种实现方式选取起始点,如可以从点云数据的点云包围盒的多个顶点中选取起始点,和/或,从点云数据的极值点中选取起始点,和/或,从点云数据中排序排列的多个待编码的点中选取起始点。在实际为点云
数据选取起始点时,可以沿着利于提高编码效率的方向选取起始点;例如,如果选取点云数据的点云包围盒的左下角顶点后,基于该左下角顶点构建预测树的编码效率,大于选取点云数据的点云包围盒的右下角顶点后,基于该右下角顶点构建预测树的编码效率,则优先选取点云包围盒的左下角顶点作为点云数据的起始点。
[0460]
s1603:基于点云数据的起始点构建点云数据的单链预测树。
[0461]
具体实现中,在为点云数据选取起始点后,可以该起始点为搜索起点,从点云数据中搜索与该起始点之间的几何距离最近的点作为第二点,并将该第二点链接至起始点;再以第二点为搜索起点,从点云数据中剩余未被选取的点中选取与第二点之间的几何距离最近的第三点,并将该第三点链接至第二点;再以第三点为搜索起点,重复上述步骤,支持点云数据中的每个点均被链接;将最后链接得到的链路称为点云数据的单链预测树。
[0462]
值得说明的是,本技术实施例对基于点云数据的起始点构建点云数据的单链预测树的具体构建过程不作详细描述,其构建的主要思路为以起始点为搜索起点,依次链接几何距离最近的两个点,以此得到将点云数据中所有点均链接起来的单链预测树。
[0463]
s1604:根据点云数据的单链预测树,对点云数据中的各个待编码的点进行编码处理。
[0464]
基于前述步骤构建得到点云数据的单链预测树后,即确定得到点云数据中各点的编码顺序,即单链预测树中各点的连接先后顺序就是编码设备对点云数据中各点进行编码处理的编码顺序。那么编码设备根据点云数据的单链预测树,对点云数据中的各个待编码的点进行编码处理的流程可包括:
[0465]
首先,基于点云数据的起始点的真实几何信息,对点云数据中各点进行几何预测处理,得到点云数据中各点的预测几何信息。具体是采用几何编码模式和起始点的真实几何信息,对点云数据中各点进行几何预测处理的;例如,已知点云数据的单链预测树的起始点的真实几何信息,则可以基于该起始点的真实几何信息,并按照几何编码模式依次推导出其它各点的预测几何信息。还需注意的是,编码设备采用的几何编码模式与解码设备对点云数据进行解码处理采用的几何解码模式是相同的。
[0466]
其中,编码设备采用的几何编码模式可包括但不限于:
[0467]
1)不对待编码的点进行几何预测处理;
[0468]
2)采用单个前序节点(parent点)对当前待编码的点进行几何预测处理;
[0469]
3)采用s个前序节点(如parent点、grandparent点,或者,parent点、grandparent点以及grand-grandparent点)对当前待编码的点进行几何预测处理;假设点云数据中位于当前待编码的点之前的点数为q,那么s的取值为:2,3,4,
…
,q-1。
[0470]
下面对上述给出的几种示例性的几何编码模式的具体实施过程进行介绍,其中:
[0471]
1)对于目标预测树中位于第一位置的第一起始点而言,无需对该第一起始点进行几何预测处理;可以理解为,该起始点的预测几何信息为该起始点的真实几何信息。
[0472]
2)采用单个前序节点对当前待解码的点进行几何预测处理;即支持基于单个前序节点(或简称为前序点)确定当前待编码的点的预测几何信息。假设点云数据中包括当前待编码的点,该当前待编码的点是指点云数据中除最首点之外的任一个待编码的点,那么根据单链预测树的几何编码模式,对当前待编码的点进行几何预测处理,得到该当前待编码的点的预测几何信息的过程,包括:获取编码顺序中位于当前待编码的点之前,且相邻的单
个前序点的预测几何信息;然后,将该前序点的预测几何信息,作为当前待编码的点的预测几何信息。其中,编码顺序是指单链预测树中各点之间的连接顺序。
[0473]
3)采用s个前序节点对当前待编码的点进行几何预测处理,本技术实施例对s的具体取值不作限定;即本技术实施例支持基于多个前序节点共同计算当前待编码的点的预测几何信息。假设点云数据中包括当前待编码的点,该当前待编码的点是指点云数据中除最首点之外的任一个待编码的点,那么根据单链预测树的几何编码模式,对当前待编码的点进行几何预测处理,得到该当前待编码的点的预测几何信息的过程,包括:获取编码顺序中位于当前待编码的点之前,且相邻的多个前序点的预测几何信息,并对多个前序点的预测几何信息进行融合处理,得到当前待编码的点的预测几何信息。值得说明的是,本技术实施例对融合处理的具体过程不作限定,如融合处理可包括但不限于差分处理或平均值计算等。
[0474]
值得说明的是,编码设备采用任一种或多种几何编码模式对点云数据中的点进行几何预测处理后,还需将采用的一种或多种几何编码模式编码进行编码码流或参数集中,以便于解码设备在获取到编码码流或参数集后,能够对编码码流或参数集进行解码,得到相应的几何编码模式,并采用相同的几何编码模式(此时可称为几何解码模式)对点云数据中各点进行几何预测处理,以还原得到点云数据中各点的重建几何信息。
[0475]
其次,基于点云数据中各点的预测几何信息和真实几何信息,确定点云数据中各点的残差信息。具体地,针对点云数据的任一点的残差信息的确定方式可包括:将该任一点的真实几何信息与该任一点的预测几何信息进行相减,以得到该任一点的残差信息。
[0476]
最后,为点云数据中各点设置残差编码规则,并按照点云数据中各点的残差编码规则,对点云数据中各点的残差信息进行残差编码处理,得到编码处理后的编码码流。具体实现中,在为点云数据中各点设置残差编码规则时,可以按照点云数据中各点的编码顺序,从点云数据中筛选出位于目标位置的目标点;此处的目标位置的目标点包括:在点云数据中各点的编码顺序中,与起始点相邻且位于起始点之后的点,也就是说,从点云数据中筛选出首个残差信息对应的点。然后,支持为目标点的起始残差信息,以及点云数据中除目标点以外的候选点的候选残差信息,设置相同的残差编码规则;或者,支持为目标点的起始残差信息,以及点云数据中除目标点以外的候选点的候选残差信息,设置不同的残差编码规则。
[0477]
可以理解的是,编码设备采用的残差编码规则与前述描述的解码设备采用的残差解码规则是对应的。由前述描述可知,解码设备采用的残差解码规则可包括比特位数解码规则和/或指数哥伦布解码规则,则编码设备采用的残差编码规则可包括比特位数编码规则和/或指数哥伦布编码规则。
[0478]
在一种实现方式中,编码设备可以为目标点的起始残差信息和候选点的候选残差信息,设置相同的残差编码规则,如该残差编码规则为比特位数编码规则;那么可以根据起始残差信息所占用的比特位数和候选残差信息所占用的比特位数的不同,为起始残差信息和候选残差信息选择不同的上下文模型,来对相应的残差信息进行残差编码处理。另一种实现方式中,编码设备可以为目标点的起始残差信息和候选点的候选残差信息,设置相同的残差编码规则,如该残差编码规则为指数哥伦布编码规则;那么可以采用不同的指数哥伦布阶数对应的上下文模型,对起始残差信息和候选残差信息进行残差编码处理。其他实现方式中,编码设备可以为目标点的起始残差信息和候选点的候选残差信息,设置不同的
残差编码规则,如残差编码规则分别为比特位数编码规则和指数哥伦布编码规则;那么可以根据比特位数编码规则对起始残差信息进行残差编码处理,且根据指数哥伦布编码规则对候选残差信息进行残差编码处理;或者,根据比特位数编码规则对候选残差信息进行残差编码处理,且根据指数哥伦布编码规则对起始残差信息进行残差编码处理。
[0479]
值得说明的是,编码设备采用任一种或多种残差编码规则对起始残差信息和候选残差信息进行残差编码处理后,还需对采用的残差编码规则进行编码处理,如对残差编码规则的选取方式进行编码处理,或者,对残差编码规则的规则id进行编码处理等,以便于解码设备在获取到编码码流后,能够解析到与编码设备侧相同的残差解码规则,并采用相同的残差解码规则解码起始残差信息或候选残差信息,以重建点云数据中各点的重建残差信息。
[0480]
另外,本技术实施例支持编码设备设置重复点标志位,来指示点云数据中是否存在重复点;或者,支持编码设备和解码设备协商设置点云数据中是否存在重复点。其中,点云数据中的重复点的相关概念可参见前述解码侧的相关描述,在此不作赘述。在一种实现方式中,若确定点云数据中存在重复点,则在按照点云数据的单链预测树中各点之间的连接顺序进行编码处理的过程中,若检测到当前待编码的点为重复点,则可以跳过该重复点,即不对该重复点进行编码,而是设置重复点标识位来标识出当前待编码的点为重复点;不仅有利于解码设备通过解码重复点标识位来确定点云数据中的重复点,而且不对冗余的重复点进行编码,还能在一定程度上节省编码码流,提升编码速度和效率。在另一种实现方式中,若确定点云数据中不存在重复点,则按照点云数据的单链预测树中各点之间的连接顺序进行编码处理的过程中,若检测到当前待编码的点为重复点,则继续对该重复点进行编码,即将重复点当作独立的正常点进行编码处理。
[0481]
另外,本技术实施例还支持设置重复点检测间隔,来告知解码设备每间隔预设数量个点解析重复点数量。具体地,编码设备可以设置重复点检测间隔,并对该重复点检测间隔进行编码,得到重复点间隔编码信息。然后,将该重复点检测间隔信息一同编码码流发送至解码设备,以便于解码设备在获取到该重复点检测间隔信息后,对该重复点检测间隔信息进行解码,得到重复点检测间隔;这样解码设备可以基于该重复点检测间隔对点云数据中的重复点进行识别。
[0482]
需要说明的是,关于重复点检测间隔,重复点标志位以及重复点标识位的相关内容,可参见前述图4所示实施例中的相关描述,在此不作赘述。
[0483]
本技术实施例中,在需要对待编码的点云数据中各个待编码的点进行编码处理时,编码端可以基于待编码的点云数据中各点的真实几何信息从点云数据中选取一个或多个起始点,并基于一个或多个起始点构建点云数据的单链预测树;再基于单链预测树对点云数据中各待编码的点进行编码处理,得到编码码流(或称为压缩码流)。这种基于多起始点构建点云树的单链预测树的方式,能够实现提升点云数据的单链预测树的构建速度,从而提高点云数据的编码效率。
[0484]
基于上述图16所示实施例,可实现基于整个点云数据的起始点构建整个点云数据的单链预测树;本技术实施例还支持对整个点云数据进行分组,并基于分组后的每个点云组构建整个点云数据的单链预测树。其中,基于分组在构建单链预测树的点云编码方法的具体实现流程可参见图17;该点云编码方法可以由图3所示点云编解码系统30中的编码设
备301执行。如图17所示,该点云编码方法可以包括以下步骤s1701-s1705:
[0485]
s1701:获取待编码的点云数据。
[0486]
需要说明的是,步骤s1701所示的具体实施过程,可参见图16所示的步骤s1601所示的具体实施过程的相关描述,在此不作赘述。
[0487]
s1702:对待编码的点云数据进行分组处理,以得到点云数据的l个点云组。
[0488]
具体实现中,支持对待编码的点云数据进行划分,即将点云数据包括的多个待编码的点划分至不同的点云组中,这样每个点云组可包括相同或不同数量的待编码的点。其中,对待编码的点云数据进行分组,以得到l个点云组的实现过程可包括但不限于:
[0489]
首先,可先对待编码的点云数据包括的多个待编码的点(如n个待编码的点,n为大于1的整数)进行排序,得到点云序列。点云序列可包括但不限于莫顿序或原始序;其中:
①
莫顿序可以是根据点云数据所包含的各个待编码的点的几何信息进行莫顿码排序得到的;具体是将点云数据所包含的各个待编码的点的3d坐标信息(如前述提及的几何信息)通过查询莫顿顺序表,转换为每个待编码的点对应的莫顿码,再对每位莫顿码进行排序得到点云数据对应的莫顿序。
②
原始序可以是指将待编码的点云数据输入至编码设备时,各个待编码的点的输入顺序,此情况下,该原始序可包括对物体表面扫描时获取到的各点的扫描顺序,还可以包括目标对象(如编码人员)对点云数据中各个点自定义的顺序;本技术实施例对原始序的具体确定方式不作限定。
[0490]
然后,获取组内最大点数,该组内最大点数可以是根据目标对象的数据划分需求自定义设置的,该组内最大点数指示了点云组中允许被划分的点的最大点数。最后,按照点云序列中各个待编码的点的排列顺序,将相邻组内最大点数的点划分至一个点云组,以得到l个点云组。例如,组内最大点数为100,则按照点云序列中各个待编码的点的排列顺序,将相邻100个待编码的点划分至同一点云组中,以得到l个点云组。其中,在划分得到第l-1个点云组时,若点云序列中剩余未划分的点的数量小于组内最大点数,则将剩余未划分的点添加至第l个点云组;或者,在划分得到第l个点云组时,若点云序列中剩余未划分的点的数量小于组内最大点数,则将剩余未划分的点添加至第l个点云组。
[0491]
由前述描述可知,点云数据中还可能包括重复点。本技术实施例支持在划分l个点云组时,将重复点划分至点云组或者将重复点不划分至点云组。
[0492]
在一种实现方式中,在将待编码的点云数据划分至l个点云组的过程中,可以获取重复点划分信息,重复点划分信息是编码端与解码端协商设置的,重复点划分信息指示:将重复点划分至点云组,或者,重复点划分信息指示将重复点不划分至点云组;然后,根据重复点划分信息对点云数据包括的重复点进行分组处理。可选的,若重复点划分信息指示将重复点划分至点云组,则当前待划分的点为重复点时,可以根据重复点划分信息将当前待划分的点划分至点云组中。可选的,若重复点划分信息指示将重复点不划分至点云组,则当前待划分的点不为重复点时,不将当前待划分的点划分至点云组,而是继续对后续点进行划分。
[0493]
其他实现方式中,在将待编码的点云数据划分至l个点云组的过程中,若检测到当前待划分的点为重复点,则可以将该重复点划分至点云组,或不划分至点云组,只需设置重复点划分字段即可;再将该重复点划分字段一同编码码流发送至解码设备,以便于解码设备在需要对待解码的点云数据进行解码处理,且判断重复点是否需要划分至点云组时,基
于该重复点划分字段解析出将重复点划分至点云组或者不划分至点云组。
[0494]
s1703:为l个点云组中的每个点云组选取起始点,并基于每个点云组的起始点构建每个点云组的单链预测树;
[0495]
s1704:基于l个点云组中每个点云组的单链预测树,构建点云数据的单链预测树。
[0496]
步骤s1703-s1704中,一个点云组对应一个单链预测树,这样为单个点云组选取的起始点可以作为该单个点云组的搜索起点,用于构建得到该单个点云组的单链预测树。应当说明的是,为点云组选取起始点的具体实施过程,与图16所示的为整个点云数据选取起始点的具体实施过程是类似的,只是是以单个点云组为选取单位。例如,从点云包围盒的各个顶点中选取起始点时,此处的点云包围盒为点云组的包围盒,即该点云包围盒为涵盖点云组所包含的所有点的最小空间。再如,从特殊点中选取起始点时,此处的特殊点为点云组所包含的多个点中的特殊点。又如,按照顺序选取起始点时,此处的顺序为点云组所包含的多个点的排列顺序。
[0497]
在为每个点云组选取到起始点后,可针对每个点云组的起始点构建l个点云组的单链预测树;然后,按照l个点云组中各个点云组的划分顺序,将每个点云组的单链预测树进行连接,以得到整个点云组的单链预测树。例如,l个点云中包括第j个点云组和第j+1个点云组,j=1,2,3,...,l-1;那么可以将第j个组的单链预测树的最末点与第j+1个点云组的单链预测树的最首点相连接,依次类推,以构建得到整个点云数据的单链预测树。
[0498]
s1705:根据点云数据的单链预测树,对点云数据中的各个待编码的点进行编码处理。
[0499]
需要说明的是,步骤s1705所示的具体实施过程,可参见前述图16所示实施例中步骤s1604所示的具体实施过程的相关描述,在此不作赘述。
[0500]
本技术实施例中,在需要对待编码的点云数据中各个待编码的点进行编码处理时,编码端可以针对待编码的点云数据进行分组处理,得到l个点云组。并且针对每个点云组选取一个或多个起始点,这样可以基于每个点云组的起始点同时构建各个点云组的单链预测树,相比于基于单个起始点构建整个点云数据的单链预测树而言,这种基于多个点云组的起始点并行构建每个点云组的单链预测树的方式,能够提升单链预测树的构建速度和效率,从而提高点云数据的编码效率。
[0501]
上述详细阐述了本技术实施例的方法,为了便于更好地实施本技术实施例的上述方案,相应地,下面提供了本技术实施例的装置。
[0502]
请参见图18,图18是本技术实施例提供的一种点云解码装置的结构示意图,该点云解码装置可以设置于本技术实施例提供的计算机设备中,计算机设备可以是上述方法实施例中提及的解码设备;在一些实施例中,该点云解码装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该点云解码装置可以用于执行图4或图12所示的方法实施例中的相应步骤。请参见图18,该点云解码装置可以包括如下单元:
[0503]
获取单元1801,用于获取待解码的点云数据,所述点云数据包括多个待解码的点;
[0504]
处理单元1802,用于对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息;
[0505]
所述处理单元1802,还用于基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树。
[0506]
在一种实现方式中,处理单元1802用于对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息时,具体用于:
[0507]
获取待解码的起始点重建信息,所述起始点重建信息包括以下至少一种:包围盒信息和起始点信息;所述包围盒信息是编码端对所述点云数据的点云包围盒进行编码得到的,所述点云数据的点云包围盒包括:涵盖所述点云数据中所有点的最小长方体、最小立方体或最小多面体;
[0508]
对所述起始点重建信息进行起始点解析,得到所述点云数据的起始点的重建几何信息。
[0509]
在一种实现方式中,所述起始点重建信息包括所述点云数据的包围盒信息,处理单元1802用于对所述起始点重建信息进行起始点解析,得到所述点云数据中的起始点的重建几何信息时,具体用于:
[0510]
对所述点云数据的包围盒信息进行解析处理,得到所述点云数据的点云包围盒的各个顶点的顶点信息;
[0511]
基于所述点云数据的点云包围盒的各个顶点的顶点信息,确定所述点云数据的起始点的重建几何信息。
[0512]
在一种实现方式中,所述起始点重建信息包括所述点云数据的起始点信息,所述起始点信息是编码端对所述点云数据的起始点进行编码处理得到的;处理单元1802用于对所述起始点重建信息进行起始点解析,得到所述点云数据中的起始点的重建几何信息时,具体用于:
[0513]
对所述点云数据的起始点信息进行解析处理;
[0514]
将解析结果作为所述点云数据的起始点的重建几何信息。
[0515]
在一种实现方式中,处理单元1802用于基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树时,具体用于:
[0516]
基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何解码处理,得到所述点云数据中各点的重建几何信息;
[0517]
按照所述点云数据中各点的重建几何信息的解码顺序,依次连接所述点云数据中的各点,重建得到所述点云数据的单链预测树。
[0518]
在一种实现方式中,处理单元1802用于基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何解码处理,得到所述点云数据中各点的重建几何信息时,具体用于:
[0519]
基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何预测处理,得到所述点云数据中各点的预测几何信息;以及,
[0520]
确定所述点云数据中目标点和候选点的残差解码规则,并按照所述目标点的残差解码规则,对所述目标点的起始残差信息进行残差解码处理,得到所述目标点的重建几何信息;以及,按照所述候选点的残差解码规则对所述候选点的候选残差信息进行残差解码处理,得到所述候选点的重建几何信息;所述目标点的残差解码规则和所述候选点的残差解码规则相同或不同;
[0521]
根据所述点云数据中各点的预测几何信息和重建残差信息,得到所述点云数据中各点的重建几何信息;
[0522]
其中,所述点云数据中的目标点是指:所述点云数据中与所述起始点相邻,且链接于所述起始点之后的点;所述点云数据中的候选是指:所述点云数据中除所述目标点和起始点之外的其他点。
[0523]
在一种实现方式中,处理单元1802,还用于:
[0524]
若当前待解码的点为重复点,则确定所述重复点的重复点数量;其中,所述当前待解码的点为重复点是指:所述当前待解码的点与所述当前待解码的点的任一个前序点的几何信息相同,所述当前待解码的点的前序点是指:在解码顺序中位于所述当前待解码的点之前的点;
[0525]
将所述重复点的前序点的重建几何信息,作为所述重复点数量个重复点的重建几何信息。
[0526]
在一种实现方式中,所述点云数据中是否存在重复点的判定方式,包括:
[0527]
获取重复点检测标识位,并根据所述重复点检测标识位判定所述点云数据中是否存在重复点;
[0528]
其中,重复点检测标识位是编码端与解码端协商设置的,或者,所述重复点检测标识位是解码端从编码码流或参数集中解析得到的。
[0529]
在一种实现方式中,编码码流中包括重复点标识位;在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0530]
按照所述点云数据中各点的解码顺序,逐个解析重复点标识位,得到每个重复点标识位的标识位解析结果;
[0531]
根据所述每个重复点标识位的标识位解析结果,确定所述点云数据中的重复点;
[0532]
以及,对所述点云数据中的重复点进行重复点数量解析,以得到所述点云数据中各重复点的重复点数量。
[0533]
在一种实现方式中,在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0534]
确定重复点检测间隔,所述重复点检测间隔指示:按照所述点云数据中各点的解码顺序,每间隔预设数量个点解析对应位置处的点的重复点数量;所述重复点检测间隔是编码端与解码端协商设置的,或者,所述重复点检测间隔是解码端从编码码流或参数集中解析得到的;
[0535]
按照所述点云数据中各点的解码顺序,对所述点云数据中每间隔所述预设数量个点对应位置处的点的重复点标识位进行解析;
[0536]
若解析结果指示所述对应位置处的点是重复点,则解析所述对应位置处的点的重复点数量。
[0537]
在一种实现方式中,若所述点云数据中除起始点之外的任一点的预测几何信息,是基于所述任一点的相邻前序点的预测几何信息预测得到的,则在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0538]
若所述点云数据中的所述任一点的重建残差信息的k个方向均为预设值,则确定所述任一点为重复点;其中,所述k个方向包括x方向、y方向以及z方向,所述预设值为零;
[0539]
对所述任一点进行重复点数量解析,以得到所述任一点的重复点数量。
[0540]
在一种实现方式中,处理单元1802,还用于:
[0541]
获取组内最大点数,所述组内最大点数指示点云组所允许被划分得到的点的最大数量;
[0542]
根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组;l为大于1的整数。
[0543]
在一种实现方式中,所述对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息;处理单元1802用于基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树时,具体用于:
[0544]
对所述点云数据中每个点云组进行起始点解析,得到所述每个点云组的起始点的重建几何信息;
[0545]
根据所述l个点云组中的每个点云组的起始点的重建几何信息,重建所述每个点云组的单链预测树;
[0546]
基于所述l个点云组的分组顺序,将所述每个点云组的单链预测树进行连接,以生成所述点云数据的单链预测树。
[0547]
在一种实现方式中,所述l个点云组中每个点云组的组内最大点数相同;处理单元1802用于获取组内最大点数时,具体用于:
[0548]
对所述点云数据的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到每个点云组所允许被划分的组内最大点数;所述分组点数字段属于编码码流或参数集;
[0549]
或者,对所述点云数据的组内最大点数信息进行解析,得到每个点云组所允许被划分的组内最大点数;所述组内最大点数信息属于编码码流或参数集。
[0550]
在一种实现方式中,处理单元1802用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
[0551]
按照所述点云数据中各点的解码顺序,将相邻所述组内最大点数的点划分至一个点云组,以得到l个点云组;
[0552]
其中,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则将所述剩余未划分的点添加至第l个点云组;
[0553]
或者,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组,若所述剩余未划分的点的数量小于所述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
[0554]
在一种实现方式中,处理单元1802用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
[0555]
确定所述点云数据所包含的点的数量,与所述组内最大点数之间的点数关系;
[0556]
若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则按照所述点云数据中各点的解码顺序,将所述点云数据中各点均匀划分至l个点云组;
[0557]
或者,若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组;或者,若所
述剩余未划分的点的数量小于所述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
[0558]
在一种实现方式中,所述l个点云组中存在至少两个点云组的组内最大点数不同,且所述l个点云组中包括相邻的第k个点云组和第k+1个点云组,k=1,2,3,...,l-1;所述第k+1个点云组的目标组内最大点数的获取方式,包括:
[0559]
在划分得到所述第k个点云组后,对所述第k+1个点云组的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述目标分组点数字段属于编码码流或参数集;
[0560]
或者,在划分得到所述第k个点云组后,对所述第k+1个点云组的组内最大点数信息进行解析,得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述组内最大点数信息属于编码码流或参数集。
[0561]
在一种实现方式中,处理单元1802用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
[0562]
按照所述点云数据中各点的解码顺序,将位于所述第k个点云组中最后一个点之后的,相邻所述目标组内最大点数个点划分至第k+1个点云组。
[0563]
在一种实现方式中,处理单元1802用于根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体用于:
[0564]
根据所述组内最大点数确定分组点数,所述分组点数小于所述组内最大点数;
[0565]
按照所述点云数据中各点的解码顺序,将所述点云数据中相邻所述分组点数个点划分至一个点云组中,以得到l个点云组。
[0566]
在一种实现方式中,所述点云数据中包括重复点,处理单元1802,还用于:
[0567]
获取重复点划分信息,所述重复点划分信息指示:将重复点划分至点云组,或者,所述重复点划分信息指示将重复点不划分至点云组;所述重复点划分信息是编码端与解码端协商设置的,或者,所述重复点划分信息属于编码码流或参数集;
[0568]
根据所述重复点划分信息,对所述点云数据包括的重复点进行分组处理。
[0569]
在一种实现方式中,参数集包括头信息文件和片头文件,所述头信息文件或所述片头文件中包括一个或多个分组标识位;处理单元1802,还用于:
[0570]
对所述一个或多个分组标识位进行解析;
[0571]
若所述一个或多个分组标识位的解析值满足分组条件,则触发执行所述获取组内最大点数的步骤;
[0572]
其中,所述一个或多个分组标识位至少包括分组点数字段。
[0573]
在一种实现方式中,所述分组标识位的数量大于1,所述分组标识位还包括以下至少一个:预设树编码标识位、预测树状态标识位、稀疏标识位及几何树类型标识位;处理单元1802,用于对所述一个或多个分组标识位进行解析时,具体用于:
[0574]
采用顺序解析规则对多个分组标识位进行解析;
[0575]
其中,所述顺序解析规则指示:对所述多个分组标识进行并列解析,或者,对所述多个分组标识位进行递进解析。
[0576]
根据本技术的一个实施例,图18所示的点云解码装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能
上更小的多个单元来构成,这可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本技术的其它实施例中,该点云解码装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图4或图12所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图18中所示的点云解码装置,以及来实现本技术实施例的点云编码方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
[0577]
在本技术实施例中,解码端在获取到待解码的点云数据后,可对点云数据进行起始点解析,得到点云数据的至少一个起始点的重建几何信息;再分别以各个起始点的重建几何信息为基准,重建点云数据的单链预测树;相比于只基于一个起始点进行重建而言,能够提升恢复单链预测树的速度和效率。上述方案中,通过在解码端按照编码端的方式重建点云数据的单链预测树,不仅完善解码端的单链预测树的构建步骤,而且有利于解码端基于单链预测树确定出点云数据中各点的连接顺序;同时,在重建出的点云数据中各点的重建几何信息后,按照点云数据中各点的重建几何信息的解码顺序,就可以快速构建点云数据的单链预测树的方式,在一定程度上提升预测树模式的传输效率。
[0578]
请参见图19,图19是本技术实施例提供的一种点云编码装置的结构示意图,该点云编码装置可以设置于本技术实施例提供的计算机设备中,计算机设备可以是上述方法实施例中提及的编码设备;在一些实施例中,该点云编码装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该点云编码装置可以用于执行图16或图17所示的方法实施例中的相应步骤。请参见图19,该点云编码装置可以包括如下单元:
[0579]
获取单元1901,用于获取待编码的点云数据,所述点云数据包括多个待编码的点;
[0580]
处理单元1902,用于为所述点云数据确定起始点;
[0581]
所述处理单元1902,还用于基于所述点云数据的起始点构建所述点云数据的单链预测树;
[0582]
所述处理单元1902,还用于根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理。
[0583]
在一种实现方式中,处理单元1902用于根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理时,具体用于:
[0584]
基于所述点云数据的起始点的真实几何信息,对所述点云数据中各点进行几何预测处理,得到所述点云数据中各点的预测几何信息;
[0585]
基于所述点云数据中各点的预测几何信息和真实几何信息,确定所述点云数据中各点的残差信息;
[0586]
为所述点云数据设置残差编码规则,并按照所述点云数据中各点的残差编码规则,对所述点云数据中各点的残差信息进行残差编码处理,得到编码处理后的编码码流。
[0587]
在一种实现方式中,处理单元1902用于为所述点云数据设置残差编码规则时,具体用于:
[0588]
为所述点云数据中的起始残差信息设置残差编码规则,所述起始残差信息是指:所述点云数据中与所述起始点相邻,且链接于所述起始点之后的点的残差信息;
[0589]
以及,为所述点云数据中除所述起始残差信息之外的其他残差信息设置残差解码规则;
[0590]
其中,所述起始残差信息的残差编码规则,和所述点云数据中除所述起始残差信息之外的其他残差信息的残差编码规则相同或不同。
[0591]
根据本技术的一个实施例,图19所示的点云编码装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本技术的其它实施例中,该点云编码装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图16及图17所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图19中所示的点云编码装置,以及来实现本技术实施例的点云编码方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
[0592]
本技术实施例中,在需要对待编码的点云数据中各个待编码的点进行编码处理时,编码端可以基于待编码的点云数据中各点的真实几何信息从点云数据中选取一个或多个起始点,并基于一个或多个起始点构建点云数据的单链预测树;再基于单链预测树对点云数据中各待编码的点进行编码处理,得到编码码流(或称为压缩码流)。这种基于多起始点构建点云树的单链预测树的方式,能够实现提升点云数据的单链预测树的构建速度,从而提高点云数据的编码效率。
[0593]
图20示出了本技术一个示例性实施例提供的一种计算机设备的结构示意图。请参见图16,该计算机设备包括处理器2001、通信接口2002以及计算机可读存储介质2003。其中,处理器2001、通信接口2002以及计算机可读存储介质2003可通过总线或者其它方式连接。其中,通信接口2002用于接收和发送数据。计算机可读存储介质2003可以存储在计算机设备的存储器中,计算机可读存储介质2003用于存储计算机程序,计算机程序包括程序指令,处理器2001用于执行计算机可读存储介质2003存储的程序指令。处理器2001(或称cpu(central processing unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
[0594]
本技术实施例还提供了一种计算机可读存储介质(memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的处理系统。并且,在该存储空间中还存放了适于被处理器2001加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读
存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
[0595]
在一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器2001加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述点云编码方法实施例中的相应步骤;具体实现中,计算机可读存储介质中的一条或多条指令由处理器2001加载并执行如下步骤:
[0596]
获取待解码的点云数据,所述点云数据包括多个待解码的点;
[0597]
对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息;
[0598]
基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树。
[0599]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息时,具体执行如下步骤:
[0600]
获取待解码的起始点重建信息,所述起始点重建信息包括以下至少一种:包围盒信息和起始点信息;
[0601]
对所述起始点重建信息进行起始点解析,得到所述点云数据的起始点的重建几何信息。
[0602]
在一种实现方式中,所述起始点重建信息包括所述点云数据的包围盒信息,,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行对所述起始点重建信息进行起始点解析,得到所述点云数据中的起始点的重建几何信息时,具体执行如下步骤:
[0603]
对所述点云数据的包围盒信息进行解析处理,得到所述点云数据的点云包围盒的各个顶点的顶点信息;所述包围盒信息是编码端对所述点云数据的点云包围盒进行编码得到的,所述点云数据的点云包围盒包括:涵盖所述点云数据中所有点的最小长方体、最小立方体或最小多面体;
[0604]
基于所述点云数据的点云包围盒的各个顶点的顶点信息,确定所述点云数据的起始点的重建几何信息。
[0605]
在一种实现方式中,所述起始点重建信息包括所述点云数据的起始点信息,所述起始点信息是编码端对所述点云数据的起始点进行编码处理得到的;,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行对所述起始点重建信息进行起始点解析,得到所述点云数据中的起始点的重建几何信息时,具体执行如下步骤:
[0606]
对所述点云数据的起始点信息进行解析处理;
[0607]
将解析结果作为所述点云数据的起始点的重建几何信息。
[0608]
在一种实现方式中,,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树时,具体执行如下步骤:
[0609]
基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何解码处理,得到所述点云数据中各点的重建几何信息;
[0610]
按照所述点云数据中各点的重建几何信息的解码顺序,依次连接所述点云数据中的各点,重建得到所述点云数据的单链预测树。
[0611]
在一种实现方式中,,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何解码处理,得到所述点云数据中各点的重建几何信息时,具体执行如下步骤:
[0612]
基于所述点云数据的起始点的重建几何信息,对所述点云数据中各点进行几何预测处理,得到所述点云数据中各点的预测几何信息;以及,
[0613]
确定所述点云数据中目标点和候选点的残差解码规则,并按照所述目标点的残差解码规则,对所述目标点的起始残差信息进行残差解码处理,得到所述目标点的重建几何信息;以及,按照所述候选点的残差解码规则对所述候选点的候选残差信息进行残差解码处理,得到所述候选点的重建几何信息;所述目标点的残差解码规则和所述候选点的残差解码规则相同或不同;
[0614]
根据所述点云数据中各点的预测几何信息和重建残差信息,得到所述点云数据中各点的重建几何信息;
[0615]
其中,所述点云数据中的目标点是指:所述点云数据中与所述起始点相邻,且链接于所述起始点之后的点;所述点云数据中的候选是指:所述点云数据中除所述目标点和起始点之外的其他点。
[0616]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并还执行如下步骤:
[0617]
若当前待解码的点为重复点,则确定所述重复点的重复点数量;其中,所述当前待解码的点为重复点是指:所述当前待解码的点与所述当前待解码的点的任一个前序点的几何信息相同,所述当前待解码的点的前序点是指:在解码顺序中位于所述当前待解码的点之前的点;
[0618]
将所述重复点的前序点的重建几何信息,作为所述重复点数量个重复点的重建几何信息。
[0619]
在一种实现方式中,所述点云数据中是否存在重复点的判定方式,包括:
[0620]
获取重复点检测标识位,并根据所述重复点检测标识位判定所述点云数据中是否存在重复点;
[0621]
其中,重复点检测标识位是编码端与解码端协商设置的,或者,所述重复点检测标识位是解码端从编码码流或参数集中解析得到的。
[0622]
在一种实现方式中,编码码流中包括重复点标识位;在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0623]
按照所述点云数据中各点的解码顺序,逐个解析重复点标识位,得到每个重复点标识位的标识位解析结果;
[0624]
根据所述每个重复点标识位的标识位解析结果,确定所述点云数据中的重复点;
[0625]
以及,对所述点云数据中的重复点进行重复点数量解析,以得到所述点云数据中各重复点的重复点数量。
[0626]
在一种实现方式中,在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0627]
确定重复点检测间隔,所述重复点检测间隔指示:按照所述点云数据中各点的解码顺序,每间隔预设数量个点解析对应位置处的点的重复点数量;所述重复点检测间隔是
编码端与解码端协商设置的,或者,所述重复点检测间隔是解码端从编码码流或参数集中解析得到的;
[0628]
按照所述点云数据中各点的解码顺序,对所述点云数据中每间隔所述预设数量个点对应位置处的点的重复点标识位进行解析;
[0629]
若解析结果指示所述对应位置处的点是重复点,则解析所述对应位置处的点的重复点数量。
[0630]
在一种实现方式中,若所述点云数据中除起始点之外的任一点的预测几何信息,是基于所述任一点的相邻前序点的预测几何信息预测得到的,则在所述点云数据中存在重复点的情况下,所述点云数据中的重复点和重复点数量的确定方式,包括:
[0631]
若所述点云数据中的所述任一点的重建残差信息的k个方向均为预设值,则确定所述任一点为重复点;其中,所述k个方向包括x方向、y方向以及z方向,所述预设值为零;
[0632]
对所述任一点进行重复点数量解析,以得到所述任一点的重复点数量。
[0633]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并还执行如下步骤:
[0634]
获取组内最大点数,所述组内最大点数指示点云组所允许被划分得到的点的最大数量;
[0635]
根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组;l为大于1的整数。
[0636]
在一种实现方式中,所述对所述点云数据进行起始点解析,得到所述点云数据的起始点的重建几何信息;计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行基于所述点云数据的起始点的重建几何信息,重建所述点云数据的单链预测树时,具体执行如下步骤:
[0637]
对所述点云数据中每个点云组进行起始点解析,得到所述每个点云组的起始点的重建几何信息;
[0638]
根据所述l个点云组中的每个点云组的起始点的重建几何信息,重建所述每个点云组的单链预测树;
[0639]
基于所述l个点云组的分组顺序,将所述每个点云组的单链预测树进行连接,以生成所述点云数据的单链预测树。
[0640]
在一种实现方式中,所述l个点云组中每个点云组的组内最大点数相同;计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行获取组内最大点数时,具体执行如下步骤:
[0641]
对所述点云数据的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到每个点云组所允许被划分的组内最大点数;所述分组点数字段属于编码码流或参数集;
[0642]
或者,对所述点云数据的组内最大点数信息进行解析,得到每个点云组所允许被划分的组内最大点数;所述组内最大点数信息属于编码码流或参数集。
[0643]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体执行如下步骤:
[0644]
按照所述点云数据中各点的解码顺序,将相邻所述组内最大点数的点划分至一个点云组,以得到l个点云组;
[0645]
其中,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则将所述剩余未划分的点添加至第l个点云组;
[0646]
或者,在划分得到第l-1个点云组时,若所述点云数据中剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组,若所述剩余未划分的点的数量小于所述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
[0647]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体执行如下步骤:
[0648]
确定所述点云数据所包含的点的数量,与所述组内最大点数之间的点数关系;
[0649]
若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则按照所述点云数据中各点的解码顺序,将所述点云数据中各点均匀划分至l个点云组;
[0650]
或者,若所述点数关系指示:按照所述组内最大点数对所述点云数据进行分组时,剩余未划分的点的数量小于所述组内最大点数,则获取点数阈值;若所述剩余未划分的点的数量大于等于所述点数阈值,则将所述剩余未划分的点添加至第l个点云组;或者,若所述剩余未划分的点的数量小于所述点数阈值,则将所述剩余未划分的点添加至所述第l-1个点云组。
[0651]
在一种实现方式中,所述l个点云组中存在至少两个点云组的组内最大点数不同,且所述l个点云组中包括相邻的第k个点云组和第k+1个点云组,k=1,2,3,...,l-1;所述第k+1个点云组的目标组内最大点数的获取方式,包括:
[0652]
在划分得到所述第k个点云组后,对所述第k+1个点云组的分组点数字段进行解析,得到移动位数;并将设定值向左移位所述移动位数,以得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述目标分组点数字段属于编码码流或参数集;
[0653]
或者,在划分得到所述第k个点云组后,对所述第k+1个点云组的组内最大点数信息进行解析,得到所述第k+1个点云组所允许被划分的目标组内最大点数;所述组内最大点数信息属于编码码流或参数集。
[0654]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体执行如下步骤:
[0655]
按照所述点云数据中各点的解码顺序,将位于所述第k个点云组中最后一个点之后的,相邻所述目标组内最大点数个点划分至第k+1个点云组。
[0656]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行根据所述组内最大点数对所述点云数据中各点进行分组处理,以得到l个点云组时,具体执行如下步骤:
[0657]
根据所述组内最大点数确定分组点数,所述分组点数小于所述组内最大点数;
[0658]
按照所述点云数据中各点的解码顺序,将所述点云数据中相邻所述分组点数个点
划分至一个点云组中,以得到l个点云组。
[0659]
在一种实现方式中,所述点云数据中包括重复点,计算机可读存储介质中的一条或多条指令由处理器2001加载并还执行如下步骤:
[0660]
获取重复点划分信息,所述重复点划分信息指示:将重复点划分至点云组,或者,所述重复点划分信息指示将重复点不划分至点云组;所述重复点划分信息是编码端与解码端协商设置的,或者,所述重复点划分信息属于编码码流或参数集;
[0661]
根据所述重复点划分信息,对所述点云数据包括的重复点进行分组处理。
[0662]
在一种实现方式中,参数集包括头信息文件和片头文件,所述头信息文件或所述片头文件中包括一个或多个分组标识位;计算机可读存储介质中的一条或多条指令由处理器2001加载并还执行如下步骤:
[0663]
对所述一个或多个分组标识位进行解析;
[0664]
若所述一个或多个分组标识位的解析值满足分组条件,则触发执行所述获取组内最大点数的步骤;
[0665]
其中,所述一个或多个分组标识位至少包括分组点数字段。
[0666]
在一种实现方式中,所述分组标识位的数量大于1,所述分组标识位还包括以下至少一个:预设树编码标识位、预测树状态标识位、稀疏标识位及几何树类型标识位;计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行对所述一个或多个分组标识位进行解析时,具体执行如下步骤:
[0667]
采用顺序解析规则对多个分组标识位进行解析;
[0668]
其中,所述顺序解析规则指示:对所述多个分组标识进行并列解析,或者,对所述多个分组标识位进行递进解析。
[0669]
在另一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器2001加载并执行计算机可读存储介质中存放的一条或多条指令,以实现点云解码方法实施例中的相应步骤;具体实现中,计算机可读存储介质中的一条或多条指令由处理器2001加载并执行如下步骤:
[0670]
获取待编码的点云数据,所述点云数据包括多个待编码的点;
[0671]
为所述点云数据确定起始点;
[0672]
基于所述点云数据的起始点构建所述点云数据的单链预测树;
[0673]
根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理。
[0674]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行根据所述点云数据的单链预测树,对所述点云数据中的各个待编码的点进行编码处理时,具体执行如下步骤:
[0675]
基于所述点云数据的起始点的真实几何信息,对所述点云数据中各点进行几何预测处理,得到所述点云数据中各点的预测几何信息;
[0676]
基于所述点云数据中各点的预测几何信息和真实几何信息,确定所述点云数据中各点的残差信息;
[0677]
为所述点云数据设置残差编码规则,并按照所述点云数据中各点的残差编码规则,对所述点云数据中各点的残差信息进行残差编码处理,得到编码处理后的编码码流。
[0678]
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器2001加载并在执行为所述点云数据设置残差编码规则时,具体执行如下步骤:
[0679]
为所述点云数据中的起始残差信息设置残差编码规则,所述起始残差信息是指:所述点云数据中与所述起始点相邻,且链接于所述起始点之后的点的残差信息;
[0680]
以及,为所述点云数据中除所述起始残差信息之外的其他残差信息设置残差解码规则;
[0681]
其中,所述起始残差信息的残差编码规则,和所述点云数据中除所述起始残差信息之外的其他残差信息的残差编码规则相同或不同。
[0682]
基于同一发明构思,本技术实施例中提供的计算机设备解决问题的原理与有益效果与本技术方法实施例中点云解码方法、点云编码方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
[0683]
本技术实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述点云解码方法、点云编码方法。
[0684]
本领域普通技术对象可以意识到,结合本技术中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术对象可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0685]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(dsl))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
[0686]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术对象在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。