VVC中的低频不可分变换(LFNST)是怎样工作的

电子说

1.3w人已加入

描述

在VVC中,与HEVC相比,增加了一个新的变换阶段,称为低频不可分离变换(LFNST)。主要条件是LFNST仅适用于亮度/色度分量的帧内块(启用单独的色度)。

LFNST的主要目标是进一步压缩低频初级变换系数之间的冗余,低频初级变换系数是来自常规方向帧内预测的变换系数。我们还可以添加,对于细长的矩形,LFNST有助于将系数精确地集中在右上角。

那么它是怎样工作的?LFNST应用于前向初级变换和量化(在编码器端)之间以及去量化和反向初级变换之间(在解码器端)。LFNST包含2种模式:4x4LFNST(对于宽度/高度<8 的块)和8x8LFNST(对于宽度/高度>=8 的块)。

  编码器

例如,让我们考虑块 X的 4x4 LFNST:

  编码器

首先,我们需要将 X表示为一维向量:

  编码器

之后,不可分离变换可以计算为:F = T⋅ X (F和 X 是向量),其中T 是 16x16变换矩阵,F是具有变换系数的 16x1向量,可以使用以下方法将其重组为4x4 块光栅扫描顺序。

在LFNST中,使用了矩阵乘法的方法,因此为了节省存储矩阵系数的内存空间并降低计算复杂度,最好将矩阵维数最小化。这样。主要思想是将N维向量映射到R维向量,其中N>R,N/R是缩减因子。对于8x8 LFNST,缩减因子为4,因此变换矩阵为16x64。但在VVC 的后期阶段,它进一步减少到16x48。因此,由于矩阵维数减少,存储它们的内存使用量从10Kb 减少到8Kb,而性能没有太大下降。

对于解码器端的逆过程,逆LFNST 矩阵是前向变换矩阵的转置矩阵。

  编码器

LFNST 有一些限制,不能在以下情况下使用:

1、块大小大于64x64 或宽度/高度CU 大于最大transform_block_size;

2、如果应用ISP TU 宽度或高度小于4;

3、块具有INTER 模式;

4、使用变换跳过;

5、块4x4 和 8x8具有超过 8个第一有效系数;

6、第一个子块中有一些系数;

7、如果只有1 个非归零系数(仅DC);需要注意的是,LFNST和 MTS是连接的:如果启用LFNST,则只能应用DCT-II 模式(MTS索引 = 0)。

  编码器

LFNST 变换矩阵 T可以表示如下:

8 个不同的 16x16矩阵,用于 4x4LFNST(4lfnstTrSetIdx 和 2lfnst_idx 的笛卡尔积);

8 个不同的 16x48矩阵,用于 8x8LFNST;所有这些矩阵都预先计算并存储在编码器/解码器端。

选择最合适的 LFNST矩阵取决于lfnstTrSetIdx,它取决于在比特流中传输的IntraPredMode 和lfnst_idx。下面可以看到lfnstTrSetIdx对IntraPredMode的依赖表:

  编码器

在这里你可以看到 LFNST如何在解码器端工作:

  编码器

这就是今天的全部内容。在我们的下一篇文章中,我们将继续向您介绍VVC 转型创新。您也可以在这里查看我们之前关于MTS 的文章。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分