采用混合编码方式的HEVC编码技术,先对视频数据进行空间预测或时间预测,随后对预测残差进行整数变换,再对变换后的系数进行量化,将量化后的系数通过特定的扫描方式形成一维数据,从中提取出重要信息后送去进行熵编码
HEVC的变换和量化大体上和H.264/AVC相似,但增加了多处改进,提高了本部分的编码效率。
主要有三个方面的改动
1.变换块(TB)的尺寸可变范围扩大
2.整数DCT的精度提高
3.引进了4x4的离散正弦变换
1.变换
离散变换(DCT)的基本思想是将一个实函数对称延拓成一个实偶函数,对实偶函数进行离散傅里叶变换(DFT),其结果也是一实偶函数,各取偶函数的一侧定义为离散余弦变换对。可见DCT的本质就是DFT,它的物理意义和傅里叶变换一样,但由于没有DFT的复数运算,计算方便。而且,无论是一维还是二维DCT,其正反变换的变换核都相同,再加上二维DCT核是可分离函数,可采用一维DCT方法来实现信号的二维DCT,无论是软件还是硬件实现起来都比较方便。
1.1 4x4整数DCT变换
DCT变换存在两个问题:
1.浮点数的操作会造成运算的复杂性
2.由于变换核是无理数,就会产生舍入误差
为了解决上面的问题,H.264/AVC采用了一种用整数进行近似DCT变换的方法——整数变换。以二维4x4的变换为例,采用基于4x4块的整数操作而不是实数运算,使得变换操作仅用16位整数加减和移位操作就可以完成,这样即降低了计算的复杂度,又避免了正反边哈俺的不匹配,能够使得与4x4DCT变换类似的变换效果,而由此带来的变换性能减少的微乎其微
2.量化
常见量化的方法有两种:
1.标量量化(Scalable quantization SQ)
标量量化是将图像中样点的取值范围划分成若干区间,每个区间仅用一个数值(标量)『代表』其中所有可能的取值。每个样点的量化取值是一个标量,并且独立于其他杨点的取值。
2.矢量量化 (Vector Quantization,VQ)
矢量量化是将图形的每n个像素看成一个n维矢量,将每个n维取值空间划分为若干个子空间,每个子空间用一个n维『代表』矢量来表示该子空间所有的矢量取值。由于矢量量化利用了多个像素之间的关联,一般来说,其压缩率要高于标量量化,代价是计算复杂度要高于标量量化。
目前广泛使用的视频编码标准中,量化环节都是采用标量量化。
2.1量化步长和量化参数
量化步长Qstep 共有52个值,编码传送时,不用传送实际的量化步长的值,只要传它们对应的编号——量化参数QP就可以了。QP的值从0到51,和Qstep一一对应
当QP取最小值0时代表最精细的量化,当QP取最大值51时代表最粗糙的量化。QP每增加6,Qstep增加一倍。
16x16亮度块的直流系数量化
对于16x16预测的亮度快,需要将其中16个4x4整数变换后系数矩阵中的直流分量抽出按该4x4块在对应宏块中的排序,组成新的直流系数4x4矩阵,对该系数矩阵进行Hadamard变换,再对变换结果进行量化。
亮度变换系数16x16的宏块位置对应的色度宏块尺寸为8x8,它包含色度系数Cr及Cb的4个4x4块。和亮度信号的直流矩阵类似,色度Cr或Cb块的直流分量为2x2矩阵,对它进行Hadamard 变换后再进行量化。
2.2HEVC残差的整数变换
和以往的固定尺寸的变换不同,再HEVC中,CB到变换块TB是基于四叉树的结构划分,CB是“树根”,TB是“树叶”,最大的TB就是CB。HEVC 支持近似离散余弦变换(DCT)的整数变换,尺寸范围是从4x4到32x32.对于4x4亮度镇内预测残差的变换,还可使用另一种近似离散正弦变换(DST)的 整数变换。
从CB到TB四叉树划分主要是服务于残差的变换运算,所以又称为残差四叉树(ResidualQuad Tree,RQT)。较大的变换块尺寸,适用较大的图像内容较为平坦的区域,可提供较好的频率分辨率,而较小的变换尺寸,适用图像内容较为复杂的区域,提供比较好的空间分辨率。
网友评论