在之前的各种文献中都看到过这样的结论:帧间预测的编码效率要高于帧内预测。可是从来没看过详细解释,今天来总结一下。注意这里谈论的编码效率是整体而言的。
从理论入手
首先来看原理:
帧内预测——基于同一帧内已编码块预测,构造预测块,计算与当前块的残差,对残差、预测模式等信息进行编码。其主要去除的是空域冗余。
帧间预测——基于一个或多个已编码帧预测,构造预测块,计算与当前块的残差,对残差、预测模式、运动矢量残差、参考图像索引等信息进行编码。其主要去除的是时域冗余。
简单的来说,帧内预测可以看做空域预测,而帧间预测可以看做时域预测。比较帧内帧间的编码效率应该从空域和时域的冗余来考虑。
在《H.265/HEVC——视频编码新标准及其扩展》一书中看到了比较详细的解释。
一般而言,帧间预测编码效率比帧内预测更高,其原因在于视频的帧间相关性很强,信息的冗余度很高。例如,有统计结果表明,对内容变化不快的256级灰度视频序列,相邻帧之间的帧间差绝对值超过3的像素平均不到一帧像素的4%;对内容变化剧烈的256%级灰度视频序列,帧间差绝对值平均不到一帧像素的7.5%。
可见,视频的时域冗余相当大,帧间预测可以获得相当高的编码效率。
再来想象一下空域冗余的情况。对于平坦视频,空域相关性是十分强的,帧内预测可以获得很不错的编码效率。但并不是所有视频都会有很大的平坦区域,更多情况下视频纹理会比较复杂,平坦区域只是一部分,此时帧内预测效果就不是很理想了。
因此整体而言,帧间预测的编码