音视频高手课07-H264编码基础03帧内预测(3)

MV预测

每个分割MV 的编码需要相当数目的比特,特别是使用小分割尺寸时。为减少传输比特数,可利用邻近分割的MV 较强的相关性,MV 可由邻近已编码分割的MV 预测而得。预测矢量MVp 基已计算MV 和MVD(预测与当前的差异)并被编码和传送。MVp 则取决于运动补偿尺寸和邻近MV 的有无。

E为当前宏块或宏块分割子宏块。A、B、C 分别为E 的左、上、右上方的三个相对应块。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果E 的左边不止一个分割,取其中最上的一个为A;上方不止一个分割时,取最左边一个为B。图显示所有分割有相同尺寸时的邻近分割选择。下图给出了不同尺寸时临近分割的选择。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

B 片预测

img

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

B片中的帧间编码宏块的每个子块都是由一个或两个参考图像预测而得。该参考图像在当前图像的前面或者后面。参考图像存储于编解码器中,其选择有多种方式。下图显示了三种方式:一个前向和一个后向的(类似于MPEG 的B 图像预测);两个前向;两个后向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

img

参考图像

B 片用到了两个已编码图像列表:list0 和list1,包括短期和长期图像两种。这两个列表都可包含前向和后向的已编码图像(按显示顺序排列)。其中,

List0:最近前向图像(基于POC)标为index0,接着是其余前向图像(POC 递增顺序),及后向图像(从当前图像POC 递增顺序)。

List1:最近后向图像标为index0,接着是其余后向图像(POC 递增顺序),及前向图像(从当前图像POC 递增顺序)。

举例:一个H.264 解码器存储了6 幅短期参考图像。其POC 分别为:123,125,126,128,129 和130。当前图像为127。所有6 幅短期参考图像在list0 和list1 中都标为“用作参考”,如下表所示。

img

img

预测模式选择

B片的预测方式包括:宏块分割方式、双向选择方式、参考列表选择方式等等。具体说,B 片中宏块分割可由多种预测方式中的一种实现,如直接模式、利用list0 的运动补偿模式、利用list1 的运动补偿模式或者利用list0 和list1 的双向运动补偿模式。每个分割可选择各自的不同的预测模式(如下表所示)。如果8×8 分割被使用,每个8×8 分割所选则的模式适用于分割中的所有亚分割。下图给出了例子,左边的两个16×8 分割分别使用List0 和双向预测模式,而右边的4 个8×8 分割分别采用直接、list0、list1 和双向预测四种模式。

分割选 择
16×16直接、list0、list1、双向
16×8/8×16list0、list1、双向(每个分割独立选择)
8×8直接、list0、list1、双向(每个分割独立选择)

img

img

双向预测

双向预测中,参考块(与当前分割或亚分割同尺寸)是由list0 和list1 的参考图像推出的。从list0和list1 分别得出两个运动补偿参考区域(需要两个MV),而预测块的像素取list0 和list1 相应像素的平均值。当不用加权预测时,用下列等式:

img

其中,pred0(i,j)和pred1(i,j)为由list0 和list1 参考帧推出的预测像素,pred(i,j)为双向预测像素。计算出每个预测像素后,运动补偿残差通过当前宏块像素减pred(i,j)而得。举例:一宏块用B_Bi_16×16 模式预测。下图分别给出了基于list0 和list1 参考图像的运动补偿参考区域。以及根据者两个参考区域的双向预测。

img

img

img

直接预测

直接预测模式编码的B片宏块或宏块分割不传送MV。相反,解码器计算基于已编码MV 的list0和list1MV 并计算出解码残差像素的双向预测运动补偿。B 片中的skipped 宏块便由解码器用直接模式重建而得。

片头会指明将用时间还是空间方式计算直接模式或其分割的矢量。在空间模式中,list0 和list1 预测矢量计算如下:

如果第一幅list1 参考图像的co-located MB 或分割有一个MV 幅度上小于±1/2 亮度像素,其一个或两个预测矢量置为0;否则预测list0 和list1 矢量用以计算双向运动补偿。

在时间模式中,计算步骤如下:

1) 找出 list1 图像co-located MB 或分割相应的list0 参考图像。该list0 参考作为当前MB 或分割的list0 参考;

2) 找出 list1 图像co-located MB 或分割相应的list0MV;

3) 计算当前图像和 list1 图像的POC 的MV,作为新的list1 MV1;

4) 计算当前图像和 list0 图像的POC 的MV,作为新的list0 MV0。

这些模式在预测参考宏块或分割不提供或帧内编码等情况下需作出调整。举例:当前宏块list1 参考在当前帧两幅图像后出现,如下图所示。List1 参考co-located MB有一MV(+2.5,+5),指向list0 参考图像(出现于当前图像3 幅图像前)。解码器分别计算指向list1

和list0 的MV1(-1,-2)和MV0(+1.5,+3)。

img

img

加权预测

加权预测是一种用来修正 P 或B 片中运动补偿预测像素方法。H.264 中由3 中加权预测

类型:

1) P 片宏块“explicit”加权预测;

2) B 片宏块“explicit”加权预测;

3) B 片宏块“implicit”加权预测;

每个预测像素pred0(i,j)和pred1(i,j)在运动补偿之前通过加权系数ω0 和ω1 修正。在“explicit”类型中,加权系数由编码器决定并在片头中传输。在“implicit”类型中,系数ω0 和ω1 由相应list0 和list1 参考图像的时间位置推出。大的系数用于时间上接近当前图像的情况,小的则用于时间上远离当前图像的情况。

可见,H.264 采用树状结构的运动补偿技术,提高了预测能力。特别是,小块预测提高了模型处理更好的运动能够描述的能力,产生更好的图像质量。H.264 运动向量的精度提高到1/4 像素(亮度),运动补偿算法的预测能力得到进一步提高。H.264 还提供多参考帧可选模式,,这将产生更好的视频质量和效率更高的视频编码。相对于1 帧参考,5 个参考帧可以节约5%10%的比特率,且有助于比特流的恢复。当然,并不是说参考帧越多越好,经实验,考虑到缓冲区的能力和编码器的效率,目前一般都选取35 个参考帧

最后

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

阿里P7Android高级教程

下面资料部分截图,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

附送高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、近期面试跳槽、自身职业规划迷茫的朋友们。

Android核心高级技术PDF资料,BAT大厂面试真题解析;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值