3.4.3 H.264的基本算法

1.帧内预测

H.264中采用了基于像素块的帧内预测技术,主要可分为以下类型。

◎ 16像素×16像素的亮度块:4种预测模式。

◎ 4像素×4像素的亮度块:9种预测模式。

◎ 色度块:4种预测模式,与16像素×16像素的亮度块的4种预测模式相同。

16像素×16像素的亮度块的4种预测模式如图3-4所示。

图3-4

4像素×4像素的亮度块的9种预测模式如图3-5所示。

图3-5

2.帧间预测

H.264中的帧间预测方法使用了基于块的运动估计和补偿方法,主要特点如下。

◎ 有多个候选参考帧。

◎ B帧可以作为参考帧。

◎ 参考帧可以任意排序。

◎ 有多种运动补偿像素块形状,包括16像素×16像素、16像素×8像素、8像素×16像素、8像素×8像素、8像素×4像素、4像素×8像素和4像素×4像素。

◎ 有1/4(亮度)像素插值。

◎ 有对交错视频的基于帧或场的运动估计。

把帧间预测的宏块分割为子宏块的方式如图3-6所示。

图3-6

亚像素插值的表示如图3-7所示。其中,Pixel表示图像中整像素点的位置,Half Pixel表示1/2像素插值的位置,Quat.Pixel表示1/4像素插值的位置。

图3-7

3.交错视频编码

针对隔行扫描的视频,H.264专门定义了用于处理此类交错视频的算法。

◎ 图像层的帧场自适应(Picture Adaptive Frame Field,PicAFF)。

◎ 宏块层的帧场自适应(MacroBlock Adaptive Frame Field,MBAFF)。

4.整数变换算法和量化编码

H.264 的变换编码创新性地使用了类似离散余弦变换的整数变换算法,有效降低了运算复杂度。对于基础版的H.264,变换矩阵为4像素×4像素;在FRExt扩展中,还支持8像素×8像素的变换矩阵。

H.264的量化编码算法使用的是标量量化。

5.熵编码

H.264针对不同的语法元素指定了不同的熵编码算法,主要有:

◎ 指数哥伦布编码(Universal Variable Length Coding,UVLC)算法。

◎ 上下文自适应的变长编码(CAVLC)算法。

◎ 上下文自适应的二进制算术编码(CABAC)算法。