编码方法及装置

文档序号:172863 发布日期:2021-10-29 浏览:37次 >En<

阅读说明:本技术 编码方法及装置 (Encoding method and device ) 是由 赵寅 杨海涛 陈建乐 于 2018-10-08 设计创作,主要内容包括:本发明公开了一种视频解码方法,包括:对接收到的比特流进行解析,得到CU的预测信息;获取残差TU的目标变换模式;解析所述接收到的比特流,得到所述残差TU的变换系数;对所述残差TU的变换系数进行反量化,得到解量化系数;根据所述目标变换模式对所述解量化系数进行逆变换,得到所述残差TU的残差块;根据所述预测信息获取所述CU的预测块;根据所述残差块和所述预测块获取视频块;输出视频序列,所述视频序列包括的视频帧包括所述视频块。(The invention discloses a video decoding method, which comprises the following steps: analyzing the received bit stream to obtain the prediction information of the CU; obtaining a target transformation mode of a residual TU; analyzing the received bit stream to obtain a transformation coefficient of the residual TU; carrying out inverse quantization on the transformation coefficient of the residual TU to obtain a dequantization coefficient; inversely transforming the dequantization coefficients according to the target transformation mode to obtain residual blocks of the residual TUs; acquiring a prediction block of the CU according to the prediction information; obtaining a video block according to the residual block and the prediction block; outputting a video sequence comprising video frames comprising the video blocks.)

编码方法及装置

本申请要求2018年2月23日递交美国专利局的第62634613号美国专利申请、2018年5月31日递交美国专利局的62678738号美专利申请、2017年10月16日递交美国专利局的第62572987号美国专利申请、2018年8月27日递交中国专利局的PCT/CN2018/102524和2018年10月6日递交中国专利局的PCT/CN2018/109254的优先权。上述申请案的公开内容通过全文引用的方式并入本文中。

技术领域

本发明涉及通信领域,尤其涉及一种编码方法及装置。

背景技术

即使在影片较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中传输。由于内存资源可能有限,当在存储设备上存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在传输或存储之前对视频数据进行编码,从而减少用来表示数字视频图像所需的数据量。接着,压缩的数据在目的地侧由视频解压缩设备接收。

在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术能够提高压缩率而几乎不影响图像质量。

发明内容

本发明实施例提供了一种编码方法和装置,能够对音频信号的频谱系数执行合理的量化比特分配,从而提高解码器通过解码得到的信号的质量。

为达到上述目的,本发明实施例采用如下技术方案:

根据第一方面,本发明实施例提供了一种视频解码方法,包括:对接收到的比特流进行解析,得到编码单元(coding unit,CU)的预测信息;当所述CU只包含一个残差变换单元(transform unit,TU)且所述残差TU的大小小于所述CU的大小时,获取所述残差TU的目标变换模式,其中所述目标变换模式指定所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型集合;解析所述接收到的比特流,得到所述残差TU的变换系数;对所述残差TU的变换系数进行反量化,得到解量化系数;根据所述残差TU的变换类型(或根据所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型),对所述解量化系数进行逆变换,得到所述残差TU的残差块;根据所述预测信息获取所述CU的预测块;根据所述残差块和所述预测块获取视频块;输出视频序列,所述视频序列包括的视频帧包括所述视频块。

由于所述目标变换模式能够指定所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型,从而不仅可以提高解码效率,而且还可以提高解码质量;由于所述目标变换模式能够指定上述信息,因此可以减少传输上述信息所需的比特,从而节省传输编码音频数据所需的资源,例如带宽。

在所述第一方面的一种可能实现方式中,N种变换模式对应一个变换类型集合,所述变换类型集合包括两种或两种以上变换类型,或者所述变换类型集合包括一种或多种变换类型。

在所述第一方面的一种可能实现方式中,每种变换模式对应的所述变换类型集合包括四种变换类型,如下所述:

变换类型1:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7,记为DST-7/DST-7;

变换类型2:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8,记为DST-7/DCT-8;

变换类型3:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7,记为DCT-8/DST-7;

变换类型4:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8,记为DCT-8/DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在所述第一方面的另一种可能实现方式中,N种变换模式对应一个变换类型集合,所述变换类型集合包括两种或两种以上变换类型,或者所述变换类型集合包括一种或多种变换类型。

在所述第一方面的一种可能实现方式中,每种变换模式对应的所述变换类型集合包括四种变换类型,如下所述:

变换类型1:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4,记为DST-4/DST-4;

变换类型2:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4,记为DST-4/DCT-4;

变换类型3:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4,记为DCT-4/DST-4;

变换类型4:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4,记为DCT-4/DCT-4。

在所述第一方面的一种可能实现方式中,N种变换模式对应N个变换类型集合,其中N≥1且N为正整数;

每个变换类型集合包括两种或两种以上变换类型,或者每个变换类型集合包括一种或多种变换类型。

在所述第一方面的一种可能实现方式中,如果所述变换类型集合包括两种或两种以上变换类型,则所述从所述变换类型集合中获取所述残差TU的变换类型的步骤包括:

从所述变换类型集合中选择所述残差TU的变换类型。

在所述第一方面的一种可能实现方式中,所述方法还包括:从所述比特流中解析出指示信息,其中所述指示信息指示所述残差TU的变换类型;

所述从所述变换类型集合中获取所述残差TU的变换类型的步骤包括:

根据从所述比特流中解析出的指示信息,从所述变换类型集合中确定所述残差TU的变换类型。

在所述第一方面的一种可能实现方式中,如果所述残差TU的变换类型集合包括第一变换类型和第二变换类型,则所述第二变换类型根据所述第一变换类型而定;或者

如果所述残差TU的变换类型集合包括第一变换类型和第二变换类型,则所述第二变换类型与所述第一变换类型无关,或者所述第二变换类型为统一变换类型。

在所述第一方面的一种可能实现方式中,所述第二变换类型为统一变换类型:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-2,记为DCT-2/DCT-2。

在所述第一方面的第一种可能实现方式中,所述CU的大小表示为W×H,所述残差TU的目标变换模式为以下模式之一:

变换模式Q0,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式Q1,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式Q2,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式Q3,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式QH0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式QH1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式QH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式QH3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式QV0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式QV1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),其中所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式QV2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式QV3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中,所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式HQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小小于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DST-7;

变换模式HQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中下方TU的大小小于上方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DST-7;所述第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DCT-8;

变换模式VQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小小于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式VQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中右侧TU的大小小于左侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式HH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DST-7;

变换模式HH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DST-7;所述第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DCT-8;

变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中上方TU的大小等于下方TU的大小,所述上方TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-2;或者第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-1;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-1;

变换模式VH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式VH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8或DCT-2;或者

变换模式VH2变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中左侧TU的大小等于右侧TU的大小,所述左侧TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-8;或者第一变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在所述第一方面的另一种第一可能实现方式中,所述CU的大小表示为W×H,所述残差TU的目标变换模式为以下模式之一:

变换模式Q0,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式Q1,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式Q2,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式Q3,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式QH0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式QH1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式QH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式QH3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式QV0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式QV1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),其中所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式QV2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式QV3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中,所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式HQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小小于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DST-4;

变换模式HQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中下方TU的大小小于上方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DST-4;所述第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DCT-4;

变换模式VQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小小于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式VQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中右侧TU的大小小于左侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式HH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DST-4;

变换模式HH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DST-4;所述第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DCT-4;

变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中上方TU的大小等于下方TU的大小,所述上方TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-2;或者第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-1;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-1;

变换模式VH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式VH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4或DCT-2;或者

变换模式VH2变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中左侧TU的大小等于右侧TU的大小,所述左侧TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-4;或者第一变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DCT-4。

又例如,每种变换模式对应的所述变换类型集合可包含四种变换类型:

类型1:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7,记为DST-7/DST-7;

类型2:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8,记为DST-7/DCT-8;

类型3:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7,记为DCT-8/DST-7;

类型4:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8,记为DCT-8/DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,又例如,每种变换模式对应的所述变换类型集合可包含四种变换类型:

类型1:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4,记为DST-4/DST-4;

类型2:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4,记为DST-4/DCT-4;

类型3:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4,记为DCT-4/DST-4;

类型4:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4,记为DCT-4/DCT-4。

所述残差TU的变换类型在比特流中指示。发送所述指示信息(例如,索引或一个或多个变量)以指示所述残差TU使用多种变换类型中的哪一种变换类型。当变换类型集合包含2种变换类型时,发送一个变量以指示所述残差TU使用所述2种变换类型中的哪一种变换类型。当变换类型集合包含4种变换类型时,发送索引来指示所述残差TU使用所述4种变换类型中的哪一种变换类型,所述索引可以通过2个二进制位或截断的一元码进行编码。例如,如果变换类型的数量大于两个,则可以使用两个变量来指示所述残差TU使用多种变换类型中的哪一种变换类型,例如,一个标识指示所述残差TU的水平变换类型,另一个标识指示所述残差TU的垂直变换类型;换句话说,第一变量指示所述多个水平变换类型中的哪一个用于所述残差TU,第二变量指示所述多个垂直变换类型中的哪一个用于所述残差TU。

结合所述第一方面或所述第一方面的第一种可能实现方式,在第二种可能实现方式中,获取所述残差TU的目标变换模式包括:解析所述比特流,得到用于指示所述残差TU的目标变换模式的模式索引;根据所述模式索引获取所述残差TU的目标变换模式。

所述目标变换模式可以通过所述模式索引编入索引,从而只需要获取一个索引就可以提高解码效率。

结合所述第一方面的第二种可能实现方式,在第三种可能实现方式中,在解析所述比特流,得到用于指示所述残差TU的目标变换模式的模式索引之前,所述方法还包括:根据所述CU的大小确定所述残差TU的候选目标变换模式,其中所述解析所述比特流,得到指示所述残差TU的目标变换模式的模式索引包括:根据所述残差TU的候选目标变换模式解析所述比特流,得到用于指示所述残差TU的目标变换模式的模式索引。

确定所述候选目标变换模式可以减少所述残差TU使用的候选目标变换模式的数量,从而减少传输所述模式索引所需的比特。

结合所述第一方面的第三种可能实现方式,在第四种可能实现方式中,所述根据所述CU的大小确定所述残差TU的候选目标变换模式包括以下至少一种情况:

当所述CU的宽度在Th1×2~Th3的范围内且所述CU的高度在Th1×2~Th3的范围内时,所述候选目标变换模式包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th3的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th3的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HQ0、变换模式HQ1和变换模式HH2;

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HH0和变换模式HH1;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1×2~Th2的范围内时,所述候选目标变换模式包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HQ0、变换模式HQ1和变换模式HH2;或者

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HH0和变换模式HH1,

其中Th1、Th2和Th3为预定义的整数值。

结合所述第一方面或所述第一方面的第一种可能实现方式,在第五种可能实现方式中,获取所述残差TU的目标变换模式包括:解析所述比特流,得到用于指示所述目标变换模式所属模式组的组索引;解析所述比特流,得到用于指示所述目标变换模式在所述模式组中的模式索引;根据所述组索引和所述模式索引获取所述目标变换模式。

对所述变换模式进行预分组,因此可以减少适合一个CU的变换模式的数量,不仅可以提高解码效率,而且可以节省传输资源。

结合所述第一方面的第五种可能实现方式,在第六种可能实现方式中,所述目标变换模式属于以下任一模式组:

模式组包括变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式HH0、HH1、HH2、VH0、VH1、VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QV0、变换模式QV1、变换模式QV2、变换模式QV3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1;变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;或者

模式组包括变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1。

结合所述第一方面的第五种可能实现方式,在第七种可能实现方式中,在解析所述比特流,得到用于指示所述目标变换模式所属模式组的组索引之前,所述方法还包括:根据所述CU的大小确定所述残差TU的至少一个候选模式组,其中所述解析所述比特流,得到用于指示所述目标变换模式所属模式组的组索引包括:根据所述残差TU的至少一个候选模式组解析所述比特流,得到用于指示所述目标变换模式所属模式组的组索引。

确定所述候选目标变换模式可以减少所述残差TU使用的候选目标变换模式的数量,从而减少传输所述模式索引所需的比特。

结合所述第一方面的第七种可能实现方式,在第八种可能实现方式中,所述根据所述CU的大小确定所述残差TU的至少一个候选模式组包括以下至少一种情况:

当所述CU的宽度在Th1×2~Th3的范围内且所述CU的高度在Th1×2~Th3的范围内时,所述候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th3的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th3的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2;

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HH0和变换模式HH1;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1×2~Th2的范围内时,所述候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2;或者

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HH0和变换模式HH1,

其中Th1、Th2和Th3为预定义的整数值。

结合所述第一方面的第四种可能实现方式或第八种可能实现方式,在第九种可能实现方式中,所述Th1为4、8或16;所述Th2为32、64或128;或者所述Th3为64、128或256。

结合所述第一方面或所述第一方面的第一种至第九种可能实现方式中的任一种可能实现方式,在第十种可能实现方式中,在获取所述残差TU的目标变换模式之前,所述方法还包括:根据所述CU的预测信息判断是否获取所述残差TU的目标变换模式。

结合所述第一方面的第十种可能实现方式,在第十一种可能实现方式中,所述根据所述CU的预测信息判断是否获取所述残差TU的目标变换模式包括以下至少一种情况:

当所述CU的预测模式为帧内预测模式时,确定获取所述残差TU的目标变换模式;

当所述CU的预测模式为帧间预测模式时,确定获取所述残差TU的目标变换模式;

当所述CU的预测方法为预设正向预测方法时,确定获取所述残差TU的目标变换模式;或者

当所述CU的预测方法为预设负向预测方法时,确定不获取所述残差TU的目标变换模式。

结合所述第一方面的第十一种可能实现方式,在第十二种可能实现方式中,所述预设正向预测方法包括以下至少一种方法:基于平移模型的运动补偿方法;合并预测方法;运动矢量差的精度为1/4像素的高级运动矢量预测方法;或者合并索引小于2的合并预测方法。

结合所述第一方面的第十一种或第十二种可能实现方式,在第十三种可能实现方式中,所述预设负向预测方法包括以下至少一种方法:基于仿射模型的运动补偿方法;仿射合并预测方法;仿射帧间预测模式;运动矢量差的精度为1像素或4像素的高级运动矢量预测方法;或者合并索引不小于2的合并预测方法。

结合所述第一方面或第一方面的第一种至第十三种可能实现方式中的任一种可能实现方式,在第十四种可能实现方式中,在获取所述残差TU的目标变换模式之前,所述方法还包括:根据所述CU的大小判断是否获取所述残差TU的目标变换模式。

结合所述第一方面的第十四种可能实现方式,在第十五种可能实现方式中,所述根据所述CU的大小判断是否获取所述残差TU的目标变换模式包括以下至少一种情况:

当所述CU的宽度或高度大于预设CU阈值时,确定不获取所述残差TU的目标变换模式;

当所述CU的一个TU的宽度或高度小于预设最小TU阈值时,确定不获取所述残差TU的目标变换模式;或者

当所述CU的一个TU的宽度或高度大于预设最大TU阈值时,确定不获取所述残差TU的目标变换模式。

结合所述第一方面的第十五种可能实现方式,在第十六种可能实现方式中,所述预设CU阈值为32个亮度像素、64个亮度像素或128个亮度像素;或者,所述预设最小TU阈值为4个亮度像素、8个亮度像素或16个亮度像素;或者,所述预设最大TU阈值为32个亮度像素、64个亮度像素或128个亮度像素。

根据第二方面,本发明实施例提供一种视频解码器,包括:熵解码单元,用于对接收到的比特流进行解析,得到编码单元(coding unit,CU)的预测信息;当所述CU只包含唯一的残差变换单元(transform unit,TU)且所述残差TU的大小小于所述CU的大小时,获取所述残差TU的目标变换模式,其中所述目标变换模式指定所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型集合;解析所述接收到的比特流,得到所述残差TU的变换系数,其中所述熵解码单元还用于从所述变换类型集合中获取所述残差TU的变换类型;反量化处理单元,用于对所述残差TU的变换系数进行反量化,得到解量化系数;逆变换处理单元,用于根据所述残差TU的变换类型或根据所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型,对所述解量化系数进行逆变换,得到所述残差TU的残差块;预测处理单元,用于根据所述预测信息获取所述CU的预测块;重建单元,用于根据所述残差块和所述预测块获取视频块;输出端,用于输出视频序列,所述视频序列包括的视频帧包括所述视频块。

在所述第二方面的一种可能实现方式中,N种变换模式对应一个变换类型集合,所述变换类型集合包括两种或两种以上变换类型,或者所述变换类型集合包括一种或多种变换类型。

在所述第二方面的一种可能实现方式中,每种变换模式对应的所述变换类型集合包括四种变换类型,如下所述:

变换类型1:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7,记为DST-7/DST-7;

变换类型2:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8,记为DST-7/DCT-8;

变换类型3:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7,记为DCT-8/DST-7;

变换类型4:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8,记为DCT-8/DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在所述第二方面的一种可能实现方式中,每种变换模式对应的所述变换类型集合包括四种变换类型,如下所述:

变换类型1:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4,记为DST-4/DST-4;

变换类型2:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4,记为DST-4/DCT-4;

变换类型3:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4,记为DCT-4/DST-4;

变换类型4:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4,记为DCT-4/DCT-4。

在所述第二方面的一种可能实现方式中,N种变换模式对应N个变换类型集合,其中N≥1且N为正整数;

每个变换类型集合包括两种或两种以上变换类型,或者每个变换类型集合包括一种或多种变换类型。

在所述第二方面的一种可能实现方式中,如果所述变换类型集合包括两种或两种以上变换类型,所述从所述变换类型集合中获取所述残差TU的变换类型包括:

从所述变换类型集合中选择所述残差TU的变换类型。

在所述第二方面的一种可能实现方式中,所述方法还包括:从所述比特流中解析出指示信息,其中所述指示信息指示所述残差TU的变换类型;

所述从所述变换类型集合中获取所述残差TU的变换类型的步骤包括:

根据从所述比特流中解析出的指示信息,从所述变换类型集合中确定所述残差TU的变换类型。

在所述第二方面的一种可能的实现方式中,如果所述残差TU的变换类型集合包括第一变换类型和第二变换类型,则所述第二变换类型根据所述第一变换类型而定;或者

如果所述残差TU的变换类型集合包括第一变换类型和第二变换类型,则所述第二变换类型与所述第一变换类型无关,或者所述第二变换类型为统一变换类型。

在所述第二方面的一种可能实现方式中,所述第二变换类型为统一变换类型:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-2,记为DCT-2/DCT-2。

在所述第二方面的第一种可能实现方式中,所述CU的大小表示为W×H,所述残差TU的目标变换模式为以下模式之一:

变换模式Q0,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式Q1,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式Q2,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式Q3,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式QH0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式QH1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式QH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式QH3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式QV0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;

变换模式QV1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),其中所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;

变换模式QV2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8;

变换模式QV3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中,所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8;

变换模式HQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小小于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DST-7;

变换模式HQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中下方TU的大小小于上方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DST-7;所述第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DCT-8;

变换模式VQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小小于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式VQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中右侧TU的大小小于左侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式HH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DCT-8;第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DST-7;

变换模式HH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7或DCT-2,所述残差TU的垂直变换是DST-7;所述第二变换类型是指:所述残差TU的水平变换是DCT-8或DCT-2,所述残差TU的垂直变换是DCT-8;

变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中上方TU的大小等于下方TU的大小,所述上方TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-2;或者第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-1;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-1;

变换模式VH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8或DCT-2;

变换模式VH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8或DCT-2;或者

变换模式VH2变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中左侧TU的大小等于右侧TU的大小,所述左侧TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-8;或者第一变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DST-7;第二变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在所述第二方面的第一种可能实现方式中,所述CU的大小表示为W×H,所述残差TU的目标变换模式为以下模式之一:

变换模式Q0,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式Q1,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式Q2,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式Q3,指定:所述CU的TU划分模式用于将所述CU划分成(W/2)×(H/2)大小的4个TU,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式QH0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式QH1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在上方且大小为(W/2)×(H/2),所述3个TU的另一个TU在下方且大小为W×(H/2),所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式QH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式QH3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在下方且大小为(W/2)×(H/2),所述3个TU中的另一个TU在上方且大小为W×(H/2),所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式QV0,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;

变换模式QV1,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),其中所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;

变换模式QV2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中所述3个TU中的2个TU在左侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在右侧且大小为(W/2)×H,所述残差TU的位置在左下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4;

变换模式QV3,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中,所述3个TU中的2个TU在右侧且大小为(W/2)×(H/2),所述3个TU中的另一个TU在左侧且大小为(W/2)×H,所述残差TU的位置在右下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4;

变换模式HQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小小于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DST-4;

变换模式HQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中下方TU的大小小于上方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DST-4;所述第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DCT-4;

变换模式VQ0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小小于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式VQ1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中右侧TU的大小小于左侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式HH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在上方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DCT-4;第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DST-4;

变换模式HH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中上方TU的大小等于下方TU的大小,所述残差TU的位置在下方,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4或DCT-2,所述残差TU的垂直变换是DST-4;所述第二变换类型是指:所述残差TU的水平变换是DCT-4或DCT-2,所述残差TU的垂直变换是DCT-4;

变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中上方TU的大小等于下方TU的大小,所述上方TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-2;或者第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-1;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-1;

变换模式VH0,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在左侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4或DCT-2;

变换模式VH1,指定:所述CU的TU划分模式用于将所述CU划分成2个TU,其中左侧TU的大小等于右侧TU的大小,所述残差TU的位置在右侧,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4或DCT-2;第二变换类型是指:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4或DCT-2;或者

变换模式VH2变换模式HH2,指定:所述CU的TU划分模式用于将所述CU划分成3个TU,其中左侧TU的大小等于右侧TU的大小,所述左侧TU的大小小于中心TU的大小,所述残差TU的位置在中心,从变换类型集合中选择所述变换类型;所述变换类型集合包括两种变换类型,其中第一变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DCT-2,所述残差TU的垂直变换是DCT-4;或者第一变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DST-4;第二变换类型是指:所述残差TU的水平变换是DST-1,所述残差TU的垂直变换是DCT-4。

又例如,每种变换模式对应的所述变换类型集合可包含四种变换类型:

类型1:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DST-7,记为DST-7/DST-7;

类型2:所述残差TU的水平变换是DST-7,所述残差TU的垂直变换是DCT-8,记为DST-7/DCT-8;

类型3:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DST-7,记为DCT-8/DST-7;

类型4:所述残差TU的水平变换是DCT-8,所述残差TU的垂直变换是DCT-8,记为DCT-8/DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,再例如,每种变换模式对应的所述变换类型集合可包含四种变换类型:

类型1:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DST-4,记为DST-4/DST-4;

类型2:所述残差TU的水平变换是DST-4,所述残差TU的垂直变换是DCT-4,记为DST-4/DCT-4;

类型3:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DST-4,记为DCT-4/DST-4;

类型4:所述残差TU的水平变换是DCT-4,所述残差TU的垂直变换是DCT-4,记为DCT-4/DCT-4。

结合所述第一方面或所述第二方面的第一种可能实现方式,在第二种可能实现方式中,所述熵解码单元还用于:解析所述比特流,得到用于指示所述残差TU的目标变换模式的模式索引;根据所述模式索引获取所述残差TU的目标变换模式。

结合所述第二方面的第二种可能实现方式,在第三种可能实现方式中,所述熵解码单元还用于:根据所述CU的大小确定所述残差TU的候选目标变换模式;根据所述残差TU的候选目标变换模式解析所述比特流,得到用于指示所述残差TU的目标变换模式的模式索引。

结合所述第二方面的第三种可能实现方式,在第四种可能实现方式中,所述熵解码单元还用于根据以下至少一种情况确定所述残差TU的候选目标变换模式:

当所述CU的宽度在Th1×2~Th3的范围内且所述CU的高度在Th1×2~Th3的范围内时,所述候选目标变换模式包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th3的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th3的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HQ0、变换模式HQ1和变换模式HH2;

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HH0和变换模式HH1;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1×2~Th2的范围内时,所述候选目标变换模式包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HQ0、变换模式HQ1和变换模式HH2;或者

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选目标变换模式包括变换模式HH0和变换模式HH1,

其中Th1、Th2和Th3为预定义的整数值。

结合所述第二方面或所述第二方面的第一种可能实现方式,在第五种可能实现方式中,所述熵解码单元还用于:解析所述比特流,得到用于指示所述目标变换模式所属的模式组的组索引;解析所述比特流,得到用于指示所述目标变换模式在所述模式组中的模式索引;根据所述组索引和所述模式索引获取所述目标变换模式。

结合所述第二方面的第五种可能实现方式,在第六种可能实现方式中,所述目标变换模式属于以下任一模式组:

模式组包括变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式HH0、HH1、HH2、VH0、VH1、VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QV0、变换模式QV1、变换模式QV2、变换模式QV3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1;变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;或者

模式组包括变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1。

结合所述第二方面的第五种可能实现方式,在第七种可能实现方式中,所述熵解码单元还用于:根据所述CU的大小确定所述残差TU的至少一个候选模式组;根据所述残差TU的所述至少一个候选模式组解析所述比特流,得到用于指示所述目标变换模式所属模式组的组索引。

结合所述第二方面的第七种可能实现方式,在第八种可能实现方式中,所述熵解码单元还用于根据以下至少一种情况确定至少一个候选模式组:

当所述CU的宽度在Th1×2~Th3的范围内且所述CU的高度在Th1×2~Th3的范围内时,所述候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th3的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th3的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2;

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HH0和变换模式HH1;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1×2~Th2的范围内时,所述候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;

当所述CU的宽度在Th1×4~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2;

当所述CU的宽度在Th1×2~Th2的范围内且所述CU的高度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式VH0和变换模式VH1;

当所述CU的高度在Th1×4~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2;或者

当所述CU的高度在Th1×2~Th2的范围内且所述CU的宽度在Th1~Th2的范围内时,所述候选模式组包括的模式组包括变换模式HH0和变换模式HH1,

其中Th1、Th2和Th3为预定义的整数值。

结合所述第二方面的第五种或第八种可能实现方式,在第九种可能实现方式中,所述Th1为4、8或16;所述Th2为32、64或128;或者所述Th3为64、128或256。

结合所述第二方面或所述第二方面的第一种至第九种可能实现方式中的任一种可能实现方式,在第十种可能实现方式中,所述熵解码单元还用于还用于根据所述CU的预测信息判断是否获取所述残差TU的目标变换模式。

结合所述第二方面的第十种可能实现方式,在第十一种可能实现方式中,所述熵解码单元还用于根据以下至少一种情况判断是否获取所述残差TU的目标变换模式:

当所述CU的预测模式为帧内预测模式时,确定获取所述残差TU的目标变换模式;

当所述CU的预测模式为帧间预测模式时,确定获取所述残差TU的目标变换模式;

当所述CU的预测方法为预设正向预测方法时,确定获取述残差TU的目标变换模式;或者

当所述CU的预测方法为预设负向预测方法时,确定不获取所述残差TU的目标变换模式。

结合所述第二方面的第十一种可能实现方式,在第十二种可能实现方式中,所述预设正向预测方法包括以下至少一种方法:基于平移模型的运动补偿方法;合并预测方法;运动矢量差的精度为1/4像素的高级运动矢量预测方法;或者合并索引小于2的合并预测方法。

结合所述第二方面的第十一或第十二种可能实现方式,在第十三种可能实现方式中,所述预设负向预测方法包括以下至少一种方法:基于仿射模型的运动补偿方法;仿射合并预测方法;仿射帧间预测模式;运动矢量差的精度为1像素或4像素的高级运动矢量预测方法;或者合并索引不小于2的合并预测方法。

结合所述第二方面或所述第二方面的第一种至第十三种可能实现方式中的任一种可能实现方式,在第十四种可能实现方式中,所述熵解码单元还用于根据所述CU的大小判断是否获取所述残差TU的目标变换模式。

结合所述第二方面的第十四种可能实现方式,在第十五种可能实现方式中,所述熵解码单元还用于根据以下至少一中情况判断是否获取所述残差TU的目标变换模式:

当所述CU的宽度或高度大于预设CU阈值时,确定不获取所述残差TU的目标变换模式;

当所述CU的一个TU的宽度或高度小于预设最小TU阈值时,确定不获取所述残差TU的目标变换模式;或者

当所述CU的一个TU的宽度或高度大于预设最大TU阈值时,确定不获取所述残差TU的目标变换模式。

结合所述第二方面的第十五种可能实现方式,在第十六种可能实现方式中,所述预设CU阈值为32个亮度像素、64个亮度像素或128个亮度像素;或者,所述预设最小TU阈值为4个亮度像素、8个亮度像素或16个亮度像素;或者,所述预设最大TU阈值为32个亮度像素、64个亮度像素或128个亮度像素。

根据第三方面,本发明实施例提供一种解码器,包括用于执行根据所述第一方面和所述第一方面的所述第一种至第十六种可能实现方式中任一种所述的方法的处理电路。

根据第四方面,本发明实施例提供了一种计算机程序产品,包括用于执行根据所述第一方面和所述第一方面的第一种至第十六种可能实现方式中任一种所述的方法的程序代码。

根据第五方面,本发明实施例提供一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,耦合到所述处理器并存储由所述处理器执行的程序,其中所述程序在由所述处理器执行时,使得所述解码器执行根据所述第一方面和所述第一方面的第一种至第十六种可能实现方式中任一种所述的方法。

通过执行本发明提供的方法,所述目标变换模式可以指定所述CU的TU划分模式、所述残差TU的位置和所述残差TU的变换类型,从而不仅可以提高解码效率,而且还可以提高解码质量;由于所述目标变换模式能够指定上述信息,因此可以减少传输上述信息所需的比特,从而节省传输编码音频数据所需的资源,例如带宽。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显然,以下描述中的附图仅示出了本发明的一些实施例,并且对于本领域普通技术人员而言,在不付出创造性劳动性的前提下还可以根据这些附图获得其它附图。

图1A为示例性编码系统的概念性或示意性框图。

图1B为另一示例性视频编码系统的说明图。

图2为示例性视频编码器的示意性/概念性框图。

图3为示例性视频解码器的示意性/概念性框图。

图4为视频编码设备的示意图。

图5为一种装置的框图。

图6示出了变换模式Q0、Q1、Q2和Q3。

图7示出了变换模式HQ0、HQ1、VQ0和VQ1。

图8示出了变换模式HH0、HH1、VH0和VH1。

图9示出了变换模式HH2和VH2。

图10示出了变换模式QH0、QH1、QH2和QH3。

图11示出了变换模式QV0、QV1、QV2和QV3。

图12A和图12B为一种视频解码方法的示意图。

图13示出了视频编码中的帧内预测的示例。

图14为示例性视频编码机制的示意图。

图15和图16示出了示例性空间变化变换(spatial variable transform,SVT)变换。

图17示出了相对于残差块的示例性SVT变换候选位置。

图18示出了相对于残差块的示例性SVT变换位置。

图19示出了残差像素点(sample)水平翻转的示例。

图20为通过位置相关SVT的一种视频解码示例性方法的流程图。

图21示出了SVT-V块和SVT-H块的候选位置(M1=M2=8)。

图22示出了分别具有3个候选位置的SVT-V和SVT-H。

图23示出了SVT-H和SVT-V。

图24示出了SVT-V块和SVT-H块的候选位置(M1=M2=8)。

图25示出了第一组变换系数和第二组变换系数。

具体实施方式

以下描述中,参考形成本发明一部分并以说明的方式示出本发明实施例的具体方面或可使用本发明实施例的具体方面的附图。应理解,本发明实施例可在其它方面中使用,并可包括附图中未描绘的结构变化或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。

例如,应理解,结合所描述的方法的揭示内容可以对用于执行所述方法的对应设备或系统也同样适用,且反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括例如功能单元等一个或多个单元,来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元,其中每个都执行多个步骤中的一个或多个),即使附图中未明确描述或说明这种一个或多个单元。另一方面,例如,如果基于如功能单元等一个或多个单元描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能性,或多个步骤,其中每个执行多个单元中一个或多个单元的功能性),即使附图中未明确描述或说明这种一个或多个步骤。进一步,应理解的是,除非另外明确提出,本文中所描述的各示例性实施例和/或方面的特征可以相互组合。

视频编码通常是指处理形成视频或视频序列的图像序列。在视频编码领域,术语“图像(picture)”、“帧(frame)”或“影像(image)”可以用作同义词。本申请(或本发明)中使用的视频编码表示视频编码或视频解码。视频编码在源侧执行,通常包括处理(例如,压缩)原始视频图像以减少表示该视频图像所需的数据量(从而更高效存储和/或传输)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或总称为图像,下文将进行解释)的“编码”应理解为视频序列的“编码”或“解码”。编码部分和解码部分也合称为编解码(编码和解码,CODEC)。

在无损视频编码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频编码情况下,通过量化等执行进一步压缩,来减少表示视频图像所需的数据量,而解码器侧无法完全重建视频图像,即重建的视频图像的质量比原始视频图像的质量较低或较差。

H.261的几个视频编码标准属于“有损混合型视频编解码”(即,将像素域(sampledomain)中的空间和时间预测与变换域中用于应用量化的2D变换编码结合)。视频序列中的每个图像通常划分成不重叠的块集合,通常在块级上进行编码。换句话说,编码器通常在块(视频块)级处理即编码视频,例如,通过空间(帧内)预测和时间(帧间)预测来产生预测块;从当前块(当前处理/待处理的块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待传输(压缩)的数据量,而解码器侧将相对于编码器的逆处理部分应用于编码或压缩的块,以重建用于表示的当前块。另外,编码器和解码器处理步骤相同,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建像素,用于处理,即编码后续块。

如本文中所用,术语“块”可以为图像或帧中的一部分。为便于描述,参考通用视频编码(Versatile video coding,VVC)参考软件或由ITU-T视频编码专家组(Video CodingExperts Group,VCEG)和ISO/IEC运动图像专家组(Motion Picture Experts Group,MPEG)的视频编码联合工作组(Joint Collaboration Team on Video Coding,JCT-VC)开发的高性能视频编码(High-Efficiency Video Coding,HEVC)描述本发明实施例。本领域普通技术人员理解本发明实施例不限于HEVC或VVC。可以指CU、PU、TU。在HEVC中,通过使用表示为编码树的四叉树结构将CTU拆分为多个CU。在CU级作出是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行编码的决定。每个CU可以根据PU拆分类型进一步拆分为一个、两个或四个PU。一个PU内应用相同的预测过程,并以PU为单位向解码器传输相关信息。在根据PU拆分类型应用预测过程来获取残差块之后,可以根据类似于用于CU的编码树的其它四叉树结构将CU划分成变换单元(transform unit,TU)。在视频压缩技术最新的发展中,使用四叉树和二叉树(Qual-tree and binary tree,QTBT)划分帧来划分编码块。在QTBT块结构中,CU可以为正方形或矩形。例如,编码树单元(coding tree unit,CTU)首先由四叉树结构进行划分。四叉树叶节点进一步由二叉树结构划分。二叉树叶节点称为编码单元(codingunit,CU),所述分段用于预测和变换处理,无需其它任何划分。这表示CU、PU和TU在QTBT编码块结构中的块大小相同。同时,还提出与QTBT块结构一起使用多重划分,例如三叉树划分。

在以下编码器20的实施例中,解码器30和编码系统10根据图1至图3进行描述。

图1A为示例性编码系统10的概念性或示意性框图,例如可以利用本申请(本发明)技术的视频编码系统10。视频编码系统10中的编码器20(例如视频编码器20)和解码器30(例如视频解码器30)代表可用于根据本申请中描述的各种示例执行各技术的设备等。如图1A所示,编码系统10包括源设备12,源设备12用于将编码图像13等编码数据13提供给用于对编码数据13进行解码的目的设备14等。

源设备12包括编码器20,另外即可选地,可包括图像源16、图像预处理单元18等预处理单元18、通信接口或通信单元22。

图像源16可包括或可以是任何类别的用于捕获现实世界图像等的图像捕获设备,和/或任何类别的图像或评论(对于屏幕内容编码,屏幕上的一些文字也认为是待编码的图像或影像的一部分)生成设备,例如用于生成计算机动画图像的计算机图形处理器或任何类别的用于获取和/或提供现实世界图像、计算机动画图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像和/或其任何组合(例如增强现实(augmented reality,AR)图像)的设备。

(数字)图像是或可以视为具有强度值的像素点组成的二维数组或矩阵。数组中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。数组或图像在水平方向和垂直方向(或轴线)上的像素点数量定义了图像的大小和/或分辨率。为了表示颜色,通常采用三个颜色分量,即图像可以表示为或包括三个像素点数组。在RBG格式或颜色空间中,图像包括相应的红色、绿色和蓝色像素点数组。但是,在视频编码中,每个像素通常以亮度/色差格式或颜色空间表示,例如YCbCr,包括Y指示的亮度分量(有时也用L表示)以及Cb、Cr表示的两个色差分量。亮度(luma)分量Y表示亮度或灰度水平强度(例如,在灰度等级图像中两者相同),而两个色差(chrominance,简写为chroma)分量Cb和Cr表示色差或颜色信息分量。相应地,YCbCr格式的图像包括亮度像素点值(Y)的亮度像素点数组和色差值(Cb和Cr)的两个色差像素点数组。RGB格式的图像可以转换或变换为YCbCr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是黑白的,则该图像可以只包括亮度像素点数组。

例如,图像源16(例如视频源16)可以为,例如用于捕获图像的相机、图像存储器等包括或存储之前捕获或生成的图像的存储器,和/或任何类别的获取或接收图像的(内部或外部)接口。例如,相机可以为本地相机或集成在源设备中的集成相机,存储器可以是本地存储器或集成在源设备中的存储器。例如,接口可以为用来从外部视频源接收图像的外部接口,外部视频源为类似于相机、外部存储器或外部图像生成设备的外部图像捕获设备等,外部图像生成设备为外部计算机图形处理器、计算机或服务器等。根据任意私有或标准化接口协议,接口可以为任何类别的接口,例如,有线接口或无线接口、光接口。获取图像数据17的接口可以与通信接口22为同一接口或者是通信接口22的一部分。

为了区分预处理单元18和预处理单元18执行的处理,图像或图像数据17(例如视频数据16)也可称为原始图像或原始图像数据17。

预处理单元18用于接收(原始)图像数据17,并对图像数据17进行预处理,得到预处理后的图像19或预处理后的图像数据19。例如,预处理单元18执行的预处理可包括修剪、颜色格式转换(例如从RGB转换为YCbCr)、调色或去噪。可以理解的是,预处理单元18可以为可选组件。

编码器20(例如视频编码器20)用于接收预处理后的图像数据19并提供编码后的图像数据21(下面将根据图2或图4等进一步描述)。

源设备12中的通信接口22可用于:接收编码后的图像数据21并向目的地设备14等另一设备或任何其它设备发送编码后的图像数据21,以便存储或直接重建,或分别在存储编码后的数据13和/或向目的地设备14等另一设备或任何其它解码或存储设备发送编码后的数据13之前对编码后的图像数据21进行处理。

目的地设备14包括解码器30(例如视频解码器30),另外即可选地,可包括通信接口或通信单元28、后处理单元32和显示设备34。

例如,目的地设备14中的通信接口28用于直接从源设备12或从存储设备等任何其它源接收编码图像数据21或编码数据13,例如,存储设备为编码图像数据存储设备。

通信接口22和通信接口28可用于通过源设备12与目的地设备14之间的直连通信链路,例如直接有线或无线连接等,或者通过任何类别的网络,例如有线网络、无线网络或其任何组合、任何类别的私网和公网或其任何类别的组合,发送或接收编码图像数据21或编码数据13。

例如,通信接口22可用于将编码图像数据21封装为合适的格式,例如包,以便在通信链路或通信网络上进行传输。

通信接口28与通信接口22对应,例如,可以用于对编码数据13进行解封装,得到编码图像数据21。

通信接口22和通信接口28均可配置为如图1A中从源设备12指向目的地设备14的对应编码图像数据13的箭头所指示的单向通信接口,或双向通信接口,并且可用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或例如编码图像数据传输等数据传输相关的任何其它信息,等等。

解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(下面将根据图3或图5等进一步描述)。

目的设备14中的后处理器32用于对解码图像31等解码图像数据31(也称为重建图像数据)进行后处理,得到后处理图像33等后处理图像数据33。后处理单元32执行的后处理可以包括例如颜色格式转换(例如从YCbCr转换为RGB)、调色、修剪或重采样,或者用于产生供显示设备34等显示的解码图像数据31等任何其它处理。

目的地设备14中的显示设备34用于接收后处理图像数据33,以向用户或观看者等显示图像。显示设备34可以为或包括任何类别的用于表示重建图像的显示器,例如,集成或外部显示屏或显示器。例如,显示屏可包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶显示器(liquid crystal on silicon,LCoS)、数字光处理器(digital light processor,DLP)或任何类别的其它显示屏。

尽管图1A示出了源设备12和目的地设备14作为独立的设备,但设备实施例也可以同时包括源设备12和目的地设备14或同时包括源设备12和目的地设备14的功能,即同时包括源设备12或对应功能和目的地设备14或对应功能。在这些实施例中,源设备12或对应功能和目的地设备14或对应功能可以使用相同硬件和/或软件或通过单独的硬件和/或软件或其任何组合来实现。

根据描述,图1A所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。

编码器20(例如视频编码器20)和解码器30(例如视频解码器30)都可实施为各种合适的电路,例如一个或多个微处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件或其任何组合。如果部分技术在软件中实施,则设备可以将软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且使用一个或多个处理器在硬件中执行指令,从而执行本发明技术。前述内容(包括硬件、软件、硬件和软件的组合等)中的任一者可以认为是一个或多个处理器。视频编码器20和视频解码器30都可以包含在一个或多个编码器或解码器中,其中任一者可作为组合编解码器(encoder/decoder,CODEC)的一部分集成在相应设备中。

源设备12可以称为视频编码设备或视频编码装置。目的地设备14可以称为视频解码设备或视频解码装置。源设备12和目的地设备14可以为视频编码设备或视频编码装置的示例。

源设备12和目的地设备14可包括各种设备中的任一种,包括任何类别的手持设备或固定设备,例如,笔记本或笔记本电脑、手机、智能手机、平板或平板电脑、相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(例如,内容业务服务器或内容分发服务器)、广播接收设备、广播发射设备,等等,并可以不使用或使用任何类别的操作系统。

在一些情况下,可配备源设备12和目的地设备14进行无线通信。因此,源设备12和目的地设备14可以是无线通信设备。

在一些情况下,图1A所示的视频编码系统10仅仅是示例性的,本申请技术可适用于视频编码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据是从本地存储器中检索,通过网络发送,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是编码数据到存储器和/或从存储器中检索并解码数据的设备来执行。

应理解,对于结合视频编码器20描述的上述每一个示例,视频解码器30可用于执行相反过程。关于信令语法元素,视频解码器30可用于接收和解析这种语法元素,相应地解码相关视频数据。在一些示例中,视频编码器20可将一个或多个语法元素熵编码为编码视频比特流。在这些示例中,视频解码器30可解析这种语法元素,相应地解码相关视频数据。

图1B为根据示例性实施例的包括图2的编码器20和/或图3的解码器30的另一示例性视频编码系统40的说明图。系统40能够根据本申请描述的各种示例来实现各技术。在所说明的实现方式中,视频编码系统40可包括成像设备41、视频编码器100、视频解码器30(和/或通过处理单元46中的逻辑电路47实现的视频编码器)、天线42、一个或多个处理器43、一个或多个存储器44和/或显示设备45。

如图所示,成像设备41、天线42、处理单元46、逻辑电路47、视频编码器20、视频解码器30、处理器43、存储器44和/或显示设备45能够互相通信。如上所述,虽然示出了视频编码系统40包括视频编码器20和视频解码器30,但在各种示例中,视频编码系统40可以只包括视频编码器20或只包括视频解码器30。

如图所示,在一些示例中,视频编码系统40可包括天线42。例如,天线42可用于发送或接收视频数据组成的编码比特流。此外,在一些示例中,视频编码系统40可包括显示设备45。显示设备45可用于显示视频数据。如图所示,在一些示例中,逻辑电路47可通过处理单元46来实现。处理单元46可包括专用集成电路(application-specific integratedcircuit,ASIC)逻辑、图形处理器、通用处理器,等等。视频编码系统40还可包括可选处理器43,处理器43同样可包括专用集成电路(application-specific integrated circuit,ASIC)逻辑、图形处理器、通用处理器,等等。在一些示例中,逻辑电路47可通过硬件、视频编码专用硬件等等来实现,处理器43可通过通用软件、操作系统等等来实现。另外,存储器44可以是任何类型的存储器,例如,易失性存储器(例如,静态随机存取存储器(StaticRandom Access Memory,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)等)或非易失性存储器(例如闪存等),等等。在非限制性示例中,存储器44可通过高速缓存内存实现。在一些示例中,逻辑电路47可访问存储器44(例如用于实现图像缓冲区)。在其它示例中,逻辑电路47和/或处理单元46可包括用于实现图像缓冲区等的存储器(例如高速缓存等等)。

在一些示例中,通过逻辑电路实现的视频编码器100可包括图像缓冲区(例如通过处理单元46或存储器44实现)和图形处理单元(例如通过处理单元46实现)。该图形处理单元可通信地耦合到图像缓冲区。该图形处理单元可包括通过逻辑电路47实现的视频编码器100,以包含参照图2论述的各种模块和/或本文描述的任何其它编码器系统或子系统。该逻辑电路可用于执行本文论述的各种操作。

视频解码器30可以按类似的方式通过逻辑电路47实现,以包含参照图3的解码器30论述的各种模块和/或本文描述的任何其它解码器系统或子系统。在一些示例中,通过逻辑电路实现的视频解码器30可包括图像缓冲区(例如通过处理单元420或存储器44实现)和图形处理单元(例如通过处理单元46实现)。该图形处理单元可通信地耦合到图像缓冲区。该图形处理单元可包括通过逻辑电路47实现的视频解码器30,以包含参照图3论述的各种模块和/或本文描述的任何其它解码器系统或子系统。

在一些示例中,视频编码系统40中的天线42可用于接收视频数据组成的编码比特流。如上所述,编码比特流可包括与本文论述的视频帧编码相关联的数据、指示符、索引值、模式选择数据等等,例如与编码分区相关联的数据(例如,变换系数或量化变换系数,可选的指示符(如上所述)和/或定义编码分区的数据)。视频编码系统40还可包括耦合到天线42并用于对编码比特流进行解码的视频解码器30。显示设备45用于显示视频帧。

编码器和编码方法

图2示出了用于实现本申请技术的视频编码器20的示例的示意性/概念性框图。在图2的示例中,视频编码器20包括残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、缓冲器216,环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、预测处理单元260和熵编码单元270。预测处理单元260可包括帧间预测单元244、帧内预测单元254和模式选择单元262。帧间预测单元244可包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可称为混合型视频编码器或基于混合型视频编解码器的视频编码器。

例如,残差计算单元204、变换处理单元206、量化单元208、预测处理单元260和熵编码单元270形成编码器20的前向信号路径,而例如反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲区(decoded picture buffer,DPB)230、预测处理单元260形成编码器的后向信号路径,其中编码器的后向信号路径对应于解码器的信号路径(参见图3中的解码器30)。

编码器20用于通过输入端202等接收图像201或图像201的块203,例如,形成视频或视频序列的图像序列中的图像。图像块203也可称为当前图像块或待编码的图像块,图像201也可称为当前图像或待编码的图像(尤其是在视频编码中将当前图像与其它图像区分开时,其它图像例如同一视频序列,即也包括当前图像的视频序列,中的之前编码和/或解码图像)。

划分

编码器20的具体实现可包括划分单元(图2中未示出),用于将图像201划分成多个块,例如块203,通常划分成多个不重叠块。划分单元可用于对视频序列中的所有图像使用相同的块大小和使用限定块大小的对应网格,或在图像或图像子集或图像组之间改变块大小,并将每张图像划分成对应块。

在一个示例中,视频编码器20中的预测处理单元260可用于执行上文描述的划分技术的任意组合。

与图像201一样,块203同样是或可认为是具有强度值(像素点值)的像素点组成的二维数组或矩阵,但是块203的大小比图像201的大小小。换句话说,块203可包括一个像素点数组(例如,单色图像201情况下的亮度数组)或三个像素点数组(例如,彩色图像201情况下的一个亮度数组和两个色差数组)或根据所采用的颜色格式的任何其它数量和/或类别的数组。块203的水平方向和垂直方向(或轴线)上的像素点数量限定了块203的大小。

图2所示的编码器20用于逐块对图像201进行编码,例如,对每个203执行编码和预测。

残差计算

残差计算单元204用于通过如下方式根据图像块203和预测块265来计算残差块205(后续详细介绍了预测块265):例如,逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值,得到像素域中的残差块205。

变换

变换处理单元206用于对残差块205的像素点值执行离散余弦变换(discretecosine transform,DCT)或离散正弦变换(discrete sine transform,DST)等,得到变换域中的变换系数207。变换系数207也可称为变换残差系数,表示变换域中的残差块205。

变换处理单元206可用于应用DCT/DST的整数化近似,例如为HEVC/H.265指定的变换。与正交DCT变换相比,这种整数化近似通常通过某一因子进行缩放。为了维持经过正变换和逆变换处理的残差块的范数,使用其它缩放因子作为变换过程的一部分。缩放因子通常是根据某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的权衡等。例如,在解码器30侧通过逆变换处理单元212为逆变换(以及在编码器20侧通过例如逆变换处理单元212为对应逆变换)指定具体的缩放因子,以及相应地,可以在编码器20侧通过变换处理单元206为正变换指定对应缩放因子。

量化

量化单元208用于通过例如标量量化或矢量量化对变换系数207进行量化,得到量化变换系数209。量化变换系数209也可称为量化残差系数209。量化过程可减少与部分或全部变换系数207有关的位深度。例如,可在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m。可通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以应用不同程度的缩放来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可通过量化参数(quantization parameter,QP)指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可对应精细量化(较小量化步长),较大的量化参数可对应粗糙量化(较大量化步长),反之亦然。量化可包括除以量化步长,而反量化210等执行的对应或逆解量化可包括乘以量化步长。根据例如HEVC一些标准的实施例可用于使用量化参数来确定量化步长。一般而言,可以根据量化参数使用包含除法的等式的定点近似来计算量化步长。可以引入其它缩放因子来进行量化和解量化,以恢复可能由于在用于量化步长和量化参数的等式的定点近似中使用的缩放而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的缩放。或者,可以使用自定义量化表并在比特流中等将其从编码器向解码器指示。量化是有损操作,其中量化步长越大,损耗越大。

反量化单元210用于对量化系数进行量化单元208的反量化,得到解量化系数211,例如,根据或使用与量化单元208相同的量化步长采用与量化单元208所使用的量化方案的反量化方案。解量化系数211也可称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,反量化系数211通常与变换系数不完全相同。

逆变换处理单元212用于执行变换处理单元206执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以在像素域中得到逆变换块213。逆变换块213也可称为逆变换解量化块213或逆变换残差块213。

重建单元214(例如,求和器214)用于将逆变换块213(即重建残差块213)添加到预测块265,以在像素域中获取重建块215,例如,将重建残差块213的像素点值和预测块265的像素点值相加。

可选地,例如列缓冲器216等缓冲器单元216(或简称“缓冲器”216)用于缓冲或存储重建块215和对应的像素点值,用于帧内预测等。在其它实施例中,编码器可用于使用存储在缓冲单元216中的未经滤波的重建块和/或对应的像素点值进行任何类别的估计和/或预测,例如帧内预测。

编码器20的实施例可配置以使得缓冲器单元216不只用于存储用于帧内预测254的重建块215,也用于环路滤波器单元220(图2中未示出),和/或例如使得缓冲器单元216与解码图像缓冲区单元230形成一个缓冲器。其它实施例可用于将滤波块221和/或来自解码图像缓冲区230的块或像素点(块和像素点都未在图2中示出)用作帧内预测254的输入或基础。

环路滤波器单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到滤波块221,从而顺利进行像素转变或提高视频质量。环路滤波器单元220旨在表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器或其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器或协同滤波器。尽管环路滤波器单元220在图2中示为环路滤波器,但在其它配置中,环路滤波器单元220可实现为环后滤波器。滤波块221也可称为滤波重建块221。解码图像缓冲区230可以在环路滤波器单元220对重建编码块执行滤波操作之后存储重建编码块。

编码器20(对应地,环路滤波器单元220)的实施例可用于输出环路滤波器参数(例如采样自适应偏移信息),例如,直接输出或由熵编码单元270或任何其它熵编码单元进行熵编码后输出,例如使得解码器30可接收并使用相同的环路滤波器参数进行解码。

解码图像缓冲区(decoded picture buffer,DPB)230可以是存储参考图像数据以供视频编码器20在编码视频数据时使用的参考图像存储器。DPB 230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,DRAM),包括同步DRAM(synchronous DRAM,SDRAM)、磁阻RAM(magnetoresistive RAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储设备。可以由同一存储器设备或单独的存储器设备提供DPB 230和缓冲器216。在某个示例中,解码图像缓冲区(decoded picture buffer)230用于存储滤波块221。解码图像缓冲区230还可用于存储同一当前图像或例如之前的重建图像等不同图像的其它之前的滤波块,例如之前重建和滤波的块221,并可提供完整的之前重建即解码图像(和对应参考块和像素点)和/或部分重建的当前图像(和对应参考块和像素点),例如用于帧间预测。在某一示例中,如果重建块215无需环内滤波而得以重建,则解码图像缓冲区(decoded picture buffer,DPB)230用于存储重建块215。

预测处理单元260,也称为块预测处理单元260,用于接收或获取块203(当前图像201的当前块203)和重建图像数据,例如,来自缓冲器216的同一(当前)图像的参考像素点和/或来自解码图像缓冲区230的一个或多个之前解码图像的参考图像数据231,以及用于处理这类数据进行预测,即提供可以为帧间预测块245或帧内预测块255的预测块265。

模式选择单元262可用于选择预测模式(例如,帧内或帧间预测模式)和/或对应的用作预测块265的预测块245或255,以计算残差块205和对重建块215进行重建。

模式选择单元262的实施例可用于选择预测模式(例如,从预测处理单元260支持的预测模式中),所述预测模式提供最佳匹配或者说最小残差(最小残差是指传输或存储中更好的压缩),或者提供最小信令开销(最小信令开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元262可用于根据码率失真优化(rate distortionOptimization,RDO)确定预测模式,即选择提供最小码率失真优化的预测模式,或选择相关码率失真至少满足预测模式选择标准的预测模式。

下文将详细说明编码器20的示例(例如预测处理单元260)执行的预测处理和(例如通过模式选择单元262)执行的模式选择。

如上所述,编码器20用于从(预定的)预测模式集合中确定或选择最好或最优的预测模式。预测模式集合可包括例如帧内预测模式和/或帧间预测模式。

帧内预测模式集合可包括35种不同的帧内预测模式,例如,像DC(或均值)模式和平面模式的非方向性模式,或如H.265定义的方向性模式,或者可包括67种不同的帧内预测模式,例如,像DC(或均值)模式和平面模式的非方向性模式,或如正在发展中的H.266中定义的方向性模式。

在可能的实现中,帧间预测模式集合取决于可用参考图像(即,例如前述存储在DBP 230中的至少部分之前解码的图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分,例如围绕当前块的区域的搜索窗口区域,来搜索最佳匹配参考块,和/或例如取决于是否执行半像素或四分之一像素内插的像素内插。

除上述预测模式外,还可以采用跳过模式和/或直接模式。

预测处理单元260还可用于将块203划分成较小的块分区或子块,例如,通过迭代使用四叉树(quad-tree,QT)划分、二叉树(binary-tree,BT)划分或三叉树(triple-tree,TT)划分或其任何组合,并且用于例如对块分区或子块中的每一个执行预测,其中模式选择包括选择划分块203的树结构和选择应用于块分区或子块中的每一个的预测模式。

帧间预测单元244可包括运动估计(motion estimation,ME)单元(图2中未示出)和运动补偿(motion compensation,MC)单元(图2中未示出)。运动估计单元用于接收或获取图像块203(当前图像201的当前图像块203)和解码图像231,或至少一个或多个之前重建块,例如,一个或多个其它/不同之前解码图像231的重建块,来进行运动估计。例如,视频序列可包括当前图像和之前的解码图像231,或换句话说,当前图像和之前的解码图像231可以是形成视频序列的图像序列的一部分或形成该图像序列。

例如,编码器20可用于从多个其它图像中的同一或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引……)和/或参考块的位置(x、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元(图2中未示出)。该偏移也称为运动矢量(motion vector,MV)。

运动补偿单元用于获取或接收帧间预测参数,并根据或使用该帧间预测参数执行帧间预测,得到帧间预测块245。由运动补偿单元(图2中未示出)执行的运动补偿可能包含根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可能包括对子像素精度执行内插。内插滤波可从已知像素点中产生其它像素点,从而潜在地增加可用于对图像块进行编码的候选预测块的数量。一旦接收到当前图像块的PU对应的运动矢量时,运动补偿单元246可在其中一个参考图像列表中定位运动矢量指向的预测块。运动补偿单元246还可以生成与块和视频片相关联的语法元素,以供视频解码器30在解码视频片的图像块时使用。

帧内预测单元254用于获取,例如接收同一图像的图像块203(当前图像块)和一个或多个之前重建块,例如重建相邻块,以进行帧内预测。例如,编码器20可用于从多个(预定)帧内预测模式中选择一个帧内预测模式。

编码器20的实施例可用于根据优化标准来选择帧内预测模式,例如根据最小残差(例如,提供最类似于当前图像块203的预测块255的帧内预测模式)或最小码率失真。

帧内预测单元254还用于根据例如所选择的帧内预测模式等帧内预测参数确定帧内预测块255。在任何情况下,在选择块的帧内预测模式之后,帧内预测单元254还用于向熵编码单元270提供帧内预测参数,即提供指示所选择的用于块的帧内预测模式的信息。在一个示例中,帧内预测单元254可用于执行下文描述的帧内预测技术的任何组合。

熵编码单元270用于将熵编码算法或方案(例如,可变长度编码(variable lengthcoding,VLC)方案、上下文自适应VLC方案(context adaptive VLC,CALVC)、算术编码方案、上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binaryarithmetic coding,SBAC)、概率区间划分熵(probability interval partitioningentropy,PIPE)编码或其它熵编码方法或技术)应用于量化残差系数209、帧间预测参数、帧内预测参数和/或环路滤波器参数中的单个或所有上(或不应用),得到可以通过输出272以例如编码比特流21的形式输出的编码图像数据21。可将编码比特流21传输到视频解码器30,或将其存档稍后由视频解码器30传输或检索。熵编码单元270还可以用于对正被编码的当前视频片的其它语法元素进行熵编码。

视频编码器20的其它结构变体可用于对视频流进行编码。例如,基于非变换的编码器20可以在没有针对某些块或帧的变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。

图3示出了用于实现本申请技术的示例性视频解码器30。视频解码器30用于接收例如由编码器100编码的编码图像数据(例如编码比特流)21,得到解码图像131。在解码过程中,视频解码器30从视频编码器100接收视频数据,例如表示编码视频片的图像块的编码视频比特流和相关联的语法元素。

在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、缓冲器316、环路滤波器320、解码图像缓冲区330和预测处理单元360。预测处理单元360可包括帧间预测单元344、帧内预测单元354和模式选择单元362。在一些示例中,视频解码器30可执行大体上与参照图2的视频编码器100描述的编码过程相反的解码过程。

熵解码单元304用于对编码图像数据21执行熵解码,得到例如量化系数309和/或解码后的编码参数(图3中未示出),例如,帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素等中(解码后)的任一个或全部。熵解码单元304还用于向预测处理单元360转发帧间预测参数、帧内预测参数和/或其它语法元素。视频解码器30可以接收视频片和/或视频块级的语法元素。

反量化单元310在功能上可与反量化单元110相同,逆变换处理单元312在功能上可与逆变换处理单元112相同,重建单元314在功能上可与重建单元114相同,缓冲器316在功能上可与缓冲器116相同,环路滤波器320在功能上可与环路滤波器120相同,解码图像缓冲区330在功能上可与解码图像缓冲区130相同。

预测处理单元360可包括帧间预测单元344和帧内预测单元354,其中帧间预测单元344在功能上可与帧间预测单元144相似,帧内预测单元354在功能上可与帧内预测单元154相似。预测处理单元360通常用于执行块预测和/或从编码数据21中获取预测块365,并从熵解码单元304等(显式或隐式地)接收或获取预测相关参数和/或关于所选预测模式的信息。

当将视频片编码为帧内编码(intra coded,I)片时,预测处理单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前帧或当前图像的之前解码块的数据生成用于当前视频片的图像块的预测块365。当视频帧编码为帧间编码(即,B或P)片时,预测处理单元360中的帧间预测单元344(例如运动补偿单元)用于根据的运动矢量和从熵解码单元304接收的其它语法元素生成用于当前视频片的视频块的预测块365。对于帧间预测,可从其中一个参考图像列表中的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在DPB 330中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。

预测处理单元360用于通过解析运动矢量和其它语法元素,确定用于当前视频片的视频块的预测信息,并使用预测信息产生用于正在解码的当前视频块的预测块。例如,预测处理单元360使用接收到的一些语法元素确定用于编码视频片的视频块的预测模式(例如,帧内预测或帧间预测)、帧间预测片类型(例如,B片、P片或GPB片)、用于片的一个或多个参考图像列表的构建信息、用于片的每个帧间编码视频块的运动矢量、用于片的每个帧间编码视频块的帧间预测状态、其它信息,以解码当前视频片内的视频块。

反量化单元310用于对在比特流中提供且由熵解码单元304解码的量化变换系数进行反量化,即解量化。反量化过程可包括使用视频编码器100为视频片中的每个视频块计算的量化参数来确定量化程度,同样也确定需要执行的反量化的程度。

逆变换处理单元312用于对变换系数进行逆变换,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便在像素域中产生残差块。

重建单元314(例如,求和器314)用于将逆变换块313(即重建残差块313)添加到预测块365,以在像素域中获取重建块315,例如,将重建残差块313的像素点值和预测块365的像素点值相加。

环路滤波器单元320(在编码环路中或之后)用于对重建块315进行滤波,得到滤波块321,从而顺利进行像素转变或提高视频质量。在一个示例中,环路滤波器单元320可用于执行下文描述的滤波技术的任何组合。环路滤波器单元320旨在表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器或其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,ALF)、锐化或平滑滤波器或协同滤波器。尽管环路滤波器单元320在图3中示为环路滤波器,但在其它配置中,环路滤波器单元320可以实现为环后滤波器。

随后将某个帧或某个图像中的解码视频块321存储在存储用于后续运动补偿的参考图像的解码图像缓冲区330中。

解码器30用于,例如通过输出332输出解码图像331,以向用户显示或供用户查看。

视频解码器30的其它变型可用于对压缩比特流进行解码。例如,解码器30可以在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在没有针对某些块或某些帧的逆变换处理单元312的情况下直接对残差信号进行反量化。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。

图4为本发明实施例提供的视频编码设备400的示意图。视频编码设备400适用于实施本文描述的已公开实施例。在一个实施例中,视频编码设备400可以是解码器,例如图1A中的视频解码器30,也可以是编码器,例如图1A中的视频编码器20。在一个实施例中,视频编码设备400可以是上述图1A的视频解码器30或视频编码器20中的一个或多个组件。

视频编码设备400包括:用于接收数据的入端口410和接收单元(receiver unit,Rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)430;用于传输数据的发送单元(transmitter unit,Tx)440和出端口450;用于存储数据的存储器460。视频编码设备400还可包括耦合到入端口410、接收单元420、发送单元440和出端口450的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用于光信号或电信号的出口或入口。

处理器430通过硬件和软件来实现。处理器430可实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括编码模块470。编码模块470实施上文所公开的实施例。例如,编码模块470执行、处理、准备或提供各种编码操作。因此,通过编码模块470为视频编码设备400的功能提供了实质性的改进,并且影响了视频编码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现编码模块470。

存储器460包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择执行程序时存储此类程序,并且存储在程序执行过程中读取的指令和数据。存储器460可以是易失性和/或非易失性的,可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(static random-access memory,SRAM)。

图5为示例性实施例提供的装置500的简化框图,装置500可用作图1中的源设备310和目的地设备320中的任一个或两个。装置500可以实现上文描述的本申请中的各技术。装置500可以是包括多个计算设备的计算系统,也可以是单个计算设备,例如手机、平板计算机、便携式计算机、笔记本电脑、台式计算机,等等。

装置500中的处理器502可以是中央处理器。或者,处理器502可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型设备或多个设备。如图所示,虽然可以使用如图所示的处理器502等单个处理器来实践已公开实现方式,但使用一个以上处理器能够实现速度和效率方面的优势。

在一种实现方式中,装置500中的存储器504可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可包括操作系统508和应用程序510,应用程序510包括允许处理器502执行本文所述方法的至少一个程序。例如,应用程序510可以包括应用1至N,还包括执行本文所述方法的视频编码应用。装置500还可以包括采用辅助储存器514形式的附加存储器。例如,辅助储存器514可以是与移动计算设备一起使用的存储卡。由于视频通信会话可能会包含大量信息,因此这些信息可以全部或部分存储在辅助储存器514中,并根据需要加载到存储器504中进行处理。

装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是将显示器与可用于感测触摸输入的触敏元件组合的触敏显示器。显示器518可以通过总线512耦合到处理器502。除了显示器518,还可以提供允许用户编程或使用装置500的其它输出设备,或提供这些设备来替代显示器518。当输出设备是或包括显示器时,该显示器可以通过各种方式实现,包括液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode-ray tube,CRT)显示器、等离子显示器或发光二极管(light emitting diode,LED)显示器,例如有机LED(organic LED,OLED)显示器。

装置500还可以包括图像传感设备520,例如相机或任何其它现有的或今后将研发出的能够感测用户操作装置500的图像等图像的图像传感设备520,也可以与图像传感设备520通信。图像传感设备520可以放置为直接面向操作装置500的用户。在一个示例中,可以配置图像传感设备520的位置和光轴,使得视野包括紧邻显示器518且能够看见显示器518的区域。

装置500还可以包括声感设备522,例如麦克风或任何其它现有的或今后将研发出的能够感测装置500附近声音的声感设备,也可以与声感设备522通信。声感设备522可以放置为面向操作装置500的用户,并且可以用于接收用户在操作装置500时发出的声音,例如语音或其它话语段。

虽然在图5中将装置500的处理器502和存储器504图示为集成在单个单元中,但是也可以使用其它配置。可以在多台机器(每台机器具有一个或多个处理器)上对处理器502的操作进行处理,这些机器可以直接耦合或跨局域网或其它网络耦合。存储器504可以分布在多台机器中,例如多台机器中执行装置500的操作的基于网络的存储器或存储器。虽然装置500中的总线512在本文中描述为单个总线,但是总线512可以包括多条总线。此外,辅助储存器514可以直接耦合到装置500的其它组件或通过网络访问,并且可以包括存储卡等单个集成单元或多个存储卡等多个单元。因此,装置500可以具有各种各样的配置。

类似H.265/HEVC或H.266/VVC的视频编码以混合型预测加变换框架为基础。编码树单元(Coding Tree Unit,CTU)划分为一个或多个编码单元(coding unit,CU)。一个CU可包含一个亮度块和两个色差块(例如,格式为YUV4:2:0或YUV4:4:4),或只包含一个亮度块,或只包含两个色差块。一个CU可对应一个预测单元(prediction unit,PU)和一个变换单元(TU),或对应一个预测单元和多个变换单元。预测单元包含预测像素点组成的预测块,变换单元包含残差像素点组成的变换块。将预测像素点与对应的残差像素点相加得到CU的重建像素点。

在编码器侧,根据率失真优化确定CU的预测信息(例如,预测模式和运动矢量信息)和残差信息(例如,变换模式、变换系数和量化参数),然后将预测信息编码到比特流中。在解码器侧,解析预测信息和残差信息。根据预测信息,执行帧内或帧间预测,生成预测单元的预测像素点。根据残差信息,进行反量化和逆变换,生成变换单元的残差像素点。将预测像素点和残差像素点相加,得到编码单元的重建像素点。

基本变换模式是CU的残差在一个TU中进行变换,即CU大小等于TU大小。在HEVC的残差四叉树(Residual Quad-Tree,RQT)中,一个CU可划分为4个大小相等的TU,每个TU是否具有残差的信息由每个TU的编码块变量(coded block flags,cbf)指示。CU是否具有残差的信息由CU的根cbf(例如,HEVC中的rqt_root_cbf语法元素)指示。

VTM中的自适应多核变换(Adaptive Multiple core Transform,AMT)使得一个变换块使用变换类型集合中的一个变换类型。该变换类型在比特流中指示,变换类型指定变换块的水平变换(或行变换)和垂直变换(或列变换)。水平/垂直变换的可能核心变换包括离散正弦变换(Discrete Sine Transform,DST)和离散余弦变换(Discrete CosineTransform,DCT),例如,DST-7(DST类型7)、DST-1、DCT-8、DCT-2和DCT-5。

为了提高变换编码效率,本发明引入了CU的新变换模式。对于每种新变换模式,一个CU划分为N(N=2、3或4)个TU,CU中只有一个TU具有残差,并推断CU中的其余N-1个TU没有残差块。除此之外,从变换模式指定的变换类型集合中获取或选择具有残差的TU的变换类型(即水平变换和垂直变换)。换句话说,每种新变换模式指定TU划分方式、只有一个TU具有残差、具有残差的TU的变换类型集合。

本发明实施例描述了编码单元解码过程。对包含视频数据的至少一个图像的比特流进行解码。将一个图像拆分为多个矩形图像区域,每个区域对应一个编码树单元(CodingTree Unit,CTU)。根据比特流中包含的块划分信息,将一个CTU划分成多个编码单元。从比特流中解析出编码单元的编码信息,并根据编码信息重建编码单元的像素。编码信息包含预测信息和变换信息。

预测信息指示CU的预测模式(即,帧间预测或帧内预测)。如果预测模式为帧内预测,则预测信息还可包含帧内预测模式,例如,HEVC和VVC中的平面模式、DC模式和角度模式。如果预测模式为帧间预测,则预测信息还可包含采用跳过模式还是合并模式或高级运动矢量预测(advanced motion vector prediction,AMVP)模式、合并候选索引、帧间预测方向、参考帧索引、运动矢量、是否采用基于仿射模型的预测,等等。

变换信息指示CU的变换模式、与CU中一个或多个TU相关联的变换系数。除了采用CU的残差块在与CU大小相同的TU中进行变换的传统变换模式之外,本实施例还采用了新变换模式。对于每种新变换模式,一个CU划分为N(N=2、3或4)个TU,只有一个TU具有残差,并推断其余N-1个TU没有残差块。除此之外,变换模式指定了具有残差的TU的变换类型(即水平变换和垂直变换)。

在一个示例中,新变换模式包括以下四种模式Q0、Q1、Q2和Q3,如图6所示。对于这四种模式中的每种模式,W×H大小的CU划分为(W/2)×(H/2)大小的4个TU,即左上方的TU0、右上方的TU1、左下方的TU2和右下方的TU3。TU0、TU1、TU2和TU3中只有一个TU具有残差。具有残差的TU存在一个变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定(即变换类型集合对应于变换模式)。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量或索引指示。

(1)变换模式Q0TU0具有残差,第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-8和DCT-8,第二变换类型是指:TU0的水平变换和垂直变换分别是DST-7和DST-7。

(2)变换模式Q1TU1具有残差,第一变换类型是指:TU1的水平变换和垂直变换分别是DST-7和DCT-8,第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-8和DST-7。

(3)变换模式Q2TU2具有残差,第一变换类型是指:TU2的水平变换和垂直变换分别是DCT-8和DST-7,第二变换类型是指:TU2的水平变换和垂直变换分别是DST-7和DCT-8。

(4)变换模式Q3TU3具有残差,第一变换类型是指:TU3的水平变换和垂直变换分别是DST-7和DST-7,第二变换类型是指:TU3的水平变换和垂直变换分别是DCT-8和DCT-8。

在本示例中,第二变换类型根据第一变换类型而定。如果第一变换类型的水平变换是DCT-8(或DST-7),则第二变换类型的水平变换是DST-7(或DCT-8)。如果第一变换类型的垂直变换是DCT-8(或DST-7),则第二变换类型的垂直变换是DST-7(或DCT-8)。

在另一个示例中,变换模式Q0、Q1、Q2和Q3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在包括四种变换类型的变换类型集合,变换模式Q0、Q1、Q2和Q3下的这四种变换类型相同。具有残差的TU所使用的变换类型在比特流中指示,例如,通过两个变量指示或通过截断的一元码指示。四种变换类型如下所示。

变换类型1:残差TU的水平变换是DST-7,残差TU的垂直变换是DST-7,记为DST-7/DST-7;

变换类型2:残差TU的水平变换是DST-7,残差TU的垂直变换是DCT-8,记为DST-7/DCT-8;

变换类型3:残差TU的水平变换是DCT-8,残差TU的垂直变换是DST-7,记为DCT-8/DST-7;

变换类型4:残差TU的水平变换是DCT-8,残差TU的垂直变换是DCT-8,记为DCT-8/DCT-8。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在一个示例中,新变换模式包括以下四种模式Q0、Q1、Q2和Q3,如图6所示。对于这四种模式中的每种模式,W×H大小的CU划分为(W/2)×(H/2)大小的4个TU,即左上方的TU0、右上方的TU1、左下方的TU2和右下方的TU3。TU0、TU1、TU2和TU3中只有一个TU具有残差。具有残差的TU存在一个变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定(即变换类型集合对应于变换模式)。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量或索引指示。

(1)变换模式Q0TU0具有残差,第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-4和DCT-4,第二变换类型是指:TU0的水平变换和垂直变换分别是DST-4和DST-4。

(2)变换模式Q1TU1具有残差,第一变换类型是指:TU1的水平变换和垂直变换分别是DST-4和DCT-4,第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-4和DST-4。

(3)变换模式Q2TU2具有残差,第一变换类型是指:TU2的水平变换和垂直变换分别是DCT-4和DST-4,第二变换类型是指:TU2的水平变换和垂直变换分别是DST-4和DCT-4。

(4)变换模式Q3TU3具有残差,第一变换类型是指:TU3的水平变换和垂直变换分别是DST-4和DST-4,第二变换类型是指:TU3的水平变换和垂直变换分别是DCT-4和DCT-4。

在本示例中,第二变换类型根据第一变换类型而定。如果第一变换类型的水平变换是DCT-4(或DST-4),则第二变换类型的水平变换是DST-4(或DCT-4)。如果第一变换类型的垂直变换是DCT-4(或DST-4),则第二变换类型的垂直变换是DST-4(或DCT-4)。

在另一个示例中,变换模式Q0、Q1、Q2和Q3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在包括四种变换类型的变换类型集合,变换模式Q0、Q1、Q2和Q3下的这四种变换类型相同。具有残差的TU所使用的变换类型在比特流中指示,例如,通过两个变量指示或通过截断的一元码指示。四种变换类型如下所示。

变换类型1:残差TU的水平变换是DST-4,残差TU的垂直变换是DST-4,记为DST-4/DST-4;

变换类型2:残差TU的水平变换是DST-4,残差TU的垂直变换是DCT-4,记为DST-4/DCT-4;

变换类型3:残差TU的水平变换是DCT-4,残差TU的垂直变换是DST-4,记为DCT-4/DST-4;

变换类型4:残差TU的水平变换是DCT-4,残差TU的垂直变换是DCT-4,记为DCT-4/DCT-4。

对于具有残差的TU,可从比特流中解析出Cb、Cr和Y三个分量的编码块变量(codedblock flag,cbf),这三个分量的至少一个cbf的值为1。对于没有残差的其余TU中的每一个,推断所有颜色分量的cbf都为0,即从比特流中没有解析出cbf。

在另一个示例中,新变换模式包括以下四种模式HQ0、HQ1、VQ0和VQ1,如图7所示。对于所有这四种模式,W×H大小的CU划分为大小不等的两个TU,而只有大小较小的TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HQ0:CU通过水平划分划分为两个TU,即W×(H/4)大小的TU0和W×(3H/4)大小的TU1;上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是预定义的核心变换,例如,DST-7或DCT-2,TU0的垂直变换是DCT-8;第二变换类型是指:TU0的水平变换是预定义的核心变换,例如,DCT-8或DCT-2,TU0的垂直变换是DST-7。例如,TU0的第一变换类型的水平变换始终是DST-7或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第一变换类型的水平变换是DST-7。例如,TU0的第二变换类型的水平变换始终是DCT-8或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第二变换类型的水平变换是DCT-8。

(2)变换模式HQ1:CU通过水平划分划分为两个TU,即W×(3H/4)大小的TU0和W×(H/4)大小的TU1;下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是预定义的核心变换,例如,DST-7或DCT-2,TU1的垂直变换是DST-7;第二变换类型是指:TU1的水平变换是预定义的核心变换,例如,DCT-8或DCT-2,TU1的垂直变换是DCT-8。

(3)变换模式VQ0:CU通过垂直划分划分为两个TU,即(W/4)×H大小的TU0和(3W/4)×H大小的TU1;左侧的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是DCT-8,TU0的垂直变换是预定义的核心变换,例如,DST-7或DCT-2;第二变换类型是指:TU0的水平变换是DST-7,TU0的垂直变换是预定义的核心变换,例如,DCT-8或DCT-2。例如,TU0的第一变换类型的垂直变换始终是DST-7或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第一变换类型的垂直变换是DST-7。例如,TU0的第二变换类型的垂直变换始终是DCT-8或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第二变换类型的垂直变换是DCT-8。

(4)变换模式VQ1:CU通过垂直划分划分为两个TU,即(3W/4)×H大小的TU0和(W/4)×H大小的TU1;右侧的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是DST-7,TU1的垂直变换是预定义的核心变换,例如,DST-7或DCT-2;第二变换类型是指:TU1的水平变换是DCT-8,TU1的垂直变换是预定义的核心变换,例如,DCT-8或DCT-2。

在另一个示例中,HQ0、HQ1、VQ0和VQ1下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-7/DST-7、DST-7/DCT-8、DCT-8/DST-7和DCT-8/DCT-8;变换模式HQ0、HQ1、VQ0和VQ1下的这四种变换类型都相同。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,新变换模式包括以下四种模式HQ0、HQ1、VQ0和VQ1,如图7所示。对于所有这四种模式,W×H大小的CU划分为大小不等的两个TU,而只有大小较小的TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HQ0:CU通过水平划分划分为两个TU,即W×(H/4)大小的TU0和W×(3H/4)大小的TU1;上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是预定义的核心变换,例如,DST-4或DCT-2,TU0的垂直变换是DCT-4;第二变换类型是指:TU0的水平变换是预定义的核心变换,例如,DCT-4或DCT-2,TU0的垂直变换是DST-4。例如,TU0的第一变换类型的水平变换始终是DST-4或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第一变换类型的水平变换是DST-4。例如,TU0的第二变换类型的水平变换始终是DCT-4或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第二变换类型的水平变换是DCT-4。

(2)变换模式HQ1:CU通过水平划分划分为两个TU,即W×(3H/4)大小的TU0和W×(H/4)大小的TU1;下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是预定义的核心变换,例如,DST-4或DCT-2,TU1的垂直变换是DST-4;第二变换类型是指:TU1的水平变换是预定义的核心变换,例如,DCT-4或DCT-2,TU1的垂直变换是DCT-4。

(3)变换模式VQ0:CU通过垂直划分划分为两个TU,(W/4)×H大小的TU0和(3W/4)×H大小的TU1;左侧的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是DCT-4,TU0的垂直变换是预定义的核心变换,例如,DST-4或DCT-2;第二变换类型是指:TU0的水平变换是DST-4,TU0的垂直变换是预定义的核心变换,例如,DCT-4或DCT-2。例如,TU0的第一变换类型的垂直变换始终是DST-4或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第一变换类型的垂直变换是DST-4。例如,TU0的第二变换类型的垂直变换始终是DCT-4或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第二变换类型的垂直变换是DCT-4。

(4)变换模式VQ1:CU通过垂直划分划分为两个TU,即(3W/4)×H大小的TU0和(W/4)×H大小的TU1;右侧的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是DST-4,TU1的垂直变换是预定义的核心变换,例如,DST-4或DCT-2;第二变换类型是指:TU1的水平变换是DCT-4,TU1的垂直变换是预定义的核心变换,例如,DCT-4或DCT-2。

在另一个示例中,HQ0、HQ1、VQ0和VQ1下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-4/DST-4、DST-4/DCT-4、DCT-4/DST-4和DCT-4/DCT-4;变换模式HQ0、HQ1、VQ0和VQ1下的这四种变换类型都是相同的。

需要说明的是,DST或DCT变换可以使用矩阵乘法实现,也可以使用部分蝴形结构实现,还可以实现为JVET-L0386中介绍的变换调整滤波和DCT-2逆变换。JVET-L0386中的方法是一种利用作为预处理的调整滤波器和DCT-2的逆变换来近似目标DST类型(例如DST-7)或目标DCT类型(例如,DCT-8或DCT-4)的方式。

在一个示例中,新变换模式包括以下四种模式HH0、HH1、VH0和VH1,如图8所示。对于所有这四种模式,W×H大小的CU划分为大小相等的两个TU,而只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型(即变换类型集合)根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HH0:CU通过水平划分划分为两个TU,即W×(H/2)大小的TU0和W×(H/2)大小的TU1;上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是预定义的核心变换,例如,DST-7或DCT-2,TU0的垂直变换是DCT-8;第二变换类型是指:TU0的水平变换是预定义的核心变换,例如,DCT-8或DCT-2,TU0的垂直变换是DST-7。例如,TU0的第一变换类型的水平变换始终是DST-7或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第一变换类型的水平变换是DST-7。例如,TU0的第二变换类型的水平变换始终是DCT-8或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第二变换类型的水平变换是DCT-8。

(2)变换模式HH1:CU通过水平划分划分为两个TU,即W×(H/2)大小的TU0和W×(H/2)大小的TU1;下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是预定义的核心变换,例如,DST-7或DCT-2,TU1的垂直变换是DST-7;第二变换类型是指:TU1的水平变换是预定义的核心变换,例如,DCT-8或DCT-2,TU1的垂直变换是DCT-8。

(3)变换模式VH0:CU通过垂直划分划分为两个TU,即(W/2)×H大小的TU0和(W/2)×H大小的TU1;左侧的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是DCT-8,TU0的垂直变换是预定义的核心变换,例如,DST-7或DCT-2;第二变换类型是指:TU0的水平变换是DST-7,TU0的垂直变换是预定义的核心变换,例如,DCT-8或DCT-2。例如,TU0的第一变换类型的垂直变换始终是DST-7或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第一变换类型的垂直变换是DST-7。例如,TU0的第二变换类型的垂直变换始终是DCT-8或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第二变换类型的垂直变换是DCT-8。

(4)变换模式VH1:CU通过垂直划分划分为两个TU,即(W/2)×H大小的TU0和(W/2)×H大小的TU1;右侧的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是DST-7,TU1的垂直变换是预定义的核心变换,例如,DST-7或DCT-2;第二变换类型是指:TU1的水平变换是DCT-8,TU1的垂直变换是预定义的核心变换,例如,DCT-8或DCT-2。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在一个示例中,新变换模式包括以下四种模式HH0、HH1、VH0和VH1,如图8所示。对于所有这四种模式,W×H大小的CU划分为大小相等的两个TU,而只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型(即变换类型集合)根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HH0:CU通过水平划分划分为两个TU,即W×(H/2)大小的TU0和W×(H/2)大小的TU1;上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是预定义的核心变换,例如,DST-4或DCT-2,TU0的垂直变换是DCT-4;第二变换类型是指:TU0的水平变换是预定义的核心变换,例如,DCT-4或DCT-2,TU0的垂直变换是DST-4。例如,TU0的第一变换类型的水平变换始终是DST-4或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第一变换类型的水平变换是DST-4。例如,TU0的第二变换类型的水平变换始终是DCT-4或DCT-2。又例如,如果TU0的宽度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的水平变换是DCT-2;如果TU0的宽度小于等于阈值MaxMtsSize,则TU0的第二变换类型的水平变换是DCT-4。

(2)变换模式HH1:CU通过水平划分划分为两个TU,即W×(H/2)大小的TU0和W×(H/2)大小的TU1;下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是预定义的核心变换,例如,DST-4或DCT-2,TU1的垂直变换是DST-4;第二变换类型是指:TU1的水平变换是预定义的核心变换,例如,DCT-4或DCT-2,TU1的垂直变换是DCT-4。

(3)变换模式VH0:CU通过垂直划分划分为两个TU,即(W/2)×H大小的TU0和(W/2)×H大小的TU1;左侧的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换是DCT-4,TU0的垂直变换是预定义的核心变换,例如,DST-4或DCT-2;第二变换类型是指:TU0的水平变换是DST-4,TU0的垂直变换是预定义的核心变换,例如,DCT-4或DCT-2。例如,TU0的第一变换类型的垂直变换始终是DST-4或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第一变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第一变换类型的垂直变换是DST-4。例如,TU0的第二变换类型的垂直变换始终是DCT-4或DCT-2。又例如,如果TU0的高度大于阈值MaxMtsSize(例如,MaxMtsSize=32),则TU0的第二变换类型的垂直变换是DCT-2;如果TU0的高度小于等于阈值MaxMtsSize,则TU0的第二变换类型的垂直变换是DCT-4。

(4)变换模式VH1:CU通过垂直划分划分为两个TU,即(W/2)×H大小的TU0和(W/2)×H大小的TU1;右侧的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换是DST-4,TU1的垂直变换是预定义的核心变换,例如,DST-4或DCT-2;第二变换类型是指:TU1的水平变换是DCT-4,TU1的垂直变换是预定义的核心变换,例如,DCT-4或DCT-2。

在另一个示例中,模式HH0、HH1、VH0和VH1下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-7/DST-7、DST-7/DCT-8、DCT-8/DST-7和DCT-8/DCT-8;变换模式HH0、HH1、VH0和VH1下的这四种变换类型都是相同的。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-4/DST-4、DST-4/DCT-4、DCT-4/DST-4和DCT-4/DCT-4;变换模式HH0、HH1、VH0和VH1下的这四种变换类型都是相同的。

在另一个示例中,新变换模式包括以下两种模式HH2和VH2,如图9所示。对于所有这两种模式,W×H大小的CU划分为三个TU,而只有大小等于CU大小一半的TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HH2:CU在水平方向上划分为三个TU,即W×(H/4)大小的TU0,W×(H/2)大小的TU1,W×(H/4)大小的TU2;中心的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DST-7和DCT-2(或DST-7和DST-1);第二变换类型是指:TU0的水平变换和垂直变换分别是DCT-8和DCT-2(或DCT-8和DST-1)。

(2)变换模式VH2:CU在垂直方向上划分为三个TU,即(W/4)×H大小的TU0,(W/2)×H大小的TU1,(W/4)×H大小的TU2;中心的TU1具有残差;从变换类型集合中选择变换类型;变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-2和DST-7(或DST-1和DST-7);第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-2和DCT-8(或DST-1和DCT-8)。

在另一个示例中,模式HH2和VH2下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-7/DST-7、DST-7/DCT-8、DCT-8/DST-7和DCT-8/DCT-8;变换模式HH2和VH2下的这四种变换类型都是相同的。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,新变换模式包括以下两种模式HH2和VH2,如图9所示。对于所有这两种模式,W×H大小的CU划分为三个TU,而只有大小等于CU大小一半的TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式HH2:CU在水平方向上划分为三个TU,即W×(H/4)大小的TU0,W×(H/2)大小的TU1,W×(H/4)大小的TU2;中心的TU1具有残差;从变换类型集合中选择变换类型,该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DST-4和DCT-2(或DST-4和DST-1);第二变换类型是指:TU0的水平变换和垂直变换分别是DCT-4和DCT-2(或DCT-4和DST-1)。

(2)变换模式VH2:CU在垂直方向上划分为三个TU,即(W/4)×H大小的TU0,(W/2)×H大小的TU1,大小(W/4)×H大小的TU2;中心的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-2和DST-4(或DST-1和DST-4);第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-2和DCT-4(或DST-1和DCT-4)。

在另一个示例中,模式HH2和VH2下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-4/DST-4、DST-4/DCT-4、DCT-4/DST-4和DCT-4/DCT-4;变换模式HH2和VH2下的这四种变换类型都是相同的。

在另一个示例中,新变换模式包括以下四种模式QH0、QH1、QH2和QH3,如图10所示。对于所有这四种模式,W×H大小的CU划分为3个TU,其中两个TU的大小为(W/2)×(H/2),另一个TU的大小为W×(H/2),即TU0、TU1和TU2。(W/2)×(H/2)大小的TU中只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式QH0:左上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-8和DCT-8;第二变换类型是指:TU0的水平变换和垂直变换分别是DST-7和DST-7。

(2)变换模式QH1:右上方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DST-7和DCT-8;第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-8和DST-7。

(3)变换模式QH2:左下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-8和DST-7;第二变换类型是指:TU1的水平变换和垂直变换分别是DST-7和DCT-8。

(4)变换模式QH3:右下方的TU2具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,第一变换类型是指:TU2的水平变换和垂直变换分别是DST-7和DST-7;第二变换类型是指:TU2的水平变换和垂直变换分别是DCT-8和DCT-8。

在另一个示例中,模式QH0、QH1、QH2和QH3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-7/DST-7、DST-7/DCT-8、DCT-8/DST-7和DCT-8/DCT-8;变换模式QH0、QH1、QH2和QH3下的这四种变换类型是相同的。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,新变换模式包括以下四种模式QH0、QH1、QH2和QH3,如图10所示。对于所有这四种模式,W×H大小的CU划分为3个TU,其中两个TU的大小为(W/2)×(H/2),另一个TU的大小为W×(H/2),即TU0、TU1和TU2。(W/2)×(H/2)大小的TU中只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式QH0:左上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-4和DCT-4;第二变换类型是指:TU0的水平变换和垂直变换分别是DST-4和DST-4。

(2)变换模式QH1:右上方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DST-4和DCT-4;第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-4和DST-4。

(3)变换模式QH2:左下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-4和DST-4;第二变换类型是指:TU1的水平变换和垂直变换分别是DST-4和DCT-4。

(4)变换模式QH3:右下方的TU2具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU2的水平变换和垂直变换分别是DST-4和DST-4;第二变换类型是指:TU2的水平变换和垂直变换分别是DCT-4和DCT-4。

在另一个示例中,模式QH0、QH1、QH2和QH3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-4/DST-4、DST-4/DCT-4、DCT-4/DST-4和DCT-4/DCT-4;变换模式QH0、QH1、QH2和QH3下的这四种变换类型都是相同的。

在一个示例中,新变换模式包括以下四种模式QV0、QV1、QV2和QV3,如图11所示。对于所有这四种模式,W×H大小的CU划分为3个TU,其中两个TU的大小为(W/2)×(H/2),另一个TU的大小为(W/2)×H,即TU0、TU1和TU2。(W/2)×(H/2)大小的TU中只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式QV0:左上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-8和DCT-8;第二变换类型是指:TU0的水平变换和垂直变换分别是DST-7和DST-7。

(2)变换模式QV1:右上方的TU1具有残差;从变换类型集合中选择变换类型,该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DST-7和DCT-8;第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-8和DST-7。

(3)变换模式QV2:左下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-8和DST-7;第二变换类型是指:TU1的水平变换和垂直变换分别是DST-7和DCT-8。

(4)变换模式QV3:右下方的TU2具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU2的水平变换和垂直变换分别是DST-7和DST-7;第二变换类型是指:TU2的水平变换和垂直变换分别是DCT-8和DCT-8。

在另一个示例中,模式QV0、QV1、QV2和QV3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-7/DST-7、DST-7/DCT-8、DCT-8/DST-7和DCT-8/DCT-8;变换模式QV0、QV1、QV2和QV3下的这四种变换类型都是相同的。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在一个示例中,新变换模式包括以下四种模式QV0、QV1、QV2和QV3,如图11所示。对于所有这四种模式,W×H大小的CU划分为3个TU,其中两个TU的大小为(W/2)×(H/2),另一个TU的大小为(W/2)×H,即TU0、TU1和TU2。(W/2)×(H/2)大小的TU中只有一个TU具有残差。具有残差的TU存在变换类型集合,该变换类型集合包括第一变换类型和第二变换类型两种变换类型,变换类型根据变换模式而定。具有残差的TU实际上使用的变换类型在比特流中指示,例如通过一个变量指示。

(1)变换模式QV0:左上方的TU0具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU0的水平变换和垂直变换分别是DCT-4和DCT-4;第二变换类型是指:TU0的水平变换和垂直变换分别是DST-4和DST-4。

(2)变换模式QV1:右上方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DST-4和DCT-4;第二变换类型是指:TU1的水平变换和垂直变换分别是DCT-4和DST-4。

(3)变换模式QV2:左下方的TU1具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU1的水平变换和垂直变换分别是DCT-4和DST-4;第二变换类型是指:TU1的水平变换和垂直变换分别是DST-4和DCT-4。

(4)变换模式QV3:右下方的TU2具有残差;从变换类型集合中选择变换类型;该变换类型集合包括两种变换类型,其中第一变换类型是指:TU2的水平变换和垂直变换分别是DST-4和DST-4;第二变换类型是指:TU2的水平变换和垂直变换分别是DCT-4和DCT-4。

在另一个示例中,模式QV0、QV1、QV2和QV3下的第二变换类型始终是DCT-2/DCT-2。

在另一个示例中,具有残差的TU存在变换类型集合,该变换类型集合包括四种变换类型,例如,DST-4/DST-4、DST-4/DCT-4、DCT-4/DST-4和DCT-4/DCT-4;变换模式QV0、QV1、QV2和QV3下的这四种变换类型都是相同的。

在一个示例中,CU能够使用的新变换模式包括上述模式中的6种模式:HH0、HH1、HH2、VH0、VH1和VH2。一个片级变量可用于指示特定片是否能够使用这6种变换模式。CU能够使用新变换模式是指当对CU进行解码时,可以在CU能够使用的新变换模式中获取CU的残差TU使用的目标变换模式。CU能够使用的新变换模式可以是上述22种变换模式的子集,因此能够减少用作目标变换模式的候选变换模式,从而提高解码效率,还能够减少传输用于指示目标变换模式的索引所需的比特,从而节省传输编码视频数据所需的带宽。需要说明的是,CU能够使用的新变换模式可以是预定义的/预设/实时确定的。当预定义/预设或确定CU能够使用的新变换模式时,解码器会知道哪些新变换模式是CU中的残差TU使用的候选变换模式。

在一个示例中,CU能够使用的新变换模式包括上述模式中的8种模式:Q0、Q1、Q2、Q3、HQ0、HQ1、VQ0和VQ1。

在一个示例中,CU能够使用的新变换模式包括上述模式中的8种模式:QH0、QH1、QH2、QH3、HQ0、HQ1、VQ0和VQ1。

在一个示例中,CU能够使用的新变换模式包括上述模式中的8种模式:QV0、QV1、QV2、QV3、HQ0、HQ1、VQ0和VQ1。

在一个示例中,CU能够使用的新变换模式包括上述变换模式中的8种模式:HH0、HH1、VH0、VH1、HQ0、HQ1、VQ0和VQ1。

在一个示例中,CU能够使用的新变换模式包括上述模式中的12种模式:Q0、Q1、Q2、Q3、HQ0、HQ1、VQ0、VQ1、HH0、HH1、VH0和VH1。

在一个示例中,CU能够使用的新变换模式包括上述模式中的14种模式:Q0、Q1、Q2、Q3、HQ0、HQ1、VQ0、VQ1、HH0、HH1、HH2、VH0、VH1和VH2。

在一个示例中,CU能够使用的新变换模式包括上述模式中的14种模式:QH0、QH1、QH2、QH3、HQ0、HQ1、VQ0、VQ1、HH0、HH1、HH2、VH0、VH1和VH2。

在一个示例中,一个片中的多个CU能够使用的新变换模式在序列参数集(sequence parameter set,SPS)或该片的片头中指示。模式HH0、HH1、HH2、VH0、VH1和VH2划分到第一组。模式Q0、Q1、Q2、Q3、HQ0、HQ1、VQ0和VQ1划分到第二组。每个组通过一个变量来启用,即,第一变量用于指示是否能够使用第一组模式,第二变量用于指示是否能够使用第二组模式。

在一个示例中,一个片中的多个CU能够使用的新变换模式在序列参数集或该片的片头中指示。模式HH0、HH1、VH0和VH1划分到第一组。模式Q0、Q1、Q2和Q3划分到第二组。模式HQ0、HQ1、VQ0和VQ1划分到第三组。一个索引用于指示能够使用三组中哪一组。索引值0表示三组都不能使用,索引值1表示只能使用第一组,索引值2表示能使用第二组,索引值3表示能使用第三组,索引值4表示能使用第二组和第三组,索引值5表示三组都能使用。

新变换模式可适用于所有CU,或者根据CU的预测信息适用于这些CU。在一个示例中,新变换模式只适用于帧内预测CU。在另一个示例中,新变换模式只适用于帧间预测CU。在另一个示例中,新变换模式可用于采用特定帧间预测方法(例如,基于平移模型的运动补偿)的CU,但不用于采用其它帧间预测方法(例如,基于仿射模型的运动补偿)的CU。在另一个示例中,新变换模式可用于通过合并模式或运动矢量差的精度为1/4像素的高级运动矢量预测(advanced motion vector prediction,AMVP)模式进行预测的CU,但不用于采用仿射合并模式、仿射帧间模式或运动矢量差的精度为1像素或4像素的AMVP模式的CU。在另一个示例中,新变换模式可用于采用合并索引小于2的合并模式的CU,但不用于采用合并索引不小于2的合并模式的CU。合并模式和AMVP模式可在H.265/HEVC标准中查看。仿射合并模式和仿射帧间模式可在联合视频探索小组(Joint Video Exploration Team,JVET)的联合探索模型(Joint Exploration Model,JEM)编解码中查看。

可以根据CU的大小使用新变换模式。在一个示例中,如果一个CU通过其中一种变换模式进行划分,产生一边小于阈值(例如,4个、8个或16个亮度像素等)的TU,则该CU不能使用该变换模式。在一个示例中,如果一个CU通过其中一种变换模式进行划分,产生一边大于阈值(例如,32个、64个或128个亮度像素等)的TU,则该CU不能使用该变换模式。在一个示例中,一边(即,宽度或高度)大于阈值(例如,32个或64个亮度像素)的CU不能使用新变换模式。

图12示出了本发明实施例的一种解码方法,包括:

1201:对接收到的比特流进行解析,得到CU的预测信息。

这是视频解码中常用的过程,例如H.265/HEVC或H.266/VVC中的对编码单元和预测单元语法结构进行解析。

1202:当CU只有一个残差变换单元(transform unit,TU)且残差TU的大小小于CU的大小时,获取残差TU的目标变换模式,其中目标变换模式指定CU的TU划分模式、残差TU的位置(例如,通过CU的所有TU中的残差TU的索引来描述,或者通过残差TU的左上角坐标和残差TU的宽度和高度来描述)、残差TU的变换类型;

目标变换模式为上述模式中的任一种:Q0、Q1、Q2、Q3、HQ0、HQ1、VQ0、VQ1、HH0、HH1、VH0、VH1、HH2、VH2、QH0、QH1、QH2、QH3、QV0、QV1、QV2和QV3。

在一些实现方式中,为了提高解码效率,首先检查CU中是否存在变换单元信息。是否存在变换单元信息可由根cbf语法元素来指示。等于0的根cbf表示比特流中不存在CU的变换单元信息(即CU没有残差),而等于1的根cbf表示比特流中存在CU的变换单元信息。对于帧内预测CU,根cbf等于1表示该CU具有残差。当CU具有变换单元信息时,执行步骤1102。当CU没有变换单元信息时,将CU的残差设为零,并直接执行步骤1105。

1203:对接收到的比特流进行解析,得到残差TU的变换系数。

这是视频解码中常用的过程。

1204:对残差TU的变换系数进行反量化,得到解量化系数。

这是视频解码中常用的过程。

1205:根据目标变换模式对解量化系数进行逆变换,得到残差TU的残差块。

这是视频解码中常用的过程。除残差TU之外,将CU中其它TU的残差设为零。

1206:根据预测信息获取CU的预测块。

这是视频解码中常用的过程,例如HEVC和VVC中的帧内预测和帧间预测。

1207:根据残差块和预测块获取视频块。

这是视频解码中常用的过程。在一种实现方式中,将CU的残差与CU的预测块相加得到视频块。

1208:输出视频序列,视频序列的视频帧包括视频块。

这是视频解码中常用的过程。

图12B示出了本发明实施例的另一种解码方法。图12B所示的实施例与图12A所示的实施例的区别在于:

1202’:当CU只有一个残差变换单元(transform unit,TU)且残差TU的大小小于CU的大小时,获取残差TU的目标变换模式,其中目标变换模式指定CU的TU划分模式、残差TU的位置(例如,通过CU的所有TU中的残差TU的索引来描述,或者通过残差TU的左上角坐标和残差TU的宽度和高度来描述)和残差TU的变换类型集合;从变换类型集合中获取残差TU的变换类型。

1205’:根据残差TU的变换类型(或者根据CU的TU划分模式、残差TU的位置和残差TU的变换类型)对解量化系数进行逆变换,得到残差TU的残差块。其它步骤参见图12A所示的实施例,在此不再赘述。

在一种实现方式中,获取残差TU的目标变换模式包括:解析比特流,得到用于指示残差TU的目标变换模式的模式索引;根据模式索引获取残差TU的目标变换模式。例如,如果一个分片中能够使用上述22种目标变换模式中的8种模式,则模式索引可由M个二进制位(例如,M=3、4或5)的模式索引来指示,即模式索引在基于上下文的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)过程中二值化为M个二进制位(其中不同的二值化方案对应不同的M),或者模式索引由M个变量表示。

为了降低模式索引的比特预算,在另一种实现方式中,在解析比特流,得到用于指示残差TU的目标变换模式的模式索引之前,本方法还包括:根据CU的大小确定残差TU的候选目标变换模式;其中解析比特流,得到用于指示残差TU的目标变换模式的模式索引包括:根据残差TU的候选目标变换模式解析比特流,得到用于指示残差TU的目标变换模式的模式索引。因此,根据CU的大小,候选目标变换模式的数量可以小于8,从而可以节省1个或更多二进制位的模式变量。

候选目标变换模式可以根据CU大小而定。例如,当CU的宽度在Th1×2~Th3的范围内且CU的高度在Th1×2~Th3的范围内时,候选目标变换模式可包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3。

例如,当CU的宽度在Th1×4~Th3的范围内且CU的高度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式VQ0、变换模式VQ1和变换模式VH2。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式VH0和变换模式VH1。

例如,当CU的高度在Th1×4~Th3的范围内且CU的宽度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式HQ0、变换模式HQ1和变换模式HH2。

例如,当CU的高度在Th1×2~Th2的范围内且CU的宽度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式HH0和变换模式HH1。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1×2~Th2的范围内时,候选目标变换模式可包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3。

例如,当CU的宽度在Th1×4~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式VQ0、变换模式VQ1和变换模式VH2。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式VH0和变换模式VH1。

例如,当CU的高度在Th1×4~Th2的范围内且CU的宽度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式HQ0、变换模式HQ1和变换模式HH2。

例如,当CU的高度在Th1×2~Th2的范围内且CU的宽度在Th1~Th2的范围内时,候选目标变换模式可包括变换模式HH0和变换模式HH1。

Th1、Th2和Th3为预定义的整数值,例如Th1为4、8或16,Th2为32、64或128,Th3为64、128或256。

在另一种实现方式中,为了降低指示目标变换模式的比特预算,将上述22种模式划分到模式组。例如,模式组可包括如下至少一个组:

模式组包括变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式HH0、HH1、HH2、VH0、VH1、VH2;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式QV0、变换模式QV1、变换模式QV2、变换模式QV3、变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2、变换模式Q3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式QH0、变换模式QH1、变换模式QH2、变换模式QH3、变换模式HQ0、变换模式HQ1、变换模式VQ0、变换模式VQ1、变换模式HH0、变换模式HH1、变换模式HH2、变换模式VH0、变换模式VH1和变换模式VH2;

模式组包括变换模式HH0、变换模式HH1、变换模式VH0和变换模式VH1;

模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3;或者

模式组包括变换模式HQ0、变换模式HQ1、变换模式VQ0和变换模式VQ1。

获取残差TU的目标变换模式的步骤可包括:解析比特流,得到用于指示目标变换模式所属模式组的组索引;解析比特流,得到用于指示所述目标变换模式在所述模式组中的的模式索引;根据组索引和模式索引获取目标变换模式。

在一种实现方式中,在解析比特流,得到用于指示目标变换模式所属模式组的组索引之前,本方法还包括:根据CU的大小确定残差TU的至少一个候选模式组;相应地,根据残差TU的至少一个候选模式组解析比特流,得到用于指示目标变换模式所属模式组的组索引。

例如,当CU的宽度在Th1~Th3的范围内且CU的高度在Th1×2~Th3的范围内时,候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3。

例如,当CU的宽度在Th1×4~Th3的范围内且CU的高度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式VH0和变换模式VH1。

例如,当CU的高度在Th1×4~Th3的范围内且CU的宽度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2。

例如,当CU的高度在Th1×2~Th2的范围内且CU的宽度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式HH0和变换模式HH1。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1×2~Th2的范围内时,候选模式组包括的模式组包括变换模式Q0、变换模式Q1、变换模式Q2和变换模式Q3。

例如,当CU的宽度在Th1×4~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式VQ0、变换模式VQ1和变换模式VH2。

例如,当CU的宽度在Th1×2~Th2的范围内且CU的高度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式VH0和变换模式VH1。

例如,当CU的高度在Th1×4~Th2范围内且CU的宽度在Th1~Th2范围内时,候选模式组包括的模式组包括变换模式HQ0、变换模式HQ1和变换模式HH2。

例如,当CU的高度在Th1×2~Th2的范围内且CU的宽度在Th1~Th2的范围内时,候选模式组包括的模式组包括变换模式HH0和变换模式HH1。

阈值Th1、Th2、Th3为预定义的整数值。例如,Th1为4、8或16,Th2为32、64或128,Th3为64、128或256。

在另一种实现方式中,在获取残差TU的目标变换模式之前,本方法还包括:根据CU的预测信息判断是否获取残差TU的目标变换模式。

例如,当CU的预测模式为帧内预测模式时,确定获取残差TU的目标变换模式。

例如,当CU的预测模式为帧间预测模式时,确定获取残差TU的目标变换模式。

例如,当CU的预测方法为预设正向预测方法时,确定获取残差TU的目标变换模式。该预设正向预测方法包括以下至少一种:基于平移模型的运动补偿方法、合并预测方法、运动矢量差的精度为1/4像素的高级运动矢量预测方法或合并索引小于2的合并预测方法。

例如,当CU的预测方法为预设负向预测方法时,确定不获取残差TU的目标变换模式。该预设负向预测方法包括以下至少一种:基于仿射模型的运动补偿方法、仿射合并预测方法、运动矢量差的精度为1像素或4像素的高级运动矢量预测方法或合并索引不小于2的合并预测方法。

在另一种实现方式中,在获取残差TU的目标变换模式之前,本方法还包括:根据CU的大小判断是否获取残差TU的目标变换模式。

例如,当CU的宽度或高度大于预设CU阈值时,确定不获取残差TU的目标变换模式。预设CU阈值可以为32个亮度像素、64个亮度像素或128个亮度像素。

例如,当CU的TU的宽度或高度小于预设最小TU阈值时,确定不获取残差TU的目标变换模式。预设最小TU阈值可以为4个亮度像素、8个亮度像素或16个亮度像素。

例如,当CU的TU的宽度或高度大于预设最大TU阈值时,确定不获取残差TU的目标变换模式。预设最大TU阈值为32个亮度像素、64个亮度像素或128个亮度像素。

需要说明的是,即使根据CU的预测信息和/或CU的大小确定获取残差TU的目标变换模式,也只意味着可获取目标变换模式,但并不意味着确实要获取目标变换模式。由于在编码端,选择哪种变换模式进行变换受很多因素影响。也就是说,增加上述新变换模式(上述22种变换模式)作为候选变换模式,同时仍然可以使用通过大小等于CU大小的TU对CU进行变换的现有变换模式(旧变换模式)。

因此,在CU具有变换单元信息的基础上,当根据CU的预测信息和/或CU的大小确定获取残差TU的目标变换模式时,解析比特流可以得到指示旧变换模式的模式变量。相应地,当确定不获取残差TU的目标变换模式,意味着CU使用旧变换模式。如果CU通过大小等于CU大小的一个TU进行变换,则残差TU的大小等于CU大小,残差TU的变换类型可以默认为:水平变换使用DCT-2和垂直变换使用DCT-2,或者可以在比特流(例如VTM软件中的AMT方法,其中TU能够使用多种变换类型并指示TU使用的变换类型)中指示。

例如,如果变换模式Q0、Q1、Q2、Q3、VQ0、VQ1、HQ0、HQ1、VH0、VH1、VH2、HH0、HH1和HH2为CU的候选目标变换模式,则解码器可以先解析比特流,判断CU使用其中一种候选目标变换模式,还是通过大小等于CU大小的一个TU进行变换。例如,一个变量可用来指示CU使用其中一种候选目标变换模式还是通过大小等于CU大小的一个TU进行变换。

如果CU使用其中一种候选目标变换模式,则解析比特流,得到CU的变换模式。在一种方法中,Q0、Q1、Q2和Q3划分到A组,VQ0和VQ1划分到B组,HQ0和HQ1划分到C组,VH0、VH1和VH2划分到D组,HH0、HH1和HH2划分到E组。首先通过解析组索引来确定CU的变换模式所属组,然后通过解析另一个索引来确定该组内的目标变换模式。

可以根据确定/预设哪些模式组为候选模式组来解析组索引。例如,当A组和任何其它组为候选模式组时,解析第一变量以判断目标变换模式是否属于A组;如果比特流中不存在第一变量,则如果A组为候选模式组,推断变换模式属于A组,或者如果A组不是候选模式组,推断变换模式属于B、C、D和E组。如果目标变换模式属于B、C、D和E组,则如果B/D组和C/E组都是候选模式组,解析第二变量以判断目标变换模式是否属于B/D(即B或D组)或C/E,而如果只有B/D为候选模式组或只有C/E为候选模式组,可以推断出第二变量。如果变换模式属于B/D,则可以解析第三变量以判断目标变换模式是否属于B。同理,如果目标变换模式属于C/E,则可以解析第三变量以判断变换模式是否属于C。

与解析组索引类似,一个组内的目标变换模式的索引可根据该组内的变换模式来解析。

例如,如果变换模式Q0、Q1、Q2、Q3、VQ0、VQ1、HQ0和HQ1为CU的候选目标变换模式,解码器可以先解析比特流以判断CU使用其中一种候选变换模式还是通过大小等于CU大小的一个TU进行变换。例如,一个变量可用来指示CU使用其中一种候选目标变换模式还是通过大小等于CU大小的一个TU进行变换。

如果CU使用其中一种候选目标变换模式,则解析比特流,得到CU的变换模式。在一种方法中,变换模式Q0、Q1、Q2和Q3划分到A组,VQ0和VQ1划分到B组,HQ0和HQ1划分到C组。首先通过解析组索引来确定目标变换模式所属组,然后通过解析模式索引来确定该组内的目标变换模式。

本发明还公开了一种视频解码器,解码器的结构如图3所示,视频解码器包括:

熵解码单元304,用于:对接收到的比特流进行解析,得到编码单元(coding unit,CU)的预测信息;当CU只包含唯一的残差变换单元(transform unit,TU)且残差TU的大小小于CU的大小时,获取残差TU的目标变换模式,其中目标变换模式指定CU的TU划分模式、残差TU的位置和残差TU的变换类型集合;从变换类型集合中获取残差TU的变换类型;对接收到的比特流进行解析,得到残差TU的变换系数,其中目标变换模式与上述相同;

反量化处理单元310,用于对残差TU的变换系数进行反量化,得到解量化系数;

逆变换处理单元312,用于根据残差TU的变换类型或根据CU的TU划分模式、残差TU的位置和残差TU的变换类型对解量化系数进行逆变换,得到残差TU的残差块;

预测处理单元360,用于根据预测信息获取CU的预测块;

重建单元314,用于根据残差块和预测块获取视频块;

输出端332,用于输出视频序列,视频序列包括的视频帧包括视频块。

在一种实现方式中,熵解码单元304还用于:解析比特流,得到用于指示残差TU的目标变换模式的模式索引;根据模式索引获取残差TU的目标变换模式。

在一种实现方式中,熵解码单元304还用于:根据CU的大小确定残差TU的候选目标变换模式;

根据残差TU的候选目标变换模式解析比特流,得到用于指示残差TU的目标变换模式的模式索引。

在一种实现方式中,熵解码单元304还用于根据如上所述方法确定残差TU的候选目标变换模式。

在一种实现方式中,熵解码单元304还用于:解析比特流,得到用于指示目标变换模式所属模式组的组索引;解析比特流,获得用于指示所述目标变换模式在所述模式组中的模式索引;

根据组索引和模式索引获取目标变换模式。

目标变换模式属于上述任何模式组。

在一种实现方式中,熵解码单元304还用于:根据CU的大小确定残差TU的至少一个候选模式组;

根据残差TU的至少一个候选模式组解析比特流,得到用于指示目标变换模式所属模式组的组索引。

熵解码单元还用于根据如上所述至少一种方法确定至少一个候选模式组。

在一种实现方式中,熵解码单元304还用于根据CU的预测信息判断是否获取残差TU的目标变换模式。

熵解码单元304还用于判断是否根据如上所述至少一种方法获取残差TU的目标变换模式。

在一种实现方式中,熵解码单元304还用于根据CU的大小判断是否获取残差TU的目标变换模式。

熵解码单元304还用于判断是否根据如上所述至少一种方法获得残差TU的目标变换模式。

本发明还公开了一种解码器,包括用于执行如上所述方法的处理电路。

本发明还公开了一种计算机程序产品,包括用于执行如上所述方法的程序代码。

本发明还公开了一种解码器,包括:

一个或多个处理器;

非瞬时性计算机可读存储介质,耦合到所述处理器并存储由所述处理器执行的程序,其中所述程序在由所述处理器执行时,使得所述解码器执行如上所述方法。

图13示出了采用帧内预测模式的视频编码中的帧内预测1300的示例。如图所示,当前块1301可以通过相邻块1310中的像素点进行预测。编码器通常可从左上方到右下方对图像进行编码。然而,编码器在如下所述的一些情况下可从右向左进行编码。需要说明的是,本文使用的右是指编码图像的右侧,左是指编码图像的左侧,顶部是指编码图像的上方,底部是指编码图像的下方。

需要说明的是,当前块1301与相邻块1310的像素点不一定总是完全匹配。在这种情况下,根据最接近的匹配相邻块1310对预测模式进行编码。为了使解码器确定合适的值,保持预测值与实际值之间的差值。这称为残差信息。帧内预测1300和帧间预测都会产生残差信息。

图14为根据帧内预测1300和/或帧间预测的示例性视频编码机制1400的示意图。编码器可以从一个或多个帧中获取图像块1401。例如,可将一个图像拆分为多个矩形图像区域。图像的每个区域对应一个编码树单元(Coding Tree Unit,CTU)。将一个CTU划分成多个块,例如HEVC中的编码单元。然后,将块分区信息编码到比特流1411中。因此,图像块301是图像的划分部分,并且包含表示位于图像对应部分的亮度分量和/或色差分量的像素。在编码过程中,将图像块1401编码为预测块303,预测块303包含预测信息,例如用于帧内预测的预测模式和/或用于帧间预测的运动矢量。然后,将图像块1401编码为预测块1403会产生残差块1405,残差块1405包含指示预测块1403与图像块1401之间差值的残差信息。

需要说明的是,可将图像块1401401划分成包含一个预测块1403和一个残差块1405的编码单元。预测块1403可包含编码单元的所有预测像素点,残差块1405可包含编码单元的所有残差像素点。在这种情况下,预测块1403的大小与残差块1405的大小相同。在另一示例中,可将图像块1401划分成包含两个预测块1403和一个残差块1405的编码单元。在这种情况下,每个预测块1405包含编码单元的一部分预测像素点,残差块1405包含编码单元的所有残差像素点。在又一示例中,将图像块1401划分成包含两个预测块1403和四个残差块1405的编码单元。可在比特流1411中指示编码单元中的残差块1405的划分模式。这种划分模式可包括HEVC中的残差四叉树(Residual Quad-Tree,RQT)。此外,图像块1401可只包含图像像素点(或像素)的亮度分量(例如光),记为Y分量。在其它情况下,图像块1401可包含图像像素点的Y、U和V分量,其中U和V表示蓝色亮度和红色亮度(UV)颜色空间中的色差分量(例如颜色)。

可使用SVT进一步压缩信息。具体地,SVT使用变换块1407进一步压缩残差块1405。变换块1407包含一种变换,例如逆DCT和/或逆DST。通过使用变换系数,由变换的结果来近似预测块1403与图像块1401之间的差异。通过指示变换块1407的变换模式(例如,逆DCT和/或逆DST)和对应的变换系数,解码器可以重建残差块1405。当不需要真实还原时,可以通过对某些值进行舍入以进一步压缩变换系数,从而产生更适合该变换的值。该过程称为量化,根据描述容许量化的量化参数执行。因此,变换块1407的变换模式、变换系数和量化参数作为变换残差信息存储在变换残差块1409中,在一些情况下,变换残差块1409也可简单地称为残差块。

然后,预测块1403的预测信息和变换残差块1409的变换残差信息可以编码到比特流1411中。比特流1411可以存储和/或发送到解码器。然后,解码器可以执行相反过程以恢复图像块1401。具体地,解码器可以使用变换残差信息确定变换块1407。然后,将变换块1407与变换残差块1409结合使用,以确定残差块1405。接着,使用残差块1405和预测块1403来重建图像块1401。接着,将图像块1401相对其它解码图像块1401放置,重建帧并放置这些帧,以恢复编码视频。

现在对SVT进行更详细地描述。为了执行SVT,选择小于残差块1405的变换块1407。使用变换块1407对残差块1405的对应部分进行变换,在不进行额外编码/压缩的情况下产生残差块的其余部分。这是因为残差信息通常不是均匀地分布在残差块1405上。SVT使用具有自适应位置的较小变换块1407来捕获残差块1405中的大部分残差信息,而不需要对整个残差块1405进行变换。本方法相比于对变换残差块1405中的所有残差信息进行变换,编码效率更高。由于变换块1407小于残差块1405,因此SVT采用一种机制来指示变换块1407相对残差块1405的位置。例如,当w×h(例如,宽度乘以高度)大小的残差块1405使用SVT时,可以将变换块1407的大小和位置信息编码到比特流1411中。这使得解码器重建变换块1407并将变换块1407构建到相对于变换残差块1409的正确位置上,以重建残差块1405。

需要注意的是,可以编码一些预测块1403而不产生残差块1405。然而,这种情况不会使用到SVT,因此不进一步论述。如上所述,帧间预测块或帧内预测块会使用SVT。此外,可对指定的帧间预测机制(例如,基于平移模型的运动补偿)生成的残差块1405使用SVT,但对其它指定的帧间预测机制(例如,基于仿射模型的运动补偿)不使用SVT。

图15示出了可用作变换块307对残差块305进行编码的示例性SVT变换1500。SVT变换1500称为SVT-I、SVT-II和SVT-III。SVT-I描述为:w_t=w/2且h_t=h/2,其中w_t和h_t分别表示变换块的宽度和高度,w和h分别表示残差块的宽度和高度。例如,变换块的宽度和高度均为残差块的宽度和高度的一半。SVT-II描述为:w_t=w/4且h_t=h,其中变量如上所述。例如,变换块的宽度为残差块的宽度的四分之一,变换块的高度等于残差块的高度。SVT-III描述为:w_t=w且h_t=h/4,其中变量如上所述。例如,变换块的宽度等于残差块的宽度,变换块的高度为残差块的高度的四分之一。指示SVT块的类型(例如,SVT-I、SVT-II或SVT-III)的类型信息编码到比特流中以支持解码器进行重建。

通过图15可以看出,每种变换可以放置在相对残差块的各种位置上。变换块的位置用距离残差块左上角的位置偏移(x,y)表示,其中x表示变换块的左上角与残差块的左上角之间的以像素为单位的水平距离,y表示变换块的左上角与残差块的左上角的以像素为单位的垂直距离。变换块在残差块中的每个可能位置称为候选位置。对于残差块,一类SVT使用的候选位置的数量为(w–w_t+1)×(h–h_t+1)。具体地,对于16×16残差块,使用SVT-I时有81个候选位置。使用SVT-II或SVT-III时有13个候选位置。一旦确定,位置偏移的x和y值与所使用的SVT块的类型一起编码到比特流中。为了降低SVT-I的复杂性,可以从81个可能候选位置中选择32个位置组成的子集。这时该子集作为SVT-I能够使用的候选位置。

采用SVT变换1500的SVT方案的一个缺点是将SVT位置信息编码为残差信息产生了极大的信令开销。另外,随着通过率失真优化(Rate-Distortion Optimization,简称RDO)等压缩质量过程测试到的位置数量的增加,极大增加了编码器的复杂性。由于候选位置的数量随着残差块的大小变大而增加,因此32×32或64×128等较大的残差块会产生更多的信令开销。使用SVT变换1500的另一个缺点是变换块的大小是残差块的大小的四分之一。在许多情况下,这种大小的变换块可能不足以覆盖残差块中的大部分残差信息。

图16示出了可用作变换块307对残差块305进行编码的另一示例性SVT变换1600。SVT变换1600称为垂直SVT(SVT-V)和水平SVT(SVT-H)。SVT变换1600与SVT变换1500类似,但旨在降低信令开销和对编码器的复杂处理要求。

SVT-V描述为:w_t=w/2且h_t=h,其中变量如上所述。变换块的宽度为残差块的宽度的一半,变换块的高度等于残差块的高度。SVT-H描述为:w_t=w且h_t=h/2,其中变量如上所述。例如,变换块的宽度等于残差块的宽度,变换块的高度为残差块的高度的一半。SVT-V与SVT-II类似,SVT-H与SVT-III类似。相比于SVT-II和SVT-III,SVT-V和SVT-H中的变换块扩大到残差块的一半,这样能够覆盖残差块中更多的残差信息。

与SVT变换1500一样,SVT变换1600可以包括若干个候选位置,其中候选位置是变换块相对于残差块的可能容许位置。根据候选位置步长(Candidate Position Step Size,CPSS)确定候选位置。候选位置之间通过CPSS指定的相等间距分隔开。在这种情况下,候选位置的数量减少到不超过5个。候选位置的数量减少降低了与位置信息相关联的信令开销,因为可以用更少的比特来指示用于变换的所需位置。此外,候选位置的数量减少使得选择变换位置在算法上更简单,从而降低了编码器的复杂性(例如使得编码使用的计算资源更少)。

图17示出了相对于残差块的示例性SVT变换候选位置1700。具体地,SVT变换候选位置1700使用相对残差块放置的SVT-V和SVT-H(例如SVT变换1600)。用于变换的容许候选位置根据CPSS而定,CPSS进一步根据变换块需要覆盖的一部分残差块和/或候选位置之间的步长而定。例如,CPSS可计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中w和h分别为残差块的宽度和高度,M1和M2为2~8范围内的预定整数。能够使用的候选位置越多,M1或M2的值越大。例如,M1和M2均设为8。在这种情况下,描述变换块相对于残差块的位置的位置索引(P)的值介于0到4之间。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中Th1和Th2是预定义的指定最小步长的整数。Th1和Th2可以为不小于2的整数。在本例中,Th1和Th2设为4,M1和M2设为8。在本例中,不同块大小可以具有不同数量的候选位置。例如,当残差块的宽度为8时,SVT-V可使用两个候选位置,具体为候选位置1700(a)和(e)。例如,当Th1指示的步长较大且变换覆盖的如w/M1指示的一部分残差块也较大时,只有两个候选位置满足CPSS。然而,当w设为16时,由于w/M1发生变化,变换覆盖的这部分残差块变小。由此产生更多的候选位置,此时存在3个候选位置1700(a)、(c)和(e)。当残差块的宽度大于16而Th1和M1的值如上所述时,所有5个候选位置都可用。

当根据其它机制计算CPSS时,还可以存在其它示例。具体地,CPSS可计算为:使用SVT-V时,s=w/M1,使用SVT-H时,s=h/M2。在这种情况下,当M1和M2设为4时,SVT-V能够使用3个候选位置(例如候选位置1700(a)、(c)和(e)),SVT-H能够使用3个候选位置(例如候选位置1700(f)、(h)和(j))。此外,当M1和M2设为4时,变换覆盖的一部分残差块变大,从而产生SVT-V的两个容许候选位置(例如候选位置1700(a)和(e))和SVT-H的两个容许候选位置(例如候选位置1700(f)和(e))。

在另一个示例中,如上所述,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2)。此时,T1和T2设为预定义的整数,例如2,如果w≥h时,M1设为8,或当w<h时,M1设为4;当h≥w时,M2设为8,或当h<w时,M2设为4。例如,变换覆盖的这部分残差块根据残差块的高度是否大于残差块的宽度而定,反之亦然。因此,SVT-H或SVT-V的候选位置的数量还根据于残差块的宽高比而定。

在另一个示例中,如上所述,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2)。此时,M1、M2、Th1和Th2的值从比特流中的高级语法结构(例如序列参数集)中推导出。例如,用于推导出CPSS的值可以在比特流中指示。M1和M2可使用从语法元素解析出的同一值,Th1和Th2可使用从另一语法元素解析出的同一值。

图18示出了相对残差块的示例性SVT变换位置1800。SVT变换位置1800是从SVT变换候选位置1700等候选位置中选择出的。具体地,所选SVT变换位置1800可按照位置索引P进行编码。位置索引P可用于确定变换块的左上角相对残差块的左上角的位置偏移(Z)。例如,可以根据Z=s×P确定这种位置相关性,其中s是根据SVT类型的变换块的CPSS,如结合图6所述进行计算。当变换块为SVT-V类型时,P的值可以编码为0、当变换块为SVT-H类型时,P的值可以编码为0、具体地,(0,0)可以表示残差块的左上角的坐标。在这种情况下,变换块的左上角的坐标在使用SVT-V时为(Z,0),在使用SVT-H时为(0,Z)。

如下文更详细地论述,编码器可以通过使用变量将SVT变换类型(例如,SVT-H或SVT-T)和残差块大小编码到比特流中。然后,解码器可以根据SVT变换大小和残差块大小确定SVT变换大小。一旦确定了SVT变换大小,解码器就可以根据CPSS函数确定SVT变换的容许候选位置,例如SVT变换候选位置1700。由于解码器能够确定SVT变换的候选位置,因此编码器可能不会指示位置偏移的坐标。相反,可以使用代码来指示对应变换使用了哪个候选位置。例如,采用截断的一元码,位置索引P可二值化为一个或多个二进制值,以增加压缩。在一个特定示例中,当P在0~4的范围内取值时,P的值0、4、2、3和1可以分别二值化为0、01、001、0001和0000。相比于使用固定长度代码来表示位置索引,这种二进制代码有更好的压缩性。又例如,当P在0~1的范围内取值时,P的值0和1可以分别二值化为0和1。因此,位置索引在大小上可根据需要增大或缩小,以根据变换块的可能候选位置指示特定变换块位置。

通过采用最可能位置和可能性较小的剩余位置,可将位置索引P二值化为一个或多个二进制位。例如,当左侧相邻块和上方相邻块已经在解码器侧解码,因此可用于预测时,可将最可能位置设为覆盖残差块的右下角的位置。在一个示例中,当P在0~4的范围内取值且位置4设为最可能位置时,P的值4、0、1、2和3分别二值化为1,000、001、010和011。此外,当P在0~2的范围内取值且位置2设为最可能位置时,P的值2、0和1分别二值化为1、01和00。相应地,候选位置的最可能位置索引使用最少的比特表示,以减少最常见情况下的信令开销。该概率可以根据相邻重建块的编码顺序来确定。因此,解码器可以基于所采用的解码方案推断对应块要使用的码字方案。

例如,在HEVC中,编码单元的编码顺序通常从上到下、从左到右。在这种情况下,当前编码解码的编码单元的右侧不可用,使得右上角成为最可能变换位置。然而,运动矢量预测值是从左侧和上方的空间相邻块推导出的。在这种情况下,右下角的残差信息统计更密集。在这种情况下,覆盖右下角部分的候选位置是最可能位置。此外,当利用自适应编码单元编码顺序时,一个节点可以垂直拆分为两个子节点,而且右侧子节点的编码在左侧子节点之前。此时,在对左侧子节点进行解码/编码之前,已经重建了左侧子节点的右侧相邻子节点。此外,在这种情况下,左侧相邻像素不可用。当右侧相邻像素可用而左侧相邻像素不可用时,残差块的左下角部分很可能包含大量残差信息,由此覆盖残差块的左下角部分的候选位置成为最可能位置。

因此,根据残差块的右侧是否已重建,位置索引P可以二值化为一个或多个二进制位。在一个示例中,P在0~2的范围内取值,如SVT变换位置1800所示。当残差块的右侧已重建时,P的值0、2和1二值化为0、01和00。否则,P的值2、0和1二值化为0、01和00。在另一个示例中,当残差块的右侧已重建,但残差块的左侧还未重建时,P的值0、2和1二值化为0、00和01。否则,P的值2、0和1二值化为0、00和01。在这些示例中,对应于单个二进制位的位置是最可能位置,其它两个位置是剩余位置。例如,最可能位置根据右侧相邻块的可用性。

在率失真性能方面,最佳位置的概率分布在不同预测模式中可能有很大的不同。例如,当残差块对应于通过模板匹配和作为模板的空间相邻重建像素生成的预测块时,最佳位置为最可能位置2。对于其它帧间预测模式,位置2(或右侧相邻块可用而右侧相邻块不可用时的位置0)为最佳位置的概率低于模板匹配模式的概率。有鉴于此,可以根据与残差块相关联的帧间预测模式确定位置索引P的第一个二进制位的上下文模型。具体地,当残差块与基于模板匹配的帧间预测相关联时,位置索引P的第一个二进制位使用第一个上下文模型。否则,使用第二个上下文模型对该二进制位进行编码/解码。

在另一个示例中,当残差块与基于模板匹配的帧间预测相关联时,最可能位置(例如,位置2,或右侧相邻块可用而左侧相邻块不可用时的位置0)直接设为变换块位置,而且不在比特流中指示位置信息。否则,位置索引在比特流中显式指示。

还需要注意的是,可以根据变换块相对残差块的位置使用不同的变换。例如,重建残差块的左侧,而不重建残差块的右侧,这在从左到右和从上到下(例如,HEVC中的编码顺序)的固定编码单元编码顺序进行视频编码的时候发生。在这种情况下,覆盖残差块的右下角的候选位置在编码时可以使用DST(例如,DST类型7(DST-7)或DST类型1(DST-1))在变换块中进行变换。(在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。因此,在这种情况下,覆盖残差块的右下角的候选位置在编码时可以使用DST(例如,DST类型7(DST-4)或DST类型1(DST-1))在变换块中进行变换)。相应地,在解码器侧对相应的候选位置使用DST的逆变换。此外,覆盖残差块的左上角的候选位置在编码时可以使用DCT(例如,DCT类型8(DCT-8)或DCT类型2(DCT-2))在变换块中进行变换(在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,覆盖残差块的左上角的候选位置在编码时可以使用DCT(例如,DCT类型8(DCT-4)或DCT类型2(DCT-2))在变换块中进行变换)。相应地,在解码器侧对相应的候选位置使用DCT逆变换。这是因为在这种情况下,右下角是4个角落中距离空间重建区域最远的一个。此外,当变换块覆盖残差块的右下角时,对残差信息分布进行变换时DST比DCT更有效。然而,当变换块覆盖残差块的左上角时,对残差信息分布进行变换,DCT比DST更有效。对于其余候选位置,变换类型可以是逆DST或逆DCT。例如,当候选位置距离右下角比距离左上角更近时,使用逆DST作为变换类型。反之,使用逆DCT作为变换类型。

在一个具体示例中,能够使用变换块的三个候选位置,如图18所示。此时,位置0覆盖左上角,位置2覆盖右下角。位置1位于残差块的中间,与左角和右角距离相等。在编码器侧,可以选择DCT-8、DST-7和DST-7作为位置0、位置1和位置2的变换类型。然后在解码器侧,位置0、位置1和位置2可以分别使用DCT-8、DST-7和DST-7的逆变换。在另一个示例中,在编码器侧,位置0、位置1和位置2的变换类型分别是DCT-2、DCT-2和DST-7。然后在解码器侧,位置0、位置1和位置2可以分别使用DCT-2、DCT-2和DST-7的逆变换。因此,可以预定对应候选位置的变换类型。

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。因此,在一个具体示例中,能够使用变换块的三个候选位置,如图18所示。此时,位置0覆盖左上角,位置2覆盖右下角。位置1位于残差块的中间,与左角和右角距离相等。在编码器侧,可以选择DCT-4、DST-4和DST-4作为位置0、位置1和位置2的变换类型。然后在解码器侧,位置0、位置1和位置2可以分别使用DCT-4、DST-4和DST-4的逆变换。在另一个示例中,在编码器侧,位置0、位置1和位置2的变换类型分别是DCT-2、DCT-2和DST-4。然后在解码器侧,位置0、位置1和位置2可以分别使用DCT-2、DCT-2和DST-4的逆变换。因此,可以预定对应候选位置的变换类型。

在一些情况下,上述位置相关多种变换可能只应用于亮度变换块。对应的色差变换块在变换/逆变换过程中可始终使用DCT-2的逆变换。

图19示出了残差像素点水平翻转的示例1900。在一些情况下,在编码器侧使用变换块(例如变换块307)之前水平翻转残差块(例如残差块305)中的残差信息,能够实现有益的残差压缩。示例1900示出了这种水平翻转。在本上下文中,水平翻转是指残差块中的残差像素点关于残差块的左侧和残差块的右侧之间的中轴线旋转。这种水平翻转发生在编码器侧使用变换(例如变换块)之前、在解码器侧使用逆变换(例如变换块)之后。当出现指定的预定义条件时,可以使用这种翻转。

在一个示例中,当变换块在变换过程中采用DST/逆DST时,发生水平翻转。在这种情况下,在编码/重建当前块之前对残差块的右侧相邻块进行编码/重建,而在编码/重建当前块之后对左侧相邻块进行编码/重建。水平翻转过程使得残差块的i列上的残差像素点与残差块的w–1–i列上的残差像素点交换。在本上下文中,w为变换块的宽度,i=0、1……(w/2)–1。残差像素点的水平翻转可以通过使残差分布更适合DST变换来提高编码效率。

图20为采用上述机制的采用位置相关SVT的示例性视频解码方法2000的流程图。方法2000可以开始于:在解码器侧接收比特流,例如比特流311。方法2000使用比特流确定预测块和变换残差块,例如预测块303和变换残差块309。方法2000还确定变换块,例如变换块307,变换块307用于确定残差块,例如残差块305。然后,残差块和预测块用于重建图像块,例如图像块301。需要注意的是,虽然方法2000是从解码器的角度来描述的,但也可使用类似方法(例如反方向)通过SVT来编码视频。

在步骤2001处,在解码器侧获取比特流。该比特流可从存储器或从流媒体源接收。该比特流包含可以解码到对应于来自编码器的视频数据的至少一个图像中的数据。具体地,该比特流包含块划分信息,块划分信息可用于确定编码单元,该编码单元包含如机制300中描述的来自比特流的预测块和残差块。这样,可以从比特流中解析与编码单元相关的编码信息,并且可以如下所述根据编码信息重建编码单元的像素。

在步骤2003处,根据块划分信息从比特流中获取预测块和对应的变换残差块。对于本示例,已根据SVT对变换残差块进行了编码,如上文参照机制300所述。然后,方法2000从变换残差块重建w×h大小的残差块,如下所述。

在步骤2005处,确定SVT的使用情况、SVT类型和变换块大小。例如,解码器首先确定编码中是否使用了SVT,原因是一些编码方法使用的变换相当于残差块的大小。SVT的使用情况可以由比特流中的语法元素来指示。具体地,当残差块能够使用SVT时,从比特流中解析出一个变量,例如svt_flag。当变换残差块具有非零变换系数(例如对应于任何亮度分量或色差分量)时,残差块能够使用SVT。例如,当残差块包含任何残差数据时,残差块可使用SVT。SVT变量指示残差块是使用与残差块具有相同大小的变换块进行编码(例如,svt_flag设为0)还是使用比残差块大小小的变换块进行编码(例如,svt_flag设为1)。编码块变量(coded block flag,cbf)可用来指示残差块是否包括HEVC中使用的颜色分量的非零变换系数。此外,根编码块变量(根cbf)可以指示残差块是否包含HEVC中使用的任何颜色分量的非零变换系数。在一个特定示例中,当采用帧间预测来预测图像块且残差块宽度或残差块高度在a1~a2的预定范围内时,残差块能够使用SVT,其中,a1=16且a2=64,a1=8且a2=64,或者a1=16且a2=128。a1和a2的值可以是预定的固定值。这些值还可以从比特流的序列参数集(sequence parameter set,SPS)或片头中推导出。当残差块不使用SVT时,将变换块大小设为残差块大小中的宽度和高度。否则,根据SVT变换类型确定变换大小。

一旦解码器确定残差块使用了SVT,解码器就可确定使用的SVT变换块的类型,并根据SVT类型推导出变换块大小。残差块能够使用的SVT类型是根据残差块的宽度和高度决定的。如果残差块的宽度在a1~a2的范围内,则能够使用如图16所示的SVT-V变换,这些值如上定义。当残差块的高度在a1~a2的范围内时,能够使用如图16所示的SVT-H变换,这些值如上定义。SVT只可用于残差块中的亮度分量,也可用于残差块中的亮度分量和色差分量。当SVT只用于亮度分量时,亮度分量残差信息使用SVT进行变换,色差分量根据残差块的大小进行变换。当SVT-V和SVT-H都能使用时,可以将svt_type_flag等变量编码到比特流中。svt_type_flag指示残差块使用SVT-V(例如,svt_type_flag设为0)还是使用SVT-H(例如,svt_type_flag设为1)。一旦确定了SVT变换的类型,则根据指示的SVT类型设置变换块大小(例如,使用SVT-V时,w_t=w/2且h_t=h;使用SVT-H时,w_t=w且h_t=h/2)。当只能使用SVT-V或SVT-H时,svt_type_flag可以不编码到比特流中。在这种情况下,解码器可以根据能够使用的SVT类型推断变换块大小。

一旦确定了SVT类型和大小,解码器将继续执行步骤2007。在步骤2007处,解码器确定变换相对残差块的位置以及变换的类型(例如,DST或DCT)。变换块的位置可以根据比特流中的语法元素确定。例如,在一些示例中,位置索引可以直接指示并由此从比特流中解析出。在其它示例中,可以推断出位置,如参照图5至图7所述。具体地,可以根据CPSS函数确定变换的候选位置。CPSS函数可以通过考虑残差块的宽度、残差块的高度、通过步骤2005确定的SVT类型、变换的步长和/或变换覆盖的一部分残差块来确定候选位置。然后,解码器可以通过获取p索引从候选位置中确定变换块位置,该p索引包括根据上文参照图18所述的候选位置选择概率指示正确候选位置的代码。一旦变换块位置已知,解码器可以推断变换块使用的变换类型,如上文参照图18A或图18B所述。相应地,编码器可以选择相应的逆变换。

在步骤2009处,解码器根据步骤2005处确定的变换块大小来解析变换块的变换系数。该过程可以根据在HEVC、H.264和/或高级视频编码(advance video codec,AVC)中使用的变换系数解析机制来完成。变换系数可以采用持续长度编码和/或作为变换系数组(coefficient group,CG)的集合进行编码。需要注意的是,在一些示例中,步骤2009可以在步骤2007之前执行。

在步骤2011处,根据如上确定的变换位置、变换系数和变换类型重建残差块。具体地,对变换系数进行反量化和w_t×h_t大小的逆变换,以恢复残差块的残差像素点。具有残差像素点的残差块的大小为w_t×h_t。根据步骤2007确定的位置相关变换类型,逆变换可以是逆DCT或逆DST。根据变换块位置,将残差像素点分配到残差块内的对应区域。残差块内、变换块外的任何残差像素点可以设为零。例如,当使用SVT-V,候选位置的数量为5,且位置索引指示第五变换块位置时,将重建残差像素点分配到变换候选位置1700(e)的区域A,并且(w/2)×h大小的区域到区域A的左侧的残差像素点为0。

在可选步骤2013处,重建块的残差块信息可以参照图19所述进行水平翻转。如上所述,这可能在解码器侧的变换块使用逆DST,右侧相邻块已重建,左侧相邻块还未重建的情况下发生。具体地,在上述情况下,编码器可以在使用DST变换之前水平翻转残差块,以便提高编码效率。相应地此,可选步骤2013可用于在编码器侧校正这种水平翻转,以产生精确的重建块。

在步骤2015处,重建残差块可以与预测块组合,生成包含像素点作为编码单元一部分的重建图像块。还可以对重建像素点执行滤波过程,例如HEVC中的去块滤波和采样自适应偏移(sample Adaptive offset,SAO)处理。然后,可以将重建图像块与其它通过类似方式解码的图像块组合起来,生成媒体/视频文件的帧。然后,可以在显示器或其他显示设备上向用户显示重建媒体文件。

需要注意的是,可以使用方法2000的等效实现方式来生成残差块中的重建像素点。具体地,变换块的残差像素点可以直接在变换块位置信息指示的位置上与预测块组合,无需先恢复残差块。

总之,上述公开内容包括在不同位置对变换块自适应地使用多种变换类型的机制。此外,本发明能够水平翻转残差块中的残差像素点,从而提高编码效率。这在变换块在编码器和解码器侧分别使用DST和逆DST,右侧相邻块可用而左相邻块不可用的情况下发生。此外,本发明包括根据与残差块相关联的帧间预测模式支持比特流中的编码位置信息的机制。

可以在以下示例中得到其它实施例。

示例1.一种在计算设备中实施的方法,其特征在于,所述方法包括:

在所述计算设备的处理器侧接收比特流,所述比特流存储在所述计算设备的存储器中并通过所述计算设备的接收器接收;

在所述处理器侧从所述比特流中接收预测块和对应的变换残差块;

所述处理器确定用于生成所述变换残差块的空间变化变换(spatial variableTransform,SVT)变换的类型;

所述处理器确定所述SVT变换相对所述变换残差块的位置;

所述处理器对所述变换残差块执行所述SVT变换的逆变换,以重建一个重建残差块;

所述处理器将所述重建残差块与所述预测块组合,以重建图像块以便在显示器上显示。

示例2.根据示例1所述的方法,其特征在于,所述SVT变换的类型为垂直SVT(SVTvertical,SVT-V)类型或水平SVT(SVT horizontal,SVT-H)类型,所述SVT-V类型包括:高度等于所述变换残差块的高度,宽度是所述变换残差块的宽度的一半;所述SVT_H类型包括:高度是所述变换残差块的高度的一半,宽度等于所述变换残差块的宽度。

示例3.根据示例1或2所述的方法,其特征在于,通过从所述比特流中解析出svt_type_flag确定所述SVT变换的类型。

示例4.根据示例1-3任一个所述的方法,其特征在于,当所述残差块只能使用一种类型的SVT变换时,所述处理器根据推断确定所述SVT变换的类型。

示例5.根据示例1-4任一个所述的方法,其特征在于,所述处理器通过从所述比特流中解析出位置索引确定所述SVT变换的位置。

示例6.根据示例1-5任一个所述的方法,其特征在于,所述位置索引包含二进制代码,所述二进制代码指示根据候选位置步长(candidate position step size,CPSS)确定的一组候选位置中的位置。

示例7.根据示例1-6任一个所述的方法,其特征在于,为所述SVT变换的最可能位置分配所述二进制码中指示所述位置索引的最少比特。

示例8.根据示例1-7任一个所述的方法,其特征在于,当所述SVT变换只有一个候选位置可用时,所述处理器推断出所述SVT变换的位置。

示例9.根据示例1-8任一个所述的方法,其特征在于,当通过帧间预测模式中的模板匹配生成所述残差块时,所述处理器推断出所述SVT变换的位置。

示例10.根据示例1-9任一个所述的方法,其特征在于,还包括:所述处理器根据所述SVT变换的位置确定所述SVT变换的逆变换。

示例11.根据示例1-10任一项所述方法,其特征在于,所述处理器对位于所述残差块左边界的垂直SVT(SVT-V)类型变换采用逆离散正弦变换(Discrete Sine Transform,DST),所述处理器对位于所述残差块上边界的水平SVT(SVT-H)类型变换采用逆DST,所述处理器对位于所述残差块右边界的SVT-V类型变换采用反离散余弦变换(Discrete CosineTransform,DCT),或者所述处理器对位于所述残差块下边界的SVT-H类型变换采用逆DCT。

示例12.根据示例1-11任一个所述的方法,其特征在于,还包括:当与所述重建残差块相关联的编码单元的右侧相邻块已重建而所述编码单元的左侧相邻块未重建时,所述处理器在将所述重建残差块与所述预测块组合之前水平翻转所述重建残差块中的像素点。

示例13.一种在计算设备中实施的方法,其特征在于,所述方法包括:

在所述计算设备的处理器侧从视频捕获设备接收视频信号,所述视频信号包括图像块;

所述处理器生成预测块和残差块,表示所述图像块;

所述处理器采用空间变化变换(spatial varying transform,SVT)变换将所述残差块变换为变换残差块;

所述处理器在比特流中指示所述SVT变换的类型;

所述处理器在所述比特流中指示所述SVT变换的位置;

所述处理器将所述预测块和所述变换残差块编码到所述比特流中以供解码器使用,所述比特流存储在所述计算设备的存储器中以通过发射器向所述解码器发送。

示例14.根据示例13所述的方法,其特征在于,所述SVT变换的类型为垂直SVT(SVT-V)类型或水平SVT(SVT-H)类型,所述SVT-V类型包括:高度等于所述残差块的高度,宽度是所述残差块的宽度的一半;所述SVT_H类型包括:高度是所述残差块的高度的一半,宽度等于所述残差块的宽度。

示例15.根据示例13-14任一个所述的方法,所述SVT变换的位置编码在位置索引中。

示例16.根据示例13-15任一个所述的方法,其特征在于,所述位置索引包含二进制代码,所述二进制代码指示根据候选位置步长(candidate position step size,CPSS)确定的一组候选位置中的位置。

示例17.根据示例13-16任一个所述的方法,其特征在于,所述处理器为所述SVT变换的最可能位置分配所述二进制码中指示所述位置索引的最少比特。

示例18.根据示例13-17任一个所述的方法,其特征在于,还包括:所述处理器基于所述SVT变换的位置为所述SVT变换选择变换算法。

示例19.根据示例13至18任一个所述的方法,其特征在于,所述处理器对位于所述残差块左边界的垂直SVT(SVT-V)类型变换采用离散正弦变换(Discrete Sine Transform,DST)算法,所述处理器为位于所述残差块上边界的水平SVT(SVT-H)类型变换选择DST算法,所述处理器为位于所述残差块右边界的SVT-V类型变换选择离散余弦变换(DiscreteCosine Transform,DCT)算法,或者所述处理器为位于所述残差块下边界的SVT-H类型变换选择DCT算法。

示例20.根据示例13-19任一个所述的方法,其特征在于,还包括:当与所述残差块相关联的编码单元的右侧相邻块已编码而所述编码单元的左侧相邻块未编码时,所述处理器在将所述残差块转换为所述变换残差块之前水平翻转所述残差块中的像素点。

引用如下文档:[1]C.Zhang,K.Ugur,J.Lainema,A.Hallapuro,M.Gabbouj,《使用空间变化变换的视频编码》,IEEE图像处理期刊,2011年2月,第2期第二21卷,第127-140页。

本发明还介绍了另一种改进的SVT方案。改进内容是:SVT块的水平变换类型和垂直变换类型是根据SVT类型和SVT块位置来确定的。水平变换与垂直变换可以不同。在之前,SVT块的水平变换类型和垂直变换类型只根据SVT块位置来确定,而且水平变换与垂直变换始终相同。

第一实施例描述了残差块解码过程。对包含视频数据的至少一个图像的比特流进行解码。将一个图像拆分为多个矩形图像区域,每个区域对应一个编码树单元(CodingTree Unit,CTU)。根据比特流中包含的块分区信息,将一个CTU划分成多个块,例如HEVC中的编码单元。从比特流中解析出这些块的编码信息,并根据编码信息来重建这些块的像素。

在本实施例中,SVT仅限用于帧间预测块。SVT还可用于帧内预测块。在更高级的方法中,SVT可用于采用特定的帧间预测方法(例如,基于平移模型的运动补偿)的块,但不可用于采用某个其它帧间预测方法(例如,基于仿射模型的运动补偿)的块。在另一个示例中,SVT可用于采用合并模式或运动矢量差的精度为1/4像素的高级运动矢量预测(advancedmotion vector prediction,AMVP)模式的预测块,但不可用于采用仿射合并模式、仿射帧间模式或运动矢量差的精度为1像素或4像素的AMVP模式的预测块。在另一个示例中,SVT可用于采用合并索引小于2的合并模式的预测块,但不可用于采用合并索引不小于2的合并模式的预测块。合并模式和AMVP模式可在H.265/HEVC标准中查看。仿射合并模式和仿射帧间模式可在联合视频探索小组(Joint Video Exploration Team,JVET)的联合探索模型(Joint Exploration Model,JEM)编解码中查看。

在一个示例中,一个块可以指一个编码单元,其中编码单元可包含一个预测块和一个残差块。预测块可包含编码单元的所有预测像素点,残差块可包含编码单元的所有残差像素点,预测块与残差块具有相同大小。在另一个示例中,一个块可以指一个编码单元,编码单元可包含两个预测块和一个残差块,每个预测块可包含编码单元的一部分预测像素点,残差块可包含编码单元的全部残差像素点。在另一个示例中,一个块可以指一个编码单元,编码单元可包括两个预测块和四个残差块。编码单元中的残差块的划分模式可以在比特流中指示,例如通过HEVC中的残差四叉树(Residual Quad-Tree,RQT)指示。

一个块可只包含图像像素点(或像素)的Y分量,或者可包含图像像素点的Y、U和V分量。

一个w×h大小的残差块Ro可通过以下步骤重建。

步骤1:确定残差块Ro的变换块大小。

步骤1.1:根据语法元素确定SVT的使用情况。对于一个能够使用SVT的残差块,如果该残差块具有Y分量的非零变换系数(或具有任何颜色分量的非零变换系数),则从比特流中解析出一个变量(即svt_flag)。该变量指示采用与残差块大小相同的变换块对残差块进行编码(例如,svt_flag=0)还是采用比残差块大小小的变换块对残差块进行编码(例如,svt_flag=1)。一个块是否具有颜色分量的非零变换系数可由HEVC中使用的颜色分量的编码块变量(coded block flag,cbf)指示。一个块是否具有任何颜色分量的非零变换系数可由HEVC中使用的根编码块变量(根cbf)指示。

在一个示例中,如果以下条件满足,则一个块能够使用SVT:

(1)采用帧间预测对该块进行预测;

(2)该块的宽度或高度在a1~a2的预定范围内,例如,a1=16且a2=64,a1=8且a2=64,或者a1=16且a2=128。a1和a2可以为固定值。该值还可以从序列参数集(sequenceparameter set,SPS)或片头中推导出。

在另一个示例中,如果以下条件满足,则一个块能够使用SVT:

(1)采用合并索引小于阈值(例如,1、2或3)的合并模式或运动矢量差的精度为1/4像素的AMVP模式对该块进行预测;

(2)该块的一个量度在a1~a2的预定范围内,该块的另一个量度不大于阈值a3,例如a1=8,a2=32,a3=32。参数a1可设为最小变换大小的两倍,a2和a3均可设为最大变换大小。a1、a2和a3可以为固定值。该值还可以从序列参数集(sequence parameter set,SPS)或片头中推导出。

如果该块不使用SVT,则变换块大小设为w×h。否则,执行步骤1.2,确定变换大小。

步骤1.2:根据语法元素确定SVT的类型,并根据SVT类型推导变换块大小。残差块能够使用的SVT类型是根据残差块的宽度和高度决定的。如果w在a1~a2的范围内且h不大于a3,则能够使用SVT-V;如果h在a1~a2的范围内且w不大于a3,则能够使用SVT-H。SVT可能只用于Y分量,也可以用于所有三个分量。当SVT只用于Y分量时,Y分量残差使用SVT进行变换,U和V分量根据残差块的大小进行变换。

当SVT-V和SVT-H都能使用时,从比特流中解析出一个变量(即svt_type_flag),指示残差块使用SVT-V(例如,svt_type_flag=0)还是使用SVT-H(例如,svt_type_flag=1),并且根据指示的SVT类型设置变换块大小(即,使用SVT-V时,w_t=w/2且h_t=h;使用SVT-H时,w_t=w且h_t=h/2)。当只能使用SVT-V或SVT-H时,不从比特流中解析出svt_type_flag,而是根据能够使用的SVT类型设置变换块大小。

步骤2:根据语法元素确定变换块位置,并根据SVT的类型和变换块位置信息确定变换块的变换类型。

步骤2.1:根据语法元素确定变换块位置。

从比特流中解析出位置索引P,并将变换块左上角到残差块左上角的位置偏移Z确定为Z=s×P,其中s为候选位置步长(candidate position step size,CPSS)。如果使用SVT-V,则P在0、之间取值;如果使用SVT-H,则P在0、之间取值。具体地,假设(0,0)表示残差块左上角的坐标,则变换块左上角的坐标在使用SVT-V时为(Z,0),在使用SVT-H时为(0,Z)。

在一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中w和h分别为残差块的宽度和高度,M1和M2为2~8范围内的预定整数。能够使用的候选位置越多,M1或M2的值越大。在本示例中,M1和M2都设为8。因此,P在0~4之间取值。候选位置如图21所示。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中Th1和Th2是预定义的指定最小步长的整数。Th1和Th2为不小于2的整数。在本示例中,Th1和Th2设为4,M1和M2设为8。在本示例中,不同块大小可以具有不同数量的候选位置。例如,当w=8时,有2个候选位置(如图21(a)和图21(e)所示)可供选择;当w=16时,有3个候选位置(如图21(a)、图21(c)和图21(e)所示)可供选择;当w>16时,有5个位置可供选择。

在另一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中M1和M2设为4。相应地,能够使用3个候选位置。

在另一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中M1和M2设为2。相应地,能够使用2个候选位置。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中T1和T2设为2;如果w≥h,M1设为8,如果w<h,M1设为4;如果h≥w,M2设为8,如果h<w,M2设为4。在这种情况下,SVT-H或SVT-V的候选位置的数量还可根据残差块的宽高比而定。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中M1、M2、Th1和Th2的值从比特流的高级语法结构(例如序列参数集)中推导出。M1和M2可使用从语法元素中解析出的同一值,Th1和Th2可使用从另一语法元素中解析出的同一值。

采用截断的一元码,位置索引P可二值化为一个或多个二进制位。例如,如果P在0~4的范围内取值,则P的值0、4、2、3和1分别二值化为0、01、001、0001和0000,如果P在0~1的范围取值内,则P的值0和1分别二值化为0和1。

采用一个最可能位置和若干个剩余位置,可将位置索引P二值化为一个或多个二进制位。当左侧相邻块和上方相邻块可用时,最可能位置可设为覆盖残差块右下角的位置。在一个示例中,如果P在0~4的范围内取且位置4设为最可能位置,则P的值4、0、1、2和3分别二值化为1、000、001、010和011;如果P在0~2的范围内取值且位置2设为最可能位置,则P的值2、0和1分别二值化为1、01和00。

步骤2.2:根据SVT的类型和变换块位置信息确定变换块的变换类型。变换类型包括2D可分离变换的水平变换和垂直变换。

以能够使用3个候选位置为例,如图22所示。位置0覆盖左上角,位置2覆盖右下角。位置1在残差块的中间。使用SVT-V和SVT-H时都存在3个位置,如图22所示。

二维变换可以分为一维水平变换和一维垂直变换。正向2D变换将残差转换为变换系数,这可以通过以下方式实现:首先对残差块执行水平变换,生成块TA,然后对块TA执行垂直变换,生成变换系数块,如JEM编解码中实现的那样。相应地,反2D变换将变换系数转换回残差,这可以通过以下方式实现:首先对变换系数块执行反垂直变换,生成块TB,然后对块TB执行反水平变换,生成残差块,如JEM编解码中实现的那样。

在一个示例中,SVT-V位置0的水平变换和垂直变换是DCT-8和DST-7;SVT-V位置1的水平变换和垂直变换是DST-1和DST-7;SVT-V位置2的水平变换和垂直变换是DST-7和DST-7;SVT-H位置0的水平变换和垂直变换是DST-7和DCT-8;SVT-H位置1的水平变换和垂直变换是DST-7和DST-1;SVT-H位置2的水平变换和垂直变换是DST-7和DST-7,如表1所示。在本示例中,SVT-V垂直变换和SVT-H水平变换设为DST-7,而其它变换根据SVT位置而定。

表1:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在一个示例中,SVT-V位置0的水平变换和垂直变换是DCT-4和DST-4;SVT-V位置1的水平变换和垂直变换是DST-1和DST-4;SVT-V位置2的水平变换和垂直变换是DST-4和DST-4;SVT-H位置0的水平变换和垂直变换是DST-4和DCT-4;SVT-H位置1的水平变换和垂直变换是DST-4和DST-1;SVT-H位置的水平变换和垂直变换是DST-4和DST-4,如表1’所示。在本示例中,SVT-V垂直变换和SVT-H水平变换设为DST-4,而其它变换根据SVT位置而定。

表1’:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-4 DST-4
SVT-V,位置1 DST-1 DST-4
SVT-V,位置2 DST-4 DST-4
SVT-H,位置0 DST-4 DCT-4
SVT-H,位置1 DST-4 DST-1
SVT-H,位置2 DST-4 DST-4

在另一个示例中,表2列出了不同SVT类型和位置对应的水平变换和垂直变换。在本示例中,SVT-V垂直变换和SVT-H水平变换设为DCT-2,而其它变换根据SVT位置而定。

表2:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-8 DCT-2
SVT-V,位置1 DST-1 DCT-2
SVT-V,位置2 DST-7 DCT-2
SVT-H,位置0 DCT-2 DCT-8
SVT-H,位置1 DCT-2 DST-1
SVT-H,位置2 DCT-2 DST-7

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,表2’列出了不同SVT类型和位置对应的水平变换和垂直变换。在本示例中,SVT-V垂直变换和SVT-H水平变换设为DCT-2,而其它变换根据SVT位置而定。

表2’不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-4 DCT-2
SVT-V,位置1 DST-1 DCT-2
SVT-V,位置2 DST-4 DCT-2
SVT-H,位置0 DCT-2 DCT-4
SVT-H,位置1 DCT-2 DST-1
SVT-H,位置2 DCT-2 DST-4

在另一个示例中,表3列出了不同SVT类型和位置对应的水平变换和垂直变换。在本示例中,水平变换和垂直变换仅根据SVT位置决定。

表3:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-8 DCT-8
SVT-V,位置1 DST-1 DST-1
SVT-V,位置2 DST-7 DST-7
SVT-H,位置0 DCT-8 DCT-8
SVT-H,位置1 DST-1 DST-1
SVT-H,位置2 DST-7 DST-7

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,表III’列出了不同SVT类型和位置对应的水平变换和垂直变换。在本示例中,水平变换和垂直变换仅根据SVT位置决定。

表3’:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-4 DCT-4
SVT-V,位置1 DST-1 DST-1
SVT-V,位置2 DST-4 DST-4
SVT-H,位置0 DCT-4 DCT-4
SVT-H,位置1 DST-1 DST-1
SVT-H,位置2 DST-4 DST-4

在另一个示例中,表IV列出了不同SVT类型和位置对应的水平变换和垂直变换。

表4:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DST-7 DCT-8
SVT-V,位置1 DST-7 DST-1
SVT-V,位置2 DST-7 DST-7
SVT-H,位置0 DCT-8 DST-7
SVT-H,位置1 DST-1 DST-7
SVT-H,位置2 DST-7 DST-7

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,表4’列出了不同SVT类型和位置对应的水平变换和垂直变换。

表4’:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DST-4 DCT-4
SVT-V,位置1 DST-4 DST-1
SVT-V,位置2 DST-4 DST-4
SVT-H,位置0 DCT-4 DST-4
SVT-H,位置1 DST-1 DST-4
SVT-H,位置2 DST-4 DST-4

在另一个示例中,表5列出了不同SVT类型和位置对应的水平变换和垂直变换。

表5:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-8 DST-7
SVT-V,位置1 DCT-2 DST-7
SVT-V,位置2 DST-7 DST-7
SVT-H,位置0 DST-7 DCT-8
SVT-H,位置1 DST-7 DCT-2
SVT-H,位置2 DST-7 DST-7

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。相应地,在另一个示例中,表5’列出了不同SVT类型和位置对应的水平变换和垂直变换。

表5’:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-4 DST-4
SVT-V,位置1 DCT-2 DST-4
SVT-V,位置2 DST-4 DST-4
SVT-H,位置0 DST-4 DCT-4
SVT-H,位置1 DST-4 DCT-2
SVT-H,位置2 DST-4 DST-4

在另一个示例中,表6列出了不同SVT类型和位置对应的水平变换和垂直变换。

表6:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-8 DCT-2
SVT-V,位置1 DCT-2 DCT-2
SVT-V,位置2 DST-7 DCT-2
SVT-H,位置0 DCT-2 DCT-8
SVT-H,位置1 DCT-2 DCT-2
SVT-H,位置2 DCT-2 DST-7

在另一种实现方式中,本发明可以使用DST-4代替DST-7,使用DCT-4代替DCT-8。因此,在另一个示例中,表6’列出了不同SVT类型和位置对应的水平变换和垂直变换。

表6’:不同SVT类型和位置对应的1D水平变换和1D垂直变换的示例

SVT类型,位置 水平变换 垂直变换
SVT-V,位置0 DCT-4 DCT-2
SVT-V,位置1 DCT-2 DCT-2
SVT-V,位置2 DST-4 DCT-2
SVT-H,位置0 DCT-2 DCT-4
SVT-H,位置1 DCT-2 DCT-2
SVT-H,位置2 DCT-2 DST-4

位置相关的多种变换可能只应用于亮度变换块,而相应的色差变换块在逆变换过程中始终使用DCT-2的逆变换。

步骤3:根据变换块大小解析变换块的变换系数。

这是视频解码中常用的过程,例如HEVC或H.264/AVC中的变换系数解析。变换系数可以采用持续长度编码进行编码和/或作为变换系数组(coefficient group,CG)的集合进行更复杂的编码。

步骤3可以在步骤2之前执行。

步骤4:根据变换系数、变换块位置和逆变换的类型重建残差块Ro。

对变换系数进行反量化和w_t×h_t大小的逆变换,以恢复残差像素点。残差像素点的大小为w_t×h_t,与变换块大小相同。逆变换属于2D可分离变换。首先,通过反垂直变换对解量化变换系数块进行变换,生成块TC;然后,通过反水平变换对块TC进行变换,其中反水平变换和反垂直变换在步骤2.2中是根据变换块位置或者根据变换块位置和变换块的SVT类型决定的。

根据变换块位置,将残差像素点分配到残差块Ro内的相应区域,并将残差块内的其余像素点设为零。例如,如果使用SVT-V,候选位置的数量是5,位置索引是4,则将重建残差像素点分配到图21(e)中的区域A,并且(w/2)×h大小的区域到区域A的左侧的残差为0。

在执行步骤1至步骤4之后,可将重建残差块与预测块组合,从而在编码单元中生成重建像素点。稍后可对重建像素点执行滤波过程,例如HEVC中的去块滤波和采样自适应偏移(sample adaptive offset,SAO)处理。

与现有方案不同,本方案根据SVT类型和位置信息对变换块自适应地使用多种变换类型。

本发明介绍了一种改进的SVT方案。对两种类型的SVT块进行残差编码,这两种类型分别记为SVT-H和SVT-V,如图23所示。存在两种情况:(1)SVT-V:w_t=w/2且h_t=h;(2)SVT-H:w_t=w且h_t=h/2。

SVT-V与SVT-II类似,SVT-H与SVT-III类似。相比于SVT-II和SVT-III,SVT-V和SVT-H中的变换块扩大到残差块的一半,这样能够覆盖残差块中更多的残差。注意的是,SVT-II或SVT-H可以用来代替SVT-V或SVT-H。

候选位置根据候选位置步长(Candidate Position Step Size,CPSS)而定。相应地,候选位置之间通过CPSS指定的相等间距分隔开。在不同实施例中,候选位置的数量减少到不超过5个,降低了位置信息的开销和确定最佳变换块位置的编码器复杂性。

CPSS表示两个相邻候选位置之间的距离(例如,[1]中的1),并根据残差块的宽度或高度来计算。具体地,SVT-V的候选位置步长确定为h_b=max(w/M1,Th1),其中M1和Th1为预定义的整数,max(a,b)为取a和b中最大值的运算。同理,SVT-H的候选位置步长确定为w_b=max(w/M2,Th2),其中M2和Th2为预定义的整数。M1和M2为2到8之间的整数,例如,M1=M2=8,M1=M2=4,或者M1=M2=2。Th1和Th2为不小于2的整数。M1、M2、Th1和Th2可以设为固定值,或者可以从比特流的高级语法结构(例如序列参数集)中推导出。

SVT信息(例如,残差块的SVT的使用情况、SVT的类型和变换块的位置)的编码与[1]中的编码不同,而且通过分析残差块的变换系数进一步改进。

对于SVT-V:w_t=w/2且h_t=h的情况,SVT信息可部分从解码变换系数中推导出。在一个示例中,位置信息可从变换系数幅度值的和推导出。在另一个示例中,SVT类型信息从第一组变换系数(例如扫描顺序中的前16个系数)的和中推导出,位置信息从第二组变换系数(例如变换块中的其余系数)中推导出。

对于SVT-H:w_t=w且h_t=h/2的情况,根据变换系数信息确定候选位置的数量,并根据候选位置的数量对位置信息进行解码。

实施例1

本实施例描述了残差块解码过程。对包含视频数据的至少一个图像的比特流进行解码。将一个图像拆分为多个矩形图像区域,每个区域对应一个编码树单元(Coding TreeUnit,CTU)。根据比特流中包含的块划分信息将一个CTU划分成多个块,例如高效视频编码(High Efficiency Video Coding,HEVC)中的编码单元。从比特流中解析出这些块的编码信息,并根据编码信息来重建这些块的像素。

在本实施例中,SVT仅限用于帧间预测块。SVT还可用于帧内预测块。在更高级的方法中,SVT可用于采用特定的帧间预测方法(例如,基于平移模型的运动补偿)的块,但不可用于采用某个其它帧间预测方法(例如,基于仿射模型的运动补偿)的块。

在一个示例中,一个块可以指一个编码单元,其中编码单元可包含一个预测块和一个残差块。预测块可包含编码单元的所有预测像素点,残差块可包含编码单元的所有残差像素点,预测块与残差块具有相同大小。在另一个示例中,一个块可以指一个编码单元,编码单元可包含两个预测块和一个残差块,每个预测块可包含编码单元的一部分预测像素点,残差块可包含编码单元的全部残差像素点。在另一个示例中,一个块可以指一个编码单元,编码单元可包括两个预测块和四个残差块。编码单元中的残差块的划分模式可以在比特流中指示,例如通过HEVC中的残差四叉树(Residual Quad-Tree,RQT)指示。

一个块可只包含图像像素点(或像素)的Y分量,或者可包含图像像素点的Y、U和V分量。

一个w×h大小的残差块Ro可通过以下步骤重建。

步骤1:确定残差块Ro的变换块大小。

步骤1.1:根据语法元素确定SVT的使用情况。对于一个能够使用SVT的残差块,如果该残差块具有Y分量的非零变换系数(或具有任何颜色分量的非零变换系数),则从比特流中解析出一个变量(即svt_flag),。该变量指示采用与残差块大小相同的变换块对残差块进行编码(例如,svt_flag=0)还是采用比残差块大小小的变换块对残差块进行编码(例如,svt_flag=1)。一个块是否具有颜色分量的非零变换系数可由HEVC中使用的颜色分量的编码块变量(coded block flag,cbf)指示。一个块是否具有任何颜色分量的非零变换系数可由HEVC中使用的根编码块变量(根cbf)指示。

在一个示例中,如果以下条件满足,则一个块能够使用SVT:

(1)采用帧间预测对该块进行预测;

(2)该块的宽度或高度在a1~a2的预定范围内,例如,a1=16且a2=64,a1=8且a2=64,或者a1=16且a2=128。a1和a2可以为固定值。该值还可以从序列参数集(sequenceparameter set,SPS)或片头中推导出。

如果该块不使用SVT,则变换块大小设为w×h。否则,执行步骤1.2,确定变换大小。

步骤1.2:根据语法元素确定SVT的类型,并根据SVT类型推导变换块大小。残差块能够使用的SVT类型是根据残差块的宽度和高度决定的。如果w在a1~a2的范围内,则能够使用SVT-V;如果h在a1~a2的范围内,则能够使用SVT-H。SVT可能只用于Y分量,也可以用于所有三个分量。当SVT只用于Y分量时,Y分量残差使用SVT进行变换,U和V分量根据残差块的大小进行变换。

当SVT-V和SVT-H都能使用时,从比特流中解析出一个变量(即svt_type_flag),指示残差块使用SVT-V(例如,svt_type_flag=0)还是使用SVT-H(例如,svt_type_flag=1),并且根据指示的SVT类型设置变换块大小(即,使用SVT-V时,w_t=w/2且h_t=h;使用SVT-H时,w_t=w且h_t=h/2)。当只能使用SVT-V或SVT-H时,不从比特流中解析出svt_type_flag,而是根据能够使用的SVT类型设置变换块大小。

步骤2:根据语法元素确定变换块位置。

从比特流中解析出位置索引P,并将变换块左上角到残差块左上角的位置偏移Z确定为Z=s×P,其中s为CPSS。如果使用SVT-V,则P在0、之间取值;如果使用SVT-H,则P在0、之间取值。具体地,假设(0,0)表示残差块左上角的坐标,则变换块左上角的坐标在使用SVT-V时为(Z,0),在使用SVT-H时为(0,Z)。

在一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中w和h分别为残差块的宽度和高度,M1和M2为2~8范围内的预定整数。能够使用的候选位置越多,M1或M2的值越大。在本示例中,M1和M2都设为8。因此,P在0~4之间取值。候选位置如图24所示。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中Th1和Th2是预定义的指定最小步长的整数。Th1和Th2为不小于2的整数。在本示例中,Th1和Th2设为4,M1和M2设为8。在本示例中,不同块大小可以具有不同数量的候选位置。例如,当w=8时,有2个候选位置(如图24(A)和图24(E)所示)可供选择;当w=16时,有3个候选位置(如图24(A)、图24(C)和图24(E)所示)可供选择;当w>16时,有5个位置可供选择。

在另一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中M1和M2设为4。相应地,能够使用3个候选位置。

在另一个示例中,CPSS计算为:使用SVT-V时,s=w/M1;使用SVT-H时,s=h/M2,其中M1和M2设为2。相应地,能够使用2个候选位置。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中T1和T2设为2;如果w≥h,M1设为8,如果w<h,M1设为4;如果h≥w,M2设为8,如果h<w,M2设为4。在这种情况下,SVT-H或SVT-V的候选位置的数量还可根据残差块的宽高比而定。

在另一个示例中,CPSS计算为:使用SVT-V时,s=max(w/M1,Th1);使用SVT-H时,s=max(h/M2,Th2),其中M1、M2、Th1和Th2的值从比特流的高级语法结构(例如序列参数集)中推导出。M1和M2可使用从语法元素中解析出的同一值,Th1和Th2可使用从另一语法元素中解析出的同一值。

采用截断的一元码,位置索引P可二值化为一个或多个二进制位。例如,如果P在0~4的范围内取值,则P的值0、4、2、3和1分别二值化为0、01、001、0001和0000,如果P在0~1的范围取值内,则P的值0和1分别二值化为0和1。

步骤3:根据变换块大小解析变换块的变换系数。

这是视频解码中常用的过程,例如HEVC或H.264/高级视频编码(Advanced VideoCoding,AVC)中的变换系数解析。变换系数可以采用持续长度编码进行编码和/或作为变换系数组(coefficient group,CG)的集合进行更复杂的编码。

步骤3可以在步骤2之前执行。

步骤4:根据变换系数和变换块位置重建残差块Ro。

对变换系数进行反量化和w_t×h_t大小的逆变换,以恢复残差像素点。残差像素点的大小为w_t×h_t,与变换块大小相同。逆变换可以是反离散余弦变换(DiscreteCosine Transform,DCT)或反离散正弦变换(Discrete Sine Transform,DST)。

根据变换块位置,将残差像素点分配到残差块Ro内的相应区域,并将残差块内的其余像素点设为零。例如,如果使用SVT-V,候选位置的数量是5,位置索引是4,则将重建残差像素点分配到图24(E)中的区域A,并且(w/2)×h大小的区域到区域A的左侧的残差为0。

在执行步骤1至步骤4之后,可将重建残差块与预测块组合,从而在编码单元中生成重建像素点。稍后可对重建像素点执行滤波过程,例如HEVC中的去块滤波和采样自适应偏移(sample adaptive offset,SAO)处理。

实施例2

在另一个实施例中,从残差块的变换系数中推导出变换位置信息。一个w×h大小的残差块Ro可通过以下步骤重建。

步骤1:确定残差块Ro的变换块大小。

可采用实施例1的步骤1中所述的相同过程。

步骤2:根据变换块大小解析变换块的变换系数。

可执行实施例1的步骤3中所述的相同过程。

步骤3:根据变换系数的和推导变换块位置。

在一个示例中,将Y分量的所有变换系数相加计算出变换系数的和。在另一个示例中,将Y、U和V分量的所有变换系数相加计算出变换系数的和。在另一个示例中,按系数扫描顺序(例如使用z形扫描)将Y分量的前N个变换系数相加计算出变换系数的和,其中N可设为16或32。

位置索引P(表示变换块位置,如实施例1所述)通过变换系数的和St以及与变换块相关联的候选位置的数量Nt根据以下公式推导出:

P=St%Nt,

其中%表示求模运算,求出St除以Nt的余数。

具体地,在一个示例中,参数M1和M2设为4,并且使用SVT-H或SVT-V时有3个候选位置(即,使用SVT-H或SVT-V时Nt为3)。P是St除以3的余数。在另一个示例中,参数M1和M2设为2,并且使用SVT-H或SVT-V时有2个候选位置(即,使用SVT-H或SVT-V时Nt为2)。P是St除以2的余数。

在另一个示例中,位置索引可以部分通过变换系数和来决定。参数M1和M2设为8,使用SVT-H或SVT-V时有5个候选位置。如果St%3等于0,则P为0;如果St%3等于1,则P为4;否则,P在1、2和3之间取值(尚未确定)。然后,解析具有三个可能值的语法元素,以根据语法元素的值判断P是否等于1或2或3(例如,如果语法元素值为0、1或2,则P设为1、2或3)。

可能存在一些条件检查,以判断位置索引信息是否隐藏在系数和中。例如,当变换系数的数量小于一个阈值(例如,4或6)或第一个系数和最后一个系数之间的距离小于阈值(例如,5或6)时,位置索引不依赖于系数和并显式指示,执行实施例1中的解析过程,从而确定位置索引。

步骤4:根据变换系数和变换块位置重建残差块Ro。

可以执行实施例1的步骤4中所述的相同过程。

实施例3

在另一个实施例中,根据第一组变换系数推导出SVT的类型,并从残差块的第二组变换系数中推导出位置信息。

一个w×h大小的残差块Ro可通过以下步骤重建。

步骤1:通过步骤1.1和步骤1.2确定残差块Ro的变换块大小。

步骤1.1:确定SVT的使用情况。本步骤与实施例1中的步骤1.1相同。

步骤1.2:解析第一组变换系数,并根据第一组变换系数的和确定SVT的类型。

第一组变换系数可以位于变换块左上角部分的w_t1×h_t1大小的区域内(对应于低频变换系数),如图25中的实心区域1所示。在一个示例中,w_t1和h_t1均设为4。在另一个示例中,w_t1=max(w/8,4),而h_t1=max(h/8,4)。

如果第一组系数的和为偶数,则使用SVT-V(或SVT-H);否则,使用SVT-H(或SVT-V)。

步骤2:根据变换块大小解析变换块的其余变换系数。

系数扫描顺序是根据变换块的宽度和高度推导出的。在解析所述变换系数时,跳过第一组变换系数所覆盖的位置上的系数,并将这些系数指定为第一组变换系数。

步骤3:根据第二组变换系数的和推导变换块位置。

第二组变换系数用于计算和。根据该和推导位置索引,其中可以采用实施例2所述的方法。第二组变换系数可以位于变换块左上角部分除第一组变换系数之外的w_t2×h_t2大小的区域内,如图25中的点线区域2所示。在一个示例中,w_t2=w_t且h_t2=h_t,即除第一组系数之外的所有系数属于第二组。在另一个示例中,w_t2=max(w_t/2,w_t1)且h_t2=max(h_t/2,h_t1)。

步骤4:根据变换系数和变换块位置重建残差块Ro。可采用实施例1的步骤4中的处理。

实施例4

在另一个实施例中,根据变换系数的分布推导使用SVT的残差块的候选位置的数量。

一个w×h大小的残差块Ro可通过以下步骤重建。

步骤1:确定残差块Ro的变换块大小。

可执行实施例1的步骤1中所述的相同流程。

步骤2:根据变换块大小解析变换块的变换系数。

可执行实施例1的步骤3中所述的相同过程。

步骤3:根据变换系数的分布推导变换块位置。

在一个示例中,非零变换系数的数量Nnz用于确定候选位置的数量。如果Nnz小于一个阈值(例如,4,5或8),则候选位置步长在使用SVT-V时设为w/4,在使用SVT-H时设为h/4,因此候选位置的数量为3;否则,候选位置步长在使用SVT-V时设为w/8,在使用SVT-H时设为h/8,因此候选位置的数量为5。

在另一个示例中,如果最后一个非零变换系数位于变换块的左上角4×4区域内,则候选位置步长在使用SVT-V时设为w/4,在使用SVT-H时设为h/4,因此候选位置的数量为3,否则,候选位置步长在使用SVT-V时设为w/8,在使用SVT-H时设为h/8,因此候选位置的数量为5。

根据候选位置的数量,采用截断的一元码对位置索引进行解码,其中最大的可能值是候选位置的数量减1。

步骤4:根据变换系数和变换块位置重建残差块Ro。可采用实施例1的步骤4中的处理。

本发明相对于已知方案提供了以下优势和优点。

SVT块的候选位置根据与残差块的宽度和高度相关的步长而定,并且限制不超过5个,这相比于[1]减少了变换块信息,更好地平衡了信令开销和残差编码效率。

SVT信息的编码与[1]不同,即,SVT信息包括SVT使用信息、SVT类型信息和SVT位置信息。

SVT位置信息可以根据残差块的多个变换系数的和推导出。

SVT类型信息可以根据残差块的多个变换系数的和推导出。

本领域的普通技术人员可以清楚地理解,为描述的方便和简洁,在前述装置中,前述功能模块的划分用作说明的实例。实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所公开的系统,装置和方法,可以通过其它的方式实现。例如,所描述的装置实施例仅仅是示例性的。例如,模块或单元划分仅仅是逻辑功能划分并且可以是实际实施方案中的其它划分。例如,可将多个单元或组件合并或集成到另一系统中,或可忽略或不执行部分特征。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口实现。装置或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例的方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

上述描述仅是本发明的具体实施方式但并非旨在限制本发明的保护范围。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

106页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:显著性图和变换系数块的编码

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类