预测编码
预测编码是视频编码中的核心技术之一,对于视频信号来说,一副图像内临近的像素之间有着比较强的相关性,相邻图像之间也有很强的时间相关性。因此,先进的视频编码往往采用帧内预测和帧间预测的方式,使用图像内已经编码像素预测临近像素,或者利用已经编码的图像预测编码图像。从而有效去除视频空域和时域的相关性,视频编码器对预测后的残差而不是原始像素值进行变换,量化,墒编码,由此大幅度提高编码效率。
自差分编码被应用于视频压缩以来,预测编码一直是视频编码标准的重要内容,新一代的H265/HEVC 标准采用了大量编码新方法,其中有很多属于预测编码范畴。本章从预测编码的原理出发,分别介绍帧内预测和帧间预测的基本方法,并详细介绍H265/HEVC中的新预测编码技术。
一 预测编码的原理
预测编码是指利用已经编码的一个或者几个样本值,根据某种模型或者方法,对当前样本值进行预测,并对样本真实值和预测值之间的差值进行编码。例如像中相邻像素之间有较强的相关性,当前像素的灰度值与其相邻像素在很大概率上是接近的,因此,我们可以利用已经编码的临近像素预测当前像素,并将真实值与预测值的差值进行编码。这样可以大大提高视频信号的压缩效率。
视频信号是一个在空间以及时间上排列的三维信号,同一时刻采集的在空域分布的像素样本构成了一幅图像,
不同时刻采集的图像按照时间顺序排列构成了视频序列,如果将视频中的每一个像素看成是一个信号源符号,它通常与空域或者时域上临近的像素均具有较强的相关性,因此视频是一种有记忆信源。
联合编码和条件编码是两种有记忆信源的有效编码方式,联合编码通常将图像分割成固定大小的块,将一个块作为一个信源符号来考察。对每一块内的像素进行联合编码,
联合编码充分利用一个块内像素间的相关性,但是未能利用相邻块之间的相关性。条件编码如图4.2 所示,当前像素的编码依赖于临近已经编码的像素,各像素将以滑动窗口的形式进行条件编码,这种方式改善了联合编码的缺陷,图像内临近像素之间的相关性得到了充分的利用。
预测编码技术通过预测模型消除像素间的相关性,得到的差值信号可以认为没有相关性,或者相关性很小,因此可以作为无记忆信源进行编码,预测编码技术可以可理解为一种特定的条件编码,其利用特定的预测模型反映像素间的依赖关系,如在图4.2中,当前像素依赖于左方以及上方的已经编码像素,可以利用这一简单的依赖关系直接根据参考像素得到预测值,然后将当前像素真实值与预测值相减,再对差值进行编码。
a | a | a | a | a | a | a | a | a |
b | b | b | b | b | b | b | b | |
c | c | c | c | c | c | c | ||
d | d | d | d | d | d | |||
预测编码的基本过程如图4.3所示,对于当前输入像素值x(n)首先利用已经编码的像素的重建值得到当前像素的预测值p(n),然后对二者的差值e(n)进行量化,墒编码,同时利用量化后的残差e(n)与预测值p(n)得到当前像素的重建值x(n),用于预测之后待编码的像素,对应的解码基本过程如图4.3所示,经过墒编码可以得到当前像素预测误差的重建值e(n),将其与预测值p(n)相加即可得到当前像素的重建值x(n)。
x(n) + e(n) 量化器 e(n) 熵编码器。信道
- p(n) +
预测值 x(n)
预测编码基本过程
视频预测编码的主要思想是通过预测来消除像素间的相关性,根据参考像素位置的不同,视频预测编码技术主要分为两大类。
(1)帧内预测,即可利用当前图像已经编码的像素生成预测值
(2)帧间预测,即利用当前图像之前已经编码的图像的重建像素生成预测值。