【H.265】H.265(HEVC)编码过程和名词解释

一、H.265(HEVC)编码过程

【H.265】H.265(HEVC)编码过程和名词解释_第1张图片
【H.265】H.265(HEVC)编码过程和名词解释_第2张图片

和H.264一样,H.265编码由帧内预测、帧间预测、量化、线性变换等步骤。过程大致如下;

1、分块

一帧画面首先被切分成多个互不重叠的块状区域,称为编码单元(H.264称为宏块),分别传输给编码器。

2、帧内预测

图像序列的第一个画面(以及每一个可被拖放的帧)只使用帧内预测编码(只使用同一帧中其它区域进行预测,不依赖其他帧)。

3、帧间预测

其它帧中的块大多数使用帧间预测编码,过程包括选择预测模式、参考图像的运动数据和生成每个块的运动矢量(MV)。 编码器通过旁路传输预测模式信息和运动矢量(MV),计算运动补偿,进而重建帧间预测数据。

4、压缩输出

帧内或帧间的预测结果和实际画面之间的残差数据经过空间-线性变换、采样、量化、熵编码后和预测信息一起输出。

HEVC融入了许多关键技术以提高性能,例如基于四叉树划分编码单元,预测方向更精细的帧内预测技术,采用运动合并技术和先进运动矢量预测模式的帧间预测技术,高精度运动补偿技术,用于改善重构图像质量的去方块滤波和像素自适应补偿技术等。

二、名词解释

1、编码树单元(CTU)和编码树块(CTB):

H.264标准中的核心编码层是宏块,包含一个16×16的亮度块采样,对于一般的yuv420而言,会伴随两个8×8的色度块采样。类似结构在HEVC中被称作CTU,但它的大小是可以由编码器设定的,并且可以超越16×16。CTU由一个亮度CTB、几个色度CTB和一些关联的语法元素组成。亮度CTB的可选大小有16×16、32×32、64×64,更大的块会有更好的压缩率。HEVC还支持使用树结构和四叉树将CTB切分为更小的块。

2、编码单元(CU)和编码块(CB):

CTU中的四叉树确定了亮度和色度CB的大小和位置,四叉树的根节点与CTU关联。亮度CB最大可以支持到亮度CTB的大小。把CTU切成亮度和色度CB的过程是一体的。一个亮度CB、两个色度CB和关联的语法元素构成一个CU。一个CTB可以只包含一个CU,也可以包含好几个CU,每一个CU都有一个分区关联的预测单元(PU)和一个变换树单元(TU)。
【H.265】H.265(HEVC)编码过程和名词解释_第3张图片

3、 预测单元(PU)和预测块(PB):

PU是预测的基本单元,规定了编码单元的所有预测模式,其最大单元与当前的CU大小相同。HEVC中对于skip模式,帧内模式和帧间模式,PU分割大小是不同的。
某帧图像采用帧内预测还是帧间预测是在CU层面决策的。PU分区结构的根也在CU层。根据预测决策的结果,亮度和色度CB进一步拆分为亮度和色度PB。HEVC支持从4×4到64×64大小的PB。
【H.265】H.265(HEVC)编码过程和名词解释_第4张图片
如上图所示,对于skip模式,PU的大小是2N2N。而帧内预测模式PU的大小可以为2N2N和NN,其中,当且仅当CU的大小为88时,帧内PU才可以取N*N。

帧间预测PU分割模式共有8种,主要分为两类:对称分割和非对称分割。其中,2N2N,2NN,N2N和NN为4种对称模式,2NnU,2NnD,nL2N和nR2N为4种非对称模式,U、D、L和R分别表示上下左右,且非对称划分形式只用于大小为3232和1616的CU中,对称划分形式的NN只用于大小为88的CU中。例如,2NnU和2NnD分别以上下1:3和3:1划分,nL2N和nR2N分别以左右1:3和3:1划分。

4、变换单元(TU)和变换块(TB):

TU是变换和量化的基本单元,变换树是由变换单元组成的四叉树。从CU大小开始,变换单元以迭代方式四等分,是否划分成四个子块根据语法元素split_transform_flag标定。根据迭代划分的深度不同,其大小可以是3232,1616,88和44中的一个。在序列参数集中可以设定变换单元的最大/最小值。
预测残差使用块变换编码。TU树结构的根在CU层面。亮度CB的残差可能和亮度TB完全一样,或者进一步切分为更小的亮度TB。色度TB也是一样的。4×4、8×8、16×16、32×32的TB都各自定义了近似DCT变换的基本整型方法。对于4×4的亮度帧内预测的残差变换,还有一个DCT变换表衍生的整型变换供选择。
【H.265】H.265(HEVC)编码过程和名词解释_第5张图片
如上图所示,TU的最大划分深度为3,其大小可以大于PU但不能超过CU。当PU为正方形时,TU采用正方形变换,且当PU为长方形时,TU采用长方形变换,其大小可以是328,832,164和416中的一个。

5、运动矢量:

标准中采用了基于邻近PB和参考帧数据来预测方向的高级运动矢量预测(AMVP)。MV编码还可以使用一种允许继承邻近PB的MV的合并模式。此外,HEVC中还包含有一个增强版的H.264/AVC直接运动预测。

6、运动补偿:

MV使用四分之一采样预测。分级采样的插值使用7阶或8阶的滤波器(H.264/AVC中插值使用二分之一采样的6阶滤波器和四分之一采样的线性插值)。和H.264/AVC一样,HEVC也使用多参考帧。每一个PB可以根据单向或者双向预测传送一个或者两个运动矢量。同H.264/AVC一样,预测信号上可以附加采样和偏移以声明预测权重。

7、帧内预测:

不使用帧间预测时,就只能基于邻近的块来做空间上的帧内预测。HEVC的帧内预测支持33个方向模式(H.264/AVC中是8个)。HEVC还设计了增强的二维变换和可选的DC预测模式。需要由预先解码出的邻近PB计算得出最优的帧内预测模式。
【H.265】H.265(HEVC)编码过程和名词解释_第6张图片
如上图所示,HEVC采用35种帧内预测模式,其中包括DC模式、33种角度模式和Planar模式。HEVC对帧内预测模式的选择过程更细致,不同大小的PU对应不同的预测模式。这使得帧内预测更加精确,且能减少空间冗余。帧内预测具体过程如下:

1> 首先遍历所有的预测模式,计算各个模式下预测的SAD(定义?)并由小到大排序。
2> SAD最小的一组预测模式作为该预测模式的子集。
3> 确定预测子集后,判断该PU左和上已经编码像素块的方向是否在子集内,若不在则将该模式加入子集。
4> 最后对子集中的所有预测模式进行率失真优化(RDO)。

8、量化控制:

和H.264/AVC一样,HEVC也使用URQ(一致量化还原)。由于HEVC引入了更多的变换块,所以量化参数矩阵也随之增多。

9、熵编码:

HEVC使用CABAC来做熵编码,去掉了基于上下文的自适应可变长编码(CAVLC)。和H.264/AVC中的CABAC相比,得益于新引入的并行处理架构,速度、压缩率和内存占用等方面均得到了大幅改善。
【H.265】H.265(HEVC)编码过程和名词解释_第7张图片
如上图所示,HEVC的CABAC熵编码流程与H.264基本类似。主要包括:二进制化,文本模型选择,概率估计和二进制算术编码,但HEVC在概率估计精确度和自适应速度加快等方面进行了改进。

10、内置环路滤波器:

和H.264/AVC一样,HEVC的帧间预测循环中也内置去除块效应的滤波器。相比H.264/AVC,HEVC的设计更重视简化决策和滤波器的流程,并且为并行处理而优化。

11、采样自适应偏移(SAO):

帧间预测循环的去块效应滤波器之后引入了一个非线性的幅值映射的流程。主要目的是通过编码器端的直方图分析产出一些参数以增强解码器端的幅值信号还原。
SAO是以LCU为单元,对每个LCU经过去方块滤波后的重建像素进行自适应补偿,从而减小重建图像的失真。SAO分为两类:边带补偿(BO)和边界补偿(EO)。
在这里插入图片描述
如上图所示,BO首先将亮度等级(0-255)分成32个条带,然后统计一个LCU内的像素分别落入每个条带的数目。对32个条带,每四个为一组,其左边界标记为起始位置。计算出连续4个条带应该补偿的值,对LCU中的像素进行补偿,最后进行RDO,选择RDO最小的4连续条带进行补偿。

【H.265】H.265(HEVC)编码过程和名词解释_第8张图片
如上图所示,EO主要是对图像的轮廓进行补偿,其补偿方向主要分为四类,其中每一类又可以分成图17中的四种情况。统计出每种情况下的补偿值,按照像素所属类型以LCU为单位基于像素进行补偿。

12、参数集结构:

能被多个区块共享的解码信息包含在参数集中。这个结构负责保证把必不可少的解码信息传输到解码端。它由H.264/AVC中的图像序列参数集扩展而来,在HEVC中被称为VPS。

13、NAL语法单元:

每个语法结构都会被放进一个叫做NAL(网络抽象层,一般一帧图像为一个NAL)中的逻辑上的数据包中。这个包的包头中有两个字节表明了它装载的是什么用途的数据(用于判断是否需要重传)。

14、 片:

可以不依赖同帧中的其它数据独立进行预测、残差重建、熵编码的部分被称为“片”。片可以是一个帧也可以只是一个帧中的一部分。片的主要作用之一是在丢包时同步用。在包式传输中一个片可以包含的数据量是被严格限制的,在这个限制内调整片内包含的CTU数量可以有效地最小化包传输产生的额外开销。

15、 增强信息(SEI)和视频可用性信息(VUI):

SEI和VUI用于存储视频元数据,比如说时间戳、使用的色彩空间、3D填充的方式等等。

16、并行块(Tile)

HEVC定义了一个可选的方式,可以把一帧图像分割成并行块。并行块的主要目的是在增强并行处理的能力同时又不引入新的错误扩散。并行块是一些在一帧图像内使用一些共有的信息编码而成,但可以独立解码的区域。一般的做法是将图像切割成包含大体相同数量CTU的并行块。并行块的引入使得简单粗粒度的并行化处理成为可能,线程之间将不再需要考虑复杂的同步和锁。

17、错峰并行处理(WPP)

主要用于熵编码。当WPP开启时,片先被分成数个CTU行。第一行正常处理,第二行在第一行处理完2个CTU后开始处理,第三行在第二行处理完2个CTU后开始处理。每一行相对前一行都有2个CTU的延迟。WPP提供了一种在适当的层级上(比如说片)并行化的方式。WPP可以提供比并行块更好的压缩效率,而且不会引入块效应。

18、依赖更小片(Dependent slice segments)

这个设计允许数据与错峰并行处理或者并行块关联起来,在碎片化的包传输网络中,相对于一次编码一整片而言,这种做法可以更快进入解码流程,从而降低延迟。与错峰并行处理一起使用用时,它也需要类似错峰的机制。这项设计尤为适合低延迟要求下的并行处理。

19、帧间预测

HEVC帧间预测提出了运动合并技术、先进运动矢量预测等新工具来提高编码效率。帧间预测模式分为skip模式、运动合并技术(merge模式)、先进运动矢量预测技术(AMVP)。其中,skip模式是merge中的一种特殊模式,其区别在于传输时不需要传残差信息和MV信息。下面对帧间预测模式分别进行介绍。

merge模式

merge模式采用相邻PU块的运动信息估计当前PU块的运动信息,编码器从时空域相邻PU块构成的参考列表中选择出最优的运动信息,并将其传到解码端。
【H.265】H.265(HEVC)编码过程和名词解释_第9张图片

AMVP技术

AMVP技术和merge模式预测过程部分相似,也是利用空域和时域相邻块的运动信息预测当前PU块的运动信息。AMVP技术利用周围信息估计当前编码块运动信息的过程和merge模式相同,包括候选列表的构建过程和最优运动矢量的选择过程,只是候选数目不同,
【H.265】H.265(HEVC)编码过程和名词解释_第10张图片
如上图所示,AMVP候选列表构建流程中空域的5个位置和merge模式下空域的5个位置完全相同,但最终选择的是两个最优位置,其中一个来自上边块,另一个来自左边块。而时域运动矢量的选取是利用两个不同预测方向的时域相邻预测单元的运动矢量作为测量值,并选取最优的一个作为时域运动矢量。当时域和空域候选子集选取完成后,首先去除重复的运动矢量,其次检查运动矢量的总数是否为2,若大于2则保留前两个即去除索引值大于1的,若小于2则添加零运动矢量。

20、去方块滤波

HEVC的去方块滤波与H.264类似,但由于HEVC中TU的大小可以大于PU,因此不能像H.264选择块边界,而是从TU和PU中选择较小的边界进行滤波。而且为了降低负责读,其不对4*4块边界进行滤波。
【H.265】H.265(HEVC)编码过程和名词解释_第11张图片
如上图所示,边界滤波分为三种情况:不进行滤波,弱滤波和强滤波。且滤波类型由边界强度BS,阈值β和tc决定。

参考博客:
HEVC标准概览-很概括很详细
HEVC视频编码技术

你可能感兴趣的:(视频,hevc)