前面的文章介绍了AVS3中的变换工具IST和ISTS,本文将介绍AVS3中剩余的几种变换工具:基于位置的变换(PBT,Position Based Transform)、二次变换(ST, Secondary Transform)和子块变换(SBT, Sub-Block Transform)。
基于位置的变换PBT
PBT是基于位置的变换,被应用于帧间预测残差块的亮度分量中,它可以更好地拟合帧间残差特性。
PBT会将编码单元划分为4个子块,如图1中红色虚线,每个子块对应一个编号,自左向右自上向下编号分别为0,1,2,3。每个子块使用不同的变换类型,下表是每个子块对应的水平和垂直变换,
表1 PBT子块变换类型
子块索引 | 水平变换类型 | 垂直变换类型 |
---|---|---|
0 | DCT8 | DCT8 |
1 | DST7 | DCT8 |
2 | DCT8 | DST7 |
3 | DST7 | DST7 |
允许使用PBT的编码单元尺寸最大为32×32,最小为8×8,且编码单元长宽比不大于2。
二次变换ST
二次变换只对帧内预测的块进行,并且只对一次变换后的变换系数的左上角4×4块进行二次变换。目前ST没有CU级控制位,它只能在序列级开关,如果序列开启了ST功能则每个intra块都需要进行二次变换。
子块变换SBT
子块变换是将inter残差划分为2个子块,其中一个子块的残差默认为0,另一个子块的残差默认不为0。AVS3中的SBT和VVC子块变换类似。AVS3中非0残差子块的大小和位置有8种选择(在码流中传输这些信息),非0残差子块的变换按照子块的位置自适应选择DCT8/DST7变换作为水平变换和垂直变换。SBT使用于宽和高均小于等于64的inter模式CU的亮度残差块。
非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所示。
感兴趣的请关注微信公众号Video Coding。
作者:寒衣
来源:Video Coding
原文:https://mp.weixin.qq.com/s/yisHz7KpFKM8e20umqXiSQ
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。