H.265/HEVC学习笔记:帧间预测编码
一、 原理
帧间预测是指利用视频时间域的相关性,使用邻近已编码图像像素预测当前图像的像素,以达到去除视频时域冗余信息的目的。由于视频序列通常包括较强的时域相关性,因此预测残差通常是“平坦的”,即很多残差值接近于“0”。将残差信号作为后续模块的输入进行变换、量化及熵编码,可实现对视频信号的高效压缩。
目前主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,如图4.7所示。其主要原理是为当前图像的每一个像素块在之前已编码图像中寻找一个最佳匹配块,将最佳匹配块作为对当前像素块的预测。其中,寻找最佳匹配块的过程称为运动估计,用于预测的图像称为参考图像,参考块到当前像素块的位移称为运动向量(Motion Vector,MV),当前像素块(真实值)与参考块(预测值)的差值称为预测残差。
在H.265/HEVC中,规定了三种图像:I图像、P图像和B图像。I图像只能使用帧内预测编码;P图像可以使用前一幅图像预测图像,成为“前向预测”;B图像可以使用“前向预测”、“后向预测”和“双向预测”三种模式。B图像中的一个宏块可对应两个MV。
二、 运动估计
2.1 运动估计准则
运动估计的目的是为当前块在参考图像中寻找一个最佳匹配块,因此需要一个准则来判定两个块的匹配程度。常用的匹配准则有最小均方误差(MSE)、最小平均绝对误差(MAD)和最大匹配像素数(MPC)等。为了简化计算,一般用绝对误差和(SAD)来代替MAD。
在上述匹配准则中,最小SAD准则不含乘除法,便于硬件实现,因而使用最广泛。在实际编码中,运动补偿后的残差以及MV、参考图像等信息都需要编码和传输。SAD准则仅考虑了残差的大小,未考虑编码运动信息所需的比特数。H265使用了拉格朗日率失真优化的方法来选择MV,编码器为每个运动向量计算拉格朗日代价:
2.2 搜索算法
H.265/HEVC官方测试编码器HM10.0给出了两种搜索算法:一种是全搜索算法,另一种是TZSearch算法。
全搜索算法是指对搜索窗口内所有可能的位置计算两个块的匹配误差,所得的最小匹配误差对应的MV一定为全局最优MV。然而,全搜索算法复杂度极高,无法满足实时编码。
TZSearch算法是H.265/HEVC中出现的新技术,它的步骤如下:
2.3 亚像素精度运动估计
在实际场景中,由于物体运动的距离不一定是像素的整数倍,因此需要将运动估计的精度提升到亚像素级别。基本思路是使用邻近像素点进行亚像素精度插值。
2.3.1 亮度分量插值算法
2.3.2 色度分量插值算法
三、 MV预测
H.265中新提出了两种MV预测技术:Merge技术和AMVP技术。Merge和AMVP都是用了空域和时域MV预测的思想,通过建立候选MV列表,选取性能最优的一个MV作为当前PU的MV预测。两者的区别:
3.1 Merge模式
Merge模式创建的MV候选列表中存在5个候选MV(及其对应的参考图像)。通过遍历这5个MV,计算率失真代价,选取率失真代价最小的作为该Merge模式的最优MV。编解码端按照相同的方式构建MV候选列表,只需要编码Merge候选列表中的序号即可。
Merge模式创建MV候选列表分为空域和时域两种情形,对于B Slice,还包括组合列表的方式。
3.2 AMVP技术
AMVP(Advanced Motion Vector Prediction)为当前PU创建候选预测MV列表后,编码器选取最优预测MV,并对MV进行差分编码;解码端通过同样的方式建立相同的列表,仅根据运动向量残差(MVD)与预测MV在该列表中的序号即可计算出当前PU的MV。AMVP的候选MV列表也分为空域和时域两种情形,不同的是AMVP的候选列表长度仅为2。
四、 加权预测
加权预测表示预测像素可以用一个(适用于P Slice)或者两个(适用于B Slice)参考图像中像素通过加权系数计算得到。加权预测适用于两图像之间像素值整体变化且有相同变化规律的情形。