运动补偿时,为了提高运动补偿的精度,H.264引入了分数像素精度预测,这需要对分数像素点进行内插。如果运动矢量是整数,则直接获得像素值。如果运动矢量不是整数,则通过像素内插获得分像素值。该像素值作为预测值和反变换值相加获得解码值,图2-10给出了亮度像素1/4精度内插示意图(其中大写字母表示整数位置像素点,小写字母表示分数位置需要内差的像素点)。
图 2-10 亮度像素1/4精度内插示意图
首先生成半像素点,半像素点(如b, h )通过对相应整像素点进行水平和垂直的6抽头滤波得出,权重为(1/32, -5/32, 5/8, 5/8, -5/32, 1/32)。例如b计算如下:
4个整像素点中间的半像素点(如j)需进行水平和垂直两次插值后得出,因此的生成涉及到周围36个整像素点。
1/4像素值由整数像素和半像素点求均值取得,例如:
相应地,色度像素需要1/8精度地MV,也同样通过整像素点通过双线性内插得出。
2.5.3 MV预测
每个像素快都需要一个对应的MV来表示其运动矢量,当帧间预测大量采用小尺寸像素块进行运动估计时,将会需要相当数量的比特对MV进行编码,将会降低对视频信号的压缩率。为了减少这样的额外开销,H.264标准引入了MV预测的机制,利用相邻块的MV具有相关性的特点对MV进行预测。预测的运动矢量MVp由之前之前编码的相邻块的MV和差值MVD计算得到,计算方法取决于运动估计时采用的分块大小和相邻块MV。通过这样的方式,可以大大减少因为编码MV而带来的压缩性能的额外损失,从而提高压缩的效率。
2.6 整数变换技术
H.264中使用了三种变换方法:第一种为4×4的整数变换,针对亮度信号和色差信号的差值;第二种为4×4的哈达玛(Hadamard)变换,针对16×16的帧内预测模式下亮度信号经4×4整数变换后得到的直流系数组成的4×4矩阵;第三种为2×2的哈达玛变换,针对色差信号经4×4整数变换后得到的直流系数组成的2×2矩阵。作为H.264的一个基本编码单元,每个16×16的宏块需要对24个4×4的块进行整数变换,并对两个2×2的块进行哈达玛变换,当宏块采用帧内16×16预测时还需要再进行一次4×4的哈达玛变换,如图2-11所示。
图 2-11 哈达码变换系数示意图
以上提到的4×4整数变换是在4×4DCT的基础上演变而来的。H.264对像素值进行的变换、反变换,量化、反量化以及其他运算均在整数范围内进行,所以不需要进行浮点运算,这样做可以有效降低计算机在实际编码处理时的计算量。此外,进行各种变换的最小单位是4×4块,而不是以往常用的8×8块。由于用于变换块的尺寸缩小,运动物体的划分更精确,这样不但变换计算量比较小,而且在运动物体边缘处的衔接误差也大为减小。为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个,共16个)进行第二次4×4块的变换,对色度数据的4个4×4块的DC系数(每个小块一个,共4个)进行2×2块的变换。
2.7 量化
H.264对变换参差系数的量化使用了52级步长的量化器,步长是以12.5%的复合率递进的,而不是一个固定常数。量化步长范围的扩大使得编码器能够更灵活、精确地进行控制,在比特率和图像质量之间达到折中。
2.8 环路滤波技术
为了尽量消除在预测和量化过程中产生的块效应现象,H.264采用了一个自适应的环路滤波器。这个滤波器根据块边缘信息的不同采用不同的滤波强度,因而可以在有效消除块效应的同时又不会模糊图像的真实边缘信息,滤波强度也可以在编码器参数配置里进行调整。 H.264视频转码的设计与实现+文献综述(6):http://www.751com.cn/tongxin/lunwen_4076.html