MDNSST代码学习:http://blog.csdn.net/lin453701006/article/details/79148082
在JEM中,变化编码的改进可以分为两个阶段,如下图。
第一阶段是使用自适应多核变换AMT(http://blog.csdn.net/lin453701006/article/details/79026631)或信号决定变换SDT(http://blog.csdn.net/lin453701006/article/details/79035202)的主变换,两者通过率失真优化进行选择。第二阶段是使用模式依赖的不可分二次变换MDNSST的二次变换。这里介绍第二阶段:模式依赖的不可分二次变换MDNSST。
众所周知,DCT变换是次优变换,对于具有强对角分量的残差信号,存在无法对能量进行有效压缩的问题。如果直接使用KLT替代DCT,算法复杂度太高,因此考虑用作二次变换来对信号能量进一步压缩。
不可分二次变换NSST
经过主变换处理后,得到系数矩阵Y,使用NSST对Y进一步处理。
1.将Y拉伸为矢量。
2.对矢量Y进行变换得到矢量F。
3.将矢量F按扫描顺序重新排列为矩阵。
模式依赖的不可分二次变换MDNSST
对于将帧内预测模式分成35类,每类对应3种NSST候选,一共有35x3种DSST,帧内预测模式与DSST变换集索引的对应关系如下所示:
每个帧内编码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不可分变换。
在编码器端&#