showeeks / hm

Other
0 stars 0 forks source link

变换和量化 #5

Open showeeks opened 3 years ago

showeeks commented 3 years ago

本章概述了HEVC的变换和量化设计。HEVC指定了从4x4到32x32的各种大小的二维变换,它们是离散余弦变换(DCT)的有限精度近似。此外,HEVC还指定了一种基于离散正弦变换(DST)的替代4x4整数变换,用于4x4亮度帧内预测残差块。在转换设计过程中,特别注意实现友好性,包括有限的位深度、保持对称性、嵌入结构和具有几乎相等范数的基向量。HEVC量化器的设计类似于H.264/AVC,其中0–51范围内的量化参数(QP)(对于8位视频序列)被映射到量化器步长,每当QP值增加6时,该步长加倍。然而,一个关键的区别是,在简化量化器设计的HEVC中,不再需要结合到H.264/AVC的缩放矩阵中的变换基范数校正因子。为了速率控制和感知量化的目的,可以为小到8x8样本的量化组发送QP值(以δqp的形式)。用于计算QP增量的QP预测器使用左、上和前QP值的组合。HEVC还通过对所有变换块大小使用量化矩阵来支持频率相关的量化。本章还概述了HEVC的三种特殊编码模式(I_PCM模式、无损模式和变换跳过模式),它们通过跳过变换或跳过变换和量化来修改变换和量化过程。

在基于块的混合视频编码方法中,如图6.1所示,变换被应用于由图像间或图像内预测产生的残余信号。在编码器处,图像的残余信号被分成大小为NxN的正方形块,其中$N=2^M$和$M$是整数。每个残差块$(U)$然后被输入到二维NxN前向变换。通过对每行和每列分别应用N点一维变换,可以将二维变换实现为可分离变换。然后对得到的NxN变换系数(coeff)进行量化(相当于除以量化步长Qstep和随后的舍入)以获得量化的变换系数(级别)。在解码器处,量化的变换系数然后被去量化(这相当于乘以Qstep)。最后,对去量化的变换系数($\text{coeff}_Q$)应用二维NxN可分离逆变换,产生量化样本的残余块,然后将该残余块添加到帧内或帧间预测样本以获得重构块。典型地,正变换矩阵和逆变换矩阵彼此互换,并且被设计成在没有中间量化和解量化步骤的情况下级联时实现输入残差块的近似无损重构。

image

showeeks commented 3 years ago

在HEVC等视频编码标准中,规定了去量化过程和逆变换,而前向变换和量化过程由实现者选择(受比特流的限制)。

本章组织如下。第6.2节描述了HEVC使用的两种变换类型:基于离散余弦变换的核心变换和基于离散正弦变换的交替变换。还强调了用于开发转换的设计原则,以便深入了解考虑了编码效率和复杂性的转换设计过程。在门派。6.3,描述了HEVC量化过程。本节涵盖的主题包括实际量化和去量化步骤、量化矩阵和量化参数推导。第6.4节概述了HEVC的三种特殊编码模式(I_PCM模式、无损模式和变换跳过模式),它们通过跳过变换或跳过变换和量化来修改变换和量化过程。第6.5节和第6.6节分别提供了复杂性分析和编码性能结果。

showeeks commented 3 years ago

HEVC标准[16]规定了尺寸为4x4、8x8、16x16和32x32的核心变换矩阵,用于基于块的运动补偿视频压缩环境中的二维变换。多种转换大小提高了压缩性能,但也增加了实施的复杂性。因此,需要仔细设计核心转换。

HEVC指定二维核心变换是所有变换大小的逆离散余弦变换(IDCT)的有限精度近似。注意,由于近似,HEVC核变换不是IDCT变换。没有使用IDCT的事实并不一定会使HEVC核心的转变不完美。事实上,有限精度近似是可取的,如下两段所述。变换的主要目的是去相关输入残差块。最佳去相关变换是卡尔洪恩-洛夫变换(KLT) [22],不一定是离散余弦变换。对于4x4亮度帧内预测残差块的编码尤其如此,其中HEVC指定了基于离散正弦变换(DST)的替代4x4整数变换[24]。请注意,在HEVC标准中只指定了逆变换,而没有指定正变换。因此,编码器可以通过使用实际的逆变换而不是逆变换的转置来获得额外的编码效率益处。

showeeks commented 3 years ago

在H.261、MPEG-1、H.262/MPEG-2和H.263视频编码标准中,以无限精度指定了8点IDCT。为了确保互操作性,并使用有限精度将编码器和解码器实现之间的漂移降至最低,标准中包含了两个特性。首先,块级定期帧内刷新是强制性的。第二,使用伪随机测试模式对IDCT的准确性进行一致性测试。

在H.264/MPEG-4高级视频编码(AVC)标准[15]中,通过指定整数值44和88变换矩阵,解决了编码器-解码器漂移的问题。这些变换被设计成IDCT的近似值,重点是尽量减少算术运算的次数。这些变换的基向量的范数变化很大。因此,指定了非平坦默认去量化矩阵来补偿基向量的不同范数[20]。

在HEVC的发展过程中,针对核心变换研究了几种不同的IDCT近似。HEVC测试模型HM1的第一个版本对4x4和8x8区块使用H.264/AVC变换,对16x16和32x32区块使用Chen快速IDCT [7]的整数逼近。HM1逆变换具有以下特征[23,28]:

showeeks commented 3 years ago

DCT 离散余弦变换

我们先来聊聊历史,什么是离散傅立叶变换 DFT,可以看到 DCT 和 DFT 就差了一个字母。

首先我们有连续信号 $f(x)$

然后我们在 $i=0,1,...$ 采样,得到 $f_i$

DFT 指的是 $$ \hat{fk}=\sum{j=0}^{n-1}f_je^{-i2\pi jk/n} $$

$$ fk=\frac1n\sum{j=0}^{n-1}\hat{f_j}e^{i2\pi jk/n} $$

$$ \begin{pmatrix} \hat{f_0}\ \ \vdots\ \ \hat{f_n} \end{pmatrix}= \begin{pmatrix} 1 & 1 & 1&\cdots &1\ 1 & \omega_n & \omega_n^2&\cdots &\omega_n^{n-1}\ 1&\omega_n^2&\omega_n^{4}&\cdots&\omega_n^{2(n-1)}\ \vdots & \vdots&\vdots&&\vdots\ 1&\omega_n^{n-1}&\omegan^{2(n-1)}&\cdots&\omega{n}^{(n-1)^2} \end{pmatrix} \begin{pmatrix} f_0\ \ \vdots\ \ f_n \end{pmatrix} $$

其中 $\omega_n=e^{-2\pi i/n}$, 是第 n 个基础频率。

可以看到 $\hat{f_i}$ 是复数,$|\hat{fi}|$ 代表了基波的强度。 $$ X[k]=\sum{n=0}^{N-1}x[n]\left(\cos\left(\frac{2\pi kn}{N}\right)-j\sin\left(\frac{2\pi kn}{N}\right)\right) $$ 如果原时域信号是一个实偶信号时,DFT可以写作 $$ X[k]=\sum_{n=0}^{N-1}x[n]\cos \frac{2\pi kn}{N} $$ 我们将普通实信号延拓为实偶信号 image 再将原信号平移 1/2 image 鼓捣鼓捣就能得到 DCT 了。