第五章 H.264/AVC编码器原理
5.1 概述
H.264不仅具有高压缩比,而且具有良好的网络亲和性,具有在恶劣的传输条件下抗阻塞、抗误码的健壮性。
H.264的基本部分支持3个不同额档次的应用:
(1)基本档次:主要用于“视频会话”
(2)扩展档次:用于网络的视频流
(3)主要档次:消费电子的应用
5.2 H.264/AVC编解码器
5.2.1 H.264编解码器的特点
5.2.2 H.264编码器
H.264仍采用变换和预测的混合编码。
5.3 H.264/AVC的结构
一般视频帧分为两种:连续或隔行视频帧。活动量较小或静止的图像宜采用帧编码,活动量大的则采用场编码。
H.264的功能分为两层:视频编码层(VCL,Video coding Layer)和网络提取层(NAL,Network Abstraction Layer)。VCL数据即编码处理的输出,表示编码后的视频数据序列。
一个视频图像可编码成一个或多个片,每片包含整数个宏块。编码片之间是独立的,这样可以防止误码的扩散和传输。
编码片有5种不同的类型,除了I、P、B片之外,还有SP和SI片。
5.4 帧内预测
在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。
问题:SAE是什么指标?SAE为预测残差
5.4.4 帧内预测模式的选择和编码
1、帧内预测模式的选择
H.264采用拉格朗日率失真优化(RDO,Rate Distortion Optimization)策略进行最优化编码模式选择,通过遍历所有可能的编码模式,最后选择最小率失真代价模式作为最佳帧内预测模式。
2、帧内预测模式的编码
由于相邻块的帧内模式通常是相关的,因此不用将所有的块的预测模式都进行一一传输,可以利用这个相关性减少需要传输的比特率。例如,如果A和B预测模式为1,那么当前块E的最佳预测模式很可能也为1。
5.5 帧间预测
H.264增加了包括可变尺寸块运动补偿、1/4像素精度的运动估计以及多帧参考等。
5.5.1 可变尺寸块运动补偿
每个分割或子宏块都有一个独立的运动补偿。每个运动矢量MV必须被编码和传输,分割的选择也需编码到压缩比特流中。
5.5.2 运动矢量
亚像素以及1/4、1/8像素在图像中是不存在的,需要通过相应像素内插获得。
5.5.3 MV预测
每个分割MV的编码需要相当数目的比特,特别是使用小的分割尺寸时,为减少传输比特数,利用邻近分割的MV较强的相关性,MV可由邻近已编码的MV预测而得。预测矢量MVp基于已计算MV和MVD(预测与当前的差异),并被编码和传送。MVp取决于运动补偿尺寸和邻近MV的有无。
5.5.4 B片预测
1、参考图像
B片用到了两个已编码图像列表:list0和list1,包括短期和长期图像两种。图像的显示顺序排列采用图像序号POC表示。
2、预测模式选择
B片预测方式包括:宏块分割方式、双向选择方式、参考列表选择方式等。
3、双向预测
双向预测中,参考块是由list0和list1的参考图像得出的。从list0和list1分别得出两个运动补偿参考区域(需要两个MV),而预测块的像素取list0和list1相应像素的平均值。
4、直接预测
直接预测模式编码的B片宏块或宏块分割不传输MV,而是由解码器计算list0和list1中已编码MV,得出直接模式的双向预测运动补偿。
5.5.5 加权预测
加权预测是一种用来修正P片或B片中运动补偿预测像素方法。
5.6 H.264的SP/SI帧技术
为了顺应视频流的宽带自适应性和抗误码性能的要求,又定义了两种类型:SP帧和SI帧。
SP帧能够参照不同参考帧重构出相同的图像帧。SI帧是基于帧内预测编码技术,其重构图像方法与SP完全相同。
5.6.1 SP/SI帧的应用
1、流间切换
视频服务应该可以根据网络条件,调整编码码率,实现带宽的自适应性。
实现带宽自适应最好的方法就是设置多组不通过的信源编码参数对同一视频序列分别进行压缩,从而生成多组独立的码流。
2、拼接(Splicing)与随机接入(Random Access)
当视频流的内容相同,编码参数不同时,采用SP帧;而当视频流内容相差很大时,采用SI帧将更有效。
3、错误恢复
采用不同的参考帧预测,可以获得同一帧的多个SP帧,利用这种特性可以增强错误恢复能力。
5.7整数变换与量化
为了进一步压缩图像,一般可以采用变换编码及量化来消除图像信号中的相关性及减小图像编码的动态范围。在频域中,图像信号能量大部分集中在低频区,相对时域信号,码率有较大的下降。