H.264压缩技术之帧内预测(I Frame)——Matlab源码解析

该博客详细介绍了H.264视频编码中的帧内编码过程,从I帧编码、序列分块到预测、块编码和比特流拼接。重点讲解了水平预测模式,探讨了预测模式的选择及其对压缩效率的影响。此外,还预告了后续将要介绍的帧间预测(P帧)。

前言

这篇博客开始就将介绍H.264视频编码中的,帧内编码,也就是I帧编码。章节展开将严格按照Matlab源码的逻辑进行书写。如果你手头有代码,建议配合代码一起食用。(开源代码overview部分有介绍)

另外注意:这里的子目录,代表进入了函数中。例如:3.main(),那么3.1就是main{ code }.

前文回顾:强烈建议回顾一下Overview部分。
H.264压缩技术之总览(Overview)——Matlab源码解析.
H.264压缩技术之视频基础(foundation of learning video)——Matlab源码解析.

1.设置参考帧+I帧编码

由于进行编码的帧格式为 IPPP格式,也就是说第一个帧是I帧,后续的都是P帧。
所以设置第一帧参考帧X为自身:

X(:,:,1)=Seq(:,:,1) %解释一下Seq为啥是3维数组,前两位代表每个帧的像素值,最后一位代表是第几帧

进行I帧编码

[Seq_r(:,:,1),bits] = encode_i_frame(Seq(:,:,1),QP);    % Encoding
%encode_i_frame函数是编码I帧的函数,
%函数内主要操作为:熵编码,残差块,预测等
%QP为质量因子
%返回的结果Seq_r为重构帧,bits为进行编码后的比特流

2.Seq序列分块

这里的Seq可以理解为最左边的建筑工。现在将建筑工进行16-16分块。对每个16-16的大块,再进行4-4的小分块。这里用不同的颜色标记出不同的小分块。
在这里插入图片描述

3.开始对每块进行预测

这里的预测分为3种情况。分别是:

  1. 无需预测:针对左上角的块
  2. 仅仅需要水平或垂直预测
  3. 9个方向都得预测

如下图:右上角那一块蓝色块,就是属于不需要进行预测操作的块。对于右下角的橙色部分的块(4*4,不包含蓝色部分)仅仅需要进行水平预测。对于其他的普通情况,那么就需要进行9大方向的预测。

这里笔者仅仅介绍一种水平预测模式。其他的8种模式十分的类似,读者可以自行进行实验或查阅相关资料。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值