H.264压缩算法详解

H.264压缩算法详解

    H.264是一种视频高压缩技术,全称是MPEG-4 AVC,用中文说是活动图像专家组-4的高等视频编码,或称为MPEG-4 Part10。它是由国际电信标准化部门ITU-T和规定MPEG的国际标准化组织ISO/国际电工协会IEC共同制订的一种活动图像编码方式的国际标准格式,这是我们叫惯了的MPEG中的一种,那为什么叫H.264呢?

    原来国际电信标准化部门从1998年就H .26L H.26S两个分组,前者研制节目时间较长的高压缩编码技术,后者则指短节目标准制订部门。H.26S 的标准化技术的名称为H.263,听起来很耳生,但实质上却早在用了,还被骂得很激烈。因为,H.263先入为大,一直以MPEG-4大内涵的名字在用。 H.263的全称为MPEG-4 VisualMPEG-4 Pall Ⅱ,即MPEG-4视频简单层面的基础编码方式。2001年后,国际电信标准化部门ITU-TMPEG的上级组织国际标准化组织ISO/国际电气标准会议IEC成立了联合视频组JVT,在H .26L 基础进行H.264的标准化。

    2002 年12 月9 ~13日,在日本香川县淡路岛举行的MPEG聚会上确定了相关技术的规格。规格书定稿后, 2003317日 ,H.364的技术格式最终稿国际标准规格(FDIS)被确立。目前软件和LSI芯片,服务及设备也都进入了使用阶段。格式书中,列出了比特流规定,解码必要格式,和可供参考的编码记载。

    为了不引起误解,ITU-T推荐使用H.264作为这一标准的正式名称。实际上,MPEG-4里还有MPEG-4 AudioMPEG-4 System的不同规格。

    MPEG-4挨骂是因为MPEG-4 Visual许可收费离谱引起的。别以为有了专利就可以随意向人要钱了,专利的最终目的的是使全社会的智力资料更合理地使用,防止重复劳动,并不是犒赏最先发明者。按唯美史观,当社会技术发展到某一阶段时,新技术必然会出现。不是你、就是他总会发明出来,只是细节、时间、成本上的微小差别。历史上,这样不约而同的发明很多,无线电的发明者是马可尼还是波波夫,一直在西方和东方技术史界争论。

而当专利技术成为国际标准的一部份后,问题就更加复杂了。国标标准是强制的,向其中的专利付费是否有垄断之嫌?标准中的技术专利请求,是否合理?如何区分正当的请求和不正当的请求?等等一系列的理论、法律和道德问题都出来了。要尊重专利法,也要遵守反垄断法。这两年国际上围绕MPEG-4收费问题的大争论就是由此而起。

在标准化进程中,专利的争端正在增加,任何黑白两极的判断都无法令人满意。但奇怪的是标准中的专利争端发展到要求判决的案例几乎没有,都是当事者幕后交易解决,这使得不明确的法理更陷入恶性循环之中。同时也助长了用户对盗版的宽容,一边是抢我的剪径强资,另一边是偷你的小贼,怎么讲道德?!

MPEG-4的收费问题主要是从向传输环节收费引起的。MPEG-4对解码器和编码器的收费已经比MPEG-2低了很多,这是各种压缩技术竞争的结果。但MPEG-2不对传输MPEG-2压缩图像的服务环节收费,而MPEG-4则要对内容配送者收取每分钟0.0333美分的许可费。钱数听起来不大,但伦理上却有很大的差别。打个比方,你买了台彩电,必要的专利费用已经通过彩电厂转交到专利技术持有者的手中。而当你打的把这台彩电运回家的时候,出租车主也要向专利持有者交费!能不引起轩然大波吗。

    现在的专利收费结构已经相当商业化。一种产品、一个系统或一套技术标准中,包含有许许多多公司的专利技术,使用企业很难与一个个技术的发明者直接交涉签约,这样就出现了一种专利管理公司的企业。它把某一产品的一个个技术从专利持有者手中买下来,约定好收益的分配方案,再由它人使用技术的企业中收取许可费。需要用这一产品技术的企业就只需与专利管理公司打交道,操作方便多了。但专利管理公司和著作权保护企业一样,实际上是一个中间商,两头赚钱,未必把社会效益放在最高地位。

现在的MPEG-4,也即MPEG-4 Visual是由美国MPEG LA公司进行专利许可管理的,他同时也在管理MPEG-2的专利,目前还在争取H.264的专利许可权。MPEG LA公司于20029月就开始募集H.264的主要专利,想采取先入为主的手段取得管理权。由于大量企业对MPEG-4收费制度不满,20036月, MPEG-4的支持团体M4IFMPEG-4工业论坛),决定数据流标准格式的美国ISMA(国际数据流媒体协会)和多媒体通信有关业界团体IMTC (国际多媒体通信协会)发起召开H.264的许可制度说明会。总共有专利持有者和使用者团队45个,56人参加,对有关H.264许可问题进行早期意见交换,希望协调各方面的要求和利益。关于方面其它信息,我们稍后再细述,先看看H.264的特色吧。

H.264用大运算量来换取高压缩率、高画质

    H.264受人追捧有三大原因:高性能、国际标准和公正的无差别许可制度。

    首先是超高压缩率,其压缩率为MPEG-22倍以上,MPEG-41.52倍。这样的高压缩率是以编码的大运算量来换取的,H.264的编码处理计算量有MPEG-2的十多倍。不过其解码的运算量并没有上升很多,故对用户接收播放来说没有什么难度。

    从另一角度,编码的大运算量现在也不是什么大问题。MPEG21994年推出的,当时微处理器的工作频率才100MHz,主存储器容量也不满10MB MPEG-2那样的压缩运算适应了当时的技术水平。而现在CPU的工作频率可上升到3GMzDRAM用到256MB,提升了30倍上下,运算量也不怕。实验表明在奔腾4处理器的3GHz电脑上,可用软件实现D1720×80)格式图像的H.264实时编码。

    而且H.264才标准化,运算顺序还有改善的空间。当作为国际标准确立后,还能结集起全世界的精英来优化处理。这也反应出技术发展的必然性,唯物史观。

    高压缩率使图像的数据量减少,给存储和传输带来了方便。加上基本规格公开的国际标准和公正的许可制度,所以,电视广播、家电和通信三大行业都进入到H.264的实际运用研发中心,见图1

  H.264又一项减少运算量的方法是在很多地方引入层次化运算,把在矩阵数据块变成小块运算,使计算式变得更加简单,见图5 

 

    DCT中采用时,8×8像素块层次化到2×2像素块,变换就变得快捷。运动补偿中也可利用。检出运动矢量时,最初的模块大,运动矢量的检出范围大,搜索快捷。当检出到有动作的部分再调入小模块细分析。H.264进行运动预测的模板多,一旦先进全面检索,需要的时间就很长,运算量也大。用层次化处理,先进行模板的收缩,接着小范围检索,就能减少计算量。在帧内预测中利用层次化后,残差计算的范围就能变小,同样有利于减少计算量。

    H.264MPEG-2MPEG-4的不同还存在于纠错编码块中,H.264的纠错编码为内容自适应可变长度码(CAVLC)和内容自适应二进制算法编码(CABAC),能提高纠错能力。而MPEG-2MPEG-4杰霍夫曼编码。另外,还加入了MPEG-2MPEG-4没有环路滤波器,有降低噪声的效果。H.264的整数变换以4×4像素块为单位,已比原来的8×8像素块的块噪声少,再次降低,画质得到了进一步提高。

    从应用角度看,H.264有三个层面,分为主要用于电视会议等通信的基线层面,面向高画质用途和录像的主层面以及面向内容配送的扩展层面。各层面的清晰度和编码速度取值不同。

    基线层面的主要技术为图像只含有I画面,P画面,系统内有环路滤波,1/4帧间预测,4:2:0 YUV格式输入,基于VLC的纠错编码,弹性宏块指令等。主要层面则在基线层面基础上加入了CABAC运算编码技术和基于双向预测的B画面,滤波(接口)等技术,但不含弹性宏块指令。扩展层面则在基线层面里加入B画面和滤波编码等。

    H.264分有4.1种不同样式的图像水平。水平1的编码速度较小,最大只能达64kbps,像素格式为QCIF176×144),30/秒和Sub QCIF128×96),60/秒。适合手机、PDA等屏幕播放视频用。水平2的编码速度可达2Mbps,图像的像素格式为CIF352× 288),30/秒。水平3、水平4分别对应SDTVHDTV图像格式,编码速度为10Mbps20Mbps。另外,还有能支持更高清晰度的水平 5,编码速度高达135Mbps。故总称为4.1水平。在各水平更细的分类中,最大编码速度也还有不同规定。

 

  最后,把H.264MPEG-2/MPEG-4主要的不同技术比较与下表1

视频的各种应用必须通过各种网络传送,这要求一个好的视频方案能处理各种应用和网络接口。H.264/AVC为了解决这个问题,提供了很多灵活性和客户化特性。H.264/AVC的设计方案包含两个层次,视频编码层(VCLVideo Coding Layer)和网络抽象层(NALNetwork Abstraction Layer)。视频编码层主要致力于有效地表示视频内容,网络抽象层格式化VCL视频表示,提供头部信息,适合多种传输和存储媒体。

 

VCL的设计同以前的ITU-T ISO/IEC JTC一样,基于块的混合视频编码方法。基本的源编码算法是:利用时间统计的相关性,开发帧间预测算法;利用预测残留变换编码,开发空间统计的相关性。在提高编码效率方面,没有一个单一的算法做出特别的贡献,而是大量的小的改善算法综合产生的结果。

 

一、主要特性

 

1H.264/AVC相对以前的编码方法,以MPEG-2为例,在图像内容预测方面提高编码效率,改善图像质量的主要特点如下:

 

可变块大小运动补偿: 选择运动补偿大小和形状比以前的标准更灵活,最小的亮度运动补偿块可以小到4×4

 

●1/4采样精度运动补偿:以前的标准最多1/2精度运动补偿,首次1/4采样精度运动补偿出现在MPEG-4第二部分高级类部分,但H.264/AVC大大减少了内插处理的复杂度。

 

运动矢量可跨越图像边界:在以前的标准中,运动矢量限制在已编码参考图像的内部。图像边界外推法作为可选技术首次出现在H.263中。

 

多参考图像运动补偿:在MPEG-2及以前的标准中,P帧只使用一帧,B帧只使用两帧图像进行预测。H.264/AVC使用高级图像选择技术,可以用以前已编码过且保留在缓冲区的大量的图像进行预测,大大提高了编码效率。

 

消除参考图像顺序和显示图像顺序的相关性:在以前的标准中,参考图像顺序依赖显示图像顺序,H.264/AVC消除了该限制,可以任意选择。

 

 

消除参考图像与图像表示方法的限制:在以前的标准中,B帧图像不能作为预测图像,H.264/AVC在很多情况可以利用B帧图像作为参考。

 

加权预测:H.264/AVC采用新技术,允许加权运动补偿预测和偏移一定量。在淡入淡出场景中该技术极大提高编码效率,该技术还可用于其他多种用途。

 

改善跳过直接运动推测:在以前的标准中,预测编码图像的跳过区不能有运动。当编码有全局运动的图像时,该限制非常有害。H.264/AVC跳过区的运动采用推测方法。对双预测的B帧图像,采用高级运动预测方法,称为直接运动补偿,进一步改善编码效率。

 

帧内编码直接空间预测:将编码图像边沿进行外推应用到当前帧内编码图像的预测。

 

循环去块效应滤波器:基于块的视频编码在图像中存在块效应,主要来源于预测和残余编码。自适应去块效应滤波技术是非常著名的技术,能有效消除块效应,改善视频的主观和客观质量。

 

 

2、除改善预测方法外,其他改善编码效率的特性如下:

 

小块变换:以前的标准变换的块都是8×8H.264/AVC主要使用4×4块变换,使编码器表示信号局部适应性更好,更适合预测编码,减少效应。另外图像边界需要小块变换。

 

分级块变换:H.264/AVC通常使用小块变换,但有些信号包含足够的相关性,要求以大块表示,H.264/AVC有两种方式实现。低频色度信号可用8×8,;对帧内编码,可使用特别的编码类型,低频亮度信号可用16×16块。

 

短字长变换: 所有以前标准使用的变换要求32位运算,H.264/AVC只使用16位运算。

 

完全匹配反变换:所有以前标准反变换和变换之间存在一定容限的误差,因此,每个解码器输出视频信号都不相同,产生小的漂移,最终影响图像的质量,H.264/AVC实现了完全匹配。

 

基于上下文的熵编码:H.264/AVC使用两种熵编码方法,CAVLC(上下文自适应的可变长编码)和CABAC(上下文自适应二进制算术编码),两种都是基于上下文的熵编码技术。

 

 

3H.264/AVC具有强大的纠错功能和各种网络环境操作灵活性,主要特性如下:

 

参数集结构:H.264/AVC参数集结构设计了强大、有效的传输头部信息。在以前的标准中,如果少数几位关键信息丢失,可能解码器产生严重解码错误。H.264/AVC采用很灵活、特殊的方式,分开处理关键信息,能在各种环境下可靠传送。

 

● NAL单元语法结构:H.264/AVC中的每一个语法结构放置在称为NAL的单元中,以前的标准采用强制性特定的位流接口。NAL单元语法结构允许很自由的客户化,几乎适合所有的网络接口。

 

灵活的像条大小:在MPEG-2中,规定了严格的像条结构,头部数据量大,降低预测效率,编码效率低。在H.264/AVC可采用非常灵活的像条大小。

 

灵活宏块排序(FMO):H.264/AVC可以将图像划分为像条组,又称为图像区,每个像条可以独立解码。FMO通过管理图像区之间的关系,具有很强的抗数据丢失能力。

 

任意像条排序:因为每个像条几乎可以独立解码,所以像条可以按任意顺序发送和接收,在实时应用中,可以改善端到端的延时特性,特别适合于接收顺序和发送顺序不能对应的网络中,如使用INTERNET网络协议的应用。

 

冗余图像:为提高抗数据丢失的能力,H.264/AVC设计中包含一种新的能力,允许编码器发送图像区的冗余表示,当图像区的主表示丢失时仍可以正确解码。

 

数据划分:视频流中的编码信息的重要性不同,有些信息(如运动矢量、预测信息等)比其他信息更为重要。H.264/AVC可以根据每个像条语法元素的范畴,将像条语法划分为3部分,分开传送。

 

 

二、网络层

 

NAL规范视频数据的格式,主要是提供头部信息,以适合各种媒体的传输和存储。NAL支持各种网络,包括:

 

任何使用RTP/IP协议的实时有线和无线Internet 服务。

 

作为MP4文件存储和多媒体信息文件服务。

 

● MPEG-2系统。

 

其他网。

 

1NAL 单元

 

编码的视频流组织成NAL单元,视频数据放置在网络单元中传输,每个网络单元包含整数个字节,第一个字节是头部信息,指示NAL单元的数据类型,其余是净荷。

 

净荷数据与仿真预防字节做交织处理,仿真预防字节是特殊值字节,防止偶然在净荷中出现同步字节图样。

 

NAL规定一种通用的格式,既适合面向包传输,也适合流传送。实际上,包传输和流传输的方式是相同的,不同之处是流传输前面增加了一个起始码前缀。

 

 

2NAL单元在字节流中的应用

 

类似H.320MPEG-2/H.222.0等传输系统,传输NAL作为有序连续字节或比特流,同时要依靠数据本身识别NAL单元边界。在这样的应用系统中,H.264/AVC规范定义了字节流格式,每个NAL单元前面增加3个字节的前缀,即同步字节。在比特流应用中,每个图像需要增加一个附加字节作为边界定位。还有一种可选特性,在字节流中增加附加数据,用做扩充发送数据量,能实现快速边界定位,恢复同步。

 

 

3NAL单元在面向包传送中的应用

 

在类似Internet/RTP面向包传送协议系统中,包结构中包含包边界识别字节&#x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值