AVS3变换:PBT、ST和SBT

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

基于位置的变换PBT

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

图1 PBT子块划分

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

表1 PBT子块变换类型

子块索引水平变换类型垂直变换类型
0DCT8DCT8
1DST7DCT8
2DCT8DST7
3DST7DST7

允许使用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的亮度残差块。

图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所示。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值