H.264视频编码1引言H.264是两大视频标准组织ITU和ISO/IEC共同推出的最新视频编码标准,被视为是MPEG-4的升级版。该标准最大的优势是具有很高的数据压缩比率,且能够很好的适应当前复杂的网络环境,但H.264编码复杂度也是最高的。所以,掌握H.264视频压缩标准的编码原理及关键技术,努力提高其编码质量和编码速度是值得研究的问题。研究H.264视频编码技术对提高编码速度,标准的广泛应用和进一步发展视频压缩技术具有重要的理论意义和应用价值。2H.264视频压缩的编码原理H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:顿间和帧内预测、变换和反变换、量化和反量化、环路滤波以及摘编码。H.264标准的具体编码框架如图1所示。与以往的视频标准类似,H.264的编码框架同样是基于混合编码的框架:先将待编码宏块通过运动估计算法搜索帧内或帧间的相匹配宏块,再将匹配宏块和待编码宏块的图像差值经过DCT变换、量化等处理。H.264标准通过改进技术方案大大提高了视频压缩效率,并应用新的算法使视频编码性能在各个部分也得到了提升。编程控制CAVLC文CABACy顿内输出编码!整数变换量化原始视业码流频信号顿逆整数变换逆量化间迪★多参考顿运动补偿顿缓存运动失量A运动估计图1H.264标准的具体编码框架3H.264视频编码关键技术3.1内预测顿内预测是H.264/AVC的重要特性之一,它可以利用当前块周围已经重建的像素值对当前块进行预测,然后对预测块和实际块的残差进行变换、量化、焰编码,从而消除空间几余信息。对于亮度像素而言,顺内预测编码分为内4x4预测(Intra4x4)和帧内16×16预测
H.264 视频编码 1 引言 H.264 是两大视频标准组织 ITU 和 ISO/IEC 共同推出的最新视频编码标准,被视为是 MPEG-4 的升级版。该标准最大的优势是具有很高的数据压缩比率,且能够很好的适应当前 复杂的网络环境,但 H.264 编码复杂度也是最高的。所以,掌握 H.264 视频压缩标准的编码 原理及关键技术,努力提高其编码质量和编码速度是值得研究的问题。研究 H.264 视频编码 技术对提高编码速度,标准的广泛应用和进一步发展视频压缩技术具有重要的理论意义和应 用价值。 2 H.264 视频压缩的编码原理 H.264 是在 MPEG-4 技术的基础之上建立起来的,其编解码流程主要包括 5 个部分:帧 间和帧内预测、变换和反变换、量化和反量化、环路滤波以及熵编码。H.264 标准的具体编 码框架如图 1 所示。与以往的视频标准类似,H.264 的编码框架同样是基于混合编码的框架: 先将待编码宏块通过运动估计算法搜索帧内或帧间的相匹配宏块,再将匹配宏块和待编码宏 块的图像差值经过 DCT 变换、量化等处理。H.264 标准通过改进技术方案大大提高了视频 压缩效率,并应用新的算法使视频编码性能在各个部分也得到了提升。 帧内 帧 间 多参考帧 原始视 频信号 编程控制 整数变换 量化 CAVLC CABAC 输出 码流 熵编码 逆整数变换 逆量化 运动补偿 帧缓存 运动估计 运动矢量 图 1 H.264 标准的具体编码框架 3 H.264 视频编码关键技术 3.1 帧内预测 帧内预测是 H.264/AVC 的重要特性之一,它可以利用当前块周围已经重建的像素值对 当前块进行预测,然后对预测块和实际块的残差进行变换、量化、熵编码,从而消除空间冗 余信息。对于亮度像素而言,帧内预测编码分为帧内4×4预测(Intra4×4)和帧内16×16预测
(Intra16×16)两种。其中,Intra4x4有9种可选的预测模式,独立预测每一个4×4亮度子块适合于带有大量细节的图像编码;Intra16×16有4种可选的预测模式,预测整个16×16亮度块,适合于平坦区域图像编码。对于色度像素而言,只有一种编码尺寸:8×8,对应4种可选的预测模式,类似于16×16亮度块的预测模式。除此以外,还有一种帧内预测编码模式I_PCM。在该模式下,编码器直接传输图像的像素值,不经过预测和变换。在图像内容不规则或者量化参数非常低时,该模式比前面提及的常规模式效率更高。3.2帧间预测视频序列是由具有一定顺序的图像序列构成的,相邻顺图像之间具有很强的时间相关性,有效的利用这种时间相关性,最大程度地减少几余信息是视频编码的关键技术之一。顿间预测技术是利用运动估计和运动补偿技术来消除图像之间余信息的一种有效手段,是目前大多数视频编码标准普遍采用的技术。H.264/AVC顿间预测是利用已编码视频帧/场和基于块的运动补偿的预测模式。在以往的视频编码标准中定义了两种块的大小:16×16和8×8。基于块的运动模型假定块内所有的像系都做相同的运动。由于视频图像的复杂性,在较大的块中可能包含多个具有不同运动状态和不同形状的对象,此时仅仅采用一个或四个运动量无法精确的描述一个宏块内部的全部细节,这必然导致多个运动物体边缘处出现较大的误差。因此,H.264/AVC标准把块尺寸范围进行推广:从16×16到4×4,有效的提高预测效果;同时引入了高精度的运动估计及多参考顿技术,大大提高了编码效率。3.3整数变换与量化在图像编码中,变换编码和量化本来是两个独立的过程,但H.264将两个过程中的乘法合二为一;并进一步采用整数运算,减少了编解码的运算量,提高了图像压缩的实时性,而对PSNR(峰值信噪比)的影响很小。在H.264之前,视频编码标准中的变换编码都采用DCT变换。但是DCT变换存在两个缺点:一是它不是整数变换,在做快速运算时,需要把系数放大成整数,计算完后再缩小。这种方法会使编码端计算的结果和解码端计算出的结果失配:二是它的计算复杂,需要乘法运算。在H.264中采用了基于DCT变换的整数变换,全部系数都是整数,不会出现DCT变换中的“反变换误差”。变换块的单位是4x4,而不是以往常用的8×8或者16×16,由于变换块的尺寸缩小,运动物体的划分更精确,不但变换计算量比较小,而且在运动物体边缘处误差也大大减少。H.264为了提高码率控制的能力,量化步长变化不是以固定的增幅,增长的幅度为量化参数每增加6,量化步长增加1倍。变换系数幅度的归一化过程放在反量化过程中一起进行,避免了除法的出现,减少了计算的复杂性。3.4炳编码摘编码是无损压缩编码方法,它生成的码流可以经解码无失真地恢复出原数据。在以前的视频编解码标准中,控制信息、运动信息和量化后的变换系数多采用Huffman编码,使
(Intra16×16)两种。其中,Intra4×4有9种可选的预测模式,独立预测每一个4×4亮度子块, 适合于带有大量细节的图像编码;Intra16×16有4种可选的预测模式,预测整个16×16亮度块, 适合于平坦区域图像编码。对于色度像素而言,只有一种编码尺寸:8×8,对应4种可选的预 测模式,类似于16×16亮度块的预测模式。除此以外,还有一种帧内预测编码模式 I_PCM。 在该模式下,编码器直接传输图像的像素值,不经过预测和变换。在图像内容不规则或者量 化参数非常低时,该模式比前面提及的常规模式效率更高。 3.2 帧间预测 视频序列是由具有一定顺序的图像序列构成的,相邻帧图像之间具有很强的时间相关 性,有效的利用这种时间相关性,最大程度地减少冗余信息是视频编码的关键技术之一。帧 间预测技术是利用运动估计和运动补偿技术来消除图像之间冗余信息的一种有效手段,是目 前大多数视频编码标准普遍采用的技术。 H.264/AVC 帧间预测是利用已编码视频帧/场和基于块的运动补偿的预测模式。在以往 的视频编码标准中定义了两种块的大小:16×16和8×8。基于块的运动模型假定块内所有的像 素都做相同的运动。由于视频图像的复杂性,在较大的块中可能包含多个具有不同运动状态 和不同形状的对象,此时仅仅采用一个或四个运动矢量无法精确的描述一个宏块内部的全部 细节,这必然导致多个运动物体边缘处出现较大的误差。因此,H.264/AVC 标准把块尺寸范 围进行推广:从16×16到4×4,有效的提高预测效果;同时引入了高精度的运动估计及多参 考帧技术,大大提高了编码效率。 3.3 整数变换与量化 在图像编码中,变换编码和量化本来是两个独立的过程,但 H.264将两个过程中的乘法 合二为一;并进一步采用整数运算,减少了编解码的运算量,提高了图像压缩的实时性,而 对 PSNR(峰值信噪比)的影响很小。 在 H.264之前,视频编码标准中的变换编码都采用 DCT 变换。但是 DCT 变换存在两个 缺点:一是它不是整数变换,在做快速运算时,需要把系数放大成整数,计算完后再缩小。 这种方法会使编码端计算的结果和解码端计算出的结果失配;二是它的计算复杂,需要乘法 运算。在 H.264中采用了基于 DCT 变换的整数变换,全部系数都是整数,不会出现 DCT 变 换中的“反变换误差”。变换块的单位是4×4,而不是以往常用的8×8或者16×16,由于变换 块的尺寸缩小,运动物体的划分更精确,不但变换计算量比较小,而且在运动物体边缘处误 差也大大减少。 H.264为了提高码率控制的能力,量化步长变化不是以固定的增幅,增长的幅度为量化 参数每增加6,量化步长增加1倍。变换系数幅度的归一化过程放在反量化过程中一起进行, 避免了除法的出现,减少了计算的复杂性。 3.4 熵编码 熵编码是无损压缩编码方法,它生成的码流可以经解码无失真地恢复出原数据。在以前 的视频编解码标准中,控制信息、运动信息和量化后的变换系数多采用 Huffman 编码,使
用静态的概率估计码表,这样就忽略了不同视频流在统计特性上的区别,也忽略了待编码符号之间的相关性。H.264/AVC中采用了儿种不同的编码方法:通用可变长编码(UVLC)、基于上下文的变长编码(CAVLC,Context-AdaptiveVariableLengthCoding)和基于上下文的二进制算术编码(CABAC,Context-AdaptiveBinaryArithmeticCoding)。H.264/AVC中的UVLC码表提供了一个简单的方法,不管符号表述什么类型的数据,都使用统一变字长编码表。其优点是简单,缺点是单一的码表是从概率统计分布模型得到的,没有考虑编码符号间的相关性,在中高码率时效果不是很好。CAVLC编码方法通过根据已编码句法元素的情况,动态调整编码中使用的码表,取得了极高的压缩比。该方法用相同的码表可以对不同的对象进行编码,很容易实现焰编码,同时解码器也很容易识别码字的前缀进行摘编码。CAVLC用于亮度和色度残差数据的编码,因为残差经过变换和量化后非零系数主要集中在低频部分,而高频部分大多为零,同时这些系数经过锯齿扫描,DC系数附近的非零系数数值较大,而高频位置上的非零系数值大部分是+1和-1,CAVLC充分利用残差经过整数变换、量化后数据的这些特性进行压缩,可进一步减少数据中的穴余信息,为H.264卓越的编码效率奠定了基础。CABAC编码是一种算术编码,而不是变长编码。算术编码的思想是用0和1组成的一组数据来表示一个学符输入流,它的本质是为这个输入流分配一个码学,而不是给输入流中的每个字符分别指定码字。CABAC内建了由大量实验统而得到的概率模型,在编码过程中,它能根据当前所要编码的内容以及先前已编好的内容动态地选择概率模型来进行编码。据统计,CABAC可获得比CAVLC低5~15%的位速率。3.5去块效应滤波基于块的视频编码的一个典型特点就是在图像中出现偶发的可察觉的块结构,这是由于重构块的边缘像素与块内部像素相比恢复精度要低,块效应是目前压缩编码最明显的视觉失真之一。在H.264/AVC视频编码标准中,块效应有两种来源。最显著的一个是在Intra和Inter顺预测残差编码中的整数4x4变换,对变换系数的粗量化会导致可见的块边缘不连续。第二个是来自运动补偿预测。预测从可能的不同参考顿中把内插像素数据拷贝出来形成运动补偿块,由于几乎没有正好合适的数据,被拷贝块的数据引起的边缘不连续性会上升;另外,在拷贝过程中参考帧中存在的不连续性又被搬到将要被补偿块的内部。有两种方法在视频编解码器中加入去块效应滤波器,即去块效应滤波器可以作为后处理滤波器使用,也可以作为环路滤波器使用。后处理滤波器仅仅是在编码环外的显示缓存器里进行操作,不是标准中的一个规定部分。另一方面,环路滤波器是在编码环中使用的,也就是说,经过滤波的各顿是作为对后续帧编码时运动补偿的参考顿使用的,这就强制一个符合标准的解码器进行滤波,解码器使用滤波器与在编码端使用环路滤波器防止漂移相同。H.264/AVC标准使用去块效应滤波器,在减少块效应的同时并不影响图像的锐度,使图像的主观视觉质量得到提高,与不采用滤波达到相同客观图像质量的视频流相比通常可降低
用静态的概率估计码表,这样就忽略了不同视频流在统计特性上的区别,也忽略了待编码符 号之间的相关性。 H.264/AVC 中采用了几种不同的熵编码方法:通用可变长编码(UVLC)、基于上下文 的变长编码(CAVLC, Context-Adaptive Variable Length Coding)和基于上下文的二进制算术 编码(CABAC, Context-Adaptive Binary Arithmetic Coding)。 H.264/AVC 中的 UVLC 码表提供了一个简单的方法,不管符号表述什么类型的数据, 都使用统一变字长编码表。其优点是简单,缺点是单一的码表是从概率统计分布模型得到的, 没有考虑编码符号间的相关性,在中高码率时效果不是很好。 CAVLC 编码方法通过根据已编码句法元素的情况,动态调整编码中使用的码表,取得 了极高的压缩比。该方法用相同的码表可以对不同的对象进行编码,很容易实现熵编码,同 时解码器也很容易识别码字的前缀进行熵编码。CAVLC 用于亮度和色度残差数据的编码, 因为残差经过变换和量化后非零系数主要集中在低频部分,而高频部分大多为零,同时这些 系数经过锯齿扫描,DC 系数附近的非零系数数值较大,而高频位置上的非零系数值大部分 是+1和-1,CAVLC 充分利用残差经过整数变换、量化后数据的这些特性进行压缩,可进一 步减少数据中的冗余信息,为 H.264卓越的编码效率奠定了基础。 CABAC 编码是一种算术编码,而不是变长编码。算术编码的思想是用0和1组成的一组 数据来表示一个字符输入流,它的本质是为这个输入流分配一个码字,而不是给输入流中的 每个字符分别指定码字。CABAC 内建了由大量实验统而得到的概率模型,在编码过程中, 它能根据当前所要编码的内容以及先前已编好的内容动态地选择概率模型来进行编码。据统 计,CABAC 可获得比 CAVLC 低5~15%的位速率。 3.5 去块效应滤波 基于块的视频编码的一个典型特点就是在图像中出现偶发的可察觉的块结构,这是由于 重构块的边缘像素与块内部像素相比恢复精度要低,块效应是目前压缩编码最明显的视觉失 真之一。在 H.264/AVC 视频编码标准中,块效应有两种来源。最显著的一个是在 Intra 和 Inter 帧预测残差编码中的整数4×4变换,对变换系数的粗量化会导致可见的块边缘不连续。第二 个是来自运动补偿预测。预测从可能的不同参考帧中把内插像素数据拷贝出来形成运动补偿 块,由于几乎没有正好合适的数据,被拷贝块的数据引起的边缘不连续性会上升;另外,在 拷贝过程中参考帧中存在的不连续性又被搬到将要被补偿块的内部。 有两种方法在视频编解码器中加入去块效应滤波器,即去块效应滤波器可以作为后处理 滤波器使用,也可以作为环路滤波器使用。后处理滤波器仅仅是在编码环外的显示缓存器里 进行操作,不是标准中的一个规定部分。另一方面,环路滤波器是在编码环中使用的,也就 是说,经过滤波的各帧是作为对后续帧编码时运动补偿的参考帧使用的,这就强制一个符合 标准的解码器进行滤波,解码器使用滤波器与在编码端使用环路滤波器防止漂移相同。 H.264/AVC 标准使用去块效应滤波器,在减少块效应的同时并不影响图像的锐度,使图 像的主观视觉质量得到提高,与不采用滤波达到相同客观图像质量的视频流相比通常可降低
5%~15%的比特率。3结束语本文分析了H.264标准的特点和系统层结构,重点研究了H.264视频编码的关键技术,包括顿内预测、间预测、整数变换与量化、炳编码和去块滤波等技术
5%~15%的比特率。 3 结束语 本文分析了 H.264标准的特点和系统层结构,重点研究了 H.264视频编码的关键技术, 包括帧内预测、帧间预测、整数变换与量化、熵编码和去块滤波等技术