VVC变换编码(一)MTS

H.266/VVC 同时被 2 个专栏收录
119 篇文章 56 订阅
157 篇文章 8 订阅

新的一年,好好科研!!!!!!

变换编码用于预测后的残差块上,变换后得到的变换系数中低频分量集中在块的左上角高频分量在右下角。

大尺寸变换块高频系数置零

在VTM5中,变换编码的块最大尺寸可达64x64,这对于高分辨率的视频(例如1080p和4K视频)非常有用。对于尺寸(宽或高,或宽和高)达到64的变换块,将其高频系数置零只保留其低频系数。例如,对于MxN的变换块,M是块的宽N是块的高,当M=64时只保留左边32列其他置零,当N=64时只保留上边32行其他置零。当对于大尺寸块使用变换跳过模式时,则不对系数进行置零操作。

多变换模式选择Multiple Transform Selection (MTS)

在数学上共有8种类型的DCT变换,在HEVC变换编码中只使用了DCT-II变换。在VVC中提出了MTS技术,可以使用更多类型的变换。可选的变换核如下:

//EMT transform tags
enum TransType
{
  DCT2 = 0,
  DCT8 = 1,
  DST7 = 2,
  NUM_TRANS_TYPE = 3,
  DCT2_EMT = 4
};

为了保证变换矩阵的正交性,VVC中变换矩阵比HEVC中变换矩阵量化的更精确。为了使变换系数的中间值保持在16bit范围内,经过水平和垂直变换后,所有系数都为10bit。

为了控制MTS模式,SPS中为帧内和帧间预测分别设立了标志位。当SPS中MTS标志为真时,CU中需要设置一个标志位表示是否使用MTS。MTS仅作用于亮度分量。只有当CU满足下面条件时CU才需要传输MTS标志位:

  • CU的宽和高都小于等于32;

  • CBF标志位设为1。

如果CU的MTS标志位为0,则在水平和垂直方向上都应用DCT2变换。如果CU的MTS标志位为1,则需要再设置两个标志位表示水平和垂直变换类型。具体类型如下:

enum MTSIdx
{
  MTS_DCT2_DCT2 = 0,
  MTS_SKIP = 1,
  MTS_DST7_DST7 = 2,
  MTS_DCT8_DST7 = 3,
  MTS_DST7_DCT8 = 4,
  MTS_DCT8_DCT8 = 5
};

如果当前块使用ISP模式或当前块是帧内预测块且帧内和帧间MTS标志位都打开,那么水平和垂直方向变换核都使用DST7。

关于变换矩阵精度,初始变换核都使用8bit。因此HEVC中的变换核都保持不变,包括4-point DCT-2 和 DST-7, 8-point, 16-point 和 32-point DCT-2。其他变换64-point DCT-2, 4-point DCT-8, 8-point, 16-point, 32-point DST-7 and DCT-8也使用8bit变换核。

为了减小大尺寸块DST-7和DCT-8计算的复杂度,对于使用DST-7和DCT-8的变换块尺寸宽或高,或宽和高)达到32时进行高频系数置零操作。只保留左上角16x16的低频系数。

和HEVC一样,残差块也可以使用变换跳过模式。为了避免语法冗余,当CU的MTS_CU_flag不等于0时不需要传输变换跳过标志位。只有当CU的宽和高都小于等于32时才允许使用变换跳过模式。

感兴趣的请关注微信公众号Video Coding

 

  • 2
    点赞
  • 3
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值