帧内宏块预测,实际上就是利用宏块左方和上方的像素来构造一个预测宏块,并计算出它与真实宏块之间的差值,H264内部保存的数据是差值而非真实宏块的像素值,以此来降低码率。
我们通过翻译H.264_MPEG-4 Part10白皮书帧内预测章节,来看下帧内预测原理:
章节3 帧内宏块的预测
1.介绍
Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG是对视频图像编码压缩做了新的定义。新标准的1,2项被称为H.264 and also MPEG-4 Part 10, “Advanced Video Coding”。本文档描述帧内编码宏块预测的方法。
如果一个块或宏块是帧内编码模式,那将会生成一个预测块,该预测块是基于之前已编码或重建(但未滤波)的块而生成的。这个预测块P会与当前将要编码的块相减。对于亮度采样,P可能由每个4x4子块或1一个16x16宏块组成。对于每个4x4亮度块,这里一共有9种可选的预测模式;对于一个16x16亮度块,有4种预测模式,对于每种4x4色度块,只有一种预测模式。
2.4x4亮度预测模式
图1显示了一张QCIP图片的一个亮度宏块,这个4x4亮度块将被预测。这些采样点的上方和左方已经被编码和重建,因此他们可以在编码器和解码器中生成一个预测参考块。这个预测块P是基于图2中的A到M标记的采样点来计算的。注意在一些场景下,在当前slice中,并不是所有A到M采样点都是可用的:为了保持解码slices的独立性,只有在当前slice下的采样点才是对预测有效的。DC直流预测(模式0)会基于A-M采样点那些是可用的而改变;其他模式(1-8)只能在所有需要的预测采样点都可用的情况下才能使用。(例外,如果E,F,G和H都不可用,他们的值将拷贝自D)。
图3的箭头指示了每一种模式的预测方向。对于3-8模式,预测采样值是基于采样值A-Q加上权重而生成的。编码器将选择预测块P和将被编码的块之间的差值最小的一种模式。
帧内预测图3.png
样例:用这9种预测模式(0-8)计算图1的4x4块。图4显示了每种预测模式生成的预测块P。每种预测模式的绝对值误差和(SAE)表示预测差值的大小。在这个例子中,当前最佳预测模式是模式7(vertical-right
),因为它算出的SAE最小。视觉上对比显示了模式7的P块最接近原始4x4块。
帧内预测图4.png
3.16x16亮度预测模式
正如上面所说的任一种4x4亮度块预测模式,整个16x16宏块也可以被预测。有4种可用的预测模式在下表:
Mode0(垂直):从上方采样值推测。
Mode1(水平):从左方采样值推测。
Mode2(DC):从上方和左方的平均值。
Mode3(Plane):对上方和左方的采样值进行一个线性“plane”映射。这个对于平滑渐变亮度的区域效果非常好。
样例:图6显示一个在上方和左方有已经编码好的采样值的亮度宏块。图7显示的预测结果表明最佳匹配的是模式3.
帧内预测图6.png 帧内预测图7.png
网友评论