前言
今天翻看日历,发现距离上一次的I帧编码的博客已经搁了一个月了…,今天把这个坑填上。
另外注意:这里的子目录,代表进入了函数中。例如:3.main(),那么3.1就是main{ code }
前文回顾:强烈建议回顾一下Overview部分。
H.264压缩技术之总览(Overview)——Matlab源码解析.
H.264压缩技术之视频基础(foundation of learning video)——Matlab源码解析.
H.264压缩技术之帧内预测(I Frame)——Matlab源码解析.
帧间预测
1.环境初始化
这里主要是做了四件事:
- 拿出参考帧(第一帧是I帧,所以一定是存在参考帧的)
- 设置初始分块大小 bs
- 设置运动向量的搜索范围 mr
- 创建运动向量容器 mvm

Seq(:,:,2)=double(VideoSeq_input(:,:,k)) %%k代表是第几帧
X(:,:,2)=Seq(:,:,2);%%注意X(:,:,1)中保留的就是参考帧!!!I帧编码部分已经保存过了
[Seq_r(:,:,2),bits] = encode_p_frame(X,Quant(q),ext,block_size);
%%开始对这一帧进行P帧编码,其实X中包含了要编码的帧和前一个参考帧
%%ext不用管就是一个标志
%Quant代表量化因子
%%当然在前面已经gobal了全局变量 mvm mr bs
2.开始模式决定
进入encode_p_frame函数——>开始模式决定(mode_decision)
mode_decision(bs,mr,i,j);
%%这里出现了i,j就代表已经进行分块处理了
从我们需要操作的帧中,按bs大小开始取块,并进行如下四种预测。
注: 每个块都得经理如下四种模式,但是这里只介绍第一种完全预测,其他的都是类似的,由读者自行探索。

本文深入解析H.264视频压缩中的帧间预测技术,通过Matlab源码详细阐述了完全预测、对角预测等模式,包括运动向量预测、运动补偿及亚像素搜索等关键步骤,揭示了帧间编码的复杂流程和代价比较的重要性。
最低0.47元/天 解锁文章
1278





