基于子图像的视频译码中的子图像ID指示的制作方法

未命名 08-12 阅读:72 评论:0

基于子图像的视频译码中的子图像id指示
1.本技术是分案申请,原申请的申请号是202080063710.2,原申请日是2020年09月15日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本发明大体上涉及视频译码,具体涉及基于子图像的视频译码中的子图像标识符(identifier,id)指示(signaling)。


背景技术:

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


技术实现要素:

4.第一方面涉及一种解码器实现的方法,包括:所述解码器接收包括序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)和与子图像标识符(identifier,id)映射相关联的多个子图像的码流,其中,所述sps包括sps标志;所述解码器确定所述sps标志是具有第一值还是第二值,其中,所述sps标志具有所述第一值表示所述子图像id映射在所述sps中指示,并且所述sps标志具有所述第二值表示所述子图像id映射在所述pps中指示;当所述sps标志具有所述第一值时,所述解码器从所述sps获取所述子图像id映射,当所述sps标志具有所述第二值时,所述解码器从所述pps获取所述子图像id映射;所述解码器使用所述子图像id映射对所述多个子图像进行解码。
5.该方法提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
6.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述pps包括pps标志,所述方法还包括:所述解码器确定所述pps标志是具有所述第一值还是所述第二值,
其中,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有所述第二值表示所述子图像id映射不在所述pps中指示;当所述pps标志具有所述第一值时,所述解码器从所述pps获取所述子图像id映射。
7.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:当所述pps标志具有所述第二值时,所述sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述sps标志具有所述第二值。
8.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一值为1,所述第二值为0。
9.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述sps包括第二sps标志,所述第二sps标志表示所述子图像id映射是在所述sps中还是在所述pps中显式指示。
10.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流还包括编码视频序列(coded video sequence,cvs)改变标志,所述cvs改变标志表示是否允许所述子图像id映射在所述码流的编码视频序列(coded video sequence,cvs)内改变。
11.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流包括融合码流,并且所述子图像id映射在所述码流的所述cvs内已经改变。
12.第二方面涉及一种编码器实现的方法,所述方法包括:编码器对包括序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)和与子图像标识符(identifier,id)映射相关联的多个子图像的码流进行编码,其中,所述sps包括sps标志;当所述子图像id映射在所述sps中指示时,所述编码器将所述sps标志设置为第一值,当所述子图像id映射在所述pps中指示时,所述编码器将所述sps标志设置为第二值;所述解码器存储所述码流,以传送给编码器。
13.该方法提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
14.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:当所述子图像id映射在所述pps中指示时,所述编码器将所述pps中的pps标志设置为所述第一值,当所述子图像id映射不在所述pps中指示时,所述编码器将所述pps中的所述pps标志设置为所述第二值。
15.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:当所述pps标志具有所述第二值时,所述sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述sps标志具有所述第二值。
16.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一值为1,所述第二值为0。
17.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述sps包括第二sps标志,所述第二sps标志表示所述子图像映射是在所述sps中还是在所述pps中显式指示。
18.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流还包括编码视频序列(coded video sequence,cvs)改变标志,所述cvs改变标志表示所述子图像id映射是否可以在所述码流的编码视频序列(coded video sequence,cvs)内改变。
19.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流包括融合码流,并且所述子图像id映射在所述码流的所述cvs内已经改变。
20.第三方面涉及一种解码设备,所述解码设备包括:接收器,用于接收包括序列参数集(sequenceparameter set,sps)、图像参数集(picture parameter set,pps)和与子图像标识符(identifier,id)映射相关联的多个子图像的码流,其中,所述sps包括sps标志;耦合到所述接收器的存储器,所述存储器存储指令;耦合到所述存储器的处理器,所述处理器用于执行所述指令,以使所述解码设备执行以下操作:确定所述sps标志是具有第一值还是第二值,其中,所述sps标志具有所述第一值表示所述子图像id映射在所述sps中指示,并且所述sps标志具有所述第二值表示所述子图像id映射在所述pps中指示;当所述sps标志具有所述第一值时,从所述sps获取所述子图像id映射,当所述sps标志具有所述第二值时,从所述pps获取所述子图像id映射;使用所述子图像id映射解码所述多个子图像。
21.该解码设备提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
22.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:当所述pps标志具有所述第二值时,所述sps标志具有所述第一值,当所述pps标志具有所述第一值时,所述sps标志具有所述第二值,其中,所述第一值为1,所述第二值为0。
23.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述sps包括第二sps标志,所述第二sps标志表示所述子图像映射是在所述sps中还是在所述pps中显式指示。
24.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流还包括编码视频序列(coded video sequence,cvs)改变标志,所述cvs改变标志表示所述子图像id映射是否可以在所述码流的编码视频序列(coded video sequence,cvs)内改变。
25.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流包括融合码流,并且所述子图像id映射在所述码流的所述cvs内已经改变。
26.第四方面涉及一种编码设备,所述编码设备包括:包括指令的存储器;耦合到所述存储器的处理器,所述处理器用于实现所述指令,以使所述编码设备执行以下操作:对包括序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)
和与子图像标识符(identifier,id)映射相关联的多个子图像的码流进行编码,其中,所述sps包括sps标志;当所述子图像id映射在所述sps中指示时,将所述sps标志设置为第一值,当所述子图像id映射在所述pps中指示时,将所述sps标志设置为第二值;当所述子图像id映射在所述pps中指示时,将所述pps中的pps标志设置为所述第一值,当所述子图像id映射不在所述pps中指示时,将所述pps中的所述pps标志设置为所述第二值;耦合到所述处理器的发送器,所述发送器用于向视频解码器发送所述码流。
27.该编码设备提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
28.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:当所述pps标志具有所述第二值时,所述sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述sps标志具有所述第二值。
29.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一值为1,所述第二值为0。
30.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流还包括编码视频序列(coded video sequence,cvs)改变标志,所述cvs改变标志表示所述子图像id映射是否可以在所述码流的编码视频序列(coded video sequence,cvs)内改变。
31.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:pps id表示正在使用的pps的第二pps id的值,并且所述第二pps id标识供语法元素参考的所述pps。
32.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流包括融合码流,并且所述子图像id映射在所述码流的所述cvs内已经改变。
33.第五方面涉及一种译码装置。所述译码装置包括:接收器,用于接收用于编码的图像或接收用于解码的码流;耦合到所述接收器的发送器,所述发送器用于向解码器发送所述码流或向显示器发送解码图像;耦合到所述接收器或所述发送器中的至少一个的存储器,所述存储器用于存储指令;耦合到所述存储器的处理器,所述处理器用于执行存储在所述存储器中的所述指令,以执行本文公开的任一种方法。
34.该译码装置提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
35.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述译码装置还包括显示器,所述显示器用于显示图像。
36.第六方面涉及一种系统。所述系统包括:编码器;与所述编码器通信的解码器,其中,所述编码器或所述解码器包括本文公开的所述解码设备、所述编码设备或所述译码装置。
37.该系统提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
38.第七方面涉及一种译码模块。所述译码模块包括:接收模块,用于接收用于编码的图像或接收用于解码的码流;耦合到所述接收模块的发送模块,所述发送模块用于将所述码流发送到解码模块或将解码图像发送到显示模块;耦合到所述接收模块或所述发送模块中的至少一个的存储模块,所述存储模块用于存储指令;耦合到所述存储模块的处理模块,所述处理模块用于执行存储在所述存储模块中的所述指令,以执行本文公开的任一种方法。
39.该译码模块提供的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
40.为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本发明范围内的新实施例。
41.根据以下具体实施方式结合附图和权利要求书能更清楚地理解这些和其它特征。
附图说明
42.为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相同的附图标记表示相同的部件。
43.图1为对视频信号进行译码的示例性方法的流程图。
44.图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
45.图3为示例性视频编码器的示意图。
46.图4为示例性视频解码器的示意图。
47.图5为包括经编码的视频序列的示例性码流的示意图。
48.图6a-图6e示出了用于创建提取器轨迹的示例性机制,用于将来自不同码流的多个分辨率的子图像组合为用于虚拟现实(virtual reality,vr)应用中的单个图像。
49.图7a-图7e示出了用于根据vr应用中观看方向的变化更新提取器轨迹的示例性机制。
50.图8为对经译码视频码流进行解码的方法的实施例。
51.图9为对经译码视频码流进行编码的方法的实施例。
52.图10为视频译码设备的示意图。
53.图11为译码模块的实施例的示意图。
具体实施方式
54.首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任何数量的技术来实现,无论该技术是当前已知的技术还是现有的技术。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
55.以下术语的定义如下所示,除非在本文相反的上下文中使用。具体地,以下定义旨在更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,而不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。
56.码流是包括视频数据的一系列比特,这些视频数据会进行压缩以在编码器和解码器之间传输。编码器是一种用于通过编码过程将视频数据压缩为码流的设备。解码器是一种用于通过解码过程从码流中重建视频数据以进行显示的设备。图像是创建帧或其场的亮度样本和/或色度样本组成的阵列。为了清楚讨论,正在编码或解码的图像可以称为当前图像。参考图像是包括参考样本的图像,这些样本可以在根据帧间预测和/或层间预测对其它图像进行译码时供参考使用。参考图像列表是用于帧间预测和/或层间预测的参考图像列表。一些视频译码系统使用两个参考图像列表,这两个参考图像列表可以表示为参考图像列表1和参考图像列表0。参考图像列表结构是包括多个参考图像列表的可寻址语法结构。帧间预测是通过参考与当前图像不同的参考图像中的指示样本,对当前图像的样本进行译码的机制,其中,参考图像和当前图像在同一层中。参考图像列表结构条目是参考图像列表结构中表示与参考图像列表相关的参考图像的可寻址位置。条带头(slice header)是经译码条带的一部分,包括与条带中表示的一个分块内的所有视频数据相关的数据元素。序列参数集(sequence parameter set,sps)是包括与图像序列相关的数据的参数集。图像参数集(picture parameter set,pps)是一种语法结构,包括适用于0个或多个完整的译码图像的语法元素,所述0个或多个完整的译码图像由每个图像头中存在的语法元素确定。
57.标志是一个变量或单比特语法元素,可以取两个可能值(0和1)之一。子图像是图像内一个或多个条带的矩形区域。子图像标识符(identifier,id)是唯一标识子图像的数字、字母或其它标记。子图像id(又名分块(tile)标识符)用于使用子图像索引标识特定子图像,在此可称为子图像id映射。换句话说,子图像id映射是一个表,它提供了子图像索引列表与子图像id之间的一对一映射。即,子图像id映射为每个子图像提供不同的子图像id。
58.接入单元(access unit,au)是与相同显示时间(例如,相同图像顺序编号)关联的一个或多个经译码图像的集合,用于从解码图像缓冲区(decoded picture buffer,dpb)输出(例如,用于显示给用户)。接入单元分隔符(access unit delimiter,aud)是一种指示符或数据结构,用于表示au的开始或au之间的边界。经解码的视频序列是一系列已经由解码器重建以准备显示给用户的图像。
59.cvs是接入单元(access unit,au)的序列,其按解码顺序包括编码视频序列开始(coded video sequence start,cvss)au,之后跟0个或多个不是cvss au的au,这些不是cvss au的au包括直至但不包括任何是cvss au的后续au的所有后续au。cvss au是其中视频参数集(video parameter set,vps)指定的每一层都有预测单元(prediction unit,pu)并且每个pu中的译码图像是clvss图像的au。在一个实施例中,每个图像都在au内。pu是网络抽象层(network abstraction layer,nal)单元的集合,这些nal单元根据指定的分类规则相互关联,按解码顺序连续,并且只包括一个译码图像。
60.本文中采用以下缩略词:自适应环路滤波器(adaptive loopfilter,alf)、编码树块(coding treeblock,ctb)、编码树单元(coding treeunit,ctu)、编码单元(coding unit,cu)、编码视频序列(coded video sequence,cvs)、解码图像缓冲区(decoded picture buffer,dpb)、解码即时刷新(instantaneous decoding refresh,idr)、帧内随机接入点(intra-random access point,irap)、联合视频专家组(joint video experts team,jvet)、最低有效位(1east significant bit,lsb)、最高有效位(most significant bit,msb)、运动约束分块集(motion-constrained tile set,mcts)、最大传输单元(maximum transfer unit,mtu)、网络抽象层(network abstraction layer,nal)、图像顺序编号(picture order count,poc)、图像参数集(picture parameter set,pps)、原始字节序列载荷(raw byte sequence payload,rbsp)、样本自适应偏移(sample adaptive offset,sao)、序列参数集(sequence parameter set,sps)、时间运动矢量预测(temporal motion vector prediction,tmvp)、通用视频编码(versatile video coding,vvc)和工作草案(working draft,wd)。
61.许多视频压缩技术可以用来减小视频文件的大小,同时尽量减少数据丢失。例如,视频压缩技术可以包括执行空间(例如帧内)预测和/或时间(例如帧间)预测以减少或去除视频序列中的数据冗余。对于基于块的视频译码,可以将视频条带(slice)(例如视频图像或视频图像的一部分)分割成视频块,视频块也可以称为树块、编码树块(codingtree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)和/或编码节点。图像的帧内译码(i)条带中的视频块参照同一个图像内邻块中的参考样本使用空间预测进行译码。图像的经帧间译码的单向预测(p)或双向预测(b)条带中的视频块可以参照同一个图像内邻块中的参考样本使用空间预测进行译码,或者参照其它参考图像内的参考样本使用时间预测进行译码。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。相应地,帧间译码块根据运动矢量和残差数据进行编码,其中,运动矢量指向组成预测块的参考样本的块,残差数据表示编码块与预测块之间的差值。经帧内译码块是根据帧内译码模式和残差数据进行编码的。为了进一步压缩,残差数据可以从像素域变换到变换域,从而产生残差变换系数,该残差变换系数可以量化。量化变换系数最初
可以以二维阵列排列。可以扫描量化变换系数,以产生变换系数的一维矢量。可以应用熵编码以实现进一步压缩。下面详细描述这种视频压缩技术。
62.为了确保经编码视频能够正确解码,根据对应的视频编码标准对视频进行编码和解码。视频编码标准包括国际电信联盟标准化部门(international telecommunication union(itu)standardization sector,itu-t)h.261、国际标准化组织/国际电工委员会(international organization for standardization/international electrotechnical commission,iso/iec)运动图像专家组(motion picture experts group,mpeg)-1第2部分、itu-t h.262或iso/iec mpeg-2第2部分、itu-t h.263、iso/iec mpeg-4第2部分、高级视频编码(advanced video coding,avc)(也称为itu-t h.264或iso/iec mpeg-4第10部分),以及高效视频编码(high efficiency video coding,hevc)(也称为itu-t h.265或mpeg-h第2部分)。avc包括可适性视频编码(scalable video coding,svc)、多视点视频编码(multiview video coding,mvc)和多视点视频编码加深度(multiview video coding plus depth,mvc+d)以及三维(three dimensional,3d)avc(3d-avc)等扩展版。hevc包括可适性hevc(scalable hevc,shvc)、多视点hevc(multiview hevc,mv-hevc)、3d hevc(3d-hevc)等扩展版。
63.还有一个新的视频编码标准,名为通用视频编码(versatile video coding,vvc),正在由itu-t和iso/iec的联合视频专家组(joint video experts team,jvet)开发。虽然vvc标准有多个工作草案,但本文参考的是vvc的其中一个工作草案(working draft,wd),即b.bross、j.chen和s.liu,“通用视频编码(草案5)(versatilevideo coding(draft 5))”,jvet-n1001-v3,第13届jvet会议,2019年3月27日(vvc草案5)。
64.hevc包括四种不同的图像分割方案,即常规条带、非独立条带、分块和波前并行处理(wavefront parallel processing,wpp)。这些方案可以应用于最大传输单元(maximum transfer unit,mtu)大小匹配、并行处理和降低端到端时延。
65.hevc中的常规条带与h.264/avc中的类似。每个常规条带都封装在自身的nal单元中。禁用帧内预测(帧内样本预测、运动信息预测、编码模式预测)和跨条带边界的熵编码依赖性。因此,常规条带可以不依赖于同一个图像内的其它常规条带进行重建(但是由于存在环路滤波操作,所以仍然可能存在相互依赖性)。
66.常规条带为并行化可以使用的唯一工具,它在h.264/avc中也以几乎相同的形式存在。基于常规条带的并行化不需要太多的处理器间或核间通信(除在解码经预测译码图像时针对运动补偿进行处理器间或核间数据共享的情况之外,这种情况通常比由于帧内预测而进行的处理器间或核间数据共享需要更多的通信)。然而,出于同样的原因,使用常规条带时可能会由于条带头的比特成本以及缺乏跨条带边界的预测而产生大量译码开销。此外,由于常规条带具有帧内独立性以及每个常规条带都封装在自身的nal单元中,所以常规条带(与下文提到的其它工具相比)还充当用于码流分割的关键机制,以匹配mtu大小需求。在许多情况下,为了实现并行化和mtu大小匹配的目标,图像内的条带布局会互相矛盾。所以实现这种情况需要开发下文提到的并行化工具。
67.相关条带具有缩短的条带头,并且支持在不中断任何帧内预测的情况下在树块边界处分割码流。基本上,相关条带将常规条带分割为多个nal单元,这通过在整个常规条带的编码完成之前发送常规条带的一部分,降低端到端时延。
68.在wpp中,将图像分割为单行编码树块(coding tree block,ctb)。熵解码和预测可以使用来自其它分割部分中的ctb的数据。通过对ctb行进行并行解码,可以进行并行处理,其中,对ctb行的解码的开始时间会有两个ctb时延。这种时延确保了在对当前ctb进行解码之前,与当前ctb上方和右侧的ctb相关的数据可用。采用这种交错开始的方法(用图形表示时,这种方法表现为一种波前),可以支持使用与图像包括的ctb行数一样多的处理器/核进行并行处理。由于支持在图像内的相邻树块行之间进行帧内预测,所以可能需要进行大量的处理器/核间通信来实现帧内预测。与不使用wpp分割的情况相比,使用wpp分割不会产生额外的nal单元。因此,wpp不是进行mtu大小匹配的工具。但是,常规条带可以与wpp结合使用,以根据需要实现mtu大小匹配,这需要一定的译码开销。
69.分块是图像中由水平和垂直边界创建的分割部分,这些边界创建了分块的列和行。在按照图像的分块光栅扫描顺序对下一个分块中的左上方ctb进行解码之前,ctb的扫描顺序改为在分块内部进行(按分块的ctb光栅扫描顺序)。与常规条带类似,分块消除了帧内预测依赖性以及熵解码依赖性。但是,这些分块可以不包含在各个独立nal单元中(在这方面与wpp相同),因此,分块可以不用于进行mtu大小匹配。每个分块可以由一个处理器/核处理,解码相邻分块的处理单元之间的帧内预测所需的处理器间/核间通信仅限于发送共享的条带头(如果条带跨越一个以上分块)以及共享与环路滤波相关的重建样本和元数据。当条带中包括一个以上分块或wpp段时,除条带中的第一个分块或wpp段之外,还可以在条带头中指示每个分块或wpp段的入口点字节偏移。
70.为了简化,hevc对四种不同的图像分割方案的应用作了限制。给定的编码视频序列不能同时包括分块和hevc中规定的大多数档次(profile)的波前并行处理。对于每个条带和分块,必须满足以下条件中的任一个或两个条件:(1)条带中的所有编码树块属于同一个分块;(2)分块中的所有编码树块属于同一个条带。最后,波前段仅包括一个ctb行,当使用wpp时,如果一个条带从ctb行开始,则该条带必须在同一个ctb行结束。
71.j.boyce、a.ramasubramonian、r.skupin、g.j.sullivan、a.tourapis、y.-k.wang等人编辑的jct-vc输出文档jctvc-ac1005《hevc附加补充增强信息(草案4)》(2017年10月24日)对hevc最近的一项修改作了具体说明。可以从以下链接获取草案的公开版本:http://phenix.int-evry.fr/jct/doc_end_user/documents/29_macau/wg11/jctvc-ac1005-v2.zip。包括此修改在内,hevc规定了三个mcts相关的补充增强信息(supplemental enhancement information,sei)消息,分别是时间mcts sei消息、mcts提取信息集sei消息和mcts提取信息嵌套sei消息。
72.时间mcts sei消息表示码流中存在mcts并指示mcts。对于每个mcts,运动矢量被约束为指向mcts内部的全样本位置和指向分数样本位置,这些分数样本位置仅需要mcts内部的全样本位置进行插值。此外,不允许将运动矢量候选用于从mcts外部的块推导的时间运动矢量预测。这样,在mcts中不包括分块的情况下,每个mcts可以独立解码。
73.mcts提取信息集sei消息提供可用于mcts子码流提取(作为sei消息语义的一部分表示)的补充信息,以生成符合mcts集的码流。该信息包括多个提取信息集,每个提取信息集定义多个mcts集,并且包括在mcts子码流提取过程所使用的替换视频参数集(video parameter set,vps)、sps和pps的rbsp字节。当根据mcts子码流提取过程提取子码流时,需要重写或替换参数集(vps、sps和pps),并且需要略微更新条带头,因为一个或所有条带地
址相关的语法元素(包括first_slice_segment_in_pic_flag和slice_segment_address)通常需要具有不同的值。
74.在最新的vvc草案规范中,图像可以被分割为多个子图像,每个子图像覆盖一个矩形区域,并包括整数个完整条带。子图像分割在编码视频序列(coded video sequence,cvs)内的所有图像中持续存在,并且分割信息(即子图像位置和大小)在sps中指示。子图像可以被表示为在不使用任何其它子图像的样本值进行运动补偿的情况下被译码。
75.在jvet文稿jvet-o0141(可在以下网址公开查阅:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/13_marrakech/wg11/jvet-m0261-v1.zip)中,子图像设计与最新的vvc草案规范中的子图像设计相似,但有一些差异,其中之一是在sps中显式指示每个子图像的子图像id以及在每个条带头中指示子图像id,以启用基于子图像的子码流提取,而无需改变经译码条带nal单元。在这种方法中,每个子图像的子图像id在cvs中的所有图像中保持不变。
76.先前的论述中提及,应使用用于指示子图像id的不同方法,以便也实现基于子图像的子码流融合,而不需要改变经译码条带nal单元。
77.例如,如下文将全面解释的那样,在视角相关的360度视频流中,客户端选择接收哪些子图像并融合到待解码的码流中。当观看方向改变时,与在观看方向改变之前接收的子图像id值相比,一些子图像id值可以保持不变,而其它子图像id值会改变。因此,当观看方向改变时,解码器在融合码流中接收的子图像id也会改变。
78.考虑的一种方法如下。
79.子图像位置和大小使用(例如)最新vvc草案规范中的语法在sps中指示。分配子图像索引(0到n-1,其中,n是子图像数量)。子图像id到子图像索引的映射存在于pps中,因为该映射可能需要在cvs的中间改变。这可以是i=0到n-1的循环,提供映射到子图像索引i的subpicture_id[i]。当客户端选择一组新的待解码的子图像时,客户端需要重写此子图像id映射。条带头包括编码器选择的子图像id(例如,subpicture_id)(在子码流融合中不需要重写该子图像id)。
[0080]
不利的是,现有的子图像id指示方法存在问题。使用基于子图像的视频译码的许多应用场景都涉及子码流提取,而不涉及子码流融合。例如,每个提取的子码流可以由其自己的解码器实例解码。因此,不需要将提取的子码流融合为一个码流以仅由一个解码器实例解码。在这些场景下,每个子图像的子图像id不会在cvs内改变。因此,子图像id可以在sps中指示。在sps中而不是pps中指示这些子图像id有益于比特节省和会话协商。
[0081]
在涉及子码流提取和子码流融合的应用场景中,子图像id不会在原始码流中的cvs内改变。因此,在sps中指示子图像id支持在sps和条带头中使用子图像id,这对于过程的子码流提取部分非常有用。但是,只有当子图像id在原始码流中的cvs内不改变时,这种方法才可行。
[0082]
本文公开的技术可以确保,在涉及子码流提取和子码流融合的应用场景中,即使子图像id在编码视频序列(coded video sequence,cvs)内改变,也能实现子图像标识符(identifier,id)的高效指示。高效指示是通过以下方式实现的:在序列参数集(sequence parameter set,sps)或图像参数集(picture parameter set,pps)中设置标志来表示cvs中的子图像id是否可以改变,以及如果可以改变,表示子图像id的位置。这减少了冗余,提
高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
[0083]
图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,编码器对视频信号进行编码。编码过程采用各种机制来压缩视频信号以减小视频文件大小。文件较小使得压缩视频文件可以发送给用户,同时降低相关的带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号向终端用户进行显示。解码过程通常是编码过程的逆过程,以使解码器重建的视频信号可以与编码器侧的视频信号保持一致。
[0084]
在步骤101中,将视频信号输入到编码器中。例如,视频信号可以是存储在存储器中的未压缩视频文件。又如,视频文件可以由摄像机等视频捕获设备捕获,并且进行编码以支持视频的直播流传输。视频文件可以包括音频分量和视频分量。视频分量包括一系列图像帧。这些图像帧按顺序观看时,给人以运动的视觉效果。这些帧包括以光表示的像素,在本文中称为亮度分量(或亮度样本),还包括以颜色表示的像素,称为色度分量(或色度样本)。在一些示例中,这些帧还可以包括深度值,以支持三维观看。
[0085]
在步骤103中,将视频分割成块。分割包括将每一帧中的像素细分成方块和/或矩形块,以进行压缩。例如,在高效视频编码(high efficiency video coding,hevc)(还称为h.265和mpeg-h第2部分)中,可以首先将帧划分成编码树单元(coding tree unit,ctu),它们是预定义大小(例如,64个像素
×
64个像素)的块。这些ctu包括亮度样本和色度样本。编码树可以用于将ctu划分成块,然后,重复细分这些块,直到获得支持进一步编码的配置。例如,可以对帧的亮度分量进行细分,直到各个块包括相对均匀的亮度值。此外,帧的色度分量可以细分,直到各个块包括相对均匀的色度值。因此,分割机制因视频帧的内容而异。
[0086]
在步骤105中,采用各种压缩机制对在步骤103中分割的图像块进行压缩。例如,可以采用帧间预测和/或帧内预测。帧间预测是为了利用一般场景中的对象往往出现在连续帧中这一事实而设计的。这样一来,描述参考帧中的对象的块不需要在相邻帧中重复描述。具体地,一个对象(例如一张桌子)可以在多个帧中保持在固定位置上。因此,该桌子被描述一次,而且相邻帧可以重新参考该参考帧。模式匹配机制可以用于在多个帧上匹配对象。此外,由于对象移动或相机移动等原因,移动对象可以跨多个帧表示。在一个具体示例中,视频可以跨多个帧在屏幕上显示移动的汽车。运动矢量可以用来描述这种移动。运动矢量是一个二维矢量,提供对象在一个帧中的坐标到该对象在参考帧中的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为一组运动矢量,表示当前帧中的图像块与参考帧中的对应块的偏移。
[0087]
帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往聚集在一个帧中这一事实。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内预测采用多种方向性预测模式(例如,hevc中有33种)、平面模式和直流(direct current,dc)模式。这些方向性模式表示当前块的样本与对应方向上邻块的样本相似/相同。平面模式表示一行/列(例如,平面)中的一系列块可以根据该行的边缘上的相邻块进行插值。平面模式实际上通过采用变化值的相对恒定的斜率表示光/颜色跨行/列的平稳过渡。dc模式用于边界平滑,并表示块与所有相邻块中的样本的平均值相似/相同,这些相邻块与方向性预测模式的角度方向相关联。相应地,帧内预测块可以将图像块表示为各种关系预测模式值
而不是表示为实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是表示为实际值。在任一种情况下,预测块在一些情况下可能都无法准确表示图像块。任何差异都存储在残差块中。可以对残差块应用变换以进一步压缩文件。
[0088]
在步骤107中,可以应用各种滤波技术。在hevc中,根据环内滤波方案应用滤波器。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以便后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptive offset,sao)滤波器应用于块/帧。这些滤波器减少了块伪影,这样可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,这样伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。
[0089]
一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码到码流中。码流包括上文描述的数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和提供译码指令给解码器的各种标志。码流可以存储在存储器中,以便根据请求向解码器发送。码流还可以广播和/或组播到多个解码器。创建码流是一个迭代过程。相应地,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。
[0090]
在步骤111中,解码器接收码流并开始解码过程。具体地,解码器采用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤11l中,解码器采用码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中采用的熵编码/解码。编码器在压缩过程中做出许多选择,例如,根据一个或多个输入图像中的值的空间放置从若干个可能选择中选择块分割方案。指示确切的选择可能会采用大量的位元(bin)。本文所使用的位元是一个作为变量的二进制值(例如,可能因内容而异的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选项,从而留下一组可用选项。然后,为每个可用选项分配一个码字。码字的长度取决于可用选项的数量(例如,一个位元对应两个选项,两个位元对应三到四个选项,以此类推)。然后,编码器对所选选项的码字进行编码。这种方案减小了码字的大小,这是因为码字与预期的一样大,从而唯一地指示从可用选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定这一组可用选项对这一选择进行解码。通过确定这一组可用选项,解码器可以读取码字并确定编码器做出的选择。
[0091]
在步骤113中,解码器执行块解码。具体地,解码器采用逆变换,以生成残差块。然后,解码器采用残差块和对应的预测块,以根据分割来重建图像块。预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
[0092]
在步骤115中,以类似于编码器侧的步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器可以应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
[0093]
图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以及标头格式和上下文自适应二进制算术编码(context adaptive binary arithmeticcoding,cabac)组件231。这些组件如图所示相耦合。在图2中,黑线表示待编码/解码数据的移动,而虚线表示控制其它组件操作的控制数据的移动。编解码系统200中的组件都可以存在于编码器中。解码器可以包括编解码系统200的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225和解码图像缓冲区组件223。下面对这些组件进行描述。
[0094]
分割后的视频信号201是一个捕获到的已经通过编码树分割成像素块的视频序列。编码树采用各种划分模式将像素块细分成较小的像素块。然后,这些块可以进一步细分成更小的块。这些块可以称为编码树上的节点。较大的父节点划分成较小的子节点。节点进行细分的次数称为节点/编码树的深度。在一些情况下,划分得到的块可以包括在编码单元(coding unit,cu)中。例如,cu可以是ctu的子部分,包括亮度块、一个或多个红差色度(cr)块和一个或多个蓝差色度(cb)块以及cu的对应语法指令。划分模式可以包括二叉树(binary tree,bt)、三叉树(triple tree,tt)和四叉树(quad tree,qt),用于根据所采用的划分模式,分别将节点分割为不同形状的两个、三个或四个子节点。将分割后的视频信号201转发给总体译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227以及运动估计组件221进行压缩。
[0095]
总体译码器控制组件211用于根据应用约束条件做出与将视频序列中的图像编码到码流中相关的决策。例如,总体译码器控制组件211管理码率/码流大小相对于重建质量的优化。可以根据存储空间/带宽可用性和图像分辨率请求做出此类决策。总体译码器控制组件211还根据传输速度管理缓冲区利用率,以缓解缓存欠载和超载问题。为了解决这些问题,总体译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,总体译码器控制组件211可以动态地提高压缩复杂度以提高分辨率和增加带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,总体译码器控制组件211控制编解码系统200的其它组件来平衡视频信号重建质量与码率问题。总体译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据转发给标头格式和cabac组件231,以编码到码流中,从而指示解码器进行解码时使用的参数。
[0096]
还将分割后的视频信号201发送给运动估计组件221和运动补偿组件219进行帧间预测。可以将分割后的视频信号201的帧或条带划分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块进行帧间预测译码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为每个视频数据
块选择合适的译码模式,等等。
[0097]
运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的,单独说明运动估计组件221和运动补偿组件219。由运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示经译码对象相对于预测块的位移。预测块是被发现在像素差方面与待编码块紧密匹配的块。预测块还可以称为参考块。这种像素差可以通过绝对差异和(sum of absolutedifference,sad)、平方差异和(sum ofsquare difference,ssd)或其它差异度量来确定。hevc采用若干个经译码对象,包括ctu、编码树块(coding tree block,ctb)和cu。例如,可以将ctu分成多个ctb,然后可以将ctb划分为多个cb包括在cu中。可以将cu编码为包括预测数据的预测单元(prediction unit,pu)和/或包括cu的变换残差数据的变换单元(transform unit,tu)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、pu和tu。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡了视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
[0098]
在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将pu的位置与参考图像的预测块的位置进行比较,计算经帧间译码条带中的视频块的pu的运动矢量。运动估计组件221将计算得到的运动矢量作为运动数据输出到标头格式和cabac组件231进行编码,并作为运动数据输出到运动补偿组件219。
[0099]
运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。另外,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的pu的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,从正在译码的当前视频块的像素值中减去预测块的像素值,得到像素差值,从而形成残差视频块。一般而言,运动估计组件221相对于亮度分量执行运动估计,而运动补偿组件219将根据亮度分量计算得到的运动矢量用于色度分量和亮度分量。将预测块和残差块转发到变换缩放和量化组件213。
[0100]
还将分割后的视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的,单独说明帧内估计组件215和帧内预测组件217。帧内估计组件215和帧内预测组件217相对于当前帧中的块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式,用于对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式来对当前块进行编码。然后,将选定的帧内预测模式转发给标头格式和cabac组件231进行编码。
[0101]
例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码块与经编码以产生经编码块的原始未编码块之间的失真(或误差)量,以及确定用于
产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用于根据率失真优化(rate-distortion optimization,rdo),使用深度建模模式(depth modeling mode,dmm)对深度图像的深度块进行译码。
[0102]
帧内预测组件217在编码器上实现时,可以根据由帧内估计组件215确定的选定帧内预测模式从预测块中生成残差块,或者在解码器上实现时,可以从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
[0103]
变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)等变换或者概念上类似的变换应用于残差块,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,以便在不同的粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。该量化过程可以减小与部分或全部系数相关的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵进行扫描。将量化变换系数转发给标头格式和cabac组件231,以编码到码流中。
[0104]
缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块。例如,残差块后续用作参考块。该参考块可以成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。滤波器用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
[0105]
滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,滤波器可以用于重建图像块。在一些示例中,滤波器还可以应用于残差块。如同图2中的其它组件,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实现,但出于概念目的,单独描述滤波器控制分析组件227和环内滤波器组件225。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据作为滤波器控制数据转发给标头格式和cabac组件231进行编码。环内滤波器组件225根据滤波器控制数据使用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、sao滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空域/像素域(例如,针对重建像素块)或频域中。
[0106]
当作为编码器操作时,将经滤波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供后续用于运动估计,如上所述。当作为解码器操作时,解码图像缓
冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
[0107]
标头格式和cabac组件231从编解码系统200的各种组件接收数据,并将这些数据编码到经编码码流中,以发送给解码器。具体地,标头格式和cabac组件231生成各种标头以对控制数据(如总体控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测数据和运动数据)以及以量化变换系数数据为形式的残差数据都编码到码流中。最终的码流包括解码器重建原始分割后的视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能的帧内预测模式的指示、分割信息的指示等。这些数据可以采用熵编码进行编码。例如,这些信息可以采用上下文自适应可变长度编码(context adaptive variable length coding,cavlc)、cabac、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)编码或其它熵编码技术来编码。在熵编码之后,可以将经编码码流发送给另一设备(例如,视频解码器)或存档以供后续发送或检索。
[0108]
图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或执行操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到分割后的视频信号301,其基本上类似于分割后的视频信号201。然后,通过编码器300中的组件压缩分割后的视频信号301并将其编码到码流中。
[0109]
具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割后的视频信号301转发给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313进行残差块的变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将变换量化残差块和对应的预测块(连同相关的控制数据)转发给熵编码组件331,以编码到码流中。熵编码组件331可以基本上类似于标头格式和cabac组件231。
[0110]
还将变换量化残差块和/或对应的预测块从变换和量化组件313转发给逆变换和反量化组件329,以重建为参考块供运动补偿组件321使用。逆变换和反量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,还将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如参照环内滤波器组件225所述。然后,将经滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
[0111]
图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或执行操作方法100中的步骤111、步骤113、步骤115和/或步骤117。解码器400从编码器300等接收码流,并根据码流生成重建输出视频信号,以向终端用户显示。
[0112]
码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如cavlc、
cabac、sbac、pipe解码或其它熵解码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解析在码流中编码为码字的附加数据。经解码信息包括对视频信号进行解码所需的任何信息,例如,通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和反量化组件429,以重建为残差块。逆变换和反量化组件429可以类似于逆变换和反量化组件329。
[0113]
将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块应用到上述结果中以重建帧内预测图像块。将重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块转发给运动补偿组件421,以进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果中以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号输出到显示器。
[0114]
图5为包括经编码的视频序列的示例性码流500的示意图。例如,码流500可以由编解码系统200和/或编码器300生成,由编解码系统200和/或解码器400进行解码。在另一示例中,在方法100的步骤109中,码流500可以由编码器生成,由解码器在步骤111中使用。
[0115]
码流500包括序列参数集(sequence parameter set,sps)510、多个图像参数集(picture parameter sets,pps)512、分块组头514和图像数据520。sps 510包括码流500中包括的视频序列中的所有图像共有的序列数据。这些数据可以包括图像大小、位深度、译码工具参数、码率限制等。在一个实施例中,sps 510包括sps标志565。在一个实施例中,sps标志565具有第一值(例如,1)或第二值(例如,0)。sps标志565具有第一值表示子图像id映射575在sps 510中指示,sps标志565具有第二值表示子图像id映射575在pps 512中指示。
[0116]
pps 512包括一个或多个对应图像的特定参数。因此,视频序列中的每个图像可以参考一个pps 512。pps 512可以表示对应图像中的分块可使用的译码工具、量化参数、偏移、图像专用译码工具参数(例如滤波器控制参数)等。在一个实施例中,pps 512包括pps标志567。在一个实施例中,pps标志567具有第一值(例如,1)或第二值(例如,0)。pps标志567具有第一值表示子图像id映射575在pps 512中指示,pps标志567具有第二值表示子图像id映射575不在pps512中指示。
[0117]
分块组头514包括图像中的每个分块组特定的参数。因此,视频序列中的每个分块组可以有一个分块组头514。分块组头514可以包括分块组信息、图像顺序编号(pictureordercount,poc)、参考图像列表、预测权重、分块入口点、去块效应滤波参数等。需要说明的是,一些系统将分块组头514称为条带头,并使用这些信息来支持条带而不是分块组。
[0118]
图像数据520包括根据帧间预测和/或帧内预测进行编码的视频数据以及对应的变换量化残差数据。这些图像数据520根据编码之前对图像进行分割的分割类型进行分类。例如,图像数据520中的图像包括一个或多个图像521。图像的序列或系列527可以称为cvs 527。本文所使用的cvs 527是接入单元(access unit,au)的序列,其按解码顺序包括编码视频序列开始(coded video sequence start,cvss)au,之后跟0个或多个不是cvss au的au,这些不是cvss au的au包括直至但不包括任何是cvss au的后续au的所有后续au。cvss au是其中视频参数集(video parameter set,vps)指定的每一层都有预测单元(prediction unit,pu)并且每个pu中的译码图像是clvss图像的au。在一个实施例中,每个图像521都在au内。pu是nal单元的集合,这些nal单元根据指定的分类规则相互关联,按解码顺序连续,并且只包括一个译码图像。
[0119]
cvs是视频码流中每个编码层视频序列(coded layer video sequence,clvs)的编码视频序列。需要说明的是,当视频码流包括单层时,cvs和clvs相同。cvs和clvs仅在视频码流包括多个层时不同。
[0120]
图像521中的每一个图像可以被划分为分块523。分块523是由水平边界和垂直边界产生的图像的分割部分。分块523可以是矩形和/或正方形。具体地,分块523包括四个边,这些边以直角连接。这四个边包括两对平行的边。此外,平行边对中的两个边的长度相等。因此,分块523可以是任何矩形形状,其中,正方形是矩形的特殊情况,四个边的长度都相等。图像(image/dicture)可以包括一个或多个分块523。
[0121]
图像(例如,图像521)可以分割成分块523行和列。分块行是以水平相邻的方式定位的分块523集,以创建从图像的左边界到右边界(或反之亦然)的连续行。分块列是以垂直相邻的方式定位的分块523集,以创建从图像的顶部边界到底部边界(或反之亦然)的连续行。
[0122]
根据示例,分块523可以支持,也可以不支持基于其它分块523进行预测。每个分块523在图像中可以具有唯一的分块索引。分块索引是可以用于将一个分块523与其它分块区分开的程序选择的数字标识符。例如,分块索引可以按光栅扫描顺序增加数值。光栅扫描顺序为从左到右,从上到下。
[0123]
需要说明的是,在一些示例中,也可以为分块523分配分块标识符(identifier,id)。分块id是可以用于将一个分块523与其它分块区分开的分配标识符。在一些示例中,计算可以使用分块id而不是分块索引。此外,在一些示例中,可以为分块id分配与分块索引相同的值。可以对分块索引和/或分块id进行指示,以表示包括分块523的分块组。例如,可以使用分块索引和/或分块id将与分块523相关联的图像数据映射到适当位置进行显示。分块组是分块523的相关集,可以单独提取和译码,例如以支持显示感兴趣区域和/或支持并行处理。分块组中的分块523可以在不参考分块组之外的分块523的情况下进行译码。每个分块523可以分配给对应的分块组,因此图像可以包括多个分块组。
[0124]
分块523进一步划分为编码树单元(coding tree unit,ctu)。ctu根据编码树进一步被划分为编码块。然后,编码块可以根据预测机制进行编码/解码。
[0125]
图6a-图6e示出了用于创建提取器轨迹610(又名融合码流)的示例性机制600,用于将来自不同码流的多个分辨率的子图像组合为用于虚拟现实(virtual reality,vr)应用中的单个图像。机制600可以用于支持方法100的示例性使用情况。例如,机制600可以用
于生成码流500,该码流500用于从编解码系统200和/或编码器300发送到编解码系统200和/或解码器400。在一个具体示例中,机制600可以用于与vr、全向媒体格式(ominidirectional media format,omaf)、360度视频等结合使用。
[0126]
在vr中,只向用户显示一部分视频。例如,可以将vr视频拍摄成包括围绕用户的球体。用户可以使用头戴式显示器(head mounted display,hmd)来观看vr视频。用户可以将hmd指向感兴趣区域。将感兴趣区域显示给用户,并且舍弃其它视频数据。这样一来,用户在任何时刻只观看用户选择的vr视频的一部分。这种方法模拟用户感知,从而使得用户以模拟真实环境的方式体验虚拟环境。这种方法的问题之一是:虽然可以将整个vr视频发送给用户,但是实际上只使用视频的当前视角,而不使用其余视角。为了提高流应用的指示效率,可以以更高的第一分辨率传输用户的当前视角,以较低的第二分辨率传输其它视角。这样一来,可能舍弃的视角占用的带宽比用户可能观看的一个或多个视角占用的带宽要小。在用户选择新视角的情况下,在解码器请求以较高的第一分辨率发送不同的当前视角之前,可以显示较低分辨率的内容。如图6e所示,机制600可以用于创建提取器轨迹610以支持该功能。提取器轨迹610是以多个分辨率封装图像(例如图像521)以按如上所述进行使用的图像数据的轨迹。
[0127]
分别如图6a和图6b所示,机制600以第一分辨率611和第二分辨率612对相同的视频内容进行编码。在一个具体示例中,第一分辨率611可以是5120
×
2560个亮度样本,第二分辨率612可以是2560
×
1280个亮度样本。可以分别将视频的图像分割为第一分辨率611的分块601和第二分辨率612的分块603。本文所使用的分块可以称为子图像。在所示的示例中,分块601和603分别分割为4
×
2网格。此外,可以针对每个分块601和603位置对mcts进行译码。第一分辨率611的图像和第二分辨率612的图像各自产生mcts序列,该mcts序列描述对应分辨率下视频随时间的变化。存储每个译码mcts序列,作为子图像轨迹或分块轨迹。然后,机制600可以使用这些图像来创建段,以支持视角自适应mcts选择。例如,会考虑导致高分辨率mcts和低分辨率mcts的不同选择的每个观看方向范围。在所示的示例中,获取包括第一分辨率611的mcts的四个分块601和包括第二分辨率612的mcts的四个分块603。
[0128]
然后,机制600可以为每个可能的视角自适应mcts选择创建提取器轨迹610。图6c和图6d示出了示例性视角自适应mcts选择。具体地,分别以第一分辨率611和第二分辨率612选择一组选定的分块605和607。以灰色阴影示出选定的分块605和607。在所示的示例中,在用户选择新视角时,选定的分块605是待向用户显示的第一分辨率611的分块601,并且选定的分块607是可能被舍弃但仍保留着以支持显示的第二分辨率612的分块603。然后,将选定的分块605和607组合成同时包括第一分辨率611和第二分辨率612的图像数据的单个图像。组合这些图像以创建提取器轨迹610。为了便于说明,图6e示出了来自对应提取器轨迹610的单个图像。如图所示,提取器轨迹610中的图像包括第一分辨率611和第二分辨率612的选定的分块605和607。如上所述,图6c-图6e示出了单个视角自适应mcts选择。为了使用户能够选择任何视角,应针对选定的分块605和607的每个可能组合创建提取器轨迹610。
[0129]
在所示的示例中,封装第二分辨率612码流的内容的每个分块603选择包括两个条带。regionwisepackingbox可以包括在提取器轨迹610中,以创建打包图像与等距矩形投影(equirectangular projection,erp)格式的投影图像之间的映射。在本示例中,从提取器轨迹610中解析出的码流的分辨率为3200
×
2560。因此,支持四千个样本(4k)的解码器可以
对内容进行解码,其中,视角是从具有五千个样本5k(5120
×
2560)分辨率的经译码码流中提取的。
[0130]
如图6c所示,在第一分辨率611下的选定分块605(以灰色示出)具有以下分块标识符:10、11、14和15。本文所使用的分块标识符也可以称为子图像标识符。在第二分辨率612下的选定分块607具有以下标识符:1、5、4和8。因此,提取器轨迹610包括以下分块标识符:10、11、14、15、1、5、4和8。分块标识符用于使用子图像索引标识特定子图像,该子图像索引在此可称为子图像id映射。
[0131]
图7a-图7e示出了用于创建提取器轨迹710的示例性机制700,用于当用户已经相对于针对图6a-图6e选择的视角改变视角时,将来自不同码流的多个分辨率的子图像组合成单个图像,以便在vr应用中使用。即,图7a-图7e示出了当cvs内的观看方向改变时,如何创建新的提取器轨迹710,所述cvs包括提取器轨迹610和提取器轨迹710。
[0132]
如图7a-图7b所示,视频的图像已分别被分割为第一分辨率711的分块701和第二分辨率712的分块703。然而,机制700中的观看方向相对于机制600发生了改变。因此,如图7c-图7d中所示,在第一分辨率711下的选定分块705(以灰色示出)现在具有以下分块标识符:9、10、13和14,在第二分辨率712下的选定分块707现在具有以下标识符:3、4、7和8。因此,由于观看方向改变,提取器轨迹710包括以下分块标识符:3、4、7、8、9、10、13和14。
[0133]
当正在发送的cvs包括一组恒定的子图像时,相关的子图像id将保留在sps中(所有其它的子图像id都将被删除)。当融合发生时(例如,为了形成提取器轨迹610或710中的一个),子图像id被移动到pps。在任一种情况下,都会在码流中设置标志,以表示子图像id当前所在的位置。
[0134]
通常,当观看方向发生改变时,必须发送新的irap图像。irap图像是所有vcl nal单元具有相同值的nal单元类型的译码图像。irap图像提供以下两个重要的功能/优点。第一,irap图像的存在表示解码过程可以从该图像开始。该功能支持随机接入特征,其中,解码过程从码流中的一个位置开始,而不一定从码流的起始开始,前提是trap图像存在于该位置上。其次,irap图像的存在刷新解码过程,使得从irap图像开始的经译码图像(不包括跳过随机接入前置(random access skidped leading,rasl)图像)在不参考先前图像的情况下被译码。因此,在码流中存在irap图像可以防止在对irap图像之前的经译码图像进行解码期间可能发生的任何错误传播到irap图像以及解码顺序中跟在irap图像之后的那些图像。
[0135]
虽然irap图像提供了重要的功能,但这些irap图像会降低压缩效率。irap图像的存在导致码率激增。这种对压缩效率的降低归因于两个原因。首先,由于irap图像是帧内预测图像,当与作为帧间预测图像的其它图像(例如,前置图像、后置图像)相比时,该图像将需要相对更多的比特来表示。其次,因为irap图像的存在破坏了时间预测(这是因为解码器将刷新解码过程,其中,解码过程的动作之一是删除解码图像缓冲区(decoded picture buffer,dpb)中的先前参考图像),所以irap图像导致在解码顺序中跟在irap图像之后的图像的译码效率较低(即,需要更多的比特来表示),这是因为这些图像具有较少参考图像来进行其帧间预测译码。
[0136]
在一个实施例中,irap图像称为清理随机接入(clean random access,cra)图像或伴随可解码随机接入(random access decodable,radl)图像的即时解码刷新
(instantaneous decoder refresh,idr)图像。在hevc中,idr图像、cra图像和断点连接接入(broken link access,bla)图像都认为是irap图像。对于vvc,在2018年10月的第12届jvet会议上,同意将idr和cra图像作为irap图像。在一个实施例中,断点连接接入(broken link access,bla)图像和逐步解码刷新(gradual decoder refresh,gdr)图像也可以被认为是irap图像。编码视频序列的解码过程始终从irap图像开始。
[0137]
与如上所述发送新的irap图像相比,更好的方法是继续发送在提取器轨迹610与提取器轨迹710之间共享的任何分块(又名子图像)。即,继续发送具有以下分块id的分块:4、8、10和14,因为这些分块同时位于提取器轨迹610和提取器轨迹710中。在这样做时,只需要为提取器轨迹710中不在提取器轨迹610中的那些分块发送新的irap图像。即,当观看方向改变时,仅需要为具有以下分块id的分块发送新的irap图像:1、5、9和13。然而,cvs中子图像id的变化可能会导致指示问题。
[0138]
为了至少解决指示问题,在码流中指示指示(indication)(例如,标志),以表示每个分块(又名子图像)的分块id(又名,子图像id)是否可能会在cvs内改变。这种标志可以在sps或pps中指示。除了指示分块id是否可以在cvs内改变之外,标志还可以提供其它功能。
[0139]
在一种方法中,子图像id在sps语法(当表示每个子图像的子图像id在cvs内不改变时)或pps语法(当表示每个子图像的子图像id可以在cvs内改变时)中指示。在一个实施例中,子图像id从不在sps语法和pps语法中指示。
[0140]
在另一种方法中,子图像id始终在sps语法中指示,并且当标志表示每个子图像的子图像id可以在cvs内改变时,sps中指示的子图像id值可以被pps语法中指示的子图像id覆盖。
[0141]
在又一种方法中,子图像id不在sps语法中指示,而仅在pps语法中指示,并且每个子图像的子图像id是否可以在cvs内改变的指示也仅在pps语法中指示。
[0142]
在这种方法中,其它子图像信息,例如每个子图像的位置和大小、子图像id的长度(以比特为单位),以及最新的vvc草案规范中的标志subpic_treated_as_pic_flag[i]和loop_filter_across_subpic_enabled_flag[i],也可以在pps中指示,而不是在sps中指示,但对于cvs内经译码图像参考的所有pps,这些子图像信息都是相同的。
[0143]
当子图像位置和大小在pps中指示,而不是像最新的vvc草案规范中那样指示时,子图像位置和大小可以根据每个子图像中包括的条带指示。例如,对于每个子图像,可以指示位于子图像左上顶点的条带索引或条带id和位于子图像右下顶点的条带的条带索引或条带id,以推导子图像位置和大小,其中,指示可以是基于增量的,并且在一些特定情况下,可以避免条带索引或条带id或其增量的指示,并且推断该值,例如,推断方式与最新vvc草案规范中针对矩形条带指示左上顶点和右下顶点砖索引的方式类似。
[0144]
在本实施例中,子图像id如下指示。
[0145]
在sps语法中,当表示cvs中每个图像中的子图像数量大于1时,适用以下情况。
[0146]
标志(例如,指定的subpicture_ids_signalled_in_sps_flag或sps_subpic_id_mapping_present_flag)在sps中指示。在一个实施例中,标志具有以下语义:subpicture_ids_signalled_in_sps_flag等于1表示子图像id在sps中指示,每个子图像一个子图像id,并且每个特定子图像的子图像id值不会在cvs内改变。subpicture_ids_signalled_in_sps_flag等于0表示子图像id不在sps中指示,而是在pps中指示,并且每个特定子图像的子
图像id值可以在cvs内改变。当subpicture_ids_signalled_in_sps_flag等于1时,每个子图像的子图像id在sps中指示。
[0147]
在pps语法中,标志(例如,指定的subpicture_ids_signalled_in_pps_flag或pps_subpic_id_mapping_present_flag)在pps中指示。标志具有以下语义:subpicture_ids_signalled_in_pps_flag等于1表示子图像id在pps中指示,每个子图像一个子图像id,并且每个特定子图像的子图像id值可以在cvs内改变。subpicture_ids_signalled_in_pps_flag等于0表示子图像id不在pps中指示,而是在sps中指示,并且每个特定子图像的子图像id值不会在cvs内改变。
[0148]
在一个实施例中,subpicture_ids_signalled_in_pps_flag的值应等于1-subpicture_ids_signalled_in_sps_flag。当subpicture_ids_signalled_in_pps_flag等于1时,每个子图像的子图像id在pps中指示。
[0149]
在条带头语法中,无论参考的sps指定的子图像数量如何,都会指示子图像id。
[0150]
或者,当每个图像中的子图像数量大于1时,sps语法始终包括子图像id,每个子图像一个子图像id,sps语法还包括一个标志,该标志表示子图像id是否可以被在pps语法中指示的子图像id覆盖,以及每个特定子图像的子图像id值是否可以在cvs内改变。子图像id的覆盖可以始终对所有子图像id执行,也可以仅对所有子图像id的选定子集执行。
[0151]
图8为由视频解码器(例如,视频解码器400)实现的解码方法800的实施例。方法800可以在从视频编码器(例如视频编码器300)直接或间接地接收到经解码的码流之后执行。方法800通过在涉及子码流提取和子码流融合的应用场景中,即使子图像id在cvs内改变时也确保子图像id的高效指示来改进解码过程。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
[0152]
在框802中,视频解码器接收包括sps(例如sps 510)、pps(例如pps 512)以及与子图像标识符(identifier,id)映射575相关联的多个子图像(例如,分块605和607)的视频码流(例如码流500)。如上所述,子图像id映射575是子图像id通过子图像索引映射到特定子图像(例如,子图像id 8对应于子图像索引8,从多个子图像中标识特定子图像)。在一个实施例中,sps 510包括sps标志565。在一个实施例中,pps 512包括pps标志567。
[0153]
在框804中,视频解码器确定sps标志565是具有第一值还是第二值。sps标志565具有第一值表示子图像id映射575包括在sps 510中,sps标志565具有第二值表示子图像id映射575在pps 512中指示。
[0154]
当sps标志565具有第二值时,在框806中,视频解码器确定pps标志567是具有第一值还是第二值。pps标志567具有第一值表示子图像id映射575包括在pps 512中,pps标志567具有第二值表示子图像id映射575不在pps 512中指示。
[0155]
在一个实施例中,当pps标志567具有第二值时,sps标志656具有第一值。在一个实施例中,当pps标志567具有第一值时,sps标志565具有第二值。在一个实施例中,第一值为1,第二值为0。
[0156]
在一个实施例中,sps 510包括第二sps标志569。第二sps标志569表示子图像映射575是在sps 510还是pps 512中显式指示。在一个实施例中,码流500还包括cvs改变标志571。cvs改变标志571表示子图像id映射575是否可以在码流500的cvs 590内改变。在一个
实施例中,cvs改变标志571包括在sps 510、pps 512或码流500中的其它参数集或报头中。
[0157]
在框808中,当sps标志565具有第一值时,视频解码器从sps 510获取子图像id映射575,当sps具有第二值时和/或当pps标志567具有第一值时,视频解码器从pps 512获取子图像id映射575。在一个实施例中,码流包括融合码流。在一个实施例中,子图像id映射575在码流500的cvs 590内已经改变。
[0158]
在框810中,视频解码器使用子图像id映射575解码多个子图像。一旦解码,多个子图像可用于生成或产生图像或视频序列,以便在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机等)的显示屏或屏幕上向用户显示。
[0159]
图9为由视频编码器(例如视频编码器300)实现的对视频码流进行编码的方法900的实施例。方法900可以在(例如视频中的)图像待编码到视频码流中并接着发送给视频解码器(例如视频解码器400)时执行。方法900通过在涉及子码流提取和子码流融合的应用场景中,即使子图像id在cvs内改变时也确保子图像id的高效指示来改进编码过程。这减少了冗余,提高了译码效率。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在被发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。
[0160]
在框902中,视频编码器对包括sps(例如sps 510)、pps(例如pps 512)以及与子图像标识符(identifier,id)映射相关联的多个子图像(例如,分块605和607)的码流进行编码。如上所述,子图像id映射575是子图像id通过子图像索引映射到特定子图像(例如,子图像id 8对应于子图像索引8,从多个子图像中标识特定子图像)。在一个实施例中,sps 510包括sps标志565,pps 512包括pps标志567。
[0161]
在框904中,当子图像id映射575包括在sps 510中时,视频编码器将sps标志565设置为第一值,当子图像id映射575在pps 512中指示时,视频编码器将sps标志565设置为第二值。
[0162]
在框906中,当子图像id映射575包括在pps 512中时,视频编码器将pps标志567设置为第一值,当子图像id映射575不在pps 512中指示时,视频编码器将pps标志567设置为第二值。
[0163]
在一个实施例中,当pps标志567具有第二值时,sps标志565具有第一值。在一个实施例中,当pps标志567具有第一值时,sps标志565具有第二值。在一个实施例中,第一值为1,第二值为0。
[0164]
在一个实施例中,sps 510包括第二sps标志569。第二sps标志569表示子图像id映射575是在sps 510还是pps 512中显式指示。在一个实施例中,码流500还包括cvs改变标志571。cvs改变标志571表示子图像id映射575是否可以在码流500的cvs 590内改变。在一个实施例中,cvs改变标志571包括在sps 510、pps 512或码流500中的其它参数集或报头中。
[0165]
在框908中,视频编码器存储码流,以传送给解码器。码流可以存储在存储器中,直到视频码流被发送到视频解码器。视频解码器接收到经译码视频码流之后,就可以对经编码的视频码流进行解码(例如,如上所述),以生成或产生图像或视频序列,从而在电子设备(例如智能手机、平板电脑、笔记本电脑、个人计算机等)的显示器或屏幕上显示给用户。
[0166]
在一个实施例中,子图像id如下指示。
[0167]
sps语法不包括子图像id的指示。
content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0178]
图11为译码模块1100的实施例的示意图。在一个实施例中,译码模块1100在视频译码设备1102(例如视频编码器300或视频解码器400)中实现。视频译码设备1102包括接收模块1101。接收模块1101用于接收用于进行编码的图像,或接收用于进行解码的码流。视频译码设备1102包括耦合到接收模块1101的发送模块1107。发送模块1107用于将码流发送到解码器或将解码图像发送到显示模块(例如,i/o设备1080中的一个)。
[0179]
视频译码设备1102包括存储模块1103。存储模块1103耦合到接收模块1101或发送模块1107中的至少一个。存储模块1103用于存储指令。视频译码设备1102还包括处理模块1105。处理模块1105耦合到存储模块1103。处理模块1105用于执行存储在存储模块1103中的指令以执行本文公开的方法。
[0180]
虽然本发明提供了多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明示例应当被视为说明性而非限制性的,且本发明并不限于本文所给出的详细内容。例如,各种元件或组件可以组合或集成在另一系统中,或者一些特征可以省略或不实施。
[0181]
另外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法组合或集成。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。

技术特征:
1.一种处理码流的系统,其特征在于,包括:编码设备、一个或多个存储器和解码设备;所述编码设备用于获取视频信号,并编码所述视频信号得到一个或多个码流,所述码流包括序列参数集sps、图像参数集pps和与子图像标识符id映射相关联的多个子图像;其中,所述sps包括第一sps标志,所述第一sps标志具有第一值表示所述子图像id映射在所述sps中指示,并且所述第一sps标志具有第二值表示所述子图像id映射在所述pps中指示;所述一个或多个存储器,用于存储所述一个或多个码流;所述解码设备,用于解码所述一个或多个码流。2.根据权利要求1所述的系统,其特征在于,还包括控制组件,用于根据存储空间、带宽可用性或图像分辨率管理码率或所述码流的大小。3.根据权利要求1或2所述的系统,其特征在于,所述编码设备用于从所述一个或多个存储器中检索一个或多个码流,并把检索的所述一个或多个码流发送给所述解码设备。4.根据权利要求1至3中任一项所述的系统,其特征在于,所述编码设备用于接收所述解码设备的请求,并根据请求将所述一个或多个存储器中的一个或多个码流发送给所述解码设备。5.根据权利要求1至4中任一项所述的系统,其特征在于,所述pps包括pps标志,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有所述第二值表示所述子图像id映射不在所述pps中指示。6.根据权利要求1至5中任一项所述的系统,其特征在于,当所述pps标志具有所述第二值时,所述第一sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述第一sps标志具有所述第二值。7.根据权利要求1至6中任一项所述的系统,其特征在于,所述第一值为1,所述第二值为0。8.根据权利要求1至7中任一项所述的系统,其特征在于,所述sps包括第二sps标志,所述第二sps标志表示所述子图像id映射是否在所述sps中或所述pps中显式指示。9.一种发送码流的设备,其特征在于,包括一个或多个存储器和发送器,所述一个或多个存储器用于存储码流,所述码流包括序列参数集sps、图像参数集pps和与子图像标识符id映射相关联的多个子图像;其中,所述sps包括第一sps标志,所述第一sps标志具有第一值表示所述子图像id映射在所述sps中指示,并且所述第一sps标志具有第二值表示所述子图像id映射在所述pps中指示;所述发送器用于将所述码流发送给解码器。10.根据权利要求9所述的设备,其特征在于,还包括处理器,用于接收所述解码器的请求,并根据所述请求将一个或多个码流通过所述发送器发送给所述解码器。11.根据权利要求9或10所述的设备,其特征在于,还包括处理器,用于从所述一个或多个存储设备中检索一个或多个码流,并把检索的所述一个或多个码流发送给所述解码器。12.根据权利要求9至11中任一项所述的设备,其特征在于,还包括控制组件,用于根据存储空间、带宽可用性或图像分辨率管理码率或所述码流的大小。13.根据权利要求9至12中任一项所述的设备,其特征在于,所述pps包括pps标志,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有
所述第二值表示所述子图像id映射不在所述pps中指示。14.根据权利要求9至13中任一项所述的设备,其特征在于,当所述pps标志具有所述第二值时,所述第一sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述第一sps标志具有所述第二值。15.根据权利要求9至14中任一项所述的设备,其特征在于,所述第一值为1,所述第二值为0。16.根据权利要求9至15中任一项所述的设备,其特征在于,所述sps包括第二sps标志,所述第二sps标志表示所述子图像id映射是否在所述sps中或所述pps中显式指示。17.一种存储码流的设备,其特征在于,包括:接收器和存储器,所述接收器,用于接收码流;所述存储器,用于存储所述码流:所述码流包括序列参数集sps、图像参数集pps和与子图像标识符id映射相关联的多个子图像;其中,所述sps包括第一sps标志,所述第一sps标志具有第一值表示所述子图像id映射在所述sps中指示,并且所述第一sps标志具有第二值表示所述子图像id映射在所述pps中指示。18.根据权利要求17所述的设备,其特征在于,所述接收器用于接收解码器的请求,根据所述请求将一个或多个码流发送给所述解码器。19.根据权利要求17或18所述的设备,其特征在于,还包括处理器,用于从所述一个或多个存储设备中检索一个或多个码流,并把检索的所述一个或多个码流发送给解码器。20.根据权利要求17至19任一项所述的设备,其特征在于,还包括控制组件,用于根据存储空间、带宽可用性或图像分辨率管理码率或所述码流的大小。21.根据权利要求17至20任一项所述的设备,其特征在于,所述pps包括pps标志,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有所述第二值表示所述子图像id映射不在所述pps中指示。22.根据权利要求17至21任一项所述的设备,其特征在于,当所述pps标志具有所述第二值时,所述第一sps标志具有所述第一值,当所述pps标志具有所述第一值时,所述第一sps标志具有所述第二值,其中,所述第一值为1,所述第二值为0。23.根据权利要求17至22任一项所述的设备,其特征在于,所述sps包括第二sps标志,所述第二sps标志表示所述子图像id映射是否在所述sps中或所述pps中显式指示。24.一种存储码流的方法,其特征在于,包括:接收码流,所述码流包括序列参数集sps、图像参数集pps和与子图像标识符id映射相关联的多个子图像;其中,所述sps包括第一sps标志,所述第一sps标志具有第一值表示所述子图像id映射在所述sps中指示,并且所述第一sps标志具有第二值表示所述子图像id映射在所述pps中指示;将所述码流存储到一个或多个存储设备上。25.根据权利要求24所述的方法,其特征在于,所述方法还包括:将所述码流发送给解码器。26.根据权利要求24或25所述的方法,其特征在于,所述方法还包括:接收解码器的请求,并根据所述请求将一个或多个码流发送给所述解码器。
27.根据权利要求24至26中任一项所述的方法,其特征在于,所述方法还包括:从所述一个或多个存储设备中检索一个或多个码流,并把检索的所述一个或多个码流发送给解码器。28.根据权利要求24至27中任一项所述的方法,其特征在于,所述方法还包括:根据存储空间、带宽可用性或图像分辨率管理码率或所述码流的大小。29.根据权利要求24至28中任一项所述的方法,其特征在于,所述pps包括pps标志,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有所述第二值表示所述子图像id映射不在所述pps中指示。30.根据权利要求24至29中任一项所述的方法,其特征在于,当所述pps标志具有所述第二值时,所述第一sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述第一sps标志具有所述第二值。31.根据权利要求24至30中任一项所述的方法,其特征在于,所述第一值为1,所述第二值为0。32.根据权利要求24至31中任一项所述的方法,其特征在于,所述sps包括第二sps标志,所述第二sps标志表示所述子图像id映射是否在所述sps中或所述pps中显式指示。33.一种码流结构,其特征在于,包括序列参数集sps、图像参数集pps和与子图像标识符id映射相关联的多个子图像;其中,所述sps包括第一sps标志,所述第一sps标志具有第一值表示所述子图像id映射在所述sps中指示,并且所述第一sps标志具有第二值表示所述子图像id映射在所述pps中指示。34.根据权利要求33所述的码流结构,其特征在于,所述pps包括pps标志,所述pps标志具有所述第一值表示所述子图像id映射在所述pps中指示,并且所述pps标志具有所述第二值表示所述子图像id映射不在所述pps中指示。35.据权利要求33或34所述的码流结构,其特征在于,当所述pps标志具有所述第二值时,所述第一sps标志具有所述第一值,并且当所述pps标志具有所述第一值时,所述第一sps标志具有所述第二值。36.据权利要求33至35任一项所述的码流结构,其特征在于,所述sps还包括第二sps标志,所述第二sps标志表示所述子图像id映射是否在所述sps中或所述pps中显式指示。

技术总结
一种视频解码方法,包括接收包括SPS、PPS和与子图像ID映射相关联的子图像的码流。确定SPS标志是具有第一值还是第二值。所述SPS标志具有所述第一值表示所述子图像ID映射在所述SPS中指示,具有所述第二值表示所述子图像ID映射在所述PPS中指示。当所述SPS标志具有所述第一值时,从所述SPS获取所述子图像ID映射;当所述SPS标志具有所述第二值或所述PPS标志具有所述第一值时,从所述PPS获取所述子图像ID映射。映射。映射。


技术研发人员:王业奎
受保护的技术使用者:华为技术有限公司
技术研发日:2020.09.15
技术公布日:2023/8/9
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐