十九帧间预测编码:帧间预测编码的基本原理
Posted 叮咚咕噜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十九帧间预测编码:帧间预测编码的基本原理相关的知识,希望对你有一定的参考价值。
一、视频的时间冗余
1、帧内预测与帧间预测编码的区别
- 帧内编码:
- 不依赖参考图像,可以独立解码,因而可以作为一个GOP的起点和随机接入点,即IDR帧
- 输出的码率相对较高,即压缩率较低
- 帧内编码为了确保可独立解码这一最关键的特性,只利用了图像的空间冗余进行压缩,无法充分利用视频信息前后帧之间的关联
- 帧间编码:
- 帧间编码所利用的是视频的时间冗余,主要编码运动(运动矢量)和纹理(预测残差)信息
- 压缩率较高
- 通常在视频信息中,每一帧所包含的物体对象与其前后帧之间存在运动关系,这种物体的运动关系即构成帧与帧之间的时间冗余。由于帧与帧之间物体的运动相关性大于一帧内部相邻像素之间的相关性,尤其对于时间相近的图像之间,时间冗余比空间冗余更加明显。
- 图像之间物体的运动关系可由下图表示:
二、块结构的运动估计
- H.264:块结构的混合编码
- 帧间编码一一个宏块为最小执行单位
- 可分为几个模块:
- 预测编码(包括运动估计/运动补偿过程)
- 变换/量化编码
- 熵编码
- 参考帧管理
- 帧间编码中的变换、量化编码:类似帧内编码
- 预测编码:
- **基于块的运动估计(Motion Estimation, ME):**通过当前的像素块,然后在参考帧中查找与当前要编码像素块最匹配的参考块;
- **运动补偿(Motion Compensation, MC):**同运动估计是对应的,主要存在于解码的环路中,根绝解码得到的残差然后通过运动矢量查找到相应的参考块,然后参考块和残差还原出解码后的重建像素块
为了给后续的帧内预测提供参考帧,还需要内部解码的环路过程,使用运动补偿还原出重建的像素块
三、运动矢量
运动估计,有时也称作运动搜索,即在相应参考帧中搜索当前像素块的对应参考像素块,使最终的编码代价最小。为了实现这个目标,相比帧内编码所定义的16×16和8×8两种宏块划分方式,帧间编码定义了更多、更复杂的方法。
1、运动估计宏块划分
- 一个宏块将按帧间编码进行编码时,按照预定义的方法进行分割
- 针对帧间预测,H.264定义了4种宏块分割和4种子宏块分割方式:
- 宏块分割:16 * 16、16 * 8、8 * 16、8 *8
- 子宏块分割:8 * 8、8 * 4、4 * 8、4 * 4
- 当某个宏块配置为8 * 8形式时,每个8 * 8宏块将按照子宏块的分割方法来进一步分割;当某个宏块配置为16 * 16、16 * 8、8 * 16就不再按照子宏块分割了
- 帧间预测的宏块分割如下图所示:
2、运动矢量
以上是关于十九帧间预测编码:帧间预测编码的基本原理的主要内容,如果未能解决你的问题,请参考以下文章
H.264/AVC视频编解码技术详解二十三帧间预测编码:帧间预测编码的基本原理