H.266变换编码:模式依赖的不可分二次变换MDNSST

MDNSST代码学习:http://blog.****.net/lin453701006/article/details/79148082

在JEM中,变化编码的改进可以分为两个阶段,如下图。
H.266变换编码:模式依赖的不可分二次变换MDNSST

第一阶段是使用自适应多核变换AMT(http://blog.****.net/lin453701006/article/details/79026631)或信号决定变换SDT(http://blog.****.net/lin453701006/article/details/79035202)的主变换,两者通过率失真优化进行选择。第二阶段是使用模式依赖的不可分二次变换MDNSST的二次变换。这里介绍第二阶段:模式依赖的不可分二次变换MDNSST。

众所周知,DCT变换是次优变换,对于具有强对角分量的残差信号,存在无法对能量进行有效压缩的问题。如果直接使用KLT替代DCT,算法复杂度太高,因此考虑用作二次变换来对信号能量进一步压缩。

不可分二次变换NSST

H.266变换编码:模式依赖的不可分二次变换MDNSST
经过主变换处理后,得到系数矩阵Y,使用NSST对Y进一步处理。
1.将Y拉伸为矢量。
2.对矢量Y进行变换得到矢量F。
3.将矢量F按扫描顺序重新排列为矩阵。

模式依赖的不可分二次变换MDNSST

对于将帧内预测模式分成35类,每类对应3种NSST候选,一共有35x3种DSST,帧内预测模式与DSST变换集索引的对应关系如下所示:
H.266变换编码:模式依赖的不可分二次变换MDNSST

每个帧内编码CU完成系数变换之后,会传输一个索引,使用截断二进制编码。截断值2表示Planar或DC模式,3表示帧间角度预测模式。MDNSST索引只有在CU有超过1个非零系数的情况下才被传输,其不被传输时,默认值为0。MDNSST索引为0表示当前CU不启用二次变换,索引为1-3表示启用对应集的二次变换。

在JEM中,当块使用transform skip模式时,MDNSST不可用。当MDNSST索引被传输且不等于0时,MDNSST不用于CU中使用transform skip模式的分量。如果一个CU的所有分量都使用transform skip模式或非跳过模式下非零变换系数小于2时,CU不传输MDNSST索引。

在JEM中,MDNSST也会对帧内预测中的模式依赖的参考采样帧内平滑(MDIS)产生影响。对于除Planar模式外的使用PDPC处理的帧内预测模式,当块的MDNSST索引为0时,MDIS不可用,此时不进行参考采样平滑处理;当MDNSST索引不为0时,将使用HEVC风格的MDIS。在JEM中,不会对32x32尺寸的帧内块进行强帧内平滑。

在JEM中,为了降低复杂度,MDNSST采取了如下操作(亮度色度处理规则相同):
1.对于宽和高均大于等于8的变换系数块,只对其低频系数使用MDNSST,然后对左上8x8区域的变换系数块使用8x8的不可分二次变换NSST。
2.对于宽或高一个等于4的变换系数块,对左上min(8,W)×min(8,H)区域使用4x4不可分变换。

在编码器端,使用CU级别的RD检测对CU的NSST索引进行选择。对于帧内编码CU,CU级的RD检测以NSST索引值为循环索引循环4次。为了加快速度,使用了以下快速算法:
· 使用了循环提前停止。如果当前CU的NSST索引较小时没有非零变换系数,则对较大NSST索引的RD检测会被跳过。
· 对于每个NSST索引的帧内模式判决包括两个阶段:模式粗判决和RDO。模式粗判决阶段,会基于SATD代价从67种帧内预测模式中选出3种,这个处理将进行两次(一次用于NSST索引为0,一次用于NSST索引不为0)。对于所有非零NSST索引,帧内预测模式的不同NSST索引下的SATD代价应该是相同的,因此只需要进行一次模式粗判决(只对NSST索引为1时进行)。

基于HyGT的不可分变换

为了降低计算复杂度,不可分变换中使用了蝶形HyGT。这个正交变换的基本元素是Givens旋转,其正交矩阵G(m,n,θ)定义如下:
H.266变换编码:模式依赖的不可分二次变换MDNSST

Givens旋转如下图:
H.266变换编码:模式依赖的不可分二次变换MDNSST

HyGT在超立方体中对Givens旋转进行了组合安排,下图是有16个元素(对应4x4不可分变换)的蝶形HyGT流程图。
H.266变换编码:模式依赖的不可分二次变换MDNSST

为了获得高压缩性能,完整的不可分变换包含R轮HyGT,还可以包含一个可选的交换支路,用于根据变换系数的变化量对其进行排毒。在JEM中,4x4二次变换使用2轮HyGT,8x8的二次变换使用4轮HyGT。
H.266变换编码:模式依赖的不可分二次变换MDNSST

总结

JEM中,在原有的主变换的基础上,增加了模式依赖的不可分二次变换MDNSST,针对帧内预测模式特性,对主变换的系数在进行一次KL变换,使能量更加集中。

扩展:Rotational transform (ROT)旋转变换

最初,二次变换还有一个方案Rotational transform (ROT)旋转变换,在H.265之前就已经被提出,由于复杂度问题没有被采纳。

众所周知,DCT变换是次优变换,对于具有强对角分量的残差信号,存在无法对能量进行有效压缩的问题。在空间域直接进行旋转难以保证块原始的方形形状,且需要大量的浮点数运算,因此考虑通过角度变换方案来解决这个问题。然而对于角度变换,需要针对不同尺寸的块设计许多变换核,这也是一个难题。最终考虑还是考虑设计ROT变换。

ROT变换的主要思路是通过改变变换基函数的坐标系来对输入信号进行旋转,这样避免了对原始信号进行操作。设计了两种旋转矩阵:
H.266变换编码:模式依赖的不可分二次变换MDNSST
其中RverticalRhorizontal表示角度为(a1,a2,a3)的水平旋转矩阵和(a4,a5,a6)的垂直旋转矩阵。