h264基础知识梳理

来源:互联网 发布:淘宝上的zuzu是正品吗 编辑:程序博客网 时间:2024/06/04 19:02

介绍一下264算法和AVS中的算法结构(大致相似):


视频编码技术在过去几年最重要的发展之一是由ITU和ISO/IEC的联合视频小组 (JVT)开发了H.264/MPEG-4 AVC[8]标准。

  H.264 实现的改进创造了新的市场机遇

  H.264/AVC在压缩效率方面取得了巨大突破,一般情况下达到MPEG-2及MPEG-4简化类压缩效率的大约2倍。在JVT进行的正式测试中,H.264在85个测试案例中有78%的案例实现1.5倍以上的编码效率提高,77%的案例中达到2倍以上,部分案例甚至高达4倍。H.264 实现的改进创造了新的市场机遇,如:600Kbps的VHS品质视频可以通过ADSL线路实现视频点播;高清晰电影无需新的激光头即可适应普通 DVD。

  H.264标准化时支持三个类别:基本类、主类及扩展类。后来一项称为高保真范围扩展 (FRExt)的修订引入了称为高级类的4个附加类。在初期主要是基本类和主类引起了大家的兴趣。基本类降低了计算及系统内存需求,而且针对低时延进行了优化。由于B帧的内在时延以及CABAC(自适应的上下文编码原理)的计算复杂性,因此它不包括这两者。基本类非常适合可视电话应用以及其他需要低成本实时编码的应用。

  主类提供的压缩效率最高,但其要求的处理能力也比基本类高许多,因此使其难以用于低成本实时编码和低时延应用。广播与内容存储应用对主类最感兴趣,它们是为了尽可能以最低的比特率获得最高的视频质量。

  尽管H.264采用与旧标准相同的主要编码功能,不过它还具有许多与旧标准不同的新功能,它们一起实现了编码效率的提高。其主要差别,概述如下:

  帧内预测与编码:H.264采用空域帧内预测技术来预测相邻块邻近像素的Intra-MB中的像素。它对预测残差信号和预测模式进行编码,而不是编码块中的实际像素。这样可以显着提高帧内编码效率。


  帧间预测与编码:H.264中的帧间编码采用了旧标准的主要功能,同时也增加了灵活性及可操作性,包括适用于多种功能的几种块大小选项,如:运动补偿、四分之一像素运动补偿(这里在插值过程中就需要用到8抽头像素点插值)、多参考帧、通用 (generalized)双向预测和自适应环路去块。


  可变矢量块大小:允许采用不同块大小执行运动补偿。可以为小至4(4的块传输单个运动矢量,因此在双向预测情况下可以为单个MB传输多达32个运动矢量。另外还支持16(8、8(16、8(8、8(4和4(8的块大小。降低块大小可以提高运动细节的处理能力,因而提高主观质量感受,包括消除较大的块化失真。

(在AVS当中如果参照现在265的标准,我们最多可以做到uibitsize 6的宏块,即最大编解码块大小为64*64,同时支持不规则劈分,有11中宏块类型,最复杂的也类似于4*12这种比例的宏块)

  四分之一像素运动估计:通过允许半像素和四分之一像素运动矢量分辨率可以改善运动补偿。


  多参考帧预测:16个不同的参考帧可以用于帧间编码,从而可以改善视频质量的主观感受并提高编码效率。提供多个参考帧还有助于提高H.264位流的容错能力。值得注意的是,这种特性会增加编码器与解码器的内存需求,因为必须在内存中保存多个参考帧。

(在实际使用的时候16个参考帧如果都能够用,那么就相当于在缓冲区中需要存储16帧图片的信息,对于1080p这种像素的图片而言,还是非常耗内存的,因此在一些AVS中不会选用这么多的参考帧缓存)

 

 自适应环路去块滤波器:H.264采用一种自适应解块滤波器,它会在预测回路内对水平和垂直区块边缘进行处理,用于消除块预测误差造成的失真。这种滤波通常是基于4(4块边界为运算基础,其中边界各边的3个像素可通过4级滤波器进行更新。根据不同的边缘类型,选择不同的等级进行滤波


  整数变换:采用DCT的早期标准必须为逆变换的固点实施来定义舍入误差的容差范围。编码器与解码器之间的 IDCT 精度失配造成的漂移是质量损失的根源(因为在264和AVS当中必须需要对残差系数进行DCT编码和IDCT解码,在具体运算的时候会用到移位饱和操作,因此精度的控制是十分重要的)。H.264利用整数4(4空域变换解决了这一问题——这种变换是DCT的近似值。4(4的小区块还有助于减少阻塞与振铃失真。


  量化与变换系数扫描:变换系数通过标量量化方式得到量化,不产生加大的死区。与之前的标准类似,每个MB都可选择不同的量化步长,不过步长以大约12.5%的复合速率增加,而不是固定递增。同时,更精细的量化步长还可以用于色度成分,尤其是在粗劣量化光度系数的情况下。(变换系数扫描则使用Z扫描)


  熵编码:与根据所涉及的数据类型提供多个静态VLC表的先前标准不同,H.264针对变换系数采用上下文自适应VLC,同时针对所有其他符号采用统一的VLC (UniversalVLC)方法。主类还支持新的上下文自适应二进制算术编码器 (CABAC)这个非常重要,之后会单独介绍。CAVLC优于以前的VLC实施,不过成本却比VLC高。

  CABAC利用编码器和译码器的机率模型来处理所有语法元素 (syntax elements),包括:变换系数和运动矢量。为了提高算术编码的编码效率,基本概率模型通过一种称为上下文建模的方法对视频帧内不断变换的统计进行适应(同一个slice内有效)。上下文建模分析提供编码符号的条件概率估计值。只要利用适当的上下文模型,就能根据待编码符号周围的已编码符号,在不同的概率模型间进行切换,进而充份利用符号间的冗余性。每个语法元素都可以保持不同的模型(例如,运动矢量和变换系数具有不同的模型)。相较于VLC熵编码方法 (UVLC/CAVLC),CABAC 能多节省10%bit速率。


  加权预测:它利用前向和后向预测的加权总和建立对双向内插宏模块的预测,这样可以提高场景变化时的编码效率,尤其是在衰落情况下。(在AVS中有一种预测模式成为权重预测模式,和264的这种模式有异曲同工之妙)


  保真度范围扩展:2004年7月,H.264标准增加了称为保真度范围扩展 (FRExt) [11]的新修订。这次扩展在H.264中添加了一整套工具,而且允许采用附加的色域、视频格式和位深度。另外还增加了对无损帧间编码与立体显示视频的支持。FRExt修订版在H.264中引入了4种新类,即:

  ?High Profile (HP):用于标准 4:2:0色度采样,每分量8位彩色。此类引入了新的工具—— 随后详述。

  ?High 10 Profile (Hi10P):用于更高清晰度视频显示的标准 4:2:0 色度采样,10位彩色。

  ?High 4:2:2 10 bit color profile (H422P):用于源编辑功能。

  ?High 4:4:4 12 bit color profile (H444P):最高品质的源编辑与色彩保真度,支持视频区域的无损编码以及与新的整数色域变换(从RGB到YUV及黑色)。

  在新的应用领域中,H.264 HP对广播与DVD尤为有利。某些试验显示出H.264 HP的性能比MPEG2 提高了3倍。下面介绍H.264 HP中引入的主要附加工具。

  自适应残差块大小与整数8(8变换:用于变换编码的残差块可以在8(8与4(4之间切换。引入了用于8(8块的新16位整数变换。较小的块仍然可以采用以前的4(4变换。

  8(8亮度帧内预测:增加了8种模式,除之前的16(16和4(4块以外,使亮度内部宏模块还能够对8(8块进行帧内预测。

  量化加权:用于量化8(8变换系数的新量化加权矩阵。

  单色:支持黑/白视频编码。


  AVS

  2002 年,中国信息产业部成立的音视频技术标准 (AVS)工作组宣布准备针对移动多媒体、广播、DVD等应用编写一份国家标准。该视频标准称为AVS [14],由两个相关部分组成针对移动视频应用的AVS-M和针对广播与DVD的AVS1.0。AVS标准与H.264相似。


AVS1.0同时支持隔行和逐行扫描模式。

AVS中P帧可以利用2帧的前向参考帧(也可以使用4帧,由标准而定),同时允许B帧采用前后各一个帧。在隔行模式下,4个场可以用作参考。可以仅在帧级执行隔行模式中的帧/场编码,这一点与H.264不同,其中允许此选项的MB级自适应

AVS具有与H.264相似的环路滤波器,可以在帧级关闭。另外,B帧还无需环路滤波器(这个不是很确定,也可以环路滤波,我想可以不用环路滤波的原因是因为B帧不用作为参考帧的原因吧)。


帧内预测是以8(8块为单位进行。MC允许对亮度块进行1/4象素补偿。ME的块大小可以是16(16、16(8、8(16或8(8。变换方式是基于16位的8(8整数变换(与WMV9相似)如果做32级别的也是差不多的


。VLC是基于上下文自适应2D运行/级别编码。采用4个不同的Exp-Golomb(哥伦布编码)编码。用于每个已量化系数的编码自适应到相同8(8块中前面的符号。由于Exp-Golomb表是参数化的表,因此表较小。用于逐行视频序列的AVS 1.0的视频质量在相同比特率时稍逊于H.264主类。在AVS中同样可以使用CABAC编码


  H.264/MPEG-4AVC是ITU-T的VCG(Video Coding Experts Group)和ISO/IEC的MPEG(Moving Picture Experts Group)联合开发的新一代视频编码标准。应用范围包括可视电话、视频会议等。H.264的主要特色就是极大得提高了压缩率,是MPEG-2及MPEG-4压缩效率的一倍以上。H.264核心技术与之前标准相同,仍采用基于预测变换的混合编码框架,但是在细节的实现上有很大不同,就是细节上的改进导致压缩效率极大得提高。而且新一代视频编码标准H.264具有良好的网络适应性和容错等特点。
  H.264和AVS的背景

  AVS的诞生可以说是一个历史的机遇,面对H.264以及MPEG-2等标准高额的专利费,我国数字视频产业面临严重挑战


  H.264和AVS核心技术分析及对比

  H.264和以前的标准一样,还是采用的混合编码的框架,AVS视频标准采用了与H.264类似的技术框架,包括变换、量化、熵编码、帧内预测、帧间预测、环路滤波等模块。他们核心技术的不同包括以下几点:

  一、变换和量化

  H.264对残差数据采用基于块的变换编码,去除原始图像的空间冗余,使图像能力集中在小部分系数上,直流系数值一般来说是最大的,这样可以提高压缩比、增强抗干扰能力。先前标准一般采用DCT变换,这种变换的缺点是会出现失配现象,原始数据经过变换和反变换恢复后会有一个差值,由于是实数运算计算量也比较大。H.264采用的是基于4×4块的整数变换。

  AVS采用8×8(16*16,32*32)的整数变换,可以在16位处理器上无失配地实现。对高分辨率的视频图像去相关性要比4×4变换有效,采用了64级量化,可以适应不同的应用和业务对码流和质量的要求。

  二、帧内预测

  H.264和AVS技术都采用帧内预测的方式,用相邻的像素预测当前块,采用代表空间域纹理的多种预测模式。H.264的亮度预测有4×4块和16×16块2种预测方式,对于4×4的块:从-135度到+22.5度方向加上一个直流预测一共是9种预测方向;对于16×16块:有4种预测方向。色度预测是8×8块,有4种预测模式,类似于帧内16×16预测的4种模式,其中DC为模式0、水平为模式1、垂直为模式2、平面为模式3。

  三、帧间预测

  H.264帧间预测是利用以编码视频帧和基于块的运动补偿的预测模式,与以往标准帧间预测的区别在于块尺寸范围更广、亚像素运动矢量的使用和多参考帧的运用。

  H.264有16×16、16×8、8×16、8×8、8×4、4×8和4×4一共8种宏块及子宏块划分,而AVS只有16×16、16×8、8×16和8×8一共4种宏块划分方式。

  H.264支持使用多个不同的参考帧对帧间宏块和片进行预测,AVS中P帧可以利用至多4帧的前向参考帧,B帧采用前后各一个参考帧。


  四、熵编码

  H.264制定了基于信息量的熵编码效率,一种是对所有的待编码的符号采用统一的可变长编码(UVLC),另一种是采用基于内容的自适应二进制算术编码(CABAC, Context-Adaptive Binary Arithmetic Coding),大大减少了块编码相关性冗余,提高了编码效率。UVLC计算复杂度较低,主要针对对编码时间很严格的应用,缺点就是效率低,码率较高。CABAC是一种效率很高的熵编码方法,其编码效率比UVLC编码高50%。


  对预测残差的块变换系数,经扫描形成(level、run)对串,level、run不是独立事件,而存在着很强的相关性,在AVS中level、run采用二维联合编码,并根据当前level、run的不同概率分布趋势,自适应改变指数哥伦布码的阶数。
  采用指数哥伦布码的优势在于:一方面,它的硬件复杂度比较低,可以根据闭合公式解析码子,无需查表;另一方面,它可以根据编码元素的概率分布灵活地确定以K阶指数哥伦布码编码,如果K选得恰当,则编码效率可以逼近信息熵。(但是在我们做的系统中为了更高的编码效率还是采用了和264类型的CABAC算法)


  另外,在AVS中没有SI、SP帧。可以这样说,AVS是在H.264的基础上发展起来的,吸收了H.264的精华,但为了绕过专利的困扰,又不得不放弃H.264的一些核心算法。换

  来的代价就是,编码效率稍微降低一点的情况下,复杂度极大得降低了。

  AVS是我国自主知识产权的标准,现在还没有大规模使用,处在起步阶段。大多数企业处于观望状态,没有资金大量投入,面临重重困难,但是它的广阔前景是不容忽视的,又有国家的大力支持,一定会发展的更加完美。


0 0
原创粉丝点击