Primary Transform in VVC

VVC中的变换设计主要包括三个方面:primary transform, secondary transform and transform partitioning.。 N点变换是指可以应用于N点输入向量的一维变换,这是使用大小为N×N的变换矩阵来完成的。

VVC 继承了 HEVC 变换编码的几个设计方面(参考HEVC Core Transform Design),包括:1) 使用定点运算,中间数据表示和算术保持为 16 位; 2) 变换过程可以使用直接矩阵乘法或 一种快速方法,例如部分蝶形; 3)通过将变换基缩放为 64√N 并通过较小调整舍入到最接近的整数来设计变换内核,其中变换基的范数为 1,N 是变换大小; 4)较小的DCT-2是较大的DCT-2的一部分,因此所有DCT-2内核都嵌入在64×64 DCT-2变换内核中。

尽管在 VVC 中可以应用高达 128 × 128 的编码块大小,但变换编码被设计为与虚拟管道数据单元 (VPDU) 实现兼容。 在硬件解码过程中,VPDU是不重叠的64×64块,连续的VPDU由多个管道并行处理。

A. Transform Kernels

在VVC中,除了传统的DCT-2之外,还采用了替代变换类型,包括DST-7和DCT-8。 DST-7和DCT-8的基本函数分别用下面的等式(1)和(2)表示:

其中 N 是变换大小,i = 0, 1,…, N−1 指输出向量的元素索引,j = 0, 1,…, N − 1 指输入向量的元素索引。 对于残差的不均匀分布,DST-7 和 DCT-8 通常比 DCT-2 更有效,因为它们的基函数更符合此类统计数据。 DCT-2的大小范围从4点到64点,DST-7/DCT-8的范围从4点到32点。 值得注意的是,DST-7 和 DCT-8 的变换基是彼此翻转的版本,具有交替的符号变化。

VVC中定义的变换内核由8位有符号整数组成,HEVC中的所有主要变换内核(包括4点DST-7和从4点到32点的DCT-2)保持不变。 VVC 中定义的附加整数变换内核是通过将浮点变换内核缩放 64√N 得出的,其中 N 是变换大小,并在舍入后进一步调整 ±1。 64点DCT-2的调整是以包含HEVC中定义的所有DCT-2内核、支持部分蝶形并且针对更好的正交性优化内核元素的方式执行的。

对DST-7/DCT-8核进行调整是为了确保与DST-7/DCT-8相关的三个显著特征,如图1所示,包括特征 1)某些基中的重复段{b,f,i,l,o};2)一个基中的唯一系数值,3)某些基具有固定模式的元组中系数之间的数学关系,保持在具有优化正交性的整数核中。特别地,对于特征3),支持以下公式:

为了将每个系数的 worst-case 乘法与HEVC对齐,对于64点DCT-2和32点DST-7/DCT-8,分别只保留前32个和16个低频系数,并将高频系数归零,这也在最后一个系数位置编码和系数组扫描中考虑。此外,基于DST-7/DCT-8内核的三个特征,VVC中包含了一种支持双重实现的快速变换方案。通过这种方式,快速算法和直接矩阵乘法产生相同的结果。同时,对于16点DST-7/DCT-8,快速方法实现了约50%的乘法运算减少。

在VVC中,primary transform 被指定为可分离变换。 支持五种不同的变换类型组合,包括传统的(DCT-2、DCT-2)和四种新的 MTS 模式组合,即(DST-7、DST-7)、(DST-7、DCT-8)、 (DCT-8、DST-7)和(DCT-8、DCT-8)。 由于有限的编码增益以及引入额外编码器搜索和额外变换组合的复杂性增加,不支持具有额外信令开销的DCT-2和DST-7(或DCT-8)之间的显式组合。 在VVC中,DST-7和DCT-8可以应用于多种编码工具中的亮度块,包括多重变换选择(MTS)、帧内子分区(ISP)[34]和子块变换(SBT) ,这将在下面与变换类型选择相关的小节中详细介绍。 对于色度编码,在 VVC 的开发过程中也研究了 DST-7/DCT-8 的潜在优势。 然而,由于色度分量通常呈现平滑的纹理,而 DCT-2 就足够了,因此编码增益与复杂性的权衡不太有利。

B. Multiple Transform Selection:

在 VVC 中,MTS有两种变体,称为显式 MTS 和隐式 MTS。 显式MTS可以应用于帧内编码块和帧间编码块,而隐式MTS只能用于帧内编码块。 在显式MTS中,DST-7/DCT-8的选择由变换类型的显式信令指示。 在隐式MTS中,基于编码器和解码器都已知的编码信息来选择变换类型,并且不需要变换类型信令。 在序列参数集(SPS)中,有三个控制 MTS 操作的标志。 第一个用于启用 MTS 本身。 第二个用于在显式或隐式内部 MTS 之间进行选择,最后一个用于启用显式间 MTS。 因此,对于后两个标志,如果启用了 MTS,则需要选择四种 MTS 模式组合。 在显式MTS中,索引mts_idx在编码单元(CU)级语法的末尾处用信号通知以指示水平变换(trTypeHor)和垂直变换(trTypeVer)的变换类型。 mts_idx的取值范围是0到4,变换类型的映射如表1所示:

MTS索引,表示为mts_idx,仅当亮度块的非零系数存在于DC系数之外并且在左上角的16×16系数区域之外未识别出非零系数时才发出信号,因为DST-7/DCT-8仅对最低的16×16频率系数有影响。换句话说,识别超过最低16×16系数的非零系数意味着不应用DST-7/DCT-8。此外,当启用多个工具时,包括ISP、SBT和低频不可分离变换(LFNST),mts_idx不会发出信号,变换类型推断为DCT-2或预定义的变换类型。在表II中,总结了不同工具的组合,包括MTS、LFNST、MIP、ISP和SBT,其中“Y/N”表示行和列中的相关编码工具可以/不能组合,“N/A”表示相关组合不适用。

隐式 MTS 变换类型是根据编码块的形状导出的。 如果块宽度(高度)小于32,则应用DST-7作为水平(垂直)变换。否则,使用DCT-2。 同样的规则也用于导出 ISP 编码块的变换。 图 2 显示了不同块大小的隐式 MTS 推导示例。 VVC 中的隐式 MTS 设计可以被视为帧内预测残差的 HEVC 变换推导的扩展,通过将 DST-7 的适用块大小从 4 × 4 扩展到 16 × 16(含)以及其间的其他矩形块大小 。 除了基于块大小的限制之外,仅当 LFNST 和基于矩阵的帧内预测(MIP)索引设置为零时才能应用隐式变换。

隐式 MTS 的优点总结如下: (1) 尽管与显式 MTS 相比,隐式 MTS 提供的编码增益较少,但它在无需任何编码器搜索的情况下提供了比 DCT-2 显着的编码增益。 此功能对于无法适应复杂率失真搜索的简单编码器设计很有吸引力。 (2)隐式MTS为ISP编码和非ISP帧内编码块提供统一的变换推导规则。 (3) 由于隐式 MTS 中不允许 DST-7 的维数超过 16,因此避免了对高频系数的内置归零操作(仅适用于 32 点 DST-7)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注