H.264压缩技术之总览(Overview)——Matlab源码解析

本文介绍了Abdullah A. Muhit等人2012年的H.264编码研究,并提供了开源MATLAB代码的解读。首先,详细阐述了预操作,包括视频读取、GOP设置及比特流初始化。接着,讲解了I帧和P帧的编码流程,特别是I帧编码的熵编码、残差块和预测步骤。然后,讨论了比特流的拼接和P帧编码的准备。最后,保存了编码后的比特流,并简要提及了解码过程。文章以整体框架为主,深入理解H.264编码的关键步骤。

写在前面

Abdullah A. Muhit等人在2012年发表的论文[1],[2]。并发布了开源H.264 matlab版的代码。笔者会就着这套源码进行分解讲解。一方面为了加强自己的理解,另一方面也给学习这套源码的同学提供参考。笔者水平有限,难免会有一些错误,请各位读者批评指正。
注:这里的代码笔者进行了一些修改,剔除了一些与编码关系不大的代码。属于伪代码。

一、预操作

读入视频序列

obj=VideoReader('formancif.mov'); %obj 类中基本包含了一个视频的所有信息。

Obj类成员信息部分参数信息获取需要进行编码的视频序列mov

for k = 1 : nFrames  %获取obj类的视频序列存入mov
    mov(k).cdata = read(Obj, k);
end

设置需要编码的GOP组

// 设置需要编码的一个GOP(group of picture)组
%% Encoding Video Paramiters
Frame_start = 1;            % I frame
Frame_end = 5;             % Following P frames
NumberOfFrames=Frame_start+Frame_end; 

由于进行压缩编码的部分通常为Y分量,所以对读入的视频序列,还要转YUV。

Resize(mov,Frame_start,Frame_end,Videow,Videoh)%1色彩空间的转换,2修改大小(不是必要的)

设置最终将会输出的比特流

bitstream = '';                 % Initialize output bitstr
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值