HEVC 变换编码

一、 变换编码是什么?是为了解决什么问题的?

      图像变换编码是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示。绝大多数图像都含有较多平坦区域和内容变化缓慢的区域,适当的变换可使图像能量在空间域的分散分布转为在变换域的相对集中分布,以达到去除空间冗余的目的,获得对图像信息的有效压缩。

      变换总的操作可以用Y = AX 来表示,其中X表示经过预测后得到的残差、预测模式,mv等数据。 A 是变换矩阵。通过和X进行矩阵的乘法,得到一个Y 系数矩阵。系数矩阵是往下级模块进行处理的数据。

     从上面的变换过程存在几个疑问

  •    变换为什么可以实现数据的压缩

  •    A变换矩阵怎么得到,hevc用了哪些矩阵?

  •    X 矩阵的大小应该是多大的?

二、变换是如何达到去除空间冗余的?

        首先离数傅里叶变换变换的公式如下:

HEVC 变换编码_第1张图片

其中

直流分量:当k=0时,不论n取何值,式中所有余弦项都为cos0,即为1,因此X(0)正比于信号x(n)的平均值,称之为信号的“直流”(Direct Current,DC)分量。

交流分量:当k>0时,X(k)反映了信号x(n)在不同频率上的变化情况,称之为信号的“交流”(Alternate Current, AC)分量。

例子:

对如下的序列利用上面的式子进行离数傅里叶变换。

x(n) : 49, 53, 50, 48, 51, 52, 47, 50。

得到的结果是

X(k): 141,1,0,1,-1,-5, 1,-1。

    从上面可以看出 序列x(n)各元素幅值差异极小,相邻元素间相关性较强,其DCT结果大部分能量集中于DC系数上,AC系数幅值非常小。而序列x2(n)与图像、视频信源特征较为相似,因此采用DCT可以使信号能量集中于少数几个系数中,便于进行信源压缩,如量化、熵编码等。

三、 A变换矩阵怎么得到,hevc用了哪些矩阵。

    A矩阵是根据傅里叶变换推导得到,由于涉及太多的公式,仅给出hevc中用到的变换矩阵。hevc中根据前级预测模块给的数据不同, 可以分为两种形式的矩阵。

3.1 整数离散正弦变换矩阵(DST)

    这种情况的矩阵 在帧内除4x4亮度分量外的其他模式、帧间所有模式,以及所有色差分量的残差编码中使用。考虑到硬件的实现,避免浮点以及乘除法运算。hevc 中最后用到DST 的公式如下:

其中Y为变换后的系数,X为上一级预测模块生成的数据。变换大小是4x4块的情况下

HEVC 变换编码_第2张图片

3.2  整数离散余弦变换矩阵

    H.265/HEVC标准规定,在帧内4x4模式亮度分量残差编码中使用4x4整数DST。这主要是由于帧内预测利用周围已重构块边缘像素预测当前块的方法使得帧内预测残差具有如下特征:距离预测像素越远,预测残差幅度越大。而DST的基函数能够很好地适应这特征。实验结果表明,使用4x4整数DST能使帧内编码性能提高0.8%左右,而编码复杂度基本保持不变。hevc 中最后用到DST 的公式如下:

其中Y为变换后的系数,X为上一级预测模块生成的数据。变换大小是4x4块的情况下

HEVC 变换编码_第3张图片

四、X 矩阵的大小应该是多大的?

     x矩阵的大小也就是怎么对预测后的数据进行分块,分好后的每一个块就是一个基本的变换单元。变换单元(Transform Unit,TU)是H.265/HEVC中变换、量化与熵编码的基本单位。

    H.265/HEVC可支持4x4、8x8、 16x16 和32x32四种大小的TU。此外,H.265/HEVC还定义了编码单元CU和预测单元PU,并规定CU可以以四叉树(Quad-Tree)的形式划分TU,可划分的层级由当前CU的大小与头信息中规定的最大和最小TU尺寸决定,并且在同一个CU中允许选择不同的组合。

     编码器可根据视频内容自适应地选择划分方式,例如,在平坦区域和内容缓慢变化的区域可以使用较大的TU,在纹理细节区域可选择较小的TU,具体来说,最优划分方式可用率失真优化(RDO)准则确定。

你可能感兴趣的:(编解码)