十九帧间预测编码_4宏块的帧间预测解码
Posted 叮咚咕噜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十九帧间预测编码_4宏块的帧间预测解码相关的知识,希望对你有一定的参考价值。
帧内预测宏块解码:通过帧内预测获取预测块,然后使用残差数据的反量化、反变换获取残差像素,通过残差像素与预测像素的求和来构成重建的像素块;
帧间编码宏块:思路大体一致,只是预测方式改变了,通过参考帧和运动矢量来获取相应的像素块,然后执行反量化变换等;
一、帧间预测宏块类型
在讨论帧内预测的章节中我们已经讨论过部分宏块类型的分类。我们知道,对于帧间编码的宏块,其划分方式可以分为两步,其一为宏块级划分,其二为子宏块级划分。下面分别讨论这两个步骤。
1.1 帧间预测宏块划分
对于P宏块,其宏块级划分有4种方式:16×16、16×8、8×16和8×8;如果分割成8×8,则每个子宏块还是可以继续划分,前面三个不可以
此外还存在两种模式即P_8x8ref0和P_Skip模式。其定义如下表所示:
其中,P_8x8ref0表示虽然宏块是按照8×8划分,但码流中不传输ref_idx等信息。对于每一个子块,其ref_idx信息默认为0。
从上表中可知,对于P帧的宏块划分,其NumMbPart的取值范围为1、2或4,其MbPartPredMode的取值为Pred_L0或不存在。
对于B宏块,其宏块划分方式有B_Direct_16x16、B_X0_X1_MxN、B_8x8和B_Skip模式。其定义方式如下:
从上表中可知,除了B_8x8需要进一步进行子块划分因此没有MbPartPredMode之外,其他模式均定义了一个或两个的MbPartPredMode值,其取值及含义为:
- Pred_L0:只从List0中选择一个参考帧;
- Pred_L1:只从List1中选择一个参考帧;
- BiPred:双向预测,从List0和List1中各选择一个参考帧;
- Direct:用于B_Direct_16x16和B_Skip模式;
1.2 子宏块的划分
当帧间编码宏块按照8×8划分时,每一个8×8子块可能会进一步进行划分,其划分方法如下表所示:
对P宏块:
对B宏块:
从上述的表格中我们可以看出,对宏块和子宏块的划分,其每一个划分的参数含义都是类似的。比较明显的一个区别是:再对B宏块的8×8子块进行进一步分割后,每一个8×8子块内的分块都只有一个SubMbPredMode,因为其中的所有分块都共享一个参考帧索引。
同宏块划分类似,每一个子块划分的SubMbPredMode可能的取值也包括Pred_L0、Pred_L1、BiPred、Direct等。
以上是关于十九帧间预测编码_4宏块的帧间预测解码的主要内容,如果未能解决你的问题,请参考以下文章
H.264/AVC视频编解码技术详解二十六帧间预测编码:宏块的帧间预测解码