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

基于视频的点云压缩(V-PCC)时序信息的制作方法

2022-06-06 02:09:16 来源:中国专利 TAG:

基于视频的点云压缩(v-pcc)时序信息
1.相关申请交叉引用
2.本技术要求于2019年10月7日提交的美国临时专利申请第62/911,815号的优先权,该美国临时专利申请通过引用的方式并入本文中。
技术领域
3.所公开的实施例大体上涉及一种pcc,具体涉及一种v-pcc时序信息。


背景技术:

4.即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备中存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。


技术实现要素:

5.第一方面涉及一种pcc解码器实现的方法,所述方法包括:所述pcc解码器接收包括timing_info_present_flag的点云码流,其中,所述timing_info_present_flag表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在还是不存在;所述pcc解码器使用所述timing_info_present_flag对所述点云码流进行解码,以获得经解码的点云码流。
6.这些实施例提供timing_info_present_flag、num_units_in_tick、time_scale、poc_proportional_to_timing_flag和num_ticks_poc_diff_one_minus1作为码流中的语法元素。这些语法元素提供了时序信息,从而提供了更准确的重建过程。
7.可选地,在上述任一方面中,所述timing_info_present_flag等于1表示所述num_units_in_tick、所述time_scale和所述poc_proportional_to_timing_flag在所述语法结构中存在。
8.可选地,在上述任一方面中,所述timing_info_present_flag等于0表示所述num_units_in_tick、所述time_scale和所述poc_proportional_to_timing_flag在所述语法结构中不存在。
9.第二方面涉及一种pcc编码器实现的方法,所述方法包括:生成timing_info_present_flag,其中,所述timing_info_present_flag表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在还是不存在;所述pcc编码器将所述timing_info_present_flag编码到点云码流中;所述pcc编码器存储所述点云码
流,以发送给pcc解码器。
10.第三方面涉及一种pcc解码器实现的方法,所述方法包括:所述pcc解码器接收包括num_units_in_tick的点云码流,其中,所述num_units_in_tick是以time_scale hz频率工作的时钟的时间单元数,所述频率对应于时钟计时周期计数器的一个增量;所述pcc解码器使用所述num_units_in_tick对所述点云码流进行解码,以获得经解码的点云码流。
11.可选地,在上述任一方面中,所述一个增量被称为时钟计时周期。
12.可选地,在上述任一方面中,所述num_units_in_tick应大于0。
13.可选地,在上述任一方面中,以秒为单位的时钟计时周期等于所述num_units_in_tick除以所述time_scale的商。
14.第四方面涉及一种pcc编码器实现的方法,所述方法包括:生成num_units_in_tick,其中,所述num_units_in_tick是以time_scale hz频率工作的时钟的时间单元数,所述频率对应于时钟计时周期计数器的一个增量;所述pcc编码器将所述num_units_in_tick编码到点云码流中;所述pcc编码器存储所述点云码流,以发送给pcc解码器。
15.第五方面涉及一种pcc解码器实现的方法,所述方法包括:所述pcc解码器接收包括time_scale的点云码流,其中,所述time_scale值是一秒内经过的时间单元数;所述pcc解码器使用所述time_scale对所述点云码流进行解码,以获得经解码的点云码流。
16.第六方面涉及一种pcc编码器实现的方法,所述方法包括:生成time_scale,其中,所述time_scale是一秒内经过的时间单元数;所述pcc编码器将所述time_scale编码到点云码流中;所述pcc编码器存储所述点云码流,以发送给pcc解码器。
17.第七方面涉及一种pcc解码器实现的方法,所述方法包括:所述pcc解码器接收包括poc_proportional_to_timing_flag的点云码流,其中,所述poc_proportional_to_timing_flag等于第一值表示cs中不是所述cs中按解码顺序的第一分量的每个分量的顺序编号值相对于所述cs中的所述第一分量的输出时间,与所述分量的输出时间成比例,并且其中,所述poc_proportional_to_timing_flag等于第二值表示所述cs中不是所述cs中按所述解码顺序的所述第一分量的每个分量的所述顺序编号值可以相对于所述cs中的所述第一分量的所述输出时间,与所述分量的所述输出时间成比例或不成比例;所述pcc解码器使用所述poc_proportional_to_timing_flag对所述点云码流进行解码,以获得经解码的点云码流。
18.可选地,在上述任一方面中,所述第一值是1。
19.可选地,在上述任一方面中,所述第一值是0。
20.第八方面涉及一种pcc编码器实现的方法,所述方法包括:生成poc_proportional_to_timing_flag,其中,所述poc_proportional_to_timing_flag等于第一值表示cs中不是所述cs中按解码顺序的第一分量的每个分量的顺序编号值相对于所述cs中的所述第一分量的输出时间,与所述分量的输出时间成比例,并且其中,所述poc_proportional_to_timing_flag等于第二值表示所述cs中不是所述cs中按所述解码顺序的所述第一分量的每个分量的所述顺序编号值可以相对于所述cs中的所述第一分量的所述输出时间,与所述分量的所述输出时间成比例或不成比例;所述pcc编码器将所述poc_proportional_to_timing_flag编码到点云码流中;所述pcc编码器存储所述点云码流,以发送给pcc解码器。
21.第九方面涉及一种pcc解码器实现的方法,所述方法包括:所述pcc解码器接收包括num_ticks_poc_diff_one_minus1的点云码流,其中,所述num_ticks_poc_diff_one_minus1加1表示对应于等于1的顺序编号值的差值的时钟计时周期数;所述pcc解码器使用所述num_ticks_poc_diff_one_minus1对所述点云码流进行解码,以获得经解码的点云码流。
22.可选地,在上述任一方面中,num_ticks_poc_diff_one_minus1的值应在0到2
32-2的范围内,包括端值。
23.第十方面涉及一种pcc编码器实现的方法,所述方法包括:生成num_ticks_poc_diff_one_minus1,其中,所述num_ticks_poc_diff_one_minus1加1表示对应于等于1的顺序编号值的差值的时钟计时周期数;所述pcc编码器将所述num_ticks_poc_diff_one_minus1编码到点云码流中;所述pcc编码器存储所述点云码流,以发送给pcc解码器。
24.上述实施例中的任何一个可以与上述其它实施例中的任何一个结合以创建新的实施例。从结合附图和权利要求书的以下详细描述中,将更清楚地理解这些和其它特征。
附图说明
25.为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相似的附图标记表示相似的部件。
26.图1是对视频信号进行译码的示例性方法的流程图。
27.图2是用于视频译码的示例性编码和解码(编解码)系统的示意图。
28.图3是示例性视频编码器的示意图。
29.图4是示例性视频解码器的示意图。
30.图5是可以根据pcc机制进行译码的点云媒体的示例。
31.图6是从点云创建的块的示例。
32.图7a示出了与一组块关联的示例性占用帧。
33.图7b示出了与一组块关联的示例性几何帧。
34.图7c示出了与一组块关联的示例性图集帧。
35.图8是示例性符合性测试机制的示意图。
36.图9是用于对pcc码流执行符合性测试的示例性hrd的示意图。
37.图10是示例性pcc码流的示意图。
38.图11是示例性视频译码设备的示意图。
39.图12是第一实施例提供的对点云码流进行解码的方法的流程图。
40.图13是第一实施例提供的对点云码流进行编码的方法的流程图。
41.图14是第二实施例提供的对点云码流进行解码的方法的流程图。
42.图15是第二实施例提供的对点云码流进行编码的方法的流程图。
43.图16是第三实施例提供的对点云码流进行解码的方法的流程图。
44.图17是第三实施例提供的对点云码流进行编码的方法的流程图。
45.图18是第四实施例提供的对点云码流进行解码的方法的流程图。
46.图19是第四实施例提供的对点云码流进行编码的方法的流程图。
47.图20是第五实施例提供的对点云码流进行解码的方法的流程图。
48.图21是第五实施例提供的对点云码流进行编码的方法的流程图。
具体实施方式
49.首先应当理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任意数量的技术来实现,无论这些技术是当前已知的还是现有的。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包括本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
50.以下缩写适用:
51.asic:专用集成电路(application-specific integrated circuit)
52.asps:图集序列参数集(atlas sequence parameter set)
53.au:接入单元(access unit)
54.bt:二叉树(binary tree)
55.cab:编码图集缓冲区(coded atlas buffer)
56.cabac:基于上下文的自适应二进制算术编码(context-adaptive binary arithmetic coding)
57.cas:编码图集序列(coded atlas sequence)
58.cavlc:上下文自适应可变长度编码(context-adaptive variable-length coding)
59.cb:蓝差色度(blue difference chroma)
60.cb:编码块(coding block)
61.cp a:符合性点a(conformance point a)
62.cp b:符合性点b(conformance point b)
63.cps:编码图像序列(coded picture sequence)
64.cpu:中央处理单元(central processing unit)
65.cr:红差色度(red difference chroma)
66.cs:编码序列(coded sequence)
67.ctb:编码树块(coding tree block)
68.ctu:编码树单元(coding tree unit)
69.cu:编码单元(coding unit)
70.cvs:编码vpc序列(coded vpc sequence)
71.dab:解码图集缓冲区(decoded atlas buffer)
72.dc:直流(direct current)
73.dct:离散余弦变换(discrete cosine transform)
74.dmm:深度建模模式(depth modeling mode)
75.dpb:解码图像缓冲区(decoded picture buffer)
76.dsp:数字信号处理器(digital signal processor)
77.dst:离散正弦变换(discrete sine transform)
78.eo:电光(electrical-to-optical)
79.fifo:先进先出(first-in,first-out)
80.fpga:现场可编程门阵列(field-programmable gate array)
81.hevc:高效视频编码(high efficiency video coding)
82.hrd:假设参考解码器(hypothetical reference decoder)
83.hss:假设流调度器(hypothetical stream scheduler)
84.hz:赫兹(hertz)
85.id:标识符(identifier)
86.iec:国际电工委员会(international electrotechnical commission)
87.info:信息(information)
88.i/o:输入/输出(input/output)
89.iso:国际标准化组织(international organization for standardization)
90.itu:国际电信联盟(international telecommunication union)
91.itu-t:itu电信标准化部门(itu telecommunication standardization sector)
92.mhz:兆赫(megahertz)
93.nal:网络抽象层(network abstraction layer)
94.oe:光电(optical-to-electrical)
95.pcc:点云压缩(point cloud compression)
96.pipe:概率区间分割熵(probability interval partitioning entropy)
97.pu:预测单元(prediction unit)
98.pui:点云可用性信息(point cloud usability information)
99.qt:四叉树(quad tree)
100.ram:随机存取存储器(random-access memory)
101.rbs:原始字节序列(raw byte sequence)
102.rbsp:rbs载荷(rbs payload)
103.rdo:率失真优化(rate-distortion optimization)
104.rgb:红、绿、蓝(red,green,and blue)
105.rom:只读存储器(read-only memory)
106.sad:绝对差和(sum of absolute differences)
107.sao:样本自适应偏移(sample adaptive offset)
108.sbac:基于语法的算术编码(syntax-based arithmetic coding)
109.sei:补充增强信息(supplemental enhancement information)
110.sps:序列参数集(sequence parameter set)
111.sram:静态随机存取存储器(static random-access memory)
112.ssd:差方和(sum of squared differences)
113.tcam:三态内容可寻址存储器(ternary content-addressable memory)
114.tt:三叉树(triple tree)
115.tu:变换单元(transform unit)
116.tx/rx:收发单元(transceiver unit)
117.v-pcc:基于视频的pcc(video-based pcc)
118.vps:v3c参数集(v3c parameter set)
119.vui:体积可用性信息(volumetric usability information)
120.v3c:可视体积视频编码(visual volumetric video-based coding)
121.2d:二维(two-dimensional)
122.3d:三维(three-dimensional)
123.除非另有说明,否则以下术语定义如下。术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,而不应当视为对提供的描述的任何其它定义进行限制。
124.编码器是一种用于通过编码过程将点云数据压缩为码流的设备。解码器是一种用于通过解码过程从码流中重建点云数据进行显示的设备。点云/点云表示是3d空间中的一组点(例如,样本),其中,每个点可以包括位置和(可选的)属性,例如颜色。码流是包括点云数据的一系列比特,这些点云数据会被压缩以在编码器与解码器之间传输。在pcc上下文中,码流包括编码的v-pcc分量的一系列比特。
125.v-pcc分量或更通常的pcc分量可以是与v-pcc点云关联的图集数据、占用图数据、几何数据或特定类型的属性数据。图集可以是投影到对应于3d空间中的3d边界框的矩形帧中的2d边界框或块的集合,其中,每个2d边界框代表点云的子集。占用图可以是对应于图集的2d阵列,图集的值表示图集中的每个样本位置是否对应于点云表示中的有效3d点。几何图可以是通过聚合与每个块关联的几何信息创建的2d阵列,其中,几何信息/数据可以是与点云帧关联的笛卡尔坐标(cartesian coordinate)的集合。属性可以是可选地与点云中的每个点关联的标量或矢量属性,并且可以参考颜色、反射率、曲面法线、时间戳或材料id。与特定时间实例关联的图集数据、占用图、几何图或属性的完整集合可以分别称为图集帧、占用图帧、几何帧和属性帧。图集数据、占用图数据、几何数据或属性数据可以是点云的分量,因此可以分别称为图集分量、占用图分量、几何分量和属性帧分量。
126.au可以是根据指定的分类规则彼此关联并且与一个特定输出时间相关的nal单元集合。编码分量可以是已压缩以包括在码流中的数据。解压缩分量可以是来自码流或子码流的数据,已作为解码过程的一部分或作为hrd符合性测试的一部分重建所述数据。hrd可以是在编码器上运行的解码器模型,该解码器模型检查编码过程产生的码流的可变性,以验证是否符合指定约束条件。hrd符合性测试可以确定经编码码流是否符合标准。符合性点可以是解码/重建过程中hrd执行hrd符合性检查以验证解压缩或重建的数据是否符合标准的点。hrd参数可以是初始化或定义hrd运行条件的语法元素。sei消息可以是一种语法结构,该语法结构具有传达解码过程不需要的信息,以便确定解码图像中的样本的值的指定语义。缓冲周期sei消息可以是包括表示与hrd中的cab相关的初始删除延迟的数据的sei消息。图集帧时序sei消息可以包括表示与cab相关的删除延迟和与hrd中的dab相关的输出延迟的数据。重建的点云可以是根据来自pcc码流的数据生成的点云。重建的点云应近似编码到pcc码流中的点云。
127.解码单元可以是存储在缓冲区中用于解码的码流或子码流中的任何编码分量。cab删除延迟可以是分量在删除之前可以在cab中保留的时间量。初始cab删除延迟可以是码流或子码流中的第一au中的分量在删除之前可以在cab中保留的时间量。dab可以是hrd中的fifo缓冲区,该fifo缓冲区包括按解码顺序的解码图集帧,以便在pcc码流符合性测试
期间使用。dab输出延迟可以是解码分量在输出之前可以在dab中保留的时间量(例如,作为重建的点云的一部分)。
128.v-pcc是一种对由不同属性的点云表示的3d对象进行高效译码的机制。具体地,v-pcc用于对这些点云进行编码或解码,以便作为视频序列的一部分显示。点云随着时间的推移被捕获,并包括在pcc帧中。pcc帧被划分为pcc分量,然后对所述pcc分量进行编码。某一时刻云中每个有效点的位置作为几何图存储在几何帧中。颜色存储为属性帧。具体地,某一时刻的块被打包到图集帧中。块通常不覆盖整个图集帧。因此,还生成占用帧,所述占用帧表示图集帧的哪些部分包括有效块数据。可选地,点的属性(例如透明度、不透明度和/或其它数据)可以包括在属性帧中。因此,每个pcc帧可以被编码为包括描述点云在对应时刻的不同分量的多个帧。此外,不同的分量可以通过使用不同的编码和解码(编解码)系统来译码。
129.图1是对视频信号进行译码的示例性操作方法100的流程图。具体地,视频信号是在编码器处编码的。编码过程通过使用各种机制来压缩视频信号,以减小视频文件大小。文件较小使得压缩视频文件可以发送给用户,同时降低相关带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号,用于向终端用户显示。解码过程通常与编码过程对应,便于解码器一致地重建视频信号。
130.在步骤101中,将视频信号输入到编码器中。例如,视频信号可以是存储在存储器中的未压缩视频文件。又例如,视频文件可以由视频捕获设备(例如,摄像机)捕获,并且进行编码以支持视频的直播流传输。视频文件可以包括音频分量和视频分量。视频分量包括一系列图像帧。这些图像帧按顺序观看时,给人以运动的视觉效果。帧包括亮度分量或亮度样本,它们是以光表示的像素,并包括色度分量或色度样本,它们是以颜色表示的像素。在一些示例中,这些帧还可以包括深度值,以支持3d观看。
131.在步骤103中,将视频分割成块。分割包括将每一帧中的像素细分成正方形块或矩形块进行压缩。例如,在hevc中,帧可以首先被划分为ctu,ctu是具有预定义大小(例如,64
×
64像素)的块。这些ctu包括亮度样本和色度样本。编码树可以用于将ctu划分成块,然后重复细分这些块,直到获得支持进一步编码的配置。例如,帧的亮度分量可以被细分,直到各个块包括相对均匀的亮度值。此外,帧的色度分量可以被细分,直到各个块包括相对均匀的色值。因此,分割机制因视频帧的内容而异。
132.在步骤105中,使用各种压缩机制对在步骤103中分割得到的图像块进行压缩。例如,可以使用帧间预测或帧内预测。帧间预测利用一般场景中的对象往往出现在连续帧中这一事实。因此,描述参考帧中的对象的块不需要在相邻帧中进行重复描述。具体地,一个对象(例如,一张桌子)可以在多个帧中保持在固定位置。因此,该桌子被描述一次,而且相邻帧可以重新参考该参考帧。模式匹配机制可以用于在多个帧上匹配对象。此外,由于对象移动或相机移动等原因,移动对象可以跨多个帧表示。在一个具体示例中,视频可以在多个帧上显示跨屏幕移动的汽车。运动矢量可以用于描述这种移动。运动矢量是一个2d矢量,提供对象在一个帧中的坐标到该对象在参考帧中的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,表示当前帧中的图像块与参考帧中的对应块的偏移。
133.帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往聚集在一个帧中这一事实。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内
预测使用多种方向性预测模式(例如,hevc中有33种)、平面模式和dc模式。这些方向性模式表示当前块的样本与对应方向上的相邻块的样本相似或相同。平面模式表示一行/列(例如平面)上的一系列块可以根据该行的边缘上的相邻块进行插值。平面模式实际上通过使用变化值的相对恒定的斜率表示光/颜色跨行/列的平稳过渡。dc模式用于边界平滑,并表示块与所有相邻块的样本的平均值相似或相同,这些相邻块与方向性预测模式的角度方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是表示为实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是表示为实际值。在任一种情况下,预测块在一些情况下可能都无法准确表示图像块。所有差值都存储在残差块中。变换可以应用于残差块以进一步压缩文件。
134.在步骤107中,可以应用各种滤波技术。在hevc中,滤波器是根据环内滤波方案应用的。上文描述的基于块的预测可能会在解码器处产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以便后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器应用于块/帧。这些滤波器减少了块伪影,从而可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。
135.一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码到码流中。码流包括上文描述的数据以及支持在解码器处进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和提供译码指令给解码器的各种标志。码流可以存储在存储器中,以便在请求时发送给解码器。码流还可以广播或组播到多个解码器。创建码流是一个迭代过程。因此,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续或同时执行。图1中所示的步骤可以按另一种合适的顺序。
136.在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中使用的熵编码/解码。编码器在压缩过程中做出许多选择,例如,根据输入图像中的值的空间定位从几个可能选择中选择块分割方案。指示确切的选择可能会使用大量的位元(bin)。“位元”是一个作为变量的二进制值(例如,可能因内容而异的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选项,从而留后一组可用选项。然后,为每个可用选项分配一个码字。码字的长度取决于可用选项的数量(即,一个二元符号对应两个选项,两个二元符号对应三到四个选项,以此类推)。然后,编码器对所选选项的码字进行编码。这种方案减小了码字,这是因为码字与预期的一样大,从而唯一地指示从可允许选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定可允许选项集对该选择进行解码。通过确定可允许选项集,解码器可以读取码字并确定编码器做出的选择。
137.在步骤113中,解码器执行块解码。具体地,解码器使用逆变换,以生成残差块。然后,解码器使用残差块和对应的预测块,以根据分割来重建图像块。预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。接着,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
138.在步骤115中,以类似于编码器处的步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器可以应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
139.图2是用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200提供支持实现操作方法100的功能。编解码系统200广义地用于描述编码器和解码器处都使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如结合操作方法100中的步骤101和步骤103所述,得到分割后的视频信号201。然后,编解码系统200在充当编码器时将分割后的视频信号201压缩到经编码码流中,如结合方法100中的步骤105、步骤107和步骤109所述。编解码系统200在充当解码器时从码流中生成输出视频信号,如结合操作方法100中的步骤111、步骤113、步骤115和步骤117所述。编解码系统200包括通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223以及标头格式和cabac组件231。黑线表示待译码数据的移动,而虚线表示控制其它组件操作的控制数据的移动。编解码系统200中的组件都可以存在于编码器中。解码器可以包括编解码系统200中的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225以及解码图像缓冲区组件223。
140.分割后的视频信号201是捕获到的已经通过编码树分割成像素块的视频序列。编码树使用各种划分模式将像素块细分成较小的像素块。然后,这些块可以进一步细分成较小的块。这些块可以称为编码树上的节点。较大的父节点划分成较小的子节点。节点进行细分的次数称为节点/编码树的深度。划分的块可以包括在cu中。例如,cu可以是ctu的子部分,包括亮度块、cr块和cb块以及cu的对应语法指令。划分模式可以包括bt、tt和qt,它们用于根据所使用的划分模式将节点分别分割成不同形状的2个、3个或4个子节点。将分割后的视频信号201转发给通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。
141.通用译码器控制组件211用于根据应用约束条件做出与将视频序列中的图像编码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。这些决定可以根据存储空间/带宽可用性和图像分辨率请求做出。通用译码器控制组件211还根据传输速度来管理缓冲区利用率,以缓解缓冲区欠载和溢出问题。为了解决这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态提高压缩复杂度以提高分辨率和增加带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,通用译码器控制组件211控制编解码系统200中的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据转发给标头格式和cabac组件231,以编码到码流中,从而指示解码器进行解码使用的参数。
142.还将分割后的视频信号201发送给运动估计组件221和运动补偿组件219进行帧间预测。分割后的视频信号201的帧或条带可以分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块执行帧间预测
译码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为每个视频数据块选择合适的译码模式,等等。
143.运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的,单独说明。由运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示经译码对象相对于预测块的位移。预测块是被发现在像素差方面与待译码块高度匹配的块。预测块还可以称为参考块。这种像素差可以通过sad、ssd或其它差度量确定。hevc使用若干编码对象,包括ctu、ctb和cu。例如,ctu可以分成ctb,ctb然后分成cb,cb包括在cu中。cu可以编码为包括预测数据的pu或包括cu的变换残差数据的tu。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、pu和tu。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡了视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
144.在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将pu的位置与参考图像的预测块的位置进行比较,计算经帧间编码条带中的视频块的pu的运动矢量。运动估计组件221将计算到的运动矢量作为运动数据输出到标头格式和cabac组件231进行编码,并作为运动数据输出到运动补偿组件219。
145.运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的pu的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,从正被译码的当前视频块的像素值中减去预测块的像素值,得到像素差,从而形成残差视频块。一般而言,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算得到的运动矢量用于色度分量和亮度分量。将预测块和残差块转发到变换缩放和量化组件213。
146.还将分割后的视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的,单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的各块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式来对当前块进行编码。然后,将选定的帧内预测模式转发给标头格式和cabac组件231进行编码。
147.例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码块与经编码以产生经编码块的原始未编码块之间的失真(或误差)量,以及确定用于产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用
于根据rdo,使用dmm对深度图的深度块进行译码。
148.帧内预测组件217在编码器上实现时可以根据由帧内估计组件215确定的选定帧内预测模式从预测块中生成残差块,或者在解码器上实现时,可以从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
149.变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将dct、dst等变换或者进行概念上类似的变换应用于残差块,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,以便在不同的粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。量化过程可以减小与部分或全部系数关联的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵执行扫描。将量化变换系数转发给标头格式和cabac组件231,以编码到码流中。
150.缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如,后续用作参考块。该参考块可以成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
151.滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,滤波器可以转而应用于残差块。如同图2中的其它组件,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实现,但出于概念目的进行单独描述。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据作为滤波器控制数据转发给标头格式和cabac组件231进行编码。环内滤波器组件225根据滤波器控制数据应用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、sao滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空域/像素域(例如,针对重建像素块)或频域中。
152.当作为编码器操作时,将经滤波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供后续用于运动估计,如上所述。当作为解码器操作时,解码图像缓冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
153.标头格式和cabac组件231从编解码系统200的各种组件接收数据,并将这些数据编码到经编码码流中,以发送给解码器。具体地,标头格式和cabac组件231生成各种标头以
对控制数据(例如,通用控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测数据和运动数据)以及量化变换系数数据形式的残差数据都编码到码流中。最终的码流包括解码器重建原始分割后的视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能帧内预测模式的指示、分割信息的指示等。这些数据可以采用熵编码进行编码。例如,可以通过使用cavlc、cabac、sbac、pipe编码或其它熵编码技术来编码信息。在熵编码之后,可以将经编码码流发送给另一设备(例如,视频解码器)或存档以供后续发送或检索。
154.图3是示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或实现操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到分割后的视频信号301,其基本上类似于分割后的视频信号201。然后,通过编码器300中的组件压缩分割后的视频信号301并编码到码流中。
155.具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割后的视频信号301转发给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313进行残差块的变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将经变换和量化的残差块和对应的预测块(与相关的控制数据一起)转发给熵编码组件331,以编码在码流中。熵编码组件331可以基本上类似于标头格式和cabac组件231。
156.还将经变换和量化的残差块和/或对应的预测块从变换和量化组件313转发给逆变换和反量化组件329,以重建为参考块,供运动补偿组件321使用。逆变换和反量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,环内滤波器组件325中的环内滤波器还应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如结合环内滤波器组件225所述。然后,将经滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
157.图4是示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或实现操作方法100中的步骤111、步骤113、步骤115和/或步骤117。例如,解码器400从编码器300接收码流,并根据所述码流生成重建输出视频信号,以向终端用户显示。
158.码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如cavlc、cabac、sbac、pipe解码或其它熵解码技术。例如,熵解码组件433可以使用头信息来提供上下文以解析在码流中编码为码字的附加数据。解码信息包括对视频信号进行解码所需的任何信息,例如,通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和反量化组件429,以重建成残差块。逆变换和反量化组件429可以类似于逆变换和反量化组件329。
159.将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建为
图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块添加到上述结果中以重建帧内预测图像块。将重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块转发给运动补偿组件421进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号输出到显示器。
160.图5是可以根据pcc机制译码的点云媒体500的示例。因此,当执行方法100时,点云媒体500可以由编码器(例如编解码系统200和/或编码器300)编码,并由解码器(例如编解码系统200和/或解码器400)重建。
161.图1至图4中描述的机制通常假定正在对2d帧进行译码。但是,点云媒体500是随着时间的推移而变化的点的云。具体地,点云媒体500(也可以被称为点云和/或点云表示)是3d空间中的一组点。这些点也可称为样本。每个点可以与多种类型的数据关联。例如,每个点可以通过位置描述。位置是3d空间中的位置,可以描述为笛卡尔坐标的集合。此外,每个点可以包括一种颜色。颜色可以通过亮度(例如,光)和色度(例如,颜色)描述。颜色可以通过红色(r)、绿色(g)和蓝色(b)值(表示为(r,g,b))或亮度(y)、蓝色投影(u)和红色投影(v)(表示为(y,u,v))来描述。这些点还可以包括其它属性。属性是可以与点云中的每个点关联的可选标量或矢量特性。属性可以包括反射率、透明度、曲面法线、时间戳、材料id。
162.由于点云媒体500中的每个点可以与多种类型的数据关联,因此,根据图1至图4中描述的机制,使用几种支持机制来准备点云媒体500用于压缩。例如,点云媒体500可以被分类为帧,其中,每个帧包括与点云相关的针对特定状态或某一时刻的所有数据。因此,图5描述了点云媒体500的单个帧。然后,对点云媒体500进行逐帧译码。点云媒体500可以被3d边界框501包围。3d边界框501是3d矩形棱镜,其尺寸设计为包围点云媒体500的针对对应帧的所有点。需要说明的是,在点云媒体500包括不相交集的情况下,可以采用多个3d边界框501。例如,点云媒体500可以描述两个未连接的图形,在这种情况下,3d边界框501将被放置在每个图形周围。3d边界框501中的点如下所述处理。
163.图6是从点云600创建的块603的示例。点云600是点云媒体500的单个帧。此外,点云600被基本上类似于3d边界框501的3d边界框601包围。因此,当执行方法100时,点云600可以由编码器(例如编解码系统200和/或编码器300)编码,并由解码器(例如编解码系统200和/或解码器400)重建。
164.3d边界框601包括六个面,因此包括六个2d矩形帧602,每个2d矩形帧602定位在3d边界框601的一个面上(例如,项面、底面、左面、右面、前面和后面)。通过将点云600投影到对应的2d矩形帧602上,可以将点云600从3d数据转换为2d数据。这样就创建了块603。块603
是3d点云的2d表示,其中,块603包括从对应的2d矩形帧602可见的点云600的表示。需要说明的是,来自2d矩形帧602的点云600的表示可以包括多个不相交的分量。因此,2d矩形帧602可以包括多个块603。因此,点云600可以由多于六个块603表示。块603也可以称为图集、图集数据、图集信息和/或图集分量。通过将3d数据转换为2d格式,点云600可以根据视频编码机制进行编码,例如帧间预测和/或帧内预测。
165.图7a至图7c示出了用于编码如图6中描述已转换为2d信息的3d点云的机制。具体地,图7a示出了与一组块(例如块603)关联的示例性占用帧710。占用帧710以二进制形式译码。例如,零表示边界框601的一部分不被块603中的一个占据。边界框601的由零表示的那些部分不参与体积表示(例如,点云600)的重建。相比之下,一表示边界框601的一部分被块603中的一个占据。边界框601的由一表示的那些部分参与了体积表示(例如,点云600)的重建。此外,图7b示出了与一组块(例如块603)关联的示例性几何帧720。几何帧720提供或描述了每个块603的轮廓或地形图。具体地,几何帧720表示块603中的每个点远离边界框601的平面表面(例如,2d矩形帧602)的距离。此外,图7c示出了与一组块(例如块603)关联的示例性图集帧730。图集帧730提供或描述了边界框601中的块603的样本。图集帧730可以包括例如块603中的点的颜色分量。颜色分量可以基于rgb颜色模型或其它颜色模型。可以使用占用帧710、几何帧720和图集帧730,以对点云600和/或点云媒体500进行译码。因此,当执行方法100时,占用帧710、几何帧720和图集帧730可以由编码器(例如,编解码系统200和/或编码器300)编码,并由解码器(例如,编解码系统200和/或解码器400)重建。
166.通过将3d信息投影到2d平面上创建的各种块可以打包到矩形(或方形)视频帧中。这种方法可能是有利的,因为各种视频编解码器(例如,hevc)被预配置为对这种视频帧进行译码。因此,pcc编解码器可以使用其它视频编解码器以对块进行译码。如图7a所示,块可以打包到帧中。块可以通过任何算法打包。例如,可以根据大小将块打包到帧中。在一个特定的示例中,从大到小包括块。最大的块可以首先放置在任何开放空间中,一旦超过大小阈值,较小的块就会填补空隙。如图7a所示,这种打包方案会产生不包括块数据的空白空间。为了避免编码空白空间,使用占用帧710。占用帧710包括点云在特定时刻的所有占用数据。具体地,占用帧710包括一个或多个占用图(也称为占用数据、占用信息和/或占用分量)。占用图定义为对应于图集(块组)的2d阵列,图集的值表示图集中的每个样本位置是否对应于点云表示中的有效3d点。如图7a所示,占用图包括有效数据区域713。有效数据区域713表示图集/块数据在占用帧710中的对应位置中存在。占用图还包括无效数据区域715。无效数据区域715表示图集/块数据在占用帧710中的对应位置中不存在。
167.图7b描述了点云数据的几何帧720。几何帧720包括点云在特定时刻的一个或多个几何图723(也称为几何数据、几何信息和/或几何分量)。几何图723是通过聚合与每个块关联的几何信息创建的2d阵列,其中,几何信息/数据是与点云帧关联的笛卡尔坐标的集合。具体地,块都是从3d空间中的点投影的。这种投影具有从块中删除3d信息的效果。几何图723保留从块中删除的3d信息。例如,块中的每个样本都是从3d空间中的点获取的。因此,几何图723可以包括与每个块中的每个样本关联的3d坐标。因此,几何图723可由解码器用于将2d块映射/转换回3d空间,以重建3d点云。具体地,解码器可以将每个块样本映射到适当的3d坐标上,以重建点云。
168.图7c描述了点云数据的图集帧730。图集帧730包括点云在特定时刻的一个或多个
图集733(也称为图集数据、图集信息、图集分量和/或块)。图集733是投影到对应于3d空间中的3d边界框的矩形帧中的2d边界框的集合,其中,每个2d边界框/块代表点云的子集。具体地,图集733包括当如结合图6所述3d点云被投影到2d空间时创建的块。因此,图集733/块包括与点云和对应时刻关联的图像数据(例如,颜色和光值)。图集733对应于图7a的占用图和图7b的几何图723。具体地,图集733包括有效数据区域713中的数据,而不包括无效数据区域715中的数据。此外,几何图723包括图集733中样本的3d信息。
169.还需要说明的是,点云可以包括属性(也称为属性数据、属性信息和/或属性分量)。这些属性可以包括在图集帧中。图集帧可以包括关于点云在特定时刻的对应属性的所有数据。属性帧的示例未示出,因为属性可以包括广泛的不同数据。具体地,属性可以是与点云中的每个点关联的任何标量或矢量特定,例如反射率、曲面法线、时间戳、材料id等。此外,属性是可选的(例如,用户定义的),并且可以根据应用而变化。但是,当使用时,点云属性可以以类似于图集733、几何图723和占用图的方式包括在属性帧中。
170.因此,编码器可以将点云帧压缩为图集733的图集帧730、几何图723的几何帧720、占用图的占用帧710以及(可选的)属性的属性帧。图集帧730、几何帧720、占用帧710和/或属性帧可以例如通过不同的编码器被进一步压缩,以传输到解码器。解码器可以解压缩图集帧730、几何帧720、占用帧710和/或属性帧。然后,解码器可以使用图集帧730、几何帧720、占用帧710和/或属性帧来重建点云帧,以确定在对应时刻的重建的点云。然后,重建的点云帧可以按顺序包括以重建原始点云序列(例如,用于显示和/或用于数据分析)。在特定示例中,可以通过使用结合图1至图4描述的技术(例如,通过使用hevc编解码器)来编码和解码图集帧730和/或图集733。
171.图8是示例性符合性测试机制800的示意图。符合性测试机制800可以由编码器(例如,编解码系统200和/或编码器300)使用,以验证pcc码流是否符合标准,并且因此,如果pcc码流符合标准,则pcc码流可以由解码器(例如,编解码系统200和/或解码器400)解码。例如,符合性测试机制800可用于检查在执行方法100时点云媒体500和/或块603是否已经以可以正确解码的方式编码为占用帧710、几何帧720、图集帧730和/或属性帧。
172.符合性测试机制800可以测试pcc码流是否符合标准。符合标准的pcc码流应始终可由任何也符合标准的解码器解码。不符合标准的pcc码流可能无法解码。因此,未通过符合性测试机制800的pcc码流应例如通过使用不同的设置重新编码。符合性测试机制800包括i型符合性测试881和ii型符合性测试883,它们也可以分别称为符合性点a和符合性点b。i型符合性测试881检查pcc码流的分量的符合性。ii型符合性测试883检查重建的点云的符合性。编码器通常用于执行i型符合性测试881,并且可以可选地执行ii型符合性测试883。
173.在执行符合性测试机制800之前,编码器如上所述对压缩的v-pcc码流801进行编码。然后,编码器可以使用hrd对压缩的v-pcc码流801执行符合性测试机制800。符合性测试机制800将压缩的v-pcc码流801划分为分量。具体地,压缩的v-pcc码流801被划分为压缩的图集子码流830、压缩的占用图子码流810、压缩的几何子码流820和(可选的)压缩的属性子码流840,上述压缩的各个子码流分别包括编码图集帧730、编码几何帧720、占用帧710和(可选的)属性帧的序列。
174.对子流执行熵解压缩或视频解压缩860。熵解压缩或视频解压缩860是与分量特定压缩相反的机制。压缩的图集子码流830、压缩的占用图子码流810、压缩的几何子码流820
和压缩的属性子码流840可以由一个或多个编解码器编码,因此,熵解压缩或视频解压缩860包括基于用于创建对应子码流的编码器将假设解码器应用于每个子码流。熵解压缩或视频解压缩860重建解压缩的图集子码流831、解压缩的占用图子码流811、解压缩的几何子码流821和解压缩的属性子码流841,上述解压缩的各个自码流分别来自压缩的图集子码流830、压缩的占用图子码流810、压缩的几何子码流820和压缩的属性子码流840。解压缩的子码流/分量是来自子码流的数据,已作为解码过程的一部分或在这种情况下作为hrd符合性测试的一部分重建所述数据。
175.对解压缩的图集子码流831、解压缩的占用图子码流811、解压缩的几何子码流821和解压缩的属性子码流841应用i型符合性测试881。i型符合性测试881检查每个分量(解压缩的图集子码流831、解压缩的占用图子码流811、解压缩的几何子码流821和解压缩的属性子码流841),以确保对应的分量符合编解码器用于编码和解码该分量的标准。例如,i型符合性测试881可以验证标准化量的硬件资源是否能够解压缩对应的分量,而不会出现缓冲区溢出或欠载的情况。此外,i型符合性测试881可以检查分量的阻止hrd正确地重建对应分量的编码错误。此外,i型符合性测试881可以检查每个对应的分量,以确保满足所有标准要求,并省略所有标准禁令。当所有分量都通过对应的测试时,i型符合性测试881满足,当任何一个分量未通过对应的测试时,i型符合性测试881不满足。任何通过i型符合性测试881的分量都应在任何也符合对应标准的解码器上可解码。因此,当对压缩的v-pcc码流801进行编码时,可以使用i型符合性测试881。
176.虽然i型符合性测试881确保分量是可解码的,但i型符合性测试881并不保证解码器可以从对应的分量重建原始点云。因此,符合性测试机制800也可以用于执行ii型符合性测试883。解压缩的占用图子码流811、解压缩的几何子码流821和解压缩的属性子码流841被转发用于转换861。具体地,转换861可以根据需要转换解压缩的占用图子码流811、解压缩的几何子码流821和解压缩的属性子码流841的色度格式、分辨率和/或帧率,以匹配解压缩的图集子码流831的色度格式、分辨率和/或帧率。
177.转换861的结果以及解压缩的图集子码流831被转发到几何重建862。在几何重建862处,使用来自解压缩的占用图子码流811的占用图来确定有效图集数据的位置。然后,几何重建862可以从包括有效图集数据的任何位置从解压缩的几何子码流821获得几何数据。然后,可以使用几何数据重建粗糙的点云,该重建的点云被转发到重复点删除863。例如,在从3d云创建2d块期间,可以从多个方向查看某些云点。当发生这种情况时,同一点将作为样本投影到多个块中。然后基于样本生成几何数据,因此几何数据包括这些点的重复数据。当几何数据表示多个点位于同一位置时,重复点删除863合并此类重复数据以创建单个点。结果得到与原始编码点云的几何图镜像的重建的几何图871。具体地,重建的几何图871包括来自编码点云的每个点的3d位置。
178.重建的几何图871被转发用于平滑864。具体地,重建的几何图871可以包括由于编码过程期间产生的噪声而显得尖锐的某些特征。平滑864可以使用一个或多个滤波器来去除这种噪声,以便创建平滑的几何图873,该平滑的几何图873是原始编码点云的精确表示。然后,平滑的几何图873与来自解压缩的图集子码流831的图集数据和来自转换861的属性数据一起被转发到属性重建865。属性重建865使用来自图集/块数据的颜色对位于平滑的几何图873中的点着色。属性重建865还将任何属性应用于点。结果得到与原始编码点云镜
像的重建的云875。重建的云875可以包括由编码过程引起的颜色或其它属性噪声。因此,重建的云875被转发用于颜色平滑866,该步骤将一个或多个滤波器应用于亮度、色度或其它属性值,以平滑这种噪声。颜色平滑866然后可以输出重建的点云877。如果使用无损编码,则重建的点云877应是原始编码的点云的精确表示。否则,重建的点云877极为近似原始编码的点云,具有不超过预定义公差的差异。
179.对重建的点云877应用ii型符合性测试883。ii型符合性测试883检查重建的点云877,以确保重建的点云877符合v-pcc标准,因此可以由符合v-pcc标准的解码器解码。例如,ii型符合性测试883可以验证标准化量的硬件资源是否能够对重建的点云877进行重建,而不会出现缓冲区溢出或欠载的情况。此外,ii型符合性测试883可以检查重建的点云877的阻止hrd正确地对重建的点云877进行重建的编码错误。此外,ii型符合性测试883可以检查每个解压缩分量和/或任何中间数据,以确保满足所有标准要求,并且省略所有标准禁令。当重建的点云877和任何中间分量通过对应的测试时,ii型符合性测试883满足,当重建的点云877或任何中间分量未通过对应的测试时,ii型符合性测试883不满足。当重建的点云877通过ii型符合性测试883时,重建的点云877应在任何也符合v-pcc标准的解码器上可解码。因此,与i型符合性测试881相比,ii型符合性测试883可以提供对压缩的v-pcc码流801的更鲁棒的验证。
180.图9是用于例如通过使用符合性测试机制800对pcc码流执行符合性测试的示例性hrd 900的示意图,该pcc码流可以包括编码为占用帧710、几何帧720、图集帧730和/或属性帧的点云媒体500和/或块603。因此,hrd 900可以由编解码系统200和/或编码器300使用,作为方法100的一部分,编解码系统200和/或编码器300对码流进行编码,以由编解码系统200和/或解码器400对码流进行解码。具体地,hrd 900可以在pcc码流被转发到解码器之前检查pcc码流和/或其分量。在一些示例中,当对pcc码流进行编码时,pcc码流可以不断地通过hrd 900转发。如果pcc码流的一部分不符合相关约束条件,则hrd 900会向编码器指示这种不符合情况,这使得编码器使用不同的机制对码流的对应部分进行重新编码。在一些示例中,hrd 900可用于对图集子码流和/或重建的点云执行检查。在一些示例中,占用图分量、几何分量和属性分量可以由其它编解码器编码。因此,包括占用图分量、几何分量和属性分量的子码流可以由其它hrd检查。因此,在一些示例中,可以使用包括hrd 900的多个hrd来完全检查pcc码流的符合性。
181.hrd 900包括hss 941。hss 941是用于执行假设传输机制的组件。假设传输机制用于参照输入到hrd 900中的pcc码流951的时间和数据流检查码流、子码流和/或解码器的符合性。例如,hss 941可以接收从编码器输出的pcc码流951或其子码流。然后,hss 941可以例如通过使用符合性测试机制800管理对pcc码流951的符合性测试过程。在一个特定示例中,hss 941可以控制编码图集数据移动通过hrd 900的速率,并验证pcc码流951不包括不符合标准的数据。hss 941可以按预定义的速率将pcc码流951转发给cab 943。为了实现hrd 900,包括pcc码流951中的编码视频的任何单元(例如,au和/或nal单元)可以称为解码图集单元953。在一些示例中,解码图集单元953可以仅包括图集数据。在其它示例中,解码图集单元953可以包括其它pcc分量和/或用于重建点云的一组数据。因此,在相同的示例中,解码图集单元953通常可以称为解码单元。cab 943是hrd 900中的fifo缓冲区。cab 943包括解码图集单元953,该解码图集单元953包括按解码顺序排列的图集数据、几何数据、占用数
据和/或属性数据。cab 943存储这种数据,以供在pcc码流符合性测试/检查期间使用。
182.cab 943将解码图集单元953转发到解码过程组件945。解码过程组件945是符合pcc标准或用于对pcc码流和/或其子码流译码的其它标准的组件。例如,解码过程组件945可以模拟终端用户使用的解码器。例如,解码过程组件945可以通过解码图集组件来执行i型符合性测试和/或通过重建点云数据来执行ii型符合性测试。解码过程组件945以可由示例性标准化解码器实现的速率对解码图集单元953进行解码。如果解码过程组件945不能足够快地对解码图集单元953进行解码以防止cab 943溢出,则pcc码流951不符合标准,应重新编码。类似地,如果解码过程组件945对解码图集单元953解码得太快,并且cab 943将数据耗尽(例如,缓冲区欠载),则pcc码流951不符合标准,应重新编码。
183.解码过程组件945对解码图集单元953进行解码,以创建解码图集帧955。解码图集帧955可以包括在i型符合性测试的情况下的pcc帧或在ii型符合性测试上下文中的重建的点云的帧的完整图集数据集合。解码图集帧955被转发到dab 947。dab 947是hrd 900中的fifo缓冲区,该fifo缓冲区包括按解码顺序排列的解码图集帧/解压缩图集帧和/或重建点云帧(基于上下文)以供在pcc码流符合性测试期间使用。dab 947可以基本上类似于解码图像缓冲区组件223、323和/或423。为了支持帧间预测,将经标识以用作从解码图集帧955中获得的参考图集帧956的帧返回给解码过程组件945,以支持进一步解码。dab 947逐帧输出图集数据957(或重建的点云,基于上下文)。因此,hrd 900可以确定译码是否令人满意,以及pcc码流951和/或其分量是否满足约束条件。
184.图10是示出用于在初始化hrd(例如hrd 900)时使用以支持hrd符合性测试(例如符合性测试机制800)的示例性pcc码流1000的示意图。例如,码流1000可以由编解码系统200和/或编码器300生成,以供编解码系统200和/或解码器400根据方法100进行解码。此外,码流1000可以包括编码为占用帧710、几何帧720、图集帧730和/或属性帧的点云媒体500和/或块603。此外,码流1000可以由hrd(例如,hrd 900)使用符合性测试机制(例如,符合性测试机制800)检查符合性。
185.pcc码流1000包括pcc au 1010的序列。pcc au 1010包括足够的分量,以重建在特定时刻捕获的单个pcc帧。例如,pcc au 1010可以包括可以分别基本上类似于图集帧730、占用帧710和几何帧720的图集帧1011、占用图帧1013和几何图帧1015。pcc au 1010还可以包括属性帧1017,该属性帧1017包括编码在pcc au 1010中的在某一时刻与点云相关的所有属性。这种属性可以包括可选地与点云中的每个点(例如,颜色、反射率、曲面法线、时间戳或材料id)关联的标量或矢量属性。pcc au 1010可以定义为根据指定的分类规则彼此关联并且与一个特定输出时间相关的nal单元集合。因此,数据位于nal单元中的pcc au 1010中。nal单元是分组大小的数据容器。例如,单个nal单元的尺寸通常设计为能够进行网络传输。nal单元可以包括表示nal单元类型的头和包括相关数据的有效载荷。
186.pcc码流1000还包括各种数据结构,以支持对pcc au 1010进行解码,例如作为解码过程的一部分和/或作为hrd过程的一部分。例如,pcc码流1000可以包括具有用于对一个或多个pcc au 1010进行译码的参数的各种参数集。在具体示例中,pcc码流1000可以包括图集sps 1020。图集sps 1020是一种语法结构,该语法结构包括应用于0个或0个以上完整编码图集序列的语法元素,这些语法元素由在图集sps 1020中找到的、由在每个分块组(tile group)头中找到的语法元素参考的语法元素的内容确定。例如,图集sps 1020可以
包括与图集帧1011的整个序列相关的参数。
187.pcc码流1000还包括各种sei消息。sei消息是一种具有指定语义的语法结构,该语法结构传达解码过程不需要的信息,以便确定经解码图像中的样本的值。因此,sei消息可以用于传送与解码pcc au 1010不直接相关的数据。在所示的示例中,pcc码流1000包括缓冲周期sei消息1030和图集帧时序sei消息1040。
188.在所示的示例中,当对pcc码流1000执行符合性测试时,图集sps 1020、缓冲周期sei消息1030和图集帧时序sei消息1040用于初始化和管理hrd的功能。例如,hrd参数1021可以包括在图集sps 1020中。hrd参数1021是初始化和/或定义hrd运行条件的语法元素。例如,hrd参数1021可用于指定用于在hrd处进行的hrd符合性检查的符合性点,例如i型符合性测试881或ii型符合性测试883。因此,hrd参数1021可以用于表示是否应对解压缩的pcc分量或重建的点云执行hrd符合性检查。例如,hrd参数1021可以被设置为第一值,以表示应对解压缩的属性分量、解压缩的图集分量、解压缩的占用图分量和解压缩的几何分量(例如,分别为属性帧1017、图集帧1011、占用图帧1013和几何图帧1015)执行hrd符合性检查。此外,hrd参数1021可以被设置为第一值,以表示应对从pcc分量生成(例如,从整个pcc au 1010重建)的重建的点云执行hrd符合性检查。
189.缓冲周期sei消息1030是包括表示与hrd中的cab(例如,cab 943)相关的初始删除延迟的数据的sei消息。初始cab删除延迟是码流中的第一au(例如pcc au 1010)或子码流中的第一au(例如图集帧1011)中的分量在删除之前可以在cab中保留的时间量。例如,hrd可以根据缓冲周期sei消息1030指定的初始延迟,在hrd符合性检查期间,开始从hrd中的cab中删除与第一pcc au 1010相关的任何解码单元。因此,缓冲周期sei消息1030包括足以初始化hrd符合性测试过程的数据,以在与缓冲周期sei消息1030关联的编码pcc au 1010处开始hrd符合性测试。具体地,缓冲周期sei消息1030可以指示hrd应在pcc码流1000中的第一pcc au 1010处开始符合性测试。
190.图集帧时序sei消息1040是包括表示与cab(例如,cab 943)相关的删除延迟和与hrd中dab(例如,dab 947)相关的输出延迟的数据的sei消息。cab删除延迟是分量(例如,任何对应分量)在删除之前可以在cab中保留的时间量。可以参考由缓冲周期sei消息1030指定的初始cab删除延迟对cab删除延迟进行编码。dab输出延迟是解压缩分量/解码分量(例如,任何对应分量)在输出之前可以在dab中保留的时间量(例如,作为重建的点云的一部分)。因此,hrd可以如由图集帧时序sei消息1040指定在符合性检查期间从hrd中的cab中删除解码单元。此外,hrd可以设置由图集帧时序sei消息1040指定的在hrd中的dab的输出延迟。
191.因此,编码器可以在编码过程期间将hrd参数1021、缓冲周期sei消息1030和图集帧时序sei消息1040编码到pcc码流1000中。然后,hrd可以读取hrd参数1021、缓冲周期sei消息1030和图集帧时序sei消息1040,以获得足够的信息来对pcc码流1000执行符合性检查,例如符合性测试机制800。此外,解码器从pcc码流1000获得hrd参数1021、缓冲周期sei消息1030和/或图集帧时序sei消息1040,并通过存在这些数据推断已经对pcc码流1000执行了hrd检查。因此,解码器可以推断pcc码流1000是可解码的,并且因此可以根据hrd参数1021、缓冲周期sei消息1030和/或图集帧时序sei消息1040对pcc码流1000进行解码。
192.pcc码流1000可以具有不同的大小,并且可以通过传输网络以不同的速率从编码
器传输到解码器。例如,当使用基于hevc的编码器时,长度约为一小时的体积序列可以编码到文件大小在15到70千兆字节之间的pcc码流1000中。与hevc编码器相比,基于vvc的编码器可以进一步将文件大小减少约30%到35%。因此,用vvc编码器编码的长度为一小时的体积序列可能会产生大小约为10到49千兆字节的文件。pcc码流1000可以根据传输网络的状态以不同的速率传输。例如,pcc码流1000可以以每秒5到20兆字节的码率通过网络传输。类似地,本文描述的编码和解码过程可以例如以快于每秒一兆字节的速率执行。
193.图11是示例性视频译码设备1100的示意图。视频译码设备1100适用于实现公开的实施例。视频译码设备1100包括下行端口1120、上行端口1150和tx/rx 1110,该tx/rx 1110包括发送器或发送模块,并包括用于通过网络发送数据的接收器或接收模块。视频译码设备1100还包括处理器1130或处理模块,该处理器1130或处理模块包括用于处理数据的逻辑单元或cpu和用于存储数据的存储器1132或存储模块。视频译码设备1100还可以包括与上行端口1150或下行端口1120耦合的电子组件、oe组件、eo组件或无线通信组件,用于通过电、光或无线通信网络发送数据。视频译码设备1100还可以包括用于与用户进行数据通信的i/o设备1160。i/o设备1160可以包括输出设备,如用于显示视频数据的显示器、用于输出音频数据的扬声器等。i/o设备1160还可以包括输入设备,如键盘、鼠标、轨迹球等,和/或用于与此类输出设备交互的对应接口。
194.处理器1130通过硬件和软件来实现。处理器1130可以实现为一个或多个cpu芯片、一个或多个核(例如多核处理器)、一个或多个fpga、一个或多个asic和一个或多个dsp。处理器1130与下行端口1120、tx/rx 1110、上行端口1150和存储器1132通信。处理器1130包括译码模块1114。译码模块1114实现本文描述的公开实施例(例如方法100、1200和1300),所述公开实施例可以使用划分成一组块603并编码成pcc码流1000中的占用帧710、几何帧720和图集帧730的点云媒体500。此外,译码模块1114可以实现hrd 900,该hrd 900对pcc码流1000执行符合性测试机制800。译码模块1114还可以实现本文描述的任何其它方法/机制。此外,所述译码模块1114可以实现编解码系统200、编码器300和/或解码器400。或者,译码模块1114可以实现为存储在存储器1132中并由处理器1130执行的指令(例如,实现为存储在非瞬时性介质上的计算机程序产品)。
195.存储器1132包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、rom、ram、闪存、tcam、sram等。存储器1132可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
196.点云是空间在常规3d网格上的体积表示。点云中的体素具有x、y和z坐标,并且可以具有rgb颜色分量、反射率或其它属性。v-pcc中的数据表示依赖于3d到2d转换,并被描述为一组具有四种类型数据的平面2d图像,其中,这四种类型数据被称为分量:占用图、几何数据、属性数据和图集帧。占用图是2d投影中占用或未占用块的二进制图像表示。几何数据是块数据的高度图,描述了与块投影平面的距离的每点差异。属性数据是表示点云的对应3d点处属性值的对应分量的2d纹理图。图集帧是执行2d到3d转换所需的元数据信息。为了提供准确的重建过程,码流需要所有分量的时序信息。但是,目前还没有用于获取这种时序信息的机制。
197.本文公开了v-pcc时序信息的实施例。这些实施例提供timing_info_present_flag、num_units_in_tick、time_scale、poc_proportional_to_timing_flag和num_ticks_
poc_diff_one_minus1作为码流中的语法元素。这些语法元素提供了时序信息,从而提供了更准确的重建过程。
198.对asps结构实现以下修改,以便用于对v-pcc码流的子流元素或分量进行时序或时间对准的机制。
199.码流(例如pcc码流1000)可以实现以下asps语法。
200.asps语法
201.202.[0203][0204]
以下语义定义了上面的语法:
[0205]
asps_sub_layer_ordering_info_present_flag等于1表示对于asps_max_sub_layers_minus1 1个子层,asps_max_dec_atlas_buffering_minus1[i]、asps_max_num_reorder_atlases[i]和asps_max_latency_increase_plus1[i]存在。asps_sub_layer_ordering_info_present_flag等于0表示asps_max_dec_atlas_buffering_minus1[asps_max_sub_layers_minus1]、asps_max_num_reorder_atlases[asps_max_sub_layers_minus1]和asps_max_latency_increase_plus1[asps_max_sub_layers_minus1]的值应用于所有子层。
[0206]
asps_max_dec_atlas_buffering_minus1[i] 1表示当highesttid等于i时cps的解码图像缓冲区的最大所需大小,以图像存储缓冲区为单位。asps_max_dec_atlas_buffering_minus1[i]的值应在0到maxdpbsize-1的范围内,包括端值,其中,maxdpbsize如第a.4条所指定。第a.4条可以是指iso/iec的第a.4条“信息技术-沉浸式媒体的编码表示-第5部分:可视体积视频编码(v3c)和基于视频的点云压缩(v-pcc)”,2020年9月2日(“iso/iec v-pcc”),或是指iso/iec v-pcc的另一版本的相关条款。当i大于0时,asps_max_dec_atlas_buffering_minus1[i]应大于或等于asps_max_dec_atlas_buffering_minus1[i-1]。对于i的每个值,asps_max_dec_atlas_buffering_minus1[i]的值应小于或等于vps_max_dec_pic_buffering_minus1[i]。当对于i在0到asps_max_sub_layers_minus1-1的范围内(包括端值),asps_max_dec_atlas_buffering_minus1[i]不存在时,由于asps_sub_layer_ordering_info_present_flag等于0,因此,asps_max_dec_atlas_buffering_minus1[i]被推断为等于asps_max_dec_atlas_buffering_minus1[asps_max_sub_layers_minus1]。
[0207]
asps_max_num_reorder_atlases[i]表示当highesttid等于i时可以按解码顺序在cps中的picoutputflag等于1的任何图像之前并且按输出顺序在picoutputflag等于1的
图像之后的picoutputflag等于1的图像的最大允许数量。asps_max_num_reorder_atlases[i]的值应在0到asps_max_dec_atlas_buffering_minus1[i]的范围内,包括端值。当i大于0时,asps_max_num_reorder_atlases[i]应大于或等于asps_max_num_reorder_atlases[i-1]。对于i的每个值,asps_max_num_reorder_atlases[i]的值应小于或等于vps_max_num_reorder_pics[i]。当对于i在0到asps_max_sub_layers_minus1-1的范围内(包括端值),asps_max_num_reorder_atlases[i]不存在时,由于asps_sub_layer_ordering_info_present_flag等于0,因此,asps_max_num_reorder_atlases[i]被推断为等于asps_max_num_reorder_atlases[asps_max_sub_layers_minus1]。
[0208]
asps_max_latency_increase_plus1[i]不等于0用于计算spsmaxlatencypictures[i]的值,该spsmaxlatencypictures[i]表示当highesttid等于i时可以按输出顺序在cps中的picoutputflag等于1的任何图像之前并且按解码顺序在picoutputflag等于1的图像之后的picoutputflag等于1的图像的最大数量。
[0209]
当asps_max_latency_increase_plus1[i]不等于0时,aspsmaxlatencyatlases[i]的值指定如下:
[0210]
aspsmaxlatencyatlases[i]=asps_max_num_reorder_atlases[i] asps_max_latency_increase_plus1[i]-1
[0211]
当asps_max_latency_increase_plus1[i]等于0时,不表示对应的限制。
[0212]
asps_max_latency_increase_plus1[i]的值应在0到2
32-2的范围内,包括端值。当对于i在0到asps_max_sub_layers_minus1-1的范围内(包括端值),asps_max_latency_increase_plus1[i]不存在时,由于asps_sub_layer_ordering_info_present_flag等于0,因此,asps_max_latency_increase_plus1[i]被推断为等于asps_max_latency_increase_plus1[asps_max_sub_layers_minus1]。
[0213]
asps_max_layer_id表示每个cps中参考asps的所有nal单元的nuh_layer_id的最大允许值。在符合本规范的该版本的码流中,asps_max_layer_id应小于63。“规范”可以指iso/iec v-pcc或iso/iec v-pcc的另一个版本。针对asps_max_layer_id,保留值63,以供itu-t|iso/iec将来使用。尽管在本规范的该版本中,要求asps_max_layer_id的值小于63,但解码器应允许在语法中出现等于63的asps_max_layer_id的值。
[0214]
asps_num_layer_sets_minus1 1表示asps指定的层集数量。asps_num_layer_sets_minus1的值应在0到1023的范围内,包括端值。
[0215]
asps_timing_info_present_flag等于1表示asps_num_units_in_tick、asps_time_scale、asps_poc_proportional_to_timing_flag和vps_num_hrd_parameters在vps或asps中存在。asps_timing_info_present_flag等于0表示asps_num_units_in_tick、asps_time_scale、asps_poc_proportional_to_timing_flag和vps_num_hrd_parameters在asps中不存在。
[0216]
vps和asps两者都是语法结构。vps定义为一种语法结构,该语法结构包括应用于0个或0个以上完整cvs的语法元素,这些语法元素由在vps中找到的、由在v3c单元头中找到的语法元素参考的语法元素的内容确定。asps定义为一种语法结构,该语法结构包括应用于0个或0个以上完整编码图集序列的语法元素,这些语法元素由在asps中找到的、由在每个分块头中找到的语法元素参考的语法元素的内容确定。“vps”和“asps”两者可以替换为“vui”。因此,“asps_timing_info_present_flag”可以是“vui_timing_info_present_flag”,“asps_num_units_in_tick”可以是“vui_num_units_in_tick”,“asps_time_scale”可以是“vui_time_scale”,“asps_poc_proportional_to_timing_flag”可以是“vui_poc_proportional_to_timing_flag”。
[0217]
asps_num_units_in_tick是以频率asps_time_scale hz运行的时钟的时间单元数,该频率对应于时钟计时周期计数器的一个增量(被称为时钟计时周期)。asps_num_units_in_tick的值应大于0。时钟计时周期(以秒为单位)等于asps_num_units_in_tick除以asps_time_scale的商。例如,当图集子码流信号的图集率为25hz时,asps_time_scale可以等于27000000,asps_num_units_in_tick可以等于1080000,因此,时钟计时周期可以为0.04秒。“asps_num_units_in_tick”可以简称为“num_units_in_tick”,“asps_time_scale”简称为“time_scale”。
[0218]
asps_time_scale是一秒钟内通过的时间单元数。例如,使用27mhz时钟测量时间的时间坐标系的asps_time_scale为27000000。asps_time_scale的值应大于0。同样,“asps”可以被“vui”取代。因此,“asps_time_scale”可以是“vui_time_scale”。
[0219]
asps_poc_proportional_to_timing_flag等于1表示cps中不是cps中按解码顺序的第一图像的每个图像的图像顺序编号值相对于cps中的第一图像的输出时间与该图像的输出时间成比例。asps_poc_proportional_to_timing_flag等于0表示cps中不是cps中按解码顺序的第一图像的每个图像的图像顺序编号值可以相对于cps中的第一图像的输出时间与该图像的输出时间成比例或不成比例。同样,“asps”可以被“vui”取代。因此,asps_poc_proportional_to_timing_flag可以是vui_poc_proportional_to_timing_flag。此外,“图像顺序编号值”可以是“图集帧顺序编号值”,“图像”可以是“图集”,“cps”可以是“cas”或简称为“cs”。
[0220]
asps_num_ticks_poc_diff_one_minus1 1表示对应于等于1的图像顺序编号值的差值的时钟计时周期数。asps_num_ticks_poc_diff_one_minus1的值应在0到2
32-2的范围内,包括端值。同样,“asps”可以被“vui”取代。因此,“asps_num_ticks_poc_diff_one_minus1”可以是“vui_num_ticks_poc_diff_one_minus1”。同样,“图像”可以是“图集帧”。
[0221]
asps_num_hrd_parameters表示hrd_parameters()的数量语法结构在asps rbs中存在。asps_num_hrd_parameters值应在0到asps_num_layer_sets_minus1 1的范围内,包括端值。
[0222]
hrd_layer_set_idx[i]表示asps中第i个hrd_parameters()语法结构应用到的层集的、asps指定的层集的列表的索引。hrd_layer_set_idx[i]的值应在(asps_base_layer_internal_flag?0:1)到asps_num_layer_sets_minus1的范围内,包括端值。
[0223]
对于任何不等于i的j值,hrd_layer_set_idx[i]的值应不等于hrd_layer_set_idx[j]的值,这是码流符合性的要求。
[0224]
cprms_present_flag[i]等于1表示对于所有子层共用的hrd参数在asps中的第i个hrd_parameters()语法结构中存在。cprms_present_flag[i]等于0表示对于所有子层共用的hrd参数在asps中的第i个hrd_parameters()语法结构中不存在,并且被推导为与asps中的第(i-1)个hrd_parameters()语法结构相同。cprms_present_flag[0]被推断为等于1。
[0225]
以下语法实现pui元素,用于码流中点云帧的时间指示:
[0226][0227][0228]
以下语义定义了上面的语法:
[0229]
pui_timing_info_present_flag等于1表示pui_num_units_in_tick、pui_time_scale、pui_poc_proportional_to_timing_flag和pui_hrd_parameters_present_flag在pui_parameters()语法结构中存在。pui_timing_info_present_flag等于0表示pui_num_units_in_tick、pui_time_scale、pui_poc_proportional_to_timing_flag和pui_hrd_parameters_present_flag在pui_parameters()语法结构中不存在。
[0230]
pui_num_units_in_tick是以频率pui_time_scale hz运行的时钟的时间单元数,该频率对应于时钟计时周期计数器的一个增量(被称为时钟计时周期)。pui_num_units_in_tick应大于0。时钟计时周期(以秒为单位)等于pui_num_units_in_tick除以pui_time_scale的商。例如,当视频信号的图像率为25hz时,pui_time_scale可以等于27000000,pui_num_units_in_tick可以等于1080000,因此,时钟计时周期可以等于0.04秒。
[0231]
pui_time_scale是一秒钟内通过的时间单元数。例如,使用27mhz时钟测量时间的时间坐标系的pui_time_scale为27000000。pui_time_scale的值应大于0。
[0232]
pui_poc_proportional_to_timing_flag等于1表示cps中不是cps中按解码顺序的第一点云的每个点云的图像顺序编号值相对于cps中的第一点云的输出时间与该点云的输出时间成比例。pui_poc_proportional_to_timing_flag等于0表示cps中不是cps中按解码顺序的第一点云的每个点云的图像顺序编号值可以相对于cps中的第一点云的输出时间与该点云的输出时间成比例或不成比例。
[0233]
pui_num_ticks_poc_diff_one_minus1 1表示对应于等于1的点云顺序编号值的差值的时钟计时周期数。pui_num_ticks_poc_diff_one_minus1的值应在0到2
32-2的范围内,包括端值。
[0234]
pui_hrd_parameters_present_flag等于1表示语法结构hrd_parameters()在pui_parameters()语法结构中存在。pui_hrd_parameters_present_flag等于0表示语法
结构hrd_parameters()在pui_parameters()语法结构中不存在。
[0235]
图12是第一实施例提供的对点云码流进行解码的方法1200的流程图。解码器400可以实现方法1200。解码器400可以是pcc解码器。在步骤1210中,接收包括timing_info_present_flag的点云码流。timing_info_present_flag表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在还是不存在。在步骤1220中,使用timing_info_present_flag对点云码流进行解码,以获得经解码的点云码流。在实施例中,点云媒体(例如,点云媒体500)可以从经解码的点云码流中获得,并用于生成或产生图像或视频序列,以在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机)的显示器或屏幕上显示给用户。
[0236]
方法1200可以实现附加实施例。例如,timing_info_present_flag等于1表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在。timing_info_present_flag等于0表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中不存在。
[0237]
图13是第一实施例提供的对点云码流进行编码的方法1300的流程图。编码器300可以实现方法1300。编码器300可以是pcc编码器。在步骤1310中,生成timing_info_present_flag。timing_info_present_flag表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在还是不存在。在步骤1320中,将timing_info_present_flag编码到点云码流中。在步骤1330中,存储点云码流,用于发送到pcc解码器。
[0238]
图14是第二实施例提供的对点云码流进行解码的方法1400的流程图。解码器400可以实现方法1400。解码器400可以是pcc解码器。在步骤1410中,接收包括num_units_in_tick的点云码流。num_units_in_tick是以time_scale hz频率工作的时钟的时间单元数,该频率对应于时钟计时周期计数器的一个增量。在步骤1420中,使用num_units_in_tick对点云码流进行解码,以获得经解码的点云码流。在实施例中,点云媒体(例如,点云媒体500)可以从经解码的点云码流中获得,并用于生成或产生图像或视频序列,以在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机)的显示器或屏幕上显示给用户。
[0239]
方法1400可以实现附加实施例。例如,一个增量被称为时钟计时周期。num_units_in_tick应大于0。时钟计时周期(以秒为单位)等于num_units_in_tick除以time_scale的商。方法1400可以与方法1200结合。
[0240]
图15是第二实施例提供的对点云码流进行编码的方法1500的流程图。编码器300可以实现方法1500。编码器300可以是pcc编码器。在步骤1510中,生成num_units_in_tick。num_units_in_tick是以time_scale hz频率工作的时钟的时间单元数,该频率对应于时钟计时周期计数器的一个增量。在步骤1520中,将num_units_in_tick编码到点云码流中。在步骤1530中,存储点云码流,用于发送到pcc解码器。方法1500可以与方法1300结合。
[0241]
图16是第三实施例提供的对点云码流进行解码的方法1600的流程图。解码器400可以实现方法1600。解码器400可以是pcc解码器。在步骤1610中,接收包括time_scale的点云码流。time_scale是一秒钟内通过的时间单元数。在步骤1620中,使用time_scale对点云码流进行解码,以获得经解码的点云码流。在实施例中,点云媒体(例如,点云媒体500)可以从经解码的点云码流中获得,并用于生成或产生图像或视频序列,以在电子设备(例如,智
能手机、平板电脑、笔记本电脑、个人计算机)的显示器或屏幕上显示给用户。
[0242]
图17是第三实施例提供的对点云码流进行编码的方法1700的流程图。编码器300可以实现方法1700。编码器300可以是pcc编码器。在步骤1710中,生成time_scale。time_scale是一秒钟内通过的时间单元数。在步骤1720中,将time_scale编码到点云码流中。在步骤1730中,存储点云码流,用于发送到pcc解码器。
[0243]
图18是第四实施例提供的对点云码流进行解码的方法1800的流程图。解码器400可以实现方法1800。解码器400可以是pcc解码器。在步骤1810中,接收包括poc_proportional_to_timing_flag的点云码流。poc_proportional_to_timing_flag等于第一值表示cs中不是cs中按解码顺序的第一分量的每个分量的顺序编号值相对于cs中的第一分量的输出时间,与分量的输出时间成比例,并且其中,poc_proportional_to_timing_flag等于第二值表示cs中不是cs中按解码顺序的第一分量的每个分量的顺序编号值可以相对于cs中的第一分量的输出时间,与分量的输出时间成比例或不成比例。在步骤1820中,使用poc_proportional_to_timing_flag对点云码流进行解码,以获得经解码的点云码流。在实施例中,点云媒体(例如,点云媒体500)可以从经解码的点云码流中获得,并用于生成或产生图像或视频序列,以在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机)的显示器或屏幕上显示给用户。
[0244]
方法1800可以实现附加实施例。例如,第一值是1。第二值是0。
[0245]
图19是第四实施例提供的对点云码流进行编码的方法1900的流程图。编码器300可以实现方法1900。编码器300可以是pcc编码器。在步骤1910中,生成poc_proportional_to_timing_flag。poc_proportional_to_timing_flag等于第一值表示cs中不是cs中按解码顺序的第一分量的每个分量的顺序编号值相对于cs中的第一分量的输出时间,与分量的输出时间成比例,并且其中,poc_proportional_to_timing_flag等于第二值表示cs中不是cs中按解码顺序的第一分量的每个分量的顺序编号值可以相对于cs中的第一分量的输出时间,与分量的输出时间成比例或不成比例。在步骤1920中,将poc_proportional_to_timing_flag编码到点云码流中。在步骤1930中,存储点云码流,用于发送到pcc解码器。
[0246]
图20是第五实施例提供的对点云码流进行解码的方法2000的流程图。解码器400可以实现方法2000。解码器400可以是pcc解码器。在步骤2010中,接收包括num_ticks_poc_diff_one_minus1的点云码流。num_ticks_poc_diff_one_minus1 1表示对应于等于1的顺序编号值的差值的时钟计时周期数。在步骤2020中,使用num_ticks_poc_diff_one_minus1对点云码流进行解码,以获得经解码的点云码流。在实施例中,点云媒体(例如,点云媒体500)可以从经解码的点云码流中获得,并用于生成或产生图像或视频序列,以在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机)的显示器或屏幕上显示给用户。
[0247]
方法2000可以实现附加实施例。例如,num_ticks_poc_diff_one_minus1的值应在0到2
32-2的范围内,包括端值。
[0248]
图21是第五实施例提供的对点云码流进行编码的方法2100的流程图。编码器300可以实现方法2100。编码器300可以是pcc编码器。在步骤2110中,生成num_ticks_poc_diff_one_minus1。num_ticks_poc_diff_one_minus1 1表示对应于等于1的顺序编号值的差值的时钟计时周期数。在步骤2120中,将num_ticks_poc_diff_one_minus1编码到点云码流中。在步骤2130中,存储点云码流,用于发送到pcc解码器。
[0249]
在一个实施例中,接收模块接收包括timing_info_present_flag的点云码流。timing_info_present_flag表示num_units_in_tick、time_scale和poc_proportional_to_timing_flag在语法结构中存在还是不存在。处理模块使用timing_info_present_flag对点云码流进行解码,以获得经解码的点云码流。
[0250]
除非另有说明,否则术语“约”意指包括后续数字
±
10%的范围。虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明的示例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或组件可以在另一系统中组合或集成,或者某些特征可以省略或不实现。
[0251]
此外,在各种实施例中描述和示出为分立的或单独的技术、系统、子系统和方法,在不背离本发明的范围的情况下,可以与其它系统、组件、技术或方法组合或集成。展示或描述为耦合可以是直接耦合或可以采用电方式、机械方式或其它方式通过某种接口、设备或中间组件间接耦合或通信。其它变更、替换、更改示例能够由本领域技术人员确定,并且可以在不脱离本文公开的精神和范围的情况下进行。
再多了解一些

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

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

相关文献