本周读书总结
1.编码框架
HEVC仍然沿用了基于块的视频混合编码框架,但是区别在于HEVC采用灵活的四叉树型划分结构,支持多种不同尺寸的编码块、预测块和变换块。编码框架如下图所示。
2.块的划分结构
(1)编码树单元(coding tree units,CTU)与编码树块(coding tree blocks,CTB)
CTU是HEVC编码器所支持的最大的编码处理单元,其大小可以通过编码器的通用配置文件进行定义。HEVC标准规定,每个CTU包含一个亮度CTB,两个色度CTB及其相应的句法元素。
(2)编码单元(coding units,CU)与编码块(coding blocks,CB)
编码单元CU是编码树单元CTU按照四叉树结构划分后形成的HEVC最基本单元。一个CTB钟可能包含一个CU或划分为若干尺寸更小的CU,在HEVC进行编码时,每个CU将按照事先定义的句法结构划分为预测单元PU和变换单元TU,参与到编码工作中。
(3)预测单元(prediction units,PU)与预测块(prediction blocks,PB)
在HEVC进行帧内/帧间预测时使用的基本单元是PU,它主要有亮度和色度PU以及相关句法元素构成。
(4)变换单元(transform units,TU)与变换块(transform blocks,TB)
帧内或帧间的预测残差采用变换单元TU进行编码,它是HEVC变换和量化过程中的基本单元。
3.帧内预测
帧内预测是利用视频图像空间域的相关性,使用当前图像已编码像素点来对当前编码像素进行预测,去除视频空域冗余的过程。就帧内预测而言,HEVC与H.264类似,可分为三类:Planar预测模式、DC预测模式及角度预测模式,其中角度预测模式有33种。
4.帧间预测
利用视频在时域上的相关性可以进行帧间预测,可以使用相邻帧中已编码的图像块来预测当前被编码的图像块。HEVC帧间预测过程包含两个环节,分别为运动估计与运动补偿。由于视频中的相邻帧之间存在极强的时间相关性,编码器可以利用这一特点对其进行压缩处理,消除序列中的时间冗余。帧间预测中的运动矢量由运动估计得到,表示当前PU相对于参考图像中对应块区域的偏移。
5.变换和量化
在信号与系统理论中,离散余弦变换是指将离散信号分解为不同振幅和频率的离散余弦波信号的组合。在上一代标准 H.264/AVC 中,由于参与变换编码的块尺寸相对较小,因此采用整数变换(DCT)。HEVC 编码器在此基础上引入离散正弦变换(DST),提高了压缩效率。
量化的主要目的是在不降低重建后的视频质量前提下尽可能减少编码长度,同时需要在量化的过程中丢弃一些不影响重建质量的非必要的数据。
6.环路滤波
环路滤波器应该处于编码环路中,即滤波后的帧应该被后续的帧作为编码参考。包括去块滤波器(deblocking filter,DBF)和样本自适应偏移(sample adaptive offset,SAO)。先进行DBF再进行SAO。由于HEVC编码器端使用像素块为单元进行压缩,解码器端会因此在重建块的边界处产生方块效应,导致图像失真。产生这一现象的原因有两个:第一,使用不连续的块对连续块进行运动补偿会造成还原图像的失真;第二,对残差块进行量化编码时会产生量化失真。以上两点因素导致块效应的产生。因此,HEVC的帧间预测循环中需要加入去块效应的滤波器来抑制失真。
为了提高编码质量,HEVC加入采样自适应偏移模块来降低重构图像的失真。该模块通过分析编码器端的直方图,生成一些额外的参数来更好地重建原始信号,有效的减少失真。SAO滤波器主要采用两种工作模式:编码偏移模式和带状偏移模式。
7.熵编码
编码器将短的码字赋给出现概率大的符号,将长的码字赋给小概率出现的符号,其作用是对量化后的数据进一步提高压缩比。技术上来讲,熵编码属于无损压缩,因此在解码器端可以对熵编码后的信息进行无失真还原。