APP下载

新一代视频编码标准HEVC的关键技术

2014-07-25林春雨白慧慧

数据采集与处理 2014年1期
关键词:插值残差像素

赵 耀 黄 晗 林春雨 白慧慧

(1.北京交通大学信息科学研究所,北京,100044;2.现代信息科学与网络技术北京市重点实验室,北京,100044)

引 言

随着视频技术的不断进步,拍摄视频的手段变得多样化,人们通过手中的一些小型设备,如智能手机、手持家庭数码摄像机等,就可以记录下日常生产和生活中的影像。同时,YouTube、优酷、土豆等网络视频网站的兴起也给人们提供了一个便捷的分享和传播视频的途径。然而,这些设备和技术也使得视频源数据剧增,并给当前的网络传输带来巨大挑战。从视频的清晰度来看,高清视频逐渐普及,当前的发展趋势更是4K(分辨率为3840×2160)甚至8K(分辨率为7680×4320)的超高清视频。面对这些新的需要和挑战,国际标准组织ITU-T VCEG和ISO/IEC MPEG于2010年成立了联合视频工作组(Joint collaborative team on video coding,JCTVC),并着手制定高效视频编码标准(High efficiency video coding,HEVC)。经过多次JCTVC会议的讨论、研究和改进,ITU-T和ISO/IEC在2013年4月正式发布了HEVC标准,即ITU-T H.265和 MPEG-H Part 2。

HEVC仍然采用了与先前视频编码标准H.264/AVC一样的混合视频编码的基本框架。如图1所示。其核心编码模块包括:帧内/帧间预测、变换和量化、熵编码、环内滤波等。编码器控制模块根据视频帧中不同图像块的局部特性,选择该图像块所采用的编码模式(帧内或帧间预测编码)。对帧内预测编码的块进行频域或空域预测,对帧间预测编码的块进行运动补偿预测,预测的残差再通过变换和量化处理形成残差系数,最后通过熵编码器生成最终的码流。为避免预测误差的累积,帧内或帧间预测的参考信号是通过编码端的解码模块得到。变换和量化后的残差系数经过反量化和反变换重建残差信号,再与预测的参考信号相加得到重建的图像。值得注意的是,对于帧内预测,参考信号是当前帧中已编码的块,因此是未经过环内滤波的重建图像;而对于帧间预测,参考信号是解码重构图像缓存区中的参考帧,是经过环内滤波的重建图像。环内滤波的作用是去除块效应并提高解码图像的质量。

针对目前视频信号分辨率不断提高以及并行处理的普及应用,HEVC定义了灵活的分块结构,同时对各个编码模块进行了优化与改进,并添加了一些新的编码工具,使得HEVC的压缩效率得到显著提高。与先前的H.264/AVC标准相比较,在相同应用条件和视频质量的前提下HEVC的编码效率要提高一倍[1]。

图1 HEVC基本编码框架Fig.1 The framework of HEVC

1 分块结构

一般来说,视频帧中图像的不同区域有着不同的局部特性,如颜色、纹理结构、与参考帧的相关性(运动信息)等。因此,编码时通常需要进行分块处理,对具有不同特性的编码块采用不同的编码模式,从而达到较高的压缩效率。根据功能的不同,HEVC中定义了编码树单元(Coding tree unit,CTU),编码单元(Coding unit,CU),预测单元(Prediction unit,TU)和 变 换 单 元 (Transform unit,TU)四种不同的的编码块单元。一个CTU可以由多个CU组成,一个CU在进行帧内/帧间预测时可以划分成多个PU,在进行变换和量化时又可以划分成多个TU。这些编码块单元中相应的像素块称为编码树块(Coding tree block,CTB),编码块 (Coding block,CB),预测块 (Prediction block,PB)和变换块(Transform block,TB)。例如,一个编码单元包含一个亮度像素块和两个色度像素块。与H.264/AVC中的宏块类似,给定一种亮度像素块的分块模式,其对应的色度像素块进行同样的划分。

1.1 编码树单元和编码单元

在HEVC中,一个图像分割成互不重叠的编码树单元。编码树单元的作用与H.264/AVC中的宏块类似,但编码树单元的尺寸可以是8×8,16×16,32×32或64×64,使得 HEVC能够根据不同的应用条件对编解码的延迟、内存使用和硬件的不同要求做出相应的配置。这种分块的灵活性以及采用更大的编码块是HEVC与先前编码标准相比最显著的区别和优势之一。当对高清视频进行编码时,可以采用较大的编码树单元以提高压缩效率;当对低分辨率的视频进行编码或编码的复杂度受限时,可以采用较小的编码树单元。

编码树单元是由树状结构的编码单元组成。一个编码树单元可以通过四叉树递归分解的方式划分成多个编码单元,每个叶子节点上的编码单元是HEVC中进行编码的基本单位,用于指示当前块的预测模式,即帧内或帧间预测。编码单元的尺寸最大为编码树单元的尺寸,最小为8×8。给定编码树单元的尺寸,其四叉树结构的层级可配置。当有多个层级时,按照深度优先、逐行扫描的顺序对编码单元进行遍历。图2显示了一个尺寸为64×64的编码树单元及其四叉树分解的例子。图2(a)中带箭头的虚线指示编码单元遍历的顺序,图2(b)显示的是相应的四叉树结构,其中“1”表示向下分解,“0”表示不分解。这些“0”和“1”组成的序列“1010100100100”表示该编码树单元的四叉树结构。值得注意的是,当编码单元的尺寸为最小的8×8时,无需再用“1”或“0”表示是否继续分解。

图2 编码树单元四叉树结构示例Fig.2 Example of a coding tree unit

这种四叉树结构使得HEVC能够根据当前块的局部特性自适应地进行分块处理,在平滑区域采用较大的编码单元,而在纹理细节区域采用较小的编码单元。同时,递归的结构保证了在处理不同尺寸的编码单元时的一致性,从而降低解析码流的复杂度,提高编码标准语法结构的明晰性。研究表明,若减小编码树单元尺寸或增大最小编码单元尺寸都会明显降低编码效率[2]。

1.2 预测单元

给定一个尺寸为2N×2N的编码单元,根据预测模式的不同它可以划分为一个或多个预测单元。预测单元是HEVC中进行帧内/帧间预测的最小单位,每个预测单元含有一组预测信息,即帧内预测的模式选择信息(预测方向)或帧间预测的运动参数(选择的参考帧、运动向量等)。HEVC中一共定义了8种预测单元的划分类型,如图3所示。当编码单元的预测模式为帧内预测时,预测单元的类型可以是2N×2N或N×N;当编码单元的预测模式为帧间预测时,预测单元的类型可以是8种类型中的任意一种。其中的非对称模式为可选模式,可以通过编码器配置开启或关闭。上述中预测块的划分是针对亮度像素块,色度像素块的划分与亮度像素块基本一致。然而,HEVC中规定预测像素块的尺寸不得小于4×4。也就是说,对一个8×8的编码单元,即使亮度像素块依据预测单元的划分类型分解成多个预测像素块,但尺寸为4×4的色度像素块不进行分解。

图3 预测单元的划分类型Fig.3 PU paritition types

1.3 变换单元

一个编码单元以预测单元为单位进行帧内/帧间预测,预测残差通过变换和量化达到进一步压缩。尺寸大的变换有较好的频率分辨率,而尺寸小的变换有较好的空间分辨率[3]。因此,需要根据残差信号的时频特性自适应地调整变换单元的尺寸[3]。与编码单元和预测单元相对应,HEVC中定义的变换单元的尺寸可以是32×32,16×16,8×8或4×4。然而,HEVC中并不支持64×64的DCT变换。

一个编码单元中可以有一个或多个变换单元,允许一个编码单元中的预测残差通过四叉树递归分解的方式划分成多个变换单元分别进行处理。这个四叉树称为残差四叉树(Residual quadtree,RQT)。与编码单元四叉树类似,残差四叉树通过深度优先、逐行扫描的顺序进行遍历,四叉树的结构由“0”和“1”组成的序列表示。变换单元的最大尺寸以及残差四叉树的层级可以根据不同的应用条件进行相应的配置,对实时性或复杂度要求较低的应用可以通过增加残差四叉树的层级来提高编码效率。

2 帧内预测

帧内预测是通过当前帧中已编码块的重构图像预测当前块。如表1所示,HEVC中一共定义了35种帧内预测模式[4],包括Intra_Planar模式、Intra_DC模式和33种方向性帧内预测模式Intra_Angular[k],k=2,…,34。这33种方向的定义如图4所示,图中的数字0~34表示模式编号,字母H用于表示横轴方向,后面的数字部分表示预测方向相对于水平向左方向的偏移值,字母V用于表示纵轴方向,后面的数字部分表示预测方向相对于垂直向上方向的偏移值。记这个偏移值为d,它的单位为1/32。在横轴方向上,向下偏移时d的值为正,向上偏移时d的值为负,预测方向与水平向左方向夹角的正切值等于d/32;在纵轴方向上,向右偏移时d的值为正,向左偏移时d的值为负,预测方向与垂直向上方向夹角的正切值等于d/32。由图4可以看出,模式2~17为横轴方向上的预测模式,模式18~34为纵轴方向上的预测模式。与H.264/AVC相比较,HEVC中方向性帧内预测的角度划分更细,从而能够更好地捕捉图像中的方向性纹理信息,提高帧内预测的准确性。另一方面,H.264/AVC中仅支持16×16,8×8或4×4块大小的帧内预测,且在不同块大小上帧内预测模式的定义不同,而HEVC中帧内预测支持的块大小为32×32,16×16,8×8或4×4,且在不同块大小上帧内预测模式的定义保持一致。

表1 HEVC帧内预测模式Table 1 Intra prediction modes in HEVC

图4 HEVC的帧内预测模式Fig.4 Intra prediction modes of HEVC

2.1 参考像素的选择

HEVC中以逐行扫描的顺序访问编码树单元,在编码树单元内又以深度优先、逐行扫描的顺序访问各个编码单元。因此,除了当前块的左边一列和上边一行像素,HEVC中当前块的左下方和右上方的像素也可以作为参考像素。如图5所示,Px,y表示当前块的预测像素,Rx,y表示当前块的参考像素。

图5 HEVC帧内预测参考像素的选择Fig.5 Reference pixels in intra prediction of HEVC

值得注意的是,在某些情况下一些参考像素可能为不可用。例如,参考像素的位置在图像外,或参考像素所属的编码块的预测模式不是帧内预测模式且被限制作为帧内预测的参考块。HEVC中根据参考像素不可用的情况,规定了不同的处理方法。若所有的参考像素为不可用,则每个参考像素位置的像素值都用2bitDepth-1进行替代,其中bitD-epth表示像素值的比特深度(例如,256级灰度的像素值的比特深度为8)。若只有部分参考像素为不可用,则根据以下操作对它们进行填补:

(1)从左边一列中最下面的参考像素R-1,2N-1开始,到左边一列的第一个参考像素R-1,-1,再到上面一行的最后一个参考像素R2N-1,-1,搜索第一个可用的参考像素,记为Ri,j;

(2)对所有不可用的参考像素Rx,y,其像素值用Ri,j进行替代。

2.2 Intra_Planar和Intra_DC模式

2.2.1 Intra_Planar模式

Planar帧内预测模式最先是由Tandberg,Nokia和Ericsson三个公司在他们的联合提案[5]中提出。其主要思想是针对平缓变化的图像区域利用线性插值的方法对当前块进行预测。如图6所示,加粗方框表示当前块,右下角的像素值需要通过编码加入到比特流中;最后一行和最右一列像素通过线性插值得到;中间的像素通过双线性插值得到。

图6 原始的Planar帧内预测方法Fig.6 Original planar intra prediction mode

文献[5]对上述线性插值的方法进行了改进和简化,并最终被HEVC采纳。具体地,如图7所示,最后一行和最右一列像素通过左下角和右上角的参考像素复制得到,中间的像素是由水平方向和垂直方向的线性插值所得到的值取平均值得到,即:

式中,“>>”表示向右移位运算。通过观察可以看到,式(1)中的乘法实际上可以由位移和累加实现。其中,N为2的指数,N乘以一个数可以由位移代替;而x和y乘以一个数可以通过在遍历预测像素时做累加实现。由此,降低了Intra_Planar预测模式的计算复杂度,且无需对当前块的右下角像素进行编码。

图7 HEVC中的Intra_Planar帧内预测方法Fig.7 Intra_Planar mode in HEVC

2.2.2 Intra_DC模式

HEVC中DC帧内预测模式与 H.264/AVC类似,预测像素的值由参考像素的平均值μ得到

然而,对N<32的亮度像素块,需要第一行和第一列预测像素进行平滑滤波,从而降低预测块的边缘不连续性。具体的运算过程如下

式中x,y=1,2,…,N-1。

2.3 方向性预测模式

方向性帧内预测的基本原理是通过当前像素沿某个指定方向在参考像素上的投影得到预测值。下面以纵轴方向的预测为例,对HEVC中方向性帧内预测的设计原理和实现过程进行详细阐述,横轴方向的预测过程可以通过类推得到。

对纵轴方向的帧内预测,称当前块的上一行的参考像素Ri,-1,i=-1,…,2N-1为主参考像素,称左边一列的参考像素R-1,j,j=-1,…,2N-1为辅参考像素。设当前块的预测像素Px,y沿某个预测方向在上一行参考像素上的投影位置的横坐标为x′,令dx=x′-x,由预测方向的偏移值d的定义得

对模式26~34,d∈[0,32]。那么,由x,y∈[0,N-1]可知x′∈[0,2N-1],因此,预测像素的投影位置在主参考像素内,可以通过线性差值得到。然而,对模式18~25,d∈[-32,0],需要分两种情况得到预测像素。若x′≥-1,则预测像素的投影位置在主参考像素上,同样可以通过在主参考像素上进行插值得到;若x<-1,则预测像素的投影位置不在主参考像素上,而是在辅参考像素上。文献[7]提出了一种将辅参考像素映射到扩展的主参考像素的方法,使得x<-1时预测像素可以通过在主参考像素上插值得到。如图8中的白色箭头所示,扩展的主参考像素的值通过反向映射到辅参考像素得到。由y∈[0,N-1]及式(1)可知,扩展的主参考像素为R-1+k,-1,k=-1,…,(N-d)/32。设R-1+k,-1沿预测方向在辅参考像素上的投影位置的纵坐标为dy,由d的定义有

图8 HEVC帧内预测方向性预测的例子Fig.8 Example of intra angular prediction on HEVC

综上,HEVC中纵轴方向上的帧内预测过程如下所述。设ref[x]为参考像素的序列,m为模式编号,首先通过以下步骤得到ref[x]的值。

(1)设置ref[x]=R-1+x,-1,x=0,…,N。

表2 模式编号与invAngle值的对应关系Table 2 Specification of invAngle

(3)若m∈ [26,34],则 设 置 ref[x]=R-1+x,-1,x=N+1,…,2N。

2)葡萄在5片叶之前受冻很严重,尽早打掉受损新梢,刺激其次生芽萌发,当年产量也可能会受到影响,但形成的枝条质量较好,冬季修剪时会有较多木栓化水平较高的枝条。

然后,预测像素的值通过线性差值得到,即

其中

2.4 参考像素的平滑处理

HEVC中根据预测块尺寸和帧内预测模式的不同,选择性地对参考像素进行平滑处理。其总的原则是:DC模式不需要对参考像素做平滑处理;较大的预测块和远离垂直/水平方向的预测模式更需要对参考像素做平滑处理。具体地,如表3所示,当预测块的尺寸为4×4时,所有帧内预测模式都不需要对参考像素做平滑处理;当预测块的尺寸为8×8时,水平方向、垂直方向以及它们相邻的左右各7个方向的预测模式不用对参考像素做平滑处理;当预测块的尺寸为16×16时,水平方向、垂直方向以及它们相邻的左右各1个方向的预测模式不用对参考像素做平滑处理;当预测块的尺寸为32×32时,DC模式、水平方向和垂直方向的预测模式不用对参考像素做平滑处理。

表3 需要进行参考像素平滑处理的帧内预测模式Table 3 The intra prediction modes that reference pixel smoothing is required

2.5 模式编码

HEVC一共定义了35种帧内预测模式,与H.264/AVC相比增加了许多。因此,H.264/AVC中的模式编码方法不能适用于HEVC[6]。给定一个当前亮度预测块,HEVC定义了3种最有可能的预测模式(Most probable modes,MPM)。编码时,先确定所选预测模式是否属于这3种MPM,如果是,则只编码该模式在这3种MPM中的索引,否则,用5个比特的固定长码字来表示该模式在剩余的32种模式中的索引。

设A和B分别表示当前预测块的左边一个和上边一个已编码的预测块,3种MPM根据A和B的帧内预测模式mA和mB得到。若A/B不存在或不是帧内预测的预测块,则mA/mB用模式1(Intra_DC模式)代替。另外,为了避免存储上一行中所有编码树块的编码信息所带来的开销,当B不属于当前预测块的同一个编码树块时,mB=1。若mA等于mB,则3种MPM的导出过程如下

(1)如果mA<2,即非方向性帧内预测模式,则3种 MPM 为 MPM[0]=0,MPM[1]=1,MPM[2]=26。

(2)否则mA≥2,3种 MPM为mA及其相邻的两个方向性预测模式,即:MPM[0]=mA;MPM[1]=2+((mA+29)%32);MPM[2]=2+((mA-2+1)%32)。

若mA不等于mB,则

(1)MPM[0]=mA,MPM[1]=mB。

(2)如果mA和mB都不等于0,那么 MPM[2]=0。

(3)否则,如果mA和mB都不等于1,那么MPM[2]=1,否则 MPM[2]=26。

对于色度预测块,HEVC定义了5种模式:Intra_Planar,Intra_Angular[26],Intra_Angular[10],Intra_DC和 Intra_Derived,其 中Intra_Derived表示和亮度预测块所选的预测模式相同。然而,需要注意的是,当亮度预测块与色度预测块所选的预测模式均为前4种模式中的一种并且相同时,色度预测块的预测模式也可以用Intra_Derived模式表示。因此,为了去除这种冗余,HEVC中色度预测块的模式编号与帧内预测模式的对应关系如表4所示,根据解码的模式编号与亮度预测块的帧内预测模式查表得到色度预测块所选的预测模式。

表4 色度预测块的帧内预测模式Table 4 Chroma intra prediction modes

3 帧间预测

3.1 运动补偿

HEVC中,对于亮度像素块的运动补偿,运动向量的精度为1/4像素;对于4∶2∶0格式下采样的色度像素块,运动向量的精度为1/8像素。运动补偿时,参考帧中非整数位置的像素值需要通过插值得到。H.264/AVC对1/4像素的插值采用的是二次插值的方法,即:先通过一个6拍的插值滤波器得到1/2像素位置的值,再通过线性插值得到1/4像素位置的值。而HEVC采用的是单次插值的方法,从而避免了中间过程的取整操作,提高了插值运算的精度。另一方面,HEVC采用了更为精确的基于DCT(Discrete cosine transform)的插值滤波器[9,10]。亮度像素块的插值滤波器系数如表5所示。其中,hfilter[i]表示1/2像素的插值滤波器系数,qfilter[i]表示1/4像素的插值滤波器系数。对1/2像素位置的插值,两边整数位置与其距离相同,因而采用的是对称的8拍滤波器;而对1/4像素位置更接近于其中某个方向的整数位置,因而采用的是非对称的7拍滤波器,从而减低插值滤波器的计算复杂度。色度像素块的插值滤波器系数如表6所示,filter1[i],…,filter7[i]分别对应不同的1/8像素位置。

表5 亮度像素块的插值滤波器系数Table 5 Filter coefficients for luma interpolation

表6 色度像素块的插值滤波器系数Table 6 Filter coefficients for chroma interpolation

3.2 帧间预测模式

HEVC一共定义了三种帧间预测模式,分别称为:Skip模式、Merge模式[11]和Inter模式。其中Skip模式和Merge模式的每一个预测单元的运动参数直接由相邻的已编码块直接导出,而只需要编码一个索引值用于指示参考块的位置。Skip模式和Merge模式的区别在于,Skip模式的预测单元划分类型只能是2N×2N且不需要对运动补偿后的预测残差进行编码,在解码端直接由运动补偿得到的预测信号作为重构信号。Skip模式可以看成是特殊的Merge模式。对于Inter模式,每一个预测单元含有一组运动参数,包括:帧间预测的方向(前向预测、后向预测或双向预测)、参考帧的索引值、运动向量预测器的索引值以及运动向量的预测残差。

编码时,首先用一个cu_skip_flag标记当前编码单元的预测模式是否为Skip模式。若是,则编码一个索引值merge_index用于指示运动参数的参考块位置;若否,则编码一个标记符号用于指示当前编码单元是帧内预测模式还是帧间预测模式。如果是帧间预测模式,则接着编码预测单元的划分类型part_mode。对每一个预测单元,首先编码一个merge_flag用于指示是否为 Merge模式。若是,则编码一个索引值merge_index用于指示运动参数的参考块位置;若否,即Inter模式,则依次编码帧间预测的方向、参考帧的索引值、运动向量预测器的索引值以及运动向量的预测残差。

3.3 运动参数的预测

3.3.1 Skip和Merge模式中运动参数的预测

Skip模式和Merge模式的运动参数的预测可以分为3类:空间上相邻已编码块的运动参数、时间轴上相邻已编码块的运动参数和生成的运动参数。空间上相邻的已编码块最多可以从5个不同位置上选择其中的4个;时间上相邻的已编码块可以从2个中选择一个。在运动参数预测值的选择过程中要去除其中重复的值,同时在使用空间上相邻的参考块时还要避免其中使得参考块与当前预测块形成一个等同于2N×2N的预测块。当候选运动参数的预测值少于设定的数目(1~5)时,由已有的运动参数预测值生成新的值或者用0进行填补。这样,运动参数的候选预测值的个数固定,使得解码索引值时不依赖于候选值的选择过程,有利于解码时的并行处理,同时提高了容错能力。

空间上参考块的选择如图9所示,对不同划分类型的预测单元,空间上参考块的选择不同。空间上参考块选择的顺序 依次是:A1,B1,B0,A0,(B2),其中B2只有在前4个中有任意一个不可用时才有效。需要注意的是,预测单元划分类型为N×2N,nL×2N或nR×2N时,A1不可作为第二个预测单元的参考块(否则,参考块与当前预测块形成一个等同于的预测块),参考块的选择顺序依次是:B1、B0、A0,B2;同样,预测单元的划分类型为2N×N,2N×nU或2N×nD时,B1不可作为第二个预测单元的参考块,参考块的选择顺序依次是:A1,B0,A0,B2。

图9 Merge模式运动参数预测空间上参考块的选择Fig.9 Spatial candidates selection in merge mode

记当前预测单元为Curr_PU,参考帧列表中距离当前帧最近的一个参考帧为Col_Pic,其中“同一位置”上的预测块为Col_PU,Col_PU的参考帧为Col_Ref。“同一位置”的选择如图10所示,首先选择C0,若C0不可用则选择C1。当前块的参考帧的索引固定为0,对应的参考帧标记为Curr_Ref。设当前帧Curr_Pic与Curr_Ref的距离为tb,Col_Pic与Col_Ref的距离为td,由 Col_PU 的运动向量根据tb和td的比值进行缩放得到当前块的运动向量的预测值,如图10中右半部分的例子所示。需要注意的是,采用时间轴上相邻块的运动向量需要额外的内存存储参考帧中所有块的运动向量。为了减少这些内存的开销,HEVC中将存储这些运动向量的精度限制到16×16的块。当16×16的块中含有多个预测单元时,只从中选择第一个预测单元的运动向量进行存储。此外,在容易出现传输错误的应用中,编码器可以设置关闭时间轴上参考块的使用,从而提高解码的容错能力。

图10 Merge模式运动参数预测时间轴上参考块的选择Fig.10 Temporal candidates selection in merge mode

当候选运动参数的预测值个数少于规定的数目C时,HEVC定义了一些生成的运动参数加入到候选值列表中,直到候选值的个数达到C。对于双向预测的B帧,生成的运动参数可以由已有的候选值中分别选取两个参考列表相应的运动向量及参考帧的索引值进行组合得到。比如第一个生成的运动参数有候选值列表中第一个运动参数中对应参考列表0的值和第二个运动参数中对应参考列表1的值组成。具体地,HEVC中定义了12种可选的组合,依次是:(0,1),(1,0),(0,2),(2,0),(1,2),(2,1),(0,3),(3,0),(1,3),(3,1),(2,3),(3,2),其中数字表示已有的候选值列表的索引值。对于P帧或者B帧中由上述方式生成的运动参数仍然未能达到C个候选值时,添加0向量为运动向量,参考帧的索引值可以从0到最大值依次选择。

3.3.2 Inter模式中运动参数的预测

对于Inter模式,运动向量的预测同样是从多个候选值中选取。在编码运动向量时,需要编码所选预测值的索引值以及运动向量的预测残差。其中,运动向量预测值的参考块的选择与Merge模式中空间参考块的选择类似,不同的是Inter模式从{A0,A1}和{B0,B1,B2}中分别按顺序选择第一个可用的加入到候选值列表中,总的候选值个数固定为2。当以上选择的候选值个数小于2时,再选择时间轴上参考块的运动向量,选择的方法与Merge模式相同。最后,若候选值的个数仍然小于2,则用0向量进行填补。

4 变换、量化及熵编码

HEVC中进行变换和量化的基本单位是变换单元。如1.3节中所述,给定一个编码单元,对其预测残差进行变换编码时可以划分成多个变换单元。与H.264/AVC类似,HEVC的核心变换采用的是基于DCT的整数变换[12]。在其变换矩阵的设计过程中充分考虑了对称性,使得在运算时可以使用快速算法。在进行较大尺寸的变换时可以通过构造多个较小尺寸的变换实现。除了基于DCT的整数变换外,HEVC中还定义了一种4×4的基于DST(Discrete sine transform)的整数变换[13],用于4×4的帧内预测的亮度块。此外,HEVC中定义了一种称为Transform Skip的模式。在该模式下,编码时跳过变换过程,直接对残差信号进行编码,从而提高对计算机合成的非自然图像信号的编码效率[14,15]。

在进行量化时,HEVC采用了与H.264/AVC类似的均匀量化器。HEVC一共定义了52级不同的量化步长,每增加6级量化步长增大一倍。同时HEVC也支持编码器通过设定量化的缩放矩阵对不同频率的残差系数采用不同的量化步长。

HEVC中熵编码采用的是基于上下文的二进制算术编码(Context adaptive binary arithmetic coding,CABAC)。其基本设计与 H.264/AVC中的CABAC类似,但是HEVC充分考虑了提高熵编码器的吞吐率和并行化,以适应编码高分辨率视频时的实时性要求[16]。因此,HEVC中CABAC熵编码器的上下文数量、数据间的相互依赖性减少,对相同上下文的编码符号进行组合、对通过旁路编码的符号进行组合,同时减少解析码流时的相互依赖性以及对内存读取的需求。

5 样本自适应补偿

HEVC中环内滤波包括去块效应滤波[17]和样本自适应补偿(Sample adaptive offset,SAO)[18]。其中,去块效应滤波与H.264/AVC类似,而SAO是HEVC中新引入的一个提高解码图像质量的工具,作用于去块效应滤波之后的解码图像。SAO通过对不同类别的像素加上相应的偏移值,从而降低图像的整体失真并减少振铃效应。HEVC中SAO处理的基本单位是CTU,并分为两种类型,分别是边缘像素补偿(Edge offset,EO)和条带补偿(Band offset,BO)。

5.1 边缘像素补偿

边缘像素补偿是对某个特定边缘方向的像素依据其与相邻像素灰度值的差异进行分类,从而对不同类别的像素分别加上相应的偏移值。HEVC中一共定义了四个方向,分别是水平、垂直、45°和135°方向。如图11所示,c表示当前像素,a和b表示两个相邻的像素。给定一个边缘补偿的类型,通过比较当前像素c与a、b的灰度值对当前像素进行分类,分类的准则如表7所示。其中,类别1和类别4表示当前像素为谷底和波峰;类别2和类别3分别表示当前像素为凹拐点和凸拐点;类别0表示其他情况,不进行边缘补偿。对类别1和类别2加上正的偏移值可以达到平滑的目的,而加上负的值则是起到锐化的作用。相反,对类别3和类别4加上正的值是起到锐化的作用,而加上负的值是进行平滑。然而,经过统计分析[18],HEVC中只允许对边缘像素进行平滑。在编码偏移值时无需对符号进行编码,而是根据像素类别的不同判定偏移值的符号,从而减少编码偏移值所需要的比特数。

图11 边缘像素补偿的四个方向Fig.11 The four types of directions in edge offset

表7 边缘像素分类的准则Table 7 Sample classification rules for edge offset

5.2 条带补偿

条带补偿是对属于不同条带(不同范围的灰度级别)的像素分别加上相应的偏移值,从而减小整体的失真。对8比特256级灰度的像素,HEVC设定条带的宽度为8,灰度值在到范围内的像素的类别记为k,0≤k≤31。对某个类别(条带)的像素,其偏移值等于重构像素与原始图像像素差异的平均值,即平均失真。HEVC中规定,对一个进行条带补偿的CTU只传输其中连续的4个条带(k,k+1,k+2,k+3)的偏移值。因此,需要编码值和相应的4个偏移值。

6 结束语

HEVC是继H.264/AVC之后的新一代视频编码标准,本文对HEVC的关键技术进行了综述。HEVC的帧内预测的概念与 H.264/AVC相类似,但HEVC中允许对更大尺寸的预测块进行帧内预测,同时定义了更多的帧内预测模式。HEVC的帧间预测采用了更为精确的基于DCT的插值滤波器、采用了多个运动向量预测器相互竞争的方法对运动向量进行编码并引入了新的4×4Merge模式。在变换和量化上,HEVC采用了四叉树结构的变换单元,并引入了新的的基于DST的整数变换。在熵编码上,HEVC采用了CABAC熵编码器,并着重提高CABAC的吞吐率。此外,HEVC引入了一种称为样本自适应补偿的新的编码工具,从而进一步提高解码图像的质量。HEVC在带来编码效率提高的同时也增加了编码器的复杂度。特别地,HEVC中灵活的分块结构使得率失真优化的过程变得十分复杂。相应的快速分块算法的研究将有助于HEVC的实际应用。此外,HEVC充分考虑了并行化处理的设计需求。在当前多核的发展趋势下,研究HEVC的并行算法对实现实时编码至关重要。

在HEVC的扩展档次的制定过程中,针对包含屏幕内容等计算机合成的图像内容的视频中经常出现重复纹理(例如:相同的英文字母)的特性,研究者提出了一种称为块拷贝或帧内运动补偿的帧内预测方法。它的主要思想是:从当前帧已编码的图像区域中搜索与当前块相似的块作为当前块的预测。研究表明,对含有屏幕内容的视频,帧内运动补偿的方法能够显著提高帧内编码的效率。但是对一般的自然图像的视频,该方法是否有益还有待进一步的研究和验证。在帧间预测技术方面,采用高阶运动模型可以进一步提高编码效率[19-21],但是需要简化基于高阶运动模型的运动补偿,以降低编解码的复杂度。

[1]Sullivan G J,Ohm J R,Han W J,et al.Overview of the high efficiency video coding(HEVC)standard[J].IEEE Trans Circuits Syst Video Tech,2012,22(12):1649-1667.

[2]Kim I-K,Min J,Lee T,et al.Block partitioning structure in the HEVC standard[J].IEEE Trans Circuits Syst Video Tech,2012,22(12):1697-1706.

[3]Marpe D,Schwarz H,Bosse S,et al.Video compression using nested quadtree structures,leaf merging,and improved techniques for motion representation and entropy coding[J].IEEE Trans Circuits Syst Video Tech,2010,20(12):1676-1687.

[4]Lainema J,Bossen F,Han W-J,et al.Intra coding of the HEVC standard[J].IEEE Circuits Syst,Video Tech,2012,22(12):1792-1801.

[5]Ugur K,Andersson K R,Fuldseth A.Description of video coding technology proposal by Tandberg,Nokia,Ericsson[S].Dresden,DE:Document JCTVCA119,2010.

[6]Kanumuri S,Tan T,Fuldseth A.Enhancements to intra coding[S].Guangzhou,China:Document JCTVC-D235,2010.

[7]Bossen F,Tan T,Takine J.Simplified angular intra prediction[S].Geneva,CH:Document JCTVCB093,2010.

[8]Budagavi M.Angular intra prediction and ADI simplification[S].Geneva,CH:Document JCTVCB118,2010.

[9]Ugur K,Alshin A,Alshina E,et al.Motion compensated prediction and interpolation filter design in H.265/HEVC [J].IEEE Journal of Selected Topic in Signal Processing,2013,7(6):946-956.

[10]Hao Lv,Wang R,Xie X,et al.A comparison of fractional-pel interpolation filters in HEVC and H.264/AVC [C]∥IEEE Proc.Visual Comm.Image Process.2012:.

[11]Helle P,Oudin S,Bross B,et al.Block merging for quadtree-based partition in HEVC[J].IEEE Circuits Syst,Video Technol,2012,22(12):1720-1731.

[12]Fuldseth A,Bjontegaard G,Budagavi M.CE10:Core transform design for HEVC[S].Geneva,Switzerland:Document JCTVC-G495,2011.

[13]Saxena A,Fernandes F.CE7: Mode-dependent DCT/DST without 4*4full matrix multiplication for intra prediction[S].Geneva,Switzerland:Document JCTVC-E125,2011.

[14]Lan C,Xu J,Sullivan G J,et al.Intra transform skipping [S]. Geneva, Switzerland: Document JCTVC-I0408,2012.

[15]Peng X,Lan C,Xu J,et al.Inter Transform Skipping[S].Stockholm,Sweden:Document JCTVCJ0237,2012.

[16]Sze V,Budagavi M.High throughput CABAC entropy coding in HEVC [J].IEEE Trans Circuits Syst Video Technol,2010,20(12):1778-1791.

[17]Norkin A,Bjontegaard G,Fuldseth A,et al.HEVC deblocking filter[J].IEEE Trans Circuits Syst Video Technol,2010,20(12):1746-1754.

[18]Fu C M,Alshina E,Alshin A,et al.Sample adaptive offset in the HEVC standard[J].IEEE Trans Circuits Syst Video Technol,2010,20(12):1755-1764.

[19]Huang H,Woods J W,Zhao Y,et al.Controlpoints representation and differential coding for affine motion compensation[J].IEEE Trans Circuits Syst Video Tech,2013,23(10):1651-1660.

[20]黄晗.HEVC帧间/帧内预测及优化技术研究[D].北京:北京交通大学,2013.

Huang Han.Research on inter/intra prediction and optimization techniques in HEVC[D].Beijing:Beijing Jiaotong University,2013.

[21]Narroschke M,Swoboda R.Extending HEVC by an affine motion model[C]∥Picture Coding Symposium.San Jose,CA:USA,2013.

猜你喜欢

插值残差像素
像素前线之“幻影”2000
基于双向GRU与残差拟合的车辆跟驰建模
基于残差学习的自适应无人机目标跟踪算法
“像素”仙人掌
基于递归残差网络的图像超分辨率重建
基于Sinc插值与相关谱的纵横波速度比扫描方法
ÉVOLUTIONDIGAE Style de vie tactile
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析
高像素不是全部