读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

1.视频编码标准

视频编码标准只是规定了编码码流的语法语义和解码器,只要求视频编码后的码流符合标准的语法结构,解码器就可以根据码流的语法语义进行正常解码。因此,符合某个视频编码标准的编码器是有很大自由度的,只要编码后的码流符合标准的规定即可。
码流中的数据的基本单元是语法元素,每个语法元素由若干比特组成,它表征了某个特定的物理意义(如预测类型、qp等)。视频编码标准的语法规定了各个语法元素的组织结构,语义阐述了语法元素的具体含义。视频编码标准规定了编码后码流的语法语义,也就阐述了从码流中提取语法元素并进行解释的方法,也就是解码的过程
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

2.HEVC简介

HEVC视频编码标准的编码框架仍采用传统的混合编码框架,包括预测、变换、量化、熵编码、环路滤波。但HEVC几乎在每个模块都引入了新的编码技术。增加了基于四叉树的块划分、35中帧内预测、帧间merge、AMVP技术、可变尺寸DCT变换、cabac、环路滤波增加了SAO等。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
帧内预测:去除空间相关性。利用同一帧中的重构块预测当前块。具有35中预测模式。
帧间预测:去除时间相关性。利用已编码的帧作为当前帧的参考图像,来获得当前帧各个块的运动信息。包括了分层B帧预测结构,单向、双向预测。
变换量化:通过对残差数据进行变换量化以去除频域相关性,有损压缩。变换使图像从时域变换到频域,将能量集中到低频区域。量化减小图像编码的动态范围。变换和量化原理上属于两个独立的过程,但HEVC中,这两个过程相互结合,减少了计算复杂度。
去方块滤波:基于块的编码中,重构图像会出现块效应,去方块滤波可以消弱块效应,提高图像主观质量和压缩效率。
样点自适应补偿:SAO滤波处于方块滤波之后,通过解析去方块滤波后的像素的统计特性,为像素添加相应的偏移值,可以在一定程度上消弱振铃效应,提高图像主观质量和压缩效率。
熵编码:将编码控制数据、量化变换系数、帧内预测数据、运动数据等编码为二进制码流进行存储或传输。HEVC采用CABAC进行熵编码,引入并行处理框架,在速度、压缩和内存占用等方面有了大幅改善。

3.树形编码块

HEVC引入树形编码单元CTU,其尺寸由编码器指定(一般为64*64)。1个CTU=1个亮度CTB+2个色度CTB+相关语法元素。HEVC引入全新语法单元:CU、PU、TU。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
PU定义了所有与预测相关的信息。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
在一个CU内,TU可跨越多个PU。CU支持大小为4*4~32*32,以四叉树形势递归划分。下图为64*64的CTU的各个CU中TU的划分。对于一个2N*2N的CU,split_transform_flag决定是否划分为4个N*N的TU。SPS中决定了TU的最大划分深度。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

4.slice

一幅图像可以分割成一个或多个slice,每个slice都是独立的(但环路滤波时可跨越slice边界进行滤波),利于并行运算。使用slice的主要目的是当数据丢失后能再次保证解码同步。
slice可以分为:I slice(所有CU都使用帧内预测);P slice(每个PU帧内、单向预测);B slice(每个PU帧内、单向、双向预测)。
一个slice可以分为若干SS(slice segment),包含一个独立的SS(它涉及的句法元素由自身决定)和若干依赖SS(它涉及的句法元素由已解码的独立SS决定,依赖SS共享独立SS的一些信息),以独立SS作为该slice的开始。一个SS包含整数个CTU,且这些CTU分布在同一个NAL中。SS可以作为一个分组来传送视频编码数据,一个slice内的SS可以相互参考。

5.Tile

一幅图像不仅可以划分为若干个slice,还可以划分为若干个tile,tile都是矩形。每个tile包含整数个CTU,其可以独立解码。划分tile的目的是:增强并行处理能力时,不引入新的错误扩散。在同一幅图像中,可以同时存在:slice包含多个tile,tile包含多个slice。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

HEVC中slice和tile都是为了独立解码,tile为矩形,slice为条状形。每个slice/SS和tile至少满足以下两个条件之一:
1.一个slice/SS中所有CTU属于同一个tile;
2.一个tile中所有CTU属于同一个slice/SS
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

6.档次、层、级别

档次profile规定编码器可用哪些编码工具或算法;级别level和层tier根据解码端负载和存储空间对关键参数进行限制(如最大采用频率、最大图像尺寸、分辨率等);
HEVC包含了三种档次:main(最常用);main 10(同时支持8bit和10bit);main still picture(支持单个静止图像)。限制条件如下:
1.只支持4:2:0的采用
2.使用了tile就不能使用wpp,tile分辨率至少为256*64
3.main和main still picture支持8bit像素深度;main10支持10bit,main still picture不支持帧间预测。
HEVC规定了2个层(main tier和high tier)和13个级别(4和4以上的level支持high tier)。符合某一tier/level的解码器能够解码当前以及比当前tier/level低的所有码流。

7.GOP和参数集

GOP分为:closed GOP和open GOP。每个closed GOP以IDR帧开始,各个GOP间相互独立;open GOP中,第一个GOP以IDR帧开始,后续GOP以non-IDR帧开始,即可以参考前面的GOP。
NAL根据是否装载视频编码数据非分为VCLU、non-VCLU。参数集(VPS、SPS、PPS)作为non-VCLU传输,保证了关键数据的高鲁棒性。一个SS压缩数据生成一个VCLU传输,最终视频序列的码流由一系列SS生成的多个VCLU和分割标示数据和参数集数据组成。分割标志数据用于区分一个SS属于哪幅图像。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

8.merge、AMVP

空域和时域相邻块的mv有一定的相关性,HEVC在mv预测方面提出merge和AMVP技术。merge和AMVP技术通过空域和时域已编码块构建候选mv列表,选取最优的一个当作当前PU的预测mv。merge不存在MVD,AMVP存在MVD,且候选列表的构建方式和长度均不同。skip是merge的一种特殊模式,区别在于传输时无残差。
merge:index + 残差
AMVP:index + MVD + 残差
skip:skip flag + index
skip=merge+cbf=0 (cbf=0时,残差的变换系数全为0)

9.率失真优化

视频编码的目的是在保证一定视频质量下尽可能减少编码比特率,或在一定编码比特率限制下尽量减小编码失真。编码器的主要工作是以某种策略选择最优的编码参数,以实现最优的编码性能。基于率失真理论的编码参数优化方法称为率失真优化。
在允许的失真下,能够把信源信息压缩到什么程度?针对这个问题,香农在1959年发表了“保真度准则下的离散信源编码定理”,定义了信息率失真函数R(D).
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
由香农第一和第三定理可知:无失真信源压缩的极限值是信源熵H(X),有失真压缩的极限值是R(D)函数。第三定理是一个最优编码方法存在定理,但实际的R(D)计算还存在大量问题:实际信源模型构建;失真的度量;R(D)条件极小值求解。

为了求解R(D)的极小值问题,使用拉格朗日优化法,通过引入拉格朗日因子λ,转换为非约束性问题:J=D+λR
在约束性问题中,一般先给定R而不是λ,因此在优化前就要确定λ。λ获得的方法:根据经验选择;根据QP得到。

RDO并不属于视频编码标准的范畴,RDO是最主要的用于编码参数选择的优化技术。HEVC的RDO分为图像组层、片层、CTU层(确定最优的CU划分)、CU层(确定最优的PU TU划分)和PU层(确定最优的预测模式及参数)。
HM章的RDO分为:码率控制部分确定QP;拉格朗日优化确定每个CU除了QP外其他编码参数。HM中RDO主要用于确定CU划分模式、PU TU模式、PU预测参数等。
RDO更详细的说明

10.码率控制

速率控制:通过选择一系列编码参数,使得视频编码后的比特率满足所需要的速率限制,并使得编码失真尽量小。属于率失真优化范畴。重点是确定与速率相关的QP。
在实际的编码标准中拥有独立量化参数的最小单位通常是CU。由于采用帧间预测等技术,CU的率失真性能相互依赖,直接使用拉格朗日优化来确定QP复杂度极高,实际的速率控制分为:
1.比特分配:根据总的目标比特数确定每个CU的最优目标比特数。
2.确定QP:根据速率和QP的关系模型,为每个CU根据其目标比特数独立确定其QP。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现
速率控制算法通常无法保证实际编码速率与目标速率完全一致,为了减小二者间的差别,通常在编码器和信道间建立一个数据缓冲区——“缓冲(buffer)机制”。缓冲机制能使编码速率更好的匹配信道速率,但会消耗存储空间,会引入时延。缓冲区大小由最大时延、成本决定。
读书笔记——新一代高效视频编码H.265HEVC原理、标准与实现

为了降低复杂度,通常采用分级的方式来简化目标比特分配问题:GOP级、图像级、CU级。即为每个GOP确定目标比特数,然后根据每个GOP的目标比特数来确定其中每一幅图像的目标比特数,最后确定其中每个CU的目标比特数。
RC更具体的说明