AVS3变换:PBT、ST和SBT

前面的文章介绍了AVS3中的变换工具IST和ISTS,本文将介绍AVS3中剩余的几种变换工具:基于位置的变换(PBT,Position Based Transform)、二次变换(ST, Secondary Transform)和子块变换(SBT, Sub-Block Transform)。

基于位置的变换PBT

PBT是基于位置的变换,被应用于帧间预测残差块的亮度分量中,它可以更好地拟合帧间残差特性。

AVS3变换:PBT、ST和SBT_第1张图片

图1 PBT子块划分

PBT会将编码单元划分为4个子块,如图1中红色虚线,每个子块对应一个编号,自左向右自上向下编号分别为0,1,2,3。每个子块使用不同的变换类型,下表是每个子块对应的水平和垂直变换,

表1 PBT子块变换类型

子块索引 水平变换类型 垂直变换类型
0 DCT8 DCT8
1 DST7 DCT8
2 DCT8 DST7
3 DST7 DST7

允许使用PBT的编码单元尺寸最大为32x32,最小为8x8,且编码单元长宽比不大于2。

二次变换ST

二次变换只对帧内预测的块进行,并且只对一次变换后的变换系数的左上角4x4块进行二次变换。目前ST没有CU级控制位,它只能在序列级开关,如果序列开启了ST功能则每个intra块都需要进行二次变换。

子块变换SBT

子块变换是将inter残差划分为2个子块,其中一个子块的残差默认为0,另一个子块的残差默认不为0。AVS3中的SBT和VVC子块变换类似。AVS3中非0残差子块的大小和位置有8种选择(在码流中传输这些信息),非0残差子块的变换按照子块的位置自适应选择DCT8/DST7变换作为水平变换和垂直变换。SBT使用于宽和高均小于等于64的inter模式CU的亮度残差块。

AVS3变换:PBT、ST和SBT_第2张图片

图2 SBT子块位置

非0残差子块的大小/方向有四种:

1) SBT-V-1型:子块的宽为残差块的宽的1/2,高为残差块的高

2) SBT-V-2型:子块的宽为残差块的宽的1/4,高为残差块的高

3) SBT-H-1型:子块的高为残差块的高的1/2,宽为残差块的宽

4) SBT-H-2型:子块的高为残差块的高的1/4,宽为残差块的宽

非0残差子块的位置有两种:

1) 残差块的左侧(对SBT-V而言)/ 上侧(对SBT-H而言)

2) 残差块的右侧(对SBT-V而言)/ 下侧(对SBT-H而言)

所以总共有8种大小/方向和位置的组合,其中大小/方向的组合通过码流中传输2个标志位来描述,非0残差子块的位置则通过非0系数个数的奇偶性来导出。

当非0残差子块的宽或高为64时,该非0残差子块的水平和竖直变换均为DCT-2;其它情况下,水平和竖直变换的选择如图2所示。

你可能感兴趣的:(AVS3,视频编码,AVS3,子块变换,PBT,SBT,ST)