版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2010-10-20 08:24
|
显示全部楼层
H.264标准的关键技术 1.帧内预测编码
' c* m: N( ?7 q7 k' C. E' [ 帧内编码用来缩减图像的空间冗余。为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性。因此,在对一给定宏块编码时,首先可以根据周围的宏块预测(典型的是根据左上角的宏块,因为此宏块已经被编码处理),然后对预测值与实际值的差值进行编码,这样,相对于直接对该帧编码而言,可以大大减小码率。
) l9 |+ m# w, U" q& X H.264提供6种模式进行4×4像素宏块预测,包括1种直流预测和5种方向预测,如图2所示。在图中,相邻块的A到I共9个像素均已经被编码,可以被用以预测,如果我们选择模式4,那么,a、b、c、d4个像素被预测为与E相等的值,e、f、g、h4个像素被预测为与F相等的值,对于图像中含有很少空间信息的平坦区,H.264也支持16×16的帧内编码。 图2 帧内编码模式
$ f* q$ o6 ^$ O) x K+ f+ j( X% B 2.帧间预测编码
: r9 \2 Y% e" s5 P/ s2 ` 帧间预测编码利用连续帧中的时间冗余来进行运动估计和补偿。H.264的运动补偿支持以往的视频编码标准中的大部分关键特性,而且灵活地添加了更多的功能,除了支持P帧、B帧外,H.264还支持一种新的流间传送帧——SP帧,如图3所示。码流中包含SP帧后,能在有类似内容但有不同码率的码流之间快速切换,同时支持随机接入和快速回放模式。图3 SP-帧示意图H.264的运动估计有以下4个特性。 A) d0 I1 ?' T0 P% N% S2 b
(1)不同大小和形状的宏块分割 6 {) ? i& e" q9 Z$ U/ p% @, t, S
对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状,H.264支持7种模式,如图4所示。小块模式的运动补偿为运动详细信息的处理提高了性能,减少了方块效应,提高了图像的质量。图4 宏块分割方法
5 A1 D: N4 L% I (2)高精度的亚像素运动补偿
' ^1 J. t, s/ v1 E" Y+ W* U 在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值。在要求相同精度的情况下,H.264使用1/4或者1/8像素精度的运动估计后的残差要比H.263采用半像素精度运动估计后的残差来得小。这样在相同精度下,H.264在帧间编码中所需的码率更小。
. b- l( g' ^* |: A6 L: l (3)多帧预测
5 ^& T1 H# W9 k5 `( \. B4 K H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样更可以改善视频图像质量。这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头。
$ S5 C/ f0 X4 H0 [- G% G8 ?( d* Y (4)去块滤波器
}. T& K# i B7 M( t6 j4 H! g H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应。
T/ p+ y, J* _# ~$ y/ V6 M8 M) n- f 3.整数变换 $ a7 Q+ K0 x* k' Q, L" w; s
在变换方面,H.264使用了基于4×4像素块的类似于DCT的变换,但使用的是以整数为基础的空间变换,不存在反变换,因为取舍而存在误差的问题,变换矩阵如图5所示。与浮点运算相比,整数DCT变换会引起一些额外的误差,但因为DCT变换后的量化也存在量化误差,与之相比,整数DCT变换引起的量化误差影响并不大。此外,整数DCT变换还具有减少运算量和复杂度,有利于向定点DSP移植的优点。
& b/ L. o j/ C/ q9 a1 f" w8 ^0 e 4.量化 9 a. X, {3 K$ l* F0 Q R
H.264中可选32种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数。
5 C7 U0 i& V, c2 ] 在H.264中,变换系数的读出方式也有两种:之字形(Zigzag)扫描和双扫描,如图6所示。大多数情况下使用简单的之字形扫描;双扫描仅用于使用较小量化级的块内,有助于提高编码效率。图6 变换系数的读出方式 6 Q8 R7 o3 r( @
5.熵编码
1 P& I! j$ ]5 t 视频编码处理的最后一步就是熵编码,在H.264中采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。
7 M6 u2 Q, V7 ^+ Y9 u 在H.263等标准中,根据要编码的数据类型如变换系数、运动矢量等,采用不同的VLC码表。H.264中的UVLC码表提供了一个简单的方法,不管符号表述什么类型的数据,都使用统一变字长编码表。其优点是简单;缺点是单一的码表是从概率统计分布模型得出的,没有考虑编码符号间的相关性,在中高码率时效果不是很好。 5 m( w0 b1 I- f6 f( W
因此,H.264中还提供了可选的CABAC方法。算术编码使编码和解码两边都能使用所有句法元素(变换系数、运动矢量)的概率模型。为了提高算术编码的效率,通过内容建模的过程,使基本概率模型能适应随视频帧而改变的统计特性。内容建模提供了编码符号的条件概率估计,利用合适的内容模型,存在于符号间的相关性可以通过选择目前要编码符号邻近的已编码符号的相应概率模型来去除,不同的句法元素通常保持不同的模型。
3 j; f4 L- K( s2 L, E7 y 四、H.264在视频会议中的应用
, S( M3 v- l7 F) z 目前,大多数的视频会议系统均采用H.261或H.263视频编码标准,而H.264的出现,使得在同等速率下,H.264能够比H.263减小50%的码率。也就是说,用户即使是只利用 384kbit/s的带宽,就可以享受H.263下高达 768kbit/s的高质量视频服务。H.264 不但有助于节省庞大开支,还可以提高资源的使用效率,同时令达到商业质量的视频会议服务拥有更多的潜在客户。
5 z( {, J# `+ P( h 目前,已经有少数几家厂商的视频会议产品支持H.264协议,厂商们致力于普及H.264这个全新的业界标准。随着其它视频会议方案厂商陆续效仿他们的做法,我们必将能全面体验H.264视频服务的优势。
# ^. d* d% u1 ?/ d编辑本段! y& Y+ w( c+ S( j7 u
H.264的技术亮点 1、分层设计 H.264的算法在概念上可以分为两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。在VCL和NAL之间定义了一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成。 ' q: J$ Z5 o0 u) f* {
VCL层包括基于块的运动补偿混合编码和一些新特性。与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性。
$ `* s [1 }, a" {9 L' i* L NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式。NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据。(如果采用数据分割技术,数据可能由几个部分组成)。
1 [6 C" p+ T# u; v/ A; h# X7 ~3 q 2、高精度、多模式运动估计 / `4 z1 J/ C! M' Z/ B$ o
H.264支持1/4或1/8像素精度的运动矢量。在1/4像素精度时可使用6抽头滤波器来减少高频噪声,对于1/8像素精度的运动矢量,可使用更为复杂的8抽头的滤波器。在进行运动估计时,编码器还可选择"增强"内插滤波器来提高预测的效果。
+ o. d; ^% |8 Y 在H.264的运动预测中,一个宏块(MB)可以按图2被分为不同的子块,形成7种不同模式的块尺寸。这种多模式的灵活和细致的划分,更切合图像中实际运动物体的形状,大大提高了运动估计的精确程度。在这种方式下,在每个宏块中可以包含有1、2、4、8或16个运动矢量。
$ ?, e9 N+ e7 Z$ [* @$ A 在H.264中,允许编码器使用多于一帧的先前帧用于运动估计,这就是所谓的多帧参考技术。例如2帧或3帧刚刚编码好的参考帧,编码器将选择对每个目标宏块能给出更好的预测帧,并为每一宏块指示是哪一帧被用于预测。
# G' S3 V* S# }5 o# Q; S2 w% ]/ Q 3、4×4块的整数变换
( F$ ^* T; a& B3 q H.264与先前的标准相似,对残差采用基于块的变换编码,但变换是整数操作而不是实数运算,其过程和DCT基本相似。这种方法的优点在于:在编码器中和解码器中允许精度相同的变换和反变换,便于使用简单的定点运算方式。也就是说,这里没有"反变换误差"。 变换的单位是4×4块,而不是以往常用的8×8块。由于用于变换块的尺寸缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误差也大为减小。为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,可对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个,共16个)进行第二次4×4块的变换,对色度数据的4个4×4块的DC系数(每个小块一个,共4个)进行2×2块的变换。
4 X. d+ s( n2 c) I# \ H.264为了提高码率控制的能力,量化步长的变化的幅度控制在12.5%左右,而不是以不变的增幅变化。变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性。为了强调彩色的逼真性,对色度系数采用了较小量化步长。 & s+ R+ Q% k% _9 i. r! x `1 H
4、统一的VLC
1 b; m2 n+ F3 w" ]0 T# a H.264中熵编码有两种方法,一种是对所有的待编码的符号采用统一的VLC(UVLC :Universal VLC),另一种是采用内容自适应的二进制算术编码(CABAC:Context-Adaptive Binary Arithmetic Coding)。CABAC是可选项,其编码性能比UVLC稍好,但计算复杂度也高。UVLC使用一个长度无限的码字集,设计结构非常有规则,用相同的码表可以对不同的对象进行编码。这种方法很容易产生一个码字,而解码器也很容易地识别码字的前缀,UVLC在发生比特错误时能快速获得重同步。
8 [/ D6 V: E& G- X" _! \ 5、帧内预测
! f* ~4 B- N- W& U$ q2 X# m; R 在先前的H.26x系列和MPEG-x系列标准中,都是采用的帧间预测的方式。在H.264中,当编码Intra图像时可用帧内预测。对于每个4×4块(除了边缘块特别处置以外),每 ( \) o+ [2 H: `% t% S
个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,即此像素所在块的左上角的17个像素。显然,这种帧内预测不是在时间上,而是在空间域上进行的预测编码算法,可以除去相邻块之间的空间冗余度,取得更为有效的压缩。
8 G6 b. F) d; M6 Z 如图4所示,4×4方块中a、b、...、p为16 个待预测的像素点,而A、B、...、P是已编码的像素。如m点的值可以由(J+2K+L+2)/ 4 式来预测,也可以由(A+B+C+D+I+J+K+L)/ 8 式来预测,等等。按照所选取的预测参考的点不同,亮度共有9类不同的模式,但色度的帧内预测只有1类模式。 ) ~# }& v; }* O' o9 u
6、面向IP和无线环境
/ [$ ^& ~# Y9 F/ @1 v& q7 P0 O H.264 草案中包含了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性。 - J7 h# K, S9 {5 B% h
为了抵御传输差错,H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,空间同步由条结构编码(slice structured coding)来支持。同时为了便于误码以后的再同步,在一幅图像的视频数据中还提供了一定的重同步点。另外,帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,还可以考虑传输信道的特性。 & n! E1 J c5 a( a7 b7 T# w
除了利用量化步长的改变来适应信道码率外,在H.264中,还常利用数据分割的方法来应对信道码率的变化。从总体上说,数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。例如采用基于语法的数据分割(syntax-based data partitioning)方法,将每帧数据的按其重要性分为几部分,这样允许在缓冲区溢出时丢弃不太重要的信息。还可以采用类似的时间数据分割(temporal data partitioning)方法,通过在P帧和B帧中使用多个参考帧来完成。 : p3 h2 j- }' G8 F( L# i" m
6 v3 L$ o! F4 \6 W* ~8 r 在无线通信的应用中,我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化。可是,在多播的情况下,要求编码器对变化的各种比特率进行响应是不可能的。因此,不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),H.264采用流切换的SP帧来代替分级编码。8 e. a% V6 s0 q' O5 t& b( n) E% I- F* q
. ~3 \* I% x5 V; a" Q/ \) _H264编码技术 H.264的目标应用涵盖了目前大部分的视频服务,如有线电视远程监控、交互媒体、数字电视、视 标准的整体框架 % E/ ]' r) d. r8 \0 f
' [& W) k q, Q8 I, E n频会议、视频点播、流媒体服务等。H.264为解决不同应用中的网络传输的差异。定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送(如图所示: 标准的整体框架)。 9 |3 d ^1 B; @9 W4 c
2 I Z/ {+ p- F6 O9 E
基本层次(Baseline Profile):该层次使用了H.264的除了B-Slices,CABAC以及交织编码模式外所有的特性。该层次主要使用于低时延的实时应用场合。 3 u# `, T5 C7 [# U" m7 G
5 ~2 L2 j' n6 ~: t, i( T 主要层次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交织编码模式。它主要针对对时延要求不高,当压缩率和质量要求较高的场合。 6 |% v! i( R4 X" @% W- l" p
" p% Y8 {9 o! a1 f* f/ ~2 _2 k
扩展层次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏块的自适应帧场编码。该层次主要针对的时各种网络视频流传输方面的应用。 + n+ u8 S N& |
编辑本段; C, z% [$ L# f# U2 I: H, c1 v
! a, I: U1 u, phttp://imgsrc.baidu.com/baike/abpic/item/dc15484eb162bd25b3de05c3.jpg
! c* Z& S* i( t" j- Z4 M( Q' {. s6 `4 F8 a R! S
) c- r$ X# \1 ?- L; ]( J; L' f( F* W& x& [" J
H264层次构成
+ P2 ~: a' R( `/ c) J4 P H264标准是由JVT(Joint Video Team,视频联合工作组)组织提出的新一代数字视频编码标准。JVT于2001年12月在泰国Pattaya成立。它由ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)两个国际标准化组织的专家联合组成。JVT的工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标H264标准。H264标准将作为MPEG-4标准的一个新的部分(MPEG-4 part.10)而获得批准,是一个面向未来IP和无线环境下的新数字视频压缩编码标准。 7 m) Y" y+ e0 L. ?/ G
6 E8 r! J) x) Z0 h& y6 h i8 m/ T# m- A
H264标准的主要特点如下:
2 t, }* d" [# w! Q0 A7 i$ g
6 g0 G+ ?9 m Z 1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率。
+ c- A( B1 B* ~ v" p$ L1 T& u5 j1 O% I9 E' }0 z
2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
* V7 v4 M/ w1 W b2 @
8 i4 o6 F2 V: z 3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。
4 G7 }3 E U- s. }4 L; q& s: l% e" ~2 p- v; q' o4 W9 p
4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。
! S- `2 s* J5 m, S- h
% H/ B: f7 d9 A& P4 w9 {8 G 5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。
9 L+ s! S3 ?4 o& ~
8 c( ^7 Y" n& }: s, h: m 6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
5 a2 Z- ?8 `0 E$ } `9 Z+ k9 U- z; \/ {9 V4 l3 ~
7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。
7 L) G$ u. o3 r3 [$ y+ w. d$ B& {
/ K9 j5 ?$ K/ K/ N 8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。 * j5 e1 S+ W3 s
$ M8 u3 o; _3 C# ?* M3 }( X
H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想码流调度器)、Hypothetical Stream Scheduler(HSS,假想参考解码)。[2].
2 Y" G; y) e2 J# v6 K5 u1 P编辑本段: o4 u% ]' {3 U* h* {! @' i+ ^# N
H.264解码! G( G, G0 g" o! R% D F5 C
由于目前蓝光格式的统一,使得市面上绝大多数的高清视频均是采用H.264的格式编码,它又分为四个最主要步骤,分别是流处理,逆变换,动态补偿,去方块滤波,这四步也是资源消耗的主要四个部分。 8 D+ w9 {4 X' Y3 }* g8 e! p; [
) N v- m4 S+ e, C1 O
H.264解码的四个步骤中的第一步“CAVLC/CABAC解码”是最为消耗运算资源,这方面远高于其他三步(简单的说,CAVLC/CABAC是H.264编码规范中两种不同的算法,都是为了提高压缩比,其中CABAC比CAVLC压缩率更高,但解码时自然也要求更高)。 9 X+ E: R2 ^) ]0 \
& V* ^- H4 U! P1 D! h' y
如果所有四个步骤全采用处理器纯软件解码运算,当碰上HDDVD版本的高码率H.264视频,处理器的负载会非常巨大,即使能流畅播放高清视频,也会因为处理器压力过重而影响其他同时开启的应用程序的执行效率。 ) }7 u, M, c) G1 L9 n9 E
7 p, p6 Z5 u q$ P 如果让处理器解码“CAVLC/CABAC解码”和“反向转换(Inverse Transformation)”两部分,由显示核心承担“运动补偿”和“解码去块”功能,则可以在一定程度上降低处理器的压力。 不过对于使用单核处理器或低端双核处理器的用户来说,这依然无法很好的应付这类视频;其次,碰上编码率更高的视频,依然会给处理器造成很大的处理难度,导致视频播放的不确定性,可能消费者会遇到某些视频可以流畅播放,但是有些视频却丢帧的情况。 6 J' |5 E) p9 {8 b; e# ]
" q8 `& w% z$ }& w 通过以上两点可以看出,由显示核心承担全部的H.264视频解码和处理过程,让其解码运算可以基本不依赖处理器将是最为经济、便捷的方法。如果能实现这一点,以后消费者就无需过分担心自己的处理器性能如何,不同的视频编码率导致的负载差距过大等等问题,只要选择一颗能支持“H.264全解码”的显示核心,就能无所顾忌的播放所有高清视频,而采用了高清加速引擎的英特尔GMA X4500HD芯片组则能够轻松全程解码H.264格式的高清视频,再加上高级去交错技术、电影模式检测、细节增强技术、ProcAMP技术和最新的显示连接技术则能够从图像品质、色彩饱和度以及高清接口等方面提升用户的高清体验。
U$ {: ?. b4 w: s' ~/ ]1 F- |5 C编辑本段4 S) ~- A8 h6 E
H.264的性能比较
# @/ e+ f( W6 p0 J5 N: B( g TML-8为H.264的测试模式,用它来对H.264的视频编码效率进行比较和测试。测试结果所提供的PSNR已清楚地表明,相对于MPEG-4(ASP:Advanced Simple Profile)和H.263++(HLP:High Latency Profile)的性能,H.264的结果具有明显的优越性。
" m+ ^7 p4 o4 S( }& ~6 [, z' l; R5 t7 K2 {$ e( X
H.264的PSNR比MPEG-4(ASP)和H.263++(HLP)明显要好,在6种速率的对比测试中,H.264的PSNR比MPEG-4(ASP)平均要高2dB,比H.263(HLP)平均要高3dB。6个测试速率及其相关的条件分别为:32 kbit/s速率、10f/s帧率和QCIF格式;64 kbit/s速率、15f/s帧率和QCIF格式;128kbit/s速率、15f/s帧率和CIF格式;256kbit/s速率、15f/s帧率和QCIF格式;512 kbit/s速率、30f/s帧率和CIF格式;1024 kbit/s速率、30f/s帧率和CIF格式。 0 p. S" E! n0 W
编辑本段: ]8 O0 z* I$ Q, i
H.264的错误恢复工具
- h5 C. k% j9 L8 j ] 错误恢复的工具随着视频压缩编码技术的提高在不断改进。旧的标准(H.261、H263、MPEG-2的第二部分)中,使用片和宏块组的划分、帧内编码宏 块、帧内编码片和帧内编码图像来防止错误的扩散。之后改进的标准(H.263+、MPEG-4)中,使用多帧参考和数据分割技术来恢复错误。 * O' {! S% c( m, \, u
7 @; l* o0 c( n$ l Z. I8 ] H.264标准在以前的基础上提出了三种关键技术:(1)参数集合,(2) 灵活的宏块次序(FMO),(3)冗余片(RS)来进行错误的恢复。 1. 帧内编码
" c& M; w, K O% k L H.264中帧内编码的技术和以前标准一样,值得注意的是:
, ]6 w4 N9 t0 }& O1 i! A# n5 d0 {$ R7 Y& b
(1)H.264中的帧内预测编码宏块的参考宏块可以是帧间编码宏块,帧内预测宏块并不像H.263中的帧内编码一样,而采用预测的帧内编码比非预测的帧 内编码有更好的编码效率,但减少了帧内编码的重同步性能,可以通过设置限制帧内预测标记来恢复这一性能。
) w: D- }/ m: o2 X B+ B6 `) w6 x: v2 H3 X
(2)只包含帧内宏块的片有两种,一种是帧内片(Islice),一种是立即刷新片(IDRslice),立即刷新片必存在于立即刷新图像 (IDRpicture)中。与短期参考图像相比,立即刷新图像有更强壮的重同步性能。
' U4 a- ~' Z c* M y" c6 Y& s- d# G1 c: ?! d+ K A3 m: h+ ^
在无线IP网络环境下,为了提高帧内图像的重同步性能,要采用率失真优化编码和设置限制帧内预测标记。 2. 图像的分割9 Y5 i+ r2 n+ g' l+ b/ F; n
H.264支持一幅图像划分成片,片中宏块的数目是任意的。在非FMO模式下,片中的宏块次序是同光栅扫描顺序,FMO模式下比较特殊。片的划分可以适配不同的MTU尺寸,也可以用来交织分组打包。 3. 参考图像选择
7 P. c( }- ] D! T- [ 参考图像数据选择,不论是基于宏块、基于片,还是基于帧,都是错误恢复的有效工具。对于有反馈的系统,编码器获得传输中丢失图像区域的信息后,参考图像可 以选择解码已经正确接收的图像对应的原图像区域作参考。在没有反馈的系统中,将会使用冗余的编码来增加错误恢复性能。 4. 数据的划分
" P \! W' I& Y5 y4 B 通常情况下,一个宏块的数据是存放在一起而组成片的,数据划分使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。 0 f: J% n3 V6 i- u3 x% M
9 ^# S' E3 Z/ d- q3 o' r- W4 \; D 在H.264中有三种不同的数据划分。 1 {) T, \. U" O: c0 @3 {
) |, L Y7 @$ ]9 i. V q
头信息划分:包含片中宏块的类型,量化参数和运动矢量,是片中最重要的信息。 6 K3 n/ o/ x2 T2 _+ R4 T% x
$ Q) _2 U$ G4 ~$ r b8 R 帧内信息划分:包含帧内CBPs和帧内系数,帧内信息可以阻止错误的蔓延。
% _! Z7 ~" p! F/ y: S* t% F0 F2 V) n2 D, Z% I
帧间信息划分:包含帧间CBPs和帧间系数,通常比前两个划分要大得多。 3 d0 c6 d0 F; u
7 p: F( }; o& c) b; s- D 帧内信息划分结合头信息解出帧内宏块,帧间信息划分结合头信息解出帧间宏块。帧间信息划分的重要性最低,对重同步没有贡献。当使用数据划分时,片中的数据根据其类型被保存到不同的缓存,同时片的大小也要调整,使得片中最大的划分小于MTU尺寸。
1 i, O. \5 D* `6 U" `# ~. H: ~; r, Y* q! |& H9 Q
解码端若获得所有的划分,就可以完整重构片;解码端若发现帧内信息或帧间信息划分丢失,可用的头信息仍然有很好的错误恢复性能。这是因为宏块类型和宏块的运动矢量含有宏块的基本特征。 5. 参数集的使用0 ?& {: I$ Q; J6 b- E. W
序列的参数集(SPS)包括了一个图像序列的所有信息,图像的参数集(PPS)包括了一个图像所有片的信息。多个不同的序列和图像参数集经排序存放在解码 器。编码器参考序列参数集设置图像参数集,依据每一个已编码片的片头的存储地址选择合适的图像参数集来使用。对序列的参数和图像的参数进行重点保护才能很 好地增强H.264错误恢复性能。
1 y9 y1 n8 R8 W: I# p! \/ h h i4 {% q4 Y0 U$ Y% V' R# t$ L# _
在差错信道中使用参数集的关键是保证参数集及时、可靠地到达解码端。例如,在实时信道中,编码器用可靠控制协议及早将他们以带外传输的方式发送,使控制协 议能够在引用新参数的第一个片到达之前把它们发给解码器;另外一个办法就是使用应用层保护,重发多个备份文件,确保至少有一个备份数据到达解码端;第三个 办法就是在编解码器的硬件中固化参数集设置。 6. 灵活的宏块次序(FMO); F/ p/ p5 g# Z
灵活的宏块次序是H.264的一大特色,通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码 效率,增加了时延,但增强了抗误码性能。FMO模式划分图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分 割,使得分割后的片的大小小于无线网络的MTU尺寸。经过FMO模式分割后的图像数据分开进行传输,以棋盘模式为例,当一个片组的数据丢失时可用另一个片 组的数据(包含丢失宏块的相邻宏块信息)进行错误掩盖。实验数据显示,当丢失率为(视频会议应用时)10%时,经错误掩盖后的图像仍然有很高的质 量。 7. 冗余片方法2 J4 A/ q- }% ?, y( O
前边提到了当使用无反馈的系统时,就不能使用参考帧选择的方法来进行错误恢复,应该在编码时增加冗余的片来增强抗误码性能。要注意的是这些冗余片的编码参 数与非冗余片的编码参数不同,也就是用一个模糊的冗余片附加在一个清晰的片之后。在解码时先解清晰的片,如果其可用就丢弃冗余片;否则使用冗余模糊片来重 构图像。 |
|