基于子块的变换编码SubBlock Transform(SBT)
变换时,只有残差块的部分进行编码。早期版本中,帧间指明MTS信息确定变换类型,目前的版本中(VTM-7.0)变换的部分残差块的部分可以根据位置自适应推导得出,其他残差为0.
1. 执行条件
- 帧间模式(帧内、IBC、PLT、triangle不行)
- cu_cbf == 1 && cu_sbt_flag == 1
- CIIP模式和TPM模式禁止SBT
2. 模式类型
- SBT type:SBT-H和SBT-V
- SBT position: position 0和position 1
对于SBT_V,TU的宽度可以是1/2或者1/4的CU宽度,如图中上两个情况,2:2划分或者1:3/3:1划分。可以看出,2:2划分类似于二叉树BT划分,1:3/3:1类似于非对称的二叉树划分ABT。ABT中,面积较小的那部分残差不为0。此外,当CU的宽或者高==8时,ABT划分将被禁止。综上,一个CU至少有8中SBT模式。
SBT-V和SBT-H中,亮度分量的变换块会根据位置西适应选择变换核(色度分量变换核默认为DCT-II)。SBT模式中BT和ABT两种模式中都存在两种位置,每个SBT位置上的水平和垂直方向的变换如上图所示。例如,SBT-V中位置0处的水平和垂直方向上的变换核分别为DCT-8和DST-7。需要注意,当TU的一个边大于32时,两个维度的变换核都是DCT-2。
SBT中保存着一个残差块的TU划分方式,CBF以及水平和垂直方向的变换核。
3. 语法要素
- SPS:maxSbtSize,可进行SBT模式的最大CU尺寸。VTM中,4K和HD序列,设置为64;其他低分辨率序列设置为32。