一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

点云压缩方法和装置与流程

2021-10-29 21:15:00 来源:中国专利 TAG:专利申请 美国 编解码 申请 并行

点云压缩方法和装置
1.引用并入
2.本技术要求于2020年9月2日提交的申请号为17/010,363的美国专利申请“点云压缩方法和装置(method and apparatus for point cloud compression)”的优先权,该美国专利申请要求于2019年9月16日提交的申请号为62/901,047的美国临时专利申请“用于点云编解码的并行八叉树编解码(parallel octree coding for point cloud coding)”、于2020年1月7日提交的申请号为62/958,131的美国临时专利申请“自适应几何量化的附加信息和用于点云编解码的并行八叉树编解码(additional information on adaptive geometry quantization and parallel octree coding for point cloud coding)”、于2020年1月15日提交的申请号为62/961,518的美国临时专利申请“用于点云编解码中的并行八叉树编解码的码流偏移信令(bitstream offsets signaling in parallel octree coding for point cloud coding)”的优先权。所述在先申请的全部公开内容通过引用整体并入本技术中。
技术领域
3.本技术描述了总体上涉及点云压缩的实施例。


背景技术:

4.本文中提供的背景技术描述是为了大体上呈现本技术的上下文。在此背景技术部分描述的程度上,当前署名的发明人的工作,以及在本技术提交时可能不具有作为现有技术的资格的描述的各方面,既不明确认为也不隐含认为是本技术的现有技术。
5.人们开发了各种技术来捕捉世界并在三维(3d)空间中表示世界,例如,世界中的物体、世界中的环境等。世界的3d表示可以实现更身临其境的交互和交流形式。点云可以用作世界的3d表示。点云是3d空间中的一组点,每个点都有相关的属性,例如,颜色、材料属性、纹理信息、强度属性、反射率属性、运动相关属性、形态属性和各种其它属性。此类点云可能包括大量的数据,其存储和传输可能成本高昂且耗时。


技术实现要素:

6.本技术各方面提供了点云压缩和解压缩方法。在一种方法中,从已编码码流中解码出点云的边界框的语法信息。语法信息指示点云的边界框的八叉树划分结构。确定语法信息是否指示要对所述八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码。响应于确定语法信息指示要对八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码,对节点的占用码执行并行解码。基于节点的占用码,重建所述边界框。
7.在一实施例中,基于发信号通知的标志和要执行并行解码的最小划分深度其中之一,确定语法信息是否指示要对八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码。
8.在一实施例中,基于要执行并行解码的最小划分深度和最大划分深度,对节点的占用码执行并行解码。最大划分深度等于或小于八叉树划分结构的最大划分深度。
9.在一实施例中,基于与一个或多个划分深度中的每一个划分深度对应的码流偏移,从已编码码流中确定一个或多个划分深度中的每一个划分深度的子码流。对一个或多个划分深度的子码流执行并行解码。
10.在一实施例中,与一个或多个划分深度中的每一个划分深度对应的码流偏移,是包括在语法信息中。
11.在一实施例中,基于占用码的上下文变量,对一个或多个划分深度范围内的节点的占用码执行并行解码。
12.在一实施例中,确定节点的占用码的上下文变量的初始概率为一个或多个预定值。
13.在一实施例中,基于多个节点的父节点的占用码的上下文变量的概率,确定节点的占用码的上下文变量的初始概率。多个节点处于要执行并行解码的最小划分深度。
14.在一实施例中,基于节点的父节点的子集的占用码的上下文变量的概率,确定节点的占用码的上下文变量的初始概率。
15.本技术各方面还提供了点云压缩和解压缩装置。一种装置包括处理电路,处理电路从已编码码流中解码出点云的边界框的语法信息。语法信息指示点云的边界框的八叉树划分结构。处理电路确定语法信息是否指示要对八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码。响应于语法信息指示要对八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码,处理电路对节点的占用码执行并行解码。处理电路基于节点的占用码,重建边界框。
16.本技术各方面提供了一种存储指令的非易失性计算机可读介质,所述指令在由计算机执行以用于点云编解码时使所述计算机执行所述点云压缩/解压缩方法其中之一或其组合。
附图说明
17.从以下详细描述和附图,所公开的主题的其它特征、性质及各种优点将更加明显,其中:
18.图1示出了根据本技术实施例的通信系统的简化框图示意图;
19.图2示出了根据本技术实施例的流式传输系统(200)的简化框图示意图;
20.图3示出了根据本技术实施例的示例编码器;
21.图4示出了根据本技术实施例的示例解码器;
22.图5示出了根据本技术实施例的3d立方体的示例八叉树划分;
23.图6示出了根据本技术实施例的示例两级八叉树划分和对应的占用码;
24.图7示出了根据本技术实施例的示例几何八叉树码流;
25.图8示出了根据本技术实施例的概述方法示例的流程图;
26.图9示出了根据本技术实施例的计算机系统的示意图。
具体实施方式
27.i.点云压缩系统
28.图1示出了根据本技术实施例的通信系统(100)的简化框图。通信系统(100)包括可以经由例如网络(150)彼此通信的多个终端装置。例如,通信系统(100)包括经由网络(150)互连的一对终端装置(110)和(120)。在图1的示例中,第一对终端装置(110)和(120)执行点云数据的单向传输。例如,终端装置(110)可以压缩由与终端装置(110)连接的传感器105采集的点云(例如,表示结构的点)。压缩的点云可以经由网络(150),例如以码流的形式发送到另一终端装置(120)。终端装置(120)可以从网络(150)接收压缩的点云,对码流进行解压以重建点云,并且适当地显示重建的点云。单向数据传输在媒体服务应用等中可为常见的。
29.在图1的示例中,终端装置(110)和终端装置(120)可能图示为服务器和个人计算机,但是本技术的原理可以不限于此。本技术实施例适用于膝上型计算机、平板计算机、智能电话、游戏终端、媒体播放器和/或专用三维(3d)装置。网络(150)表示能够在终端装置(110)和终端装置(120)之间传输压缩点云的任意数量的网络。网络(150)可以包括例如有线和/或无线通信网络。网络(150)可以在电路交换和/或分组交换信道中交换数据。代表性网络包括电信网络、局域网、广域网和/或因特网。出于本技术讨论的目的,用于本技术的操作的网络(150)的架构和拓扑不限于所公开的实施例,除非在下文另有解释。
30.图2图示了可应用于包括3d远地视在应用和虚拟现实应用的各种点云实现的应用的流式传输系统(200)。流式传输系统(200)可以包括采集子系统(213)。采集子系统(213)可以包括点云源(201),例如光检测和测距(lidar)系统、3d照相机、3d扫描仪、以软件形式生成未压缩点云的图形生成部件等生成例如未压缩点云(202)的部件。在一示例中,点云(202)包括由3d照相机采集的点。点云(202)描绘为粗线,以强调与压缩点云(204)(压缩点云的码流)相比,其具有较高的数据量。压缩点云(204)可以由电子装置(220)生成,电子装置(220)包括耦合到点云源(201)的编码器(203)。编码器(203)可以包括硬件、软件或其组合,以实现或实施以下更详细描述的本技术所公开主题的各方面。压缩点云(204)(或压缩点云的码流(204))描绘为细线,以强调与点云流(202)相比,其具有较低的数据量,其可以存储在流式传输服务器(205)上以供将来使用。一个或多个流式传输客户端子系统,如图2中的客户端子系统(206)和客户端子系统(208),可以访问流式传输服务器(205),以检索压缩点云(204)的副本(207)和副本(209)。客户端子系统(206)可以包括例如在电子装置(230)中的解码器(210)。解码器(210)对压缩点云的传入副本(207)进行解码,并产生可在呈现装置(212)上呈现的点云的输出流(211)。在一些流式传输系统中,压缩点云(204)、压缩点云(207)和压缩点云(209)(例如,压缩点云的码流)可以根据特定的标准来压缩。在一些示例中,视频编解码标准用于点云的压缩。这些标准的示例包括高效视频编码(hevc)、通用视频编码(vvc)等。
31.请注意,电子装置(220)和电子装置(230)可以包括其它组件(未示出)。例如,电子装置(220)可以包括解码器(未示出),并且电子装置(230)也可以包括编码器(未示出)。
32.图3示出了根据实施例的示例编码器(300)。编码器可以被配置为接收点云数据并压缩点云数据,以生成携带压缩点云数据的码流。在实施例中,编码器(300)可以包括位置量化模块(310)、重复点去除模块(312)、八叉树编码模块(330)、属性传递模块(320)、细节
层次(lod)生成模块(340)、属性预测模块(350)、残差量化模块(360)、算术编码模块(370)、逆残差量化模块(380)、加法模块(381)以及用于存储已重建属性值的存储器(390)。
33.如图3所示,可以在编码器(300)处接收输入点云(301)。将点云(301)的位置(3d坐标)提供给位置量化模块(310)。位置量化模块(310)被配置为对所述坐标进行量化,以生成量化的位置。可选的重复点去除模块(312)被配置为接收量化的位置并执行滤波过程,以标识和去除重复点。八叉树编码模块(330)被配置为从重复点去除模块(312)接收经滤波的位置,并且执行基于八叉树的编码过程,以生成用于描述体素的3d网格的占用码序列。占用码提供给算术编码模块(370)。
34.属性传递模块(320)被配置为接收输入点云的属性,并且当多个属性值与各个体素相关联时,执行属性传递过程以确定每个体素的属性值。可以对从八叉树编码模块(330)输出的重新排序后的点执行属性传递过程。将传递操作之后的属性提供给属性预测模块(350)。lod生成模块(340)对八叉树编码模块(330)输出的重新排序后的点进行操作,并将这些点重新组织成不同的lod。将lod信息提供给属性预测模块(350)。
35.属性预测模块(350)根据来自lod生成模块(340)的lod信息所指示的基于lod的顺序,处理这些点。属性预测模块(350)基于存储在存储器(390)中的当前点的一组相邻点的重建属性,生成当前点的属性预测值。随后可以基于从属性传递模块(320)接收的原始属性值和本地生成的属性预测值,获得预测残差。当在各个属性预测过程中使用候选索引时,可以将与所选择的预测候选对应的索引提供给算术编码模块(370)。
36.残差量化模块(360)被配置为从属性预测模块(350)接收预测残差,并执行量化以生成量化残差。量化残差提供给算术编码模块(370)。
37.逆残差量化模块(380)被配置为从残差量化模块(360)接收量化残差,并且通过在残差量化模块(360)处执行的量化操作的逆操作来生成已重建预测残差。加法模块(381)被配置为从逆残差量化模块(380)接收已重建预测残差,并从属性预测模块(350)接收各个属性预测值。通过组合已重建预测残差和属性预测值,生成已重建属性值,并将其存储到存储器(390)。
38.算术编码模块(370)被配置为接收占用码、候选索引(如果使用)、量化残差(如果生成)和其它信息,并且执行熵编码,以进一步压缩接收到的值或信息。结果,可以生成携带压缩信息的压缩码流(302)。码流(302)可以被传输或以其它方式提供给对压缩码流进行解码的解码器,或者可以存储在存储装置中。
39.图4示出了根据实施例的示例解码器(400)。解码器(400)可被配置为接收压缩码流,并执行点云数据解压缩以解压缩该码流来生成已解码点云数据。在实施例中,解码器(400)可以包括算术解码模块(410)、逆残差量化模块(420)、八叉树解码模块(430)、lod生成模块(440)、属性预测模块(450)和用于存储已重建属性值的存储器(460)。
40.如图4所示,可以在算术解码模块(410)处接收压缩码流(401)。算术解码模块(410)被配置为对压缩码流(401)进行解码,以获得点云的量化残差(如果生成)和占用码。八叉树解码模块(430)被配置为根据占用码确定点云中的点的重建位置。lod生成模块(440)被配置为基于重建位置将点重新组织成不同的lod,并确定基于lod的顺序。逆残差量化模块(420)被配置为基于从算术解码模块(410)接收的量化残差来生成重建残差。
41.属性预测模块(450)被配置为执行属性预测过程,以根据基于lod的顺序确定点的
属性预测。例如,可以基于存储在存储器(460)中的当前点的相邻点的重建属性值来确定当前点的属性预测。属性预测模块(450)可将属性预测与各个重建残差相组合以生成当前点的重建属性。
42.在一个示例中,从属性预测模块(450)生成的重建属性序列与从八叉树解码模块(430)生成的重建位置一起对应于从解码器(400)输出的已解码点云(402)。另外,重建的属性也存储到存储器(460)中,并且随后可以用于导出后续点的属性预测。
43.在各种实施例中,编码器(300)和解码器(400)可以用硬件、软件或其组合来实现。例如,编码器(300)和解码器(400)可以用诸如一个或多个集成电路(ic)的处理电路来实现,处理电路在使用或不使用诸如专用集成电路(asic)、现场可编程门阵列(fpga)等软件的情况下操作。在另一示例中,编码器(300)和解码器(400)可以实现为软件或固件,包括存储在非挥发性(或非易失性)计算机可读存储介质中的指令。这些指令在由诸如一个或多个处理器执行处理电路时,使处理电路执行编码器(300)和解码器(400)的功能。
44.注意,被配置为实施本文中所揭示的属性预测技术的属性预测模块(350)或(450)可以被包括在其他与图3和图4中所示的结构类似或不同的解码器或编码器中。另外,编码器(300)和解码器(400)可以被包括在同一装置中,或者在各种示例中被包括在单独的装置中。
45.ii.mpeg中测试模型13(tmc13)中的点云压缩
46.1、点云数据
47.近年来点云已经得到了广泛的应用。例如,点云数据用于自主驾驶车辆中,进行对象检测和定位。点云数据还可以用于地理信息系统(gis)中,绘制地图,并且可以用于文化遗产,以对文化遗产对象和收藏等进行视觉化和存档。
48.点云包含一组高维点,通常是三维的(3d),每个高维点包括3d位置信息和诸如颜色、反射率等附加属性。所述一组高维点可使用各种设置中的多个相机和深度传感器或激光雷达来采集,并且可由数千到数十亿个点组成,以真实地表示原始场景。
49.因此,需要压缩技术来减少表示点云所需的数据量,以实现更快的传输或减少存储量。
50.2、八叉树划分的几何编解码
51.几何信息和相关属性,例如,颜色或反射率,可以分开压缩(例如,在tmc13中)。几何信息(包括点云的3d坐标)可以通过八叉树划分及其占用信息进行编解码。属性可以基于重建的几何形状,使用例如预测、提升和/或区域自适应分层变换技术来压缩。
52.八叉树划分的输入是变换后的位置的集合,即,p
i
,i=1,2,

,n。图5示出了根据本技术实施例的3d立方体中的示例性八叉树划分。实线的3d立方体划分成八个较小的相等尺寸的虚线立方体。八叉树划分可以递归地执行(例如,在tmc13中),以将原始的3d空间划分为更小的单元,每个子空间的占用信息由熵编码器进行编码,以有效地表示几何位置。
53.八叉树编解码可以是无损的。即,对所有的输入位置进行编码,而无需任何进一步的量化。例如,在tmc13中,如果使用了八叉树几何编解码器,则几何编码过程如下:
54.首先,立方轴对齐的边界框由两个点(0,0,0)和(2
d
,2
d
,2
d
)定义,其中,2
d
定义了边界框的大小,将d编码到码流中。假设所有的点p
i
都在边界框内。
55.然后,通过递归地细分边界框来构建八叉树划分结构。在每个阶段,将边界框的立
方体细分为8个子立方体。然后通过将1比特的值与每个子立方体相关联,生成8比特代码,即占用码,以指示相应的子立方体包含点(即,满的子立方体对应的比特值为1)或不包含点(即,空的子立方体对应的比特值为0)。只有大小大于某个值(例如,1)的满的子立方体(即,非体素),才进行进一步细分。然后,边界框的每个立方体的占用码由算术编码器进行压缩。边界框的每个立方体对应于八叉树划分结构的节点。因此,每个立方体的占用码对应于相应立方体的节点。
56.3、占用码的编码
57.八叉树划分结构的当前节点的占用码可以由算术编码器进行压缩。占用码可以表示为8位整数s,s中的每一位指示当前节点的每个子节点的占用状态。占用码的两种示例性编码方法(例如,在tmc13中)是逐位编码和逐字节编码。在tmc13中,默认启用逐位编码。这两种方法中的任一种方法都是用上下文建模来执行算术编解码以对占用码进行编码,上下文状态是在整个编解码过程开始时进行初始化,并且在编解码过程期间进行更新。
58.对于逐位编码,s中的八个二进制数是按某一顺序进行编码,其中,每个二进制数是通过参考相邻节点以及相邻节点的子节点的占用状态进行编码,其中,相邻节点与当前节点处于相同的级别。
59.对于逐字节编码,通过参考以下内容对s进行编码:(1)自适应查找表(a

lut),其跟踪n个(例如,32个)最频繁使用的占用码;以及(2)高速缓存,其跟踪最后观测到的m个(例如,16个)不同的占用码。
60.对一指示s是否在a

lut中的二进制标志进行编码。若s在a

lut中,则使用二进制算术编码器对其在a

lut中的索引进行编码。若s不在a

lut中,则对一指示s是否在高速缓存中的二进制标志进行编码。若s在高速缓存中,则使用二进制算术编码器对其在高速缓存中的索引的二进制表示进行编码。否则,若s不在高速缓存中,则使用二进制算术编码器对s的二进制表示进行编码。
61.解码过程通过从码流中解析边界框的维度开始。然后通过根据已解码的占用码细分边界框,建立与上述相同的八叉树结构。图6中示出了两级八叉树划分和对应的占用码的示例,其中有阴影的立方体和节点表示它们被点占用。
62.iii.并行八叉树编解码
63.在一些相关情况下(例如,在tmc13中),八叉树编码和解码过程必须按照预定顺序进行,因为当前节点的编解码取决于当前节点的已编解码相邻节点(及其子节点)的状态。此外,算术编解码引擎的上下文变量是在实时更新。因此,每个划分深度的八叉树编解码直到前一深度的编解码完成才能开始。
64.本技术提出了一种八叉树编解码(编码和解码)方案,其中可以对一个或多个八叉树划分深度执行并行编解码,而不是按顺序编解码。请注意,本技术不限于tmc13软件或mpeg

pcc标准,而是pcc系统的通用解决方案。
65.根据本技术的各方面,当启用并行八叉树编解码时,可并行地执行某些八叉树划分深度的编解码(编码和解码)过程。因此,可以显著地加快编解码(编码和解码)时间。可以发信号通知语法,以指定应用并行八叉树编解码的八叉树划分深度。例如,假设八叉树划分深度为d=0,1,

,m

1,其中,m是八叉树划分深度的总数。可将并行八叉树编解码应用于d
min
至d
max
的深度范围,其中,0<d
min
≤d
max
≤m

1,表示这些深度的八叉树编解码可并行地执
行。
66.例如,对于并行编解码的八叉树划分深度d(d
min
<d≤d
max
),一旦对深度d

1中的八叉树节点的父节点进行了编码或解码,就可以对深度d中的八叉树节点进行编码或解码。类似地,一旦对深度d中的八叉树节点进行了编码或解码,就可以对深度d 1中的八叉树节点的被占用子节点进行编码或解码。因此,可以实现并行的八叉树编解码。
67.1、控制标志和深度约束的信令
68.根据本技术的各方面,并行八叉树编解码的控制参数可以用高级语法发信号通知。请注意,本技术不限于所给出的示例。其它参数也可以发信号通知。控制参数可以在码流的序列参数集中或条带头中或几何参数集中指定。
69.在一实施例中,可以发信号通知一标志,以指示是启用并行八叉树编解码还是禁用并行八叉树编解码。该标志可以在几何参数集中指定,如表1所示。例如,当gps_parallel_octree_coding_flag等于1时,针对序列或条带启用并行八叉树编解码。当gps_parallel_octree_coding_flag等于0时,针对序列或条带禁用并行八叉树编解码。
70.表1
[0071][0072][0073]
在一些实施例中,可以例如在几何参数集中指定启用并行八叉树编解码的最小八叉树深度。在一实施例中,启用并行八叉树编解码的最小八叉树深度(即,d
min
)由几何参数集中的gps_parallel_octree_coding_min_depth_minus_one指定,如表2所示。例如,当
gps_parallel_octree_coding_flag等于1时,d
min
=gps_parallel_octree_coding_min_depth_minus_one 1。
[0074]
表2
[0075][0076]
在一实施例中,启用并行八叉树编解码的最小八叉树深度,即,d
min
,由几何参数集中的gps_parallel_octree_coding_min_depth指定,如表3所示,其中,gps_parallel_octree_coding_min_depth指定d
min
为d
min
=gps_parallel_octree_coding_min_depth。在这种情况下,gps_parallel_octree_coding_flag不发信号通知,而是可以根据gps_parallel_octree_coding_min_depth的值进行推断。例如,如果gps_parallel_octree_coding_min_depth等于零,则推断gps_parallel_octree_coding_flag为0。否则,推断gps_parallel_octree_coding_flag为1。
[0077]
表3
[0078][0079][0080]
在一实施例中,并行八叉树编解码的最小八叉树深度,即,d
min
,由几何参数集中的gps_parallel_octree_coding_max_nodesize_log2指定,如表4所示,其中,gps_parallel_octree_coding_max_nodesize_log2指定d
min
为d
min
=m

gps_parallel_octree_coding_max_nodesize_log2。在这种情况下,gps_parallel_octree_coding_flag不发信号通知,而是可以根据gps_parallel_octree_coding_max_nodesize_log2的值进行推断。例如,如果gps_parallel_octree_coding_max_nodesize_log2等于零,则推断gps_parallel_octree_coding_flag为0。否则,推断gps_parallel_octree_coding_flag为1。
[0081]
表4
[0082][0083]
在一实施例中,启用并行八叉树编解码的最小八叉树深度和最大八叉树深度,即,d
min
和d
max
,由几何参数集中的语法指定,如表5所示。例如,gps_parallel_octree_coding_min_depth_minus_one指定d
min
为d
min
=gps_parallel_octree_coding_min_depth_minus_one 1,gps_parallel_octree_coding_max_depth_minus_min_depth_minus1指定d
max
为d
max
=gps_parallel_octree_coding_max_depth_minus_min_depth_minus1 d
min
1。
[0084]
表5
[0085][0086]
在一实施例中,启用并行八叉树编解码的最小八叉树深度,即,d
min
,是固定的,不发信号通知。如表6所示,仅在几何参数集中发信号通知启用并行八叉树编解码的最大八叉树深度,即,d
max
。例如,gps_parallel_octree_coding_max_depth_mimus_min_depth_minus1指定d
max
为d
max
=gps_parallel_octree_coding_max_depth_minus_min_depth_minus1 d
min
1。
[0087]
表6
[0088][0089]
在一实施例中,启用并行八叉树编解码的最小八叉树深度,即,d
min
,由几何参数集中的gps_parallel_octree_coding_max_nodesize_log2_minus1指定,如表7所示,其中,gps_parallel_octree_coding_max_nodesize_log2指定d
min
为d
min
=m

gps_parallel_octree_coding_max_nodesize_log2_minus1

1。在这种情况下,gps_parallel_octree_coding_flag不发信号通知,而是可以根据gps_parallel_octree_coding_max_nodesize_log2_minus1的值进行推断。例如,如果gps_parallel_octree_coding_max_nodesize_log2_minus1等于零,则推断gps_parallel_octree_coding_flag为0。否则,推断gps_parallel_octree_coding_flag为1。
[0090]
表7
[0091][0092]
2、码流偏移的信令
[0093]
图7示出了根据本技术实施例的包括若干部分的几何八叉树码流。第一部分是头部,例如几何条带头(gsh),其包含用于几何编解码的高级语法。剩余部分包含每个划分深度的八叉树编解码子码流。在一些实施例中,剩余部分可以进一步归为两个部分,即,分别是非并行八叉树编解码和并行八叉树编解码。
[0094]
为了实现并行解码器解析,每个并行八叉树划分深度的子码流需要字节位置对齐。每个子码流可以具有整数字节长度。此外,由o
d
表示的每个并行八叉树划分深度的码流偏移,可以由偏移差(即,r
d
=o
d 1

o
d
)来指定。请注意,如果d
max
等于m

1,则不发信号通知且可由解码器进行推断。可以是显式地发信号通知,或者是根据八叉树划分深度d
min

1结束之处的码流进行推断。因此,解码器可从指定的码流段并行地开始解析若干八叉树深度。具体地,深度d的解析是从码流位置o
d
至码流位置o
d 1

1,长度为r
d

[0095]
在一实施例中,码流偏移是在几何条带头中发信号通知,如表8所示。例如,当gps_
parallel_octree_coding_flag等于1时,gsh_parallel_octree_coding_bitstream_start_pos指定八叉树划分深度d
min
的码流偏移为的码流偏移为此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。因此,八叉树深度d的码流偏移的计算方式可以为:
[0096][0097]
表8
[0098][0099]
在一实施例中,码流偏移是在几何条带头中发信号通知,如表9所示。例如,当gps_parallel_octree_coding_flag等于1时,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为:八叉树深度d的码流偏移的计算方式为:八叉树深度d的码流偏移的计算方式为:根据八叉树划分深度d
min

1结束之处的码流进行推断。
[0100]
表9
[0101][0102]
在一实施例中,码流偏移是在几何条带头中发信号通知,如表10所示。在该实施例中,gps_parallel_octree_coding_flag不发信号通知,而是可以根据gps_parallel_octree_coding_min_depth的值进行推断。例如,当gps_parallel_octree_coding_min_depth大于0时,推断gps_parallel_octree_coding_flag为1。此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为:coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为:根据八叉树划分深度d
min

1结束之处的码流进行推断。
[0103]
表10
[0104][0105]
在一实施例中,码流偏移是在几何条带头中发信号通知,如表11所示。在该实施例中,gps_parallel_octree_coding_flag不发信号通知,而是可以根据gps_parallel_octree_coding_max_nodesize_log2的值进行推断。例如,当gps_parallel_octree_coding_max_nodesize_log2大于0时,推断gps_parallel_octree_coding_flag为1。此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为:为:为:根据八叉树划分深度d
min

1结束之处的码流进行推断。
[0106]
表11
[0107]
[0108][0109]
在一实施例中,码流偏移是在几何条带头中发信号通知,如表12所示。在这种情况下,d
max
设置为是m

1,并且最后一个八叉树划分深度的码流长度不发信号通知,而是可以从解码器处推断。例如,当gps_parallel_octree_coding_flag等于1时,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为根据八叉树划分深度d
min

1结束之处的码流进行推断。最后一个八叉树深度m

1的码流长度,即,r
m
‑1,不发信号通知,并且可以推断其为从位置o
m
‑1到码流结束。
[0110]
表12
[0111]
[0112][0113]
根据本技术的各方面,码流偏移可经二进制化并以任何形式发信号通知,包括exp

golomb编解码、固定长度编解码、一元编解码等。
[0114]
在一实施例中,码流偏移可通过exp

golomb编解码在几何条带头中指定,如表13所示。gsh_parallel_octree_coding_max_nodesize_log2_minus1指定启用并行八叉树编解码的最小八叉树深度,即,d
min
,为d
min
=m

gps_parallel_octree_coding_max_nodesize_log2_minus1

1,其中,m是八叉树划分深度的总数。例如,当gsh_parallel_octree_coding_max_nodesize_log2_minus1等于零时,禁用并行八叉树编解码。gsh_parallel_octree_coding_bitstream_start_pos指定八叉树深度d
min
的码流偏移,即,为此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为其中,o
d
表示每个并行八叉树划分深度的码流偏移。在实施例中,不是发信号通知,而是可以根据八叉树深度d
min

1结束之处的码流进行推断。
[0115]
表13
[0116][0117]
[0118]
在一实施例中,码流偏移可以通过固定长度编解码在几何条带头中指定,如表14所示。gsh_parallel_octree_coding_max_nodesize_log2_minus1指定启用并行八叉树编解码的最小八叉树深度,即,d
min
,为d
min
=m

gps_parallel_octree_coding_max_nodesize_log2_minus1

1,其中,m是八叉树划分深度的总数。例如,当gsh_parallel_octree_coding_max_nodesize_log2_minus1等于零时,禁用并行八叉树编解码。gsh_parallel_octree_coding_bitstream_start_pos指定八叉树深度d
min
的码流偏移,即,为此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为:其中,o
d
表示每个并行八叉树划分深度的码流偏移。请注意,在该实施例中,比特长度是预定义的。在本实施例中,将码流偏移编码为64比特,在其它实施例中,可以将其编码为其它固定长度,例如32比特或16比特。另外,在一实施例中,不发信号通知,而是可以根据八叉树深度d
min

1结束之处的码流进行推断。
[0119]
表14
[0120][0121][0122]
在一实施例中,码流偏移可以通过固定长度编解码在几何条带头中指定,如表15中所示。gsh_parallel_octree_coding_max_nodesize_log2_minus1指定启用并行八叉树
编解码的最小八叉树深度,即,d
min
,为d
min
=m

gps_parallel_octree_coding_max_nodesize_log2_minus1

1,其中,m是八叉树划分深度的总数。例如,当gsh_parallel_octree_coding_max_nodesize_log2_minus1等于零时,禁用并行八叉树编解码。gsh_parallel_octree_coding_bitstream_start_pos指定八叉树深度d
min
的码流偏移,即,为此外,gsh_parallel_octree_coding_bitstream_range[d]指定八叉树深度d的码流长度为r
d
=gsh_parallel_octree_coding_bitstream_range[d]。八叉树深度d的码流偏移的计算方式为其中,o
d
表示每个并行八叉树划分深度的码流偏移。请注意,与使用预定义比特长度的前一实施例相比,在本实施例中,gsh_parallel_octree_coding_bitstream_range[d]和gsh_parallel_octree_coding_bitstream_start_pos的比特长度由gsh_parallel_octree_coding_offset_len指定,即,在u(n)中,n=gsh_parallel_octree_coding_offset_len。另外,在一实施例中,不发信号通知,而是可以根据八叉树深度d
min

1结束之处的码流进行推断。
[0123]
表15
[0124][0125][0126]
3、上下文变量的重新初始化
[0127]
根据本技术的各方面,对于并行编解码的每个八叉树划分深度(d),需要重新初始
化与八叉树编解码相关的上下文变量的概率,以及在一些情况下所有的上下文变量的概率。所述概率可以被重新初始化为一组预定义的概率,或并行编解码未开始时的概率状态。假设p
d
和p

d
分别表示在对八叉树划分深度d编解码之前和在对八叉树划分深度d编解码之后的相关上下文变量的概率状态。
[0128]
在一实施例中,将深度d(d
min
≤d≤d
max
)中的上下文变量的概率,重新初始化为预定值,例如,0.5,即p
d
=0.5。
[0129]
在一实施例中,将深度d(d
min
≤d≤d
max
)中的上下文变量的概率,重新初始化为一组预先训练的概率。该训练过程可以离线执行,并且训练的概率对编码器和解码器可用。
[0130]
在一实施例中,将深度d(d
min
≤d≤d
max
)中的上下文变量的概率,重新初始化为与对深度d
min

1编解码之后的概率相同,即,在这种情况下,的概率状态需要提前进行缓存,以用于剩余部分的八叉树划分深度。
[0131]
在一实施例中,深度d(d
min
≤d≤d
max
)中的上下文变量的初始概率从深度d

1中导出,或对深度d

1重新初始化后得到。然而,不是对深度d

1中的所有节点进行编解码,而是可在对节点子集(例如,深度d

1中的前k个节点)进行编解码之后,导出用于初始化深度d中的概率的概率,其中,k可以是预定义的,或者是在码流中发信号通知,例如,在序列参数集中、几何参数集中或几何条带头中。请注意,最后一个或多个八叉树深度d(d
max
1≤d≤m

1)的编解码可与深度d
max
的编解码并行执行,或者可以在深度d
max
的编解码之后执行。如果最后一个或多个八叉树深度的编解码是并行执行,则上述重新初始化过程也可应用于深度d
max
1。
[0132]
在一实施例中,当八叉树划分达到指定深度d
min
时,可以将用于逐位编解码的上下文变量的概率存储在存储器中。对于要并行处理的剩余的八叉树划分深度,可以将其上下文变量的概率重新初始化为与存储的概率相同。例如,该过程可以在开始对每个八叉树深度进行编解码时调用,如表16所示,其中,numctx表示上下文的总数。
[0133]
表16
[0134][0135]
在一实施例中,当八叉树划分达到指定深度d
min
时,可以将用于逐字节编解码的查找表的值存储在存储器中。对于要并行处理的剩余的八叉树划分深度,可以将查找表的值重新初始化为与存储的值相同。例如,所存储和恢复的相关变量包括(1)值数组lut0[k],其存储最频繁使用的符号,其中,k在0至31(含)的范围内;(2)值数组lut0histogram[k],其存储符号出现的频率,其中,k在0至255(含)的范围内;(3)两个变量lut0updateperiod和lut0symbolsuntilupdate,其分别存储lut0的更新周期和下一次更新之前剩余的符号数;(4)变量lut0reset,其指定在下一次lut0更新期间是否应当重置lut0;(5)值数组lut1[k],其存储最后16个具有不同值的已解码符号,其中,k在0至15(含)的范围内;(6)变量lut1indexlastsymbol,其存储最后一个已解码符号的索引;(7)一组自适应二进制算术上下文ctxlut0hit、ctxlut1hit和ctxsymbolbit;(8)大小为5的自适应二进制算术上下文ctxlut0index(如果limitedcontextmode等于1),否则(即,limitedcontextmode等于0),大
小为31,其中,变量limitedcontextmode指定是否使用有限数量的上下文。例如,所述重新初始化过程是在开始对每个八叉树深度进行编解码时调用,如表17所示。
[0136]
表17
[0137][0138][0139]
在一实施例中,当八叉树划分到达指定深度d
min
时,可以将平面编解码模式的历史值存储在存储器中。对于将并行处理的剩余八叉树划分深度,可以将其历史值重新初始化为与存储的值相同。该重新初始化过程是在开始对每个八叉树深度进行编码时调用,如表18所示。
[0140]
表18
[0141][0142]
4、几何量化
[0143]
自适应几何量化允许不同的几何八叉树节点使用不同的量化步长。可以将约束引入几何量化方案中,以简化处理。
[0144]
在一实施例中,自适应几何量化仅允许用于一个或多个特定划分深度的节点。例如,自适应几何量化仅允许用于一个特定划分深度的节点。
[0145]
在一实施例中,量化步长大小可以仅为2的幂。在这种情况下,量化步长的增量可以以log2的形式发信号通知,并且可以通过比特移位来简化量化/去量化的实现。
[0146]
在一实施例中,一些与几何相关的编解码工具可能具有与自适应几何量化的交互。为了避免这些问题,可以利用附加的约束。例如,在某些情况下可以禁用平面编解码模式。在仅在特定划分深度允许自适应几何量化的实施例中,可在指定深度之上的一个深度禁用平面编解码模式。
[0147]
iv.流程图
[0148]
图8示出了概述根据本技术实施例的方法(800)的流程图。方法(800)可以在pcc的编码过程或解码过程使用。在各种实施例中,方法(800)由诸如终端装置(110)中的处理电路、执行编码器(203)功能的处理电路、执行编码器(300)功能的处理电路等处理电路执行。在一些实施例中,方法(800)用软件指令实现,因此当处理电路执行这些软件指令时,处理电路执行方法(800),其可以在(s810)处开始。
[0149]
在步骤(s810)处,方法(800)从已编码码流中解码出点云的边界框的语法信息。语法信息指示点云的边界框的八叉树划分结构。然后,方法(800)进行到步骤(s820)。
[0150]
在步骤(s820)处,方法(800)确定语法信息是否指示要对八叉树划分结构中的一个或多个划分深度范围内的节点的占用码执行并行解码。然后,方法(800)进行到步骤(s830)。
[0151]
在步骤(s830)处,方法(800)响应于语法信息指示要对八叉树划分结构中的一个或多个划分深度的范围内的节点的占用码执行并行解码,对节点的占用码执行并行解码。然后,方法(800)进行到步骤(s840)。
[0152]
在步骤(s840)处,方法(800)基于节点的占用码,重建边界框。然后,方法(800)终止。
[0153]
在实施例中,方法(800)基于发信号通知的标志和要执行并行解码的最小划分深度之一,确定语法信息是否指示要对八叉树划分结构中的一个或多个划分深度范围内的节
点的占用码执行并行解码。
[0154]
在实施例中,方法(800)基于要执行并行解码的最小划分深度和最大划分深度,对节点的占用码执行并行解码。最大划分深度等于或小于八叉树划分结构的最大划分深度。
[0155]
在实施例中,方法(800)基于与一个或多个划分深度中的每一个划分深度对应的码流偏移,从已编码码流中确定一个或多个划分深度中的每一个划分深度的子码流。方法(800)对一个或多个划分深度的子码流执行并行解码。
[0156]
在实施例中,与一个或多个划分深度中的每一个划分深度对应的码流偏移,是包括在语法信息中。
[0157]
在实施例中,方法(800)基于占用码的上下文变量,对一个或多个划分深度范围内的节点的占用码执行并行解码。
[0158]
在实施例中,方法(800)确定节点的占用码的上下文变量的初始概率为一个或多个预定值。
[0159]
在实施例中,方法(800)基于多个节点的父节点的占用码的上下文变量的概率,确定节点的占用码的上下文变量的初始概率。多个节点处于要执行并行解码的最小划分深度。
[0160]
在实施例中,方法(800)基于节点的父节点的子集的占用码的上下文变量的概率,确定节点的占用码的上下文变量的初始概率。
[0161]
viii.计算机系统
[0162]
上文所描述的技术可使用计算机可读指令实施为计算机软件且以物理方式存储在一个或多个计算机可读存储介质中。举例来说,图9示出适于实施所公开主题的某些实施例的计算机系统(900)。
[0163]
所述计算机软件可使用任何合适的机器代码或计算机语言来编码,所述机器代码或计算机语言可经受汇编、编译、链接或类似机制以创建包括指令的代码,所述指令可直接或通过解译、微码执行等而由一个或多个计算机中央处理单元(central processing unit,cpu)、图形处理单元(graphics processing unit,gpu)等执行。
[0164]
可在各种类型的计算机或计算机组件上执行所述指令,所述计算机或计算机组件包括例如个人计算机、平板电脑、服务器、智能电话、游戏装置、物联网装置等。
[0165]
图9中所示的用于计算机系统(900)的组件在本质上是示范性的,并非旨在暗示关于实施本技术实施例的计算机软件的使用或功能的范围的任何限制。也不应将组件的配置解释为对计算机系统(900)的示范性实施例中所示的组件中的任一个组件或组件组合有任何依赖或需求。
[0166]
计算机系统(900)可包括某些人机接口输入装置。此类人机接口输入装置可响应于一个或多个人类用户通过例如触觉输入(例如:按键、滑动、数据手套移动)、音频输入(例如:语音、拍击)、视觉输入(例如:手势)、嗅觉输入(未描绘)进行的输入。人机接口装置还可用于捕获未必与人的有意识输入直接相关的某些媒体,例如音频(例如:话语、音乐、环境声)、图像(例如:扫描图像、从静态图像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
[0167]
输入人机接口装置可包括以下一个或多个(每种仅描绘一个):键盘(901)、鼠标(902)、轨迹垫(903)、触摸屏(910)、数据手套(未示出)、操纵杆(905)、麦克风(906)、扫描仪
(907)、相机(908)。
[0168]
计算机系统(900)还可包括某些人机接口输出装置。此类人机接口输出装置可通过例如触觉输出、声音、光和气味/味道刺激一个或多个人类用户的感觉。此类人机接口输出装置可包括触觉输出装置(例如触摸屏(910)、数据手套(未示出)或操纵杆(905)的触觉反馈,但还可存在不充当输入装置的触觉反馈装置)、音频输出装置(例如:扬声器(909)、头戴式耳机(未描绘))、视觉输出装置(例如屏幕(910),包括crt屏幕、lcd屏幕、等离子体屏幕、oled屏幕,各自具有或不具有触摸屏输入能力,各自具有或不具有触觉反馈能力
‑‑
其中的一些能够通过例如立体平画输出的方式输出二维视觉输出或大于三维的输出;虚拟现实眼镜(未描绘)、全息显示器和烟雾箱(未描绘)),以及打印机(未描绘)。这些视觉输出装置(例如屏幕(910))可以通过图形适配器(950)连接到系统总线(948)上。
[0169]
计算机系统(900)还可包括人类可访问的存储装置和存储装置的相关联介质,例如光学介质,包括具有cd/dvd等介质(921)的cd/dvd rom/rw(920)、拇指驱动器(922)、可移动硬盘驱动器或固态驱动器(923)、磁带和软盘(未描绘)等旧版磁性媒体、基于rom/asic/pld的专用装置,例如安全保护装置(未描绘),等等。
[0170]
所属领域的技术人员还应理解,结合当前公开的主题使用的术语“计算机可读介质”并未涵盖传输介质、载波或其它瞬时信号。
[0171]
计算机系统(900)还可包括到一个或多个通信网络(955)的网络接口(954)。一个或多个通信网络(955)可例如是无线的、有线的、光学的。网络还可以是本地的、广域的、城域的、车载和工业的、实时的、容忍延迟的等等。一个或多个通信网络(955)的实例包括例如以太网、无线lan的局域网、包括gsm、3g、4g、5g、lte等的蜂窝网络、包括有线tv、卫星tv和地面广播tv的tv有线或无线广域数字网络、包括can总线的车载网络和工业网络等。某些网络通常需要附接到某些通用数据端口或外围总线(949)(例如,计算机系统(900)的usb端口)的外部网络接口适配器;其它网络通常通过附接到如下文所描述的系统总线而集成到计算机系统(900)的核心中(例如通过以太网接口集成到pc计算机系统中,或通过蜂窝网络接口集成到智能电话计算机系统中)。通过使用这些网络中的任一网络,计算机系统(900)可与其它实体通信。此类通信可以是仅单向接收(例如广播tv)、仅单向发送(例如连到某些can总线装置的can总线)或是双向的,例如使用局域数字网络或广域数字网络连接到其它计算机系统。可在如上文所描述的那些网络和网络接口中的每一个上使用某些协议和协议栈。
[0172]
上述人机接口装置、人类可访问存储装置和网络接口可附接到计算机系统(900)的核心(940)。
[0173]
核心(940)可包括一个或多个中央处理单元(cpu)(941)、图形处理单元(gpu)(942)、现场可编程门区域(field programmable gate areas,fpga)形式的专用可编程处理单元(943)、用于某些任务的硬件加速器(944)等等。这些装置连同只读存储器(read

only memory,rom)(945)、随机存取存储器(946)、例如内部非用户可访问的硬盘驱动器、ssd等内部大容量存储装置(947)可通过系统总线(948)连接。在一些计算机系统中,系统总线(948)可通过一个或多个物理插头形式访问以实现通过额外cpu、gpu等来扩展。外围装置可直接或通过外围总线(949)附接到核心的系统总线(948)。用于外围总线的架构包括pci、usb等等。
[0174]
cpu(941)、gpu(942)、fpga(943)和加速器(944)可执行某些指令,所述指令组合起
来可构成上述计算机代码。计算机代码可存储在rom(945)或ram(946)中。过渡数据也可存储在ram(946)中,而永久性数据可例如存储在内部大容量存储装置(947)中。可通过使用高速缓冲存储器来实现对任一存储器装置的快速存储和检索,所述高速缓冲存储器可与一个或多个cpu(941)、gpu(942)、大容量存储装置(947)、rom(945)、ram(946)等紧密关联。
[0175]
计算机可读介质上可具有用于执行各种计算机实施的操作的计算机代码。所述介质和计算机代码可以是专为本技术的目的设计和构建的介质和计算机代码,或可属于计算机软件领域中的技术人员众所周知且可用的种类。
[0176]
举例来说但不作为限制,具有架构(900)且尤其是核心(940)的计算机系统可提供因处理器(包括cpu、gpu、fpga、加速器等)执行以一个或多个有形计算机可读介质体现的软件而产生的功能。此类计算机可读介质可以是与上文所介绍的用户可访问大容量存储装置以及核心(940)的非暂时性质的某些存储装置(例如核心内部大容量存储装置(947)或rom(945))相关联的介质。实施本技术的各种实施例的软件可存储在此类装置中且由核心(940)执行。根据特定需求,计算机可读介质可包括一个或多个存储器装置或芯片。软件可使核心(940)且具体地说使其中的处理器(包括cpu、gpu、fpga等等)执行本文中所描述的特定过程或特定过程的特定部分,包括限定存储在ram(946)中的数据结构以及根据由软件限定的过程修改此类数据结构。另外或作为替代方案,计算机系统可提供由硬连线的或以其它方式体现于电路(例如:加速器(944))中的逻辑所产生的功能,所述逻辑可代替或连同软件一起操作以执行本文描述的特定过程或特定过程的特定部分。适当时,对软件的引用可涵盖逻辑,且反之亦然。适当时,对计算机可读介质的引用可涵盖存储用于执行的软件的电路(例如集成电路(ic))、体现用于执行的逻辑的电路或这两种电路。本技术涵盖硬件与软件的任何合适的组合。
[0177]
尽管本技术描述了若干示范性实施例,但在本技术的范围内,可以有各种改动、排列组合方式以及各种替代等同物。因此,应该理解,在申请的精神和范围内,本领域技术人员能够设计出各种虽未在本文明确示出或描述、但可以体现本技术的原理的系统和方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜