2013年4月13日HEVC/H.265被ITU-T正式接受为国际标准。类似以往的国际标准,HEVC仍旧采用“预测+变换”的混合编码框架,如下图所示,包括变换、量化、熵编码、帧内预测、帧间预测以及环路滤波等模块。在HEVC中,几乎每个模块都引入了新的编码技术。
本博文主要介绍HEVC编码框架,从整体结构出发介绍HEVC各个模块的大致功能以及相应的特色编码技术。
HEVC的编码框架主要包括变换、量化、熵编码、帧内预测、帧间预测以及环路滤波等模块。下面依次对各个模块做简单介绍。
帧内预测的主要功能是去除图像的空间相关性,通过编码后的重构信息块来预测当前像素块以去除空间冗余信息,提高图像的压缩效率。
在H.264/AVC中,基于4x4大小的编码块采用9种预测模式,而基于16x16大小的编码块采用4种预测模式。
在HEVC中,为了更准确地反映纹理特性,降低预测误差,提出了更为精确的帧内预测技术。对于亮度信号,HEVC提供了35种帧内预测模式,包括33种角度预测以及DC预测模式和Planar预测模式。增加的预测模式可以更好地匹配视频中复杂的纹理,得到更好的预测效果,更加有效地去除空间冗余。
帧间预测的主要功能是去除时间相关性,通过将已编码的图像作为当前帧的参考图像,来获取各个块的运动信息,从而去除时间冗余,提高压缩效率。
为了提升帧间预测性能,HEVC引入了一些新的技术,包括运动信息融合技术(Merge)、先进的运动矢量预测技术(Advanced Motion Vector Predictor,AMVP)和基于Merge的Skip模式。
运动信息融合技术(Merge):利用空域相关性和时域相关性来减少相邻块之间的运动参数冗余,具体来说就是取其相邻PU的运动参数作为当前PU的运动参数。
先进的运动矢量预测技术(Advanced Motion Vector Predictor,AMVP):AMVP技术的作用与Merge技术类似,也是利用空域相关性和时域相关性来减少运动参数的冗余。AMVP技术得到的运动矢量一方面为运动估计提供搜索起点,另一方面作为预测运动矢量使用。
基于Merge的Skip模式:后续重点介绍。。。
在HEVC中,帧间预测可以采用单向和双向的参考图像来进行预测,包括类似H.264/AVC中的分层B帧的预测结构。
通过对残差数据进行变换量化以去除频域相关性,对数据进行有损压缩。变换编码将图像从时域信号变换至频域,将能量集中至低频区域。量化模块可以减小图像编码的动态范围。
RQT(Residual Quad-tree Transform)技术是一种基于四叉树结构的自适应变换技术,它为最优TU模式选择提供了很高的灵活性。大块的TU模式能够将能量更好地集中,小块的TU模式能够保存更多的图像细节。根据当前CU内残差特性,自适应选择变换块大小,可以在能量集中和细节保留两者做最优的折中,与传统的固定块大小的变换相比,RQT对编码效率贡献更大。
变换编码和量化模块从原理上属于两个相互独立的过程,但是在HEVC中,两个过程相互结合,减少了计算的复杂度。
在HEVC中,环路滤波模块主要包括去块滤波器(DBF)和样点自适应补偿滤波(SAO)。DBF的主要作用是去方块效应,而SAO的主要作用是去除振铃效应。这部分的具体分析在《HEVC算法和体系结构:环路滤波技术》中已有详细介绍。
熵编码模块将编码控制数据、量化变换系数、帧内预测数据、运动数据、滤波器控制数据编码为二进制进行存储和传输。熵编码模块的输出数据即是原始视频压缩后的码流。
在HEVC中,采用了基于上下文的自适应二进制算术编码(CABAC)进行熵编码,引入了并行处理架构,在速度、压缩率和内存占用等方面均得到了大幅度改善。
接下来介绍HEVC的两个容易被忽略的新技术:ACS和IBDI。
ACS(Adaptive Coefficient Scanning)包括三类:对角扫描、水平扫描和垂直扫描。ACS技术是基于4x4块单元进行的,将一个TU划分为多个4x4块单元,每个4x4块单元内部以及各个4x4块单元之间都按照相同的扫描顺序进行扫描。
对于帧内预测区域的4x4和8x8尺寸的TU,根据所采用的帧内预测方向来选择扫描方法:当预测方向接近水平方向时采用垂直扫描;当预测方向接近于垂直方向时就选用水平扫描,对于其他预测方向使用对角扫描。
对于帧间预测区域,无论TU尺寸多大都采用对角扫描方式。
IBDI(Internal Bit Depth Increase)技术是指在编码器的输入端将未压缩图像像素深度由P比特增加到Q比特(Q>P),在解码器的输出端又将解压缩图像像素深度从Q比特恢复至P比特。
IBDI技术提高了编码器的编码精度,降低了帧内/帧间预测误差。但由于要建立参考队列,像素深度为Q比特的重构图像须占用较大的内存空间。此外,在进行帧间运动估计和补偿时,需要较多的内存访问带宽,这样会给内存受限的系统带来不便,解决的方法是引入参考帧压缩算法,来减小重构图像的数据量。