数据压缩第九次作业

一 、实验原理
1. H.264编码原理
H.264相比于之前讲过的MPEG-2来说,注重实用,采用更成熟的技术,要求更高的编码效率和简洁的表现形式。与此同时,在混合编码器的基本框架下,H.264对MPEG-2中的主要关键模块都进行了重大改进。但是,H.264标准的预测、变换、量化、熵编码等基本模块和MPEG-2并没有太大的区别,变化主要体现在功能模块的具体细节上。

H.264在视频编码层(VCL)和网络提取层(NAL)之间进行概念分割,以实现在不同的传输环境下的有效传输,便于与当前和将来的编码格式和不同类型的网络进行无缝连接。

2. H.264的特点
压缩比高:在同等图像质量的条件下,采用H.264技术压缩后的码流,数据量只有MPEG-2的1/2;
容错率高:H.264码流具有较强的抗误码特性,可适应丢包率高、干扰严重的信道,如IP和无线网络;
网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输;
计算复杂度高:H.264使用较高的计算复杂度,换取优越的性能,其复杂度相当于MPEG-2的2—3倍。

3. H.264和其他MPEG-2编码标准的差异
帧内预测
在空间域内进行帧内预测,提高帧内编码的精确度。不可以用下方或右方的像素来预测,原因是需要保证编解码端的一致性,解码端只能用解码以后的样本,不能用下方或右侧还未编码的像素。

基于运动估计和运动补偿的帧间预测:去除时间冗余
不同尺寸的块和形状,高分辨率的子像素运动估计,选择多个参考帧

DCT变换:去除空间冗余
使用整数的DCT变换,利用相关性,去除空间冗余

熵编码技术:去除统计冗余
通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)
4.H.264语法

二、实验步骤

1.分析SPS和PPS里都包含哪些主要的信息,给出参数值。(例如分辨率、帧率、GOP结构等等)
H.264码流结构与MPEG-2的嵌入式树状码流结构不同,其每一个数据单元为NAL,每个NAL包含头部和payload。然后将sequence序列信息和picture图片信息分别封装在SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)中。

(1)SPS(SequenceParameterSet):序列参数集。SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。编码视频序列即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列。而每一帧的编码后数据所依赖的参数保存于图像参数集(PPS)中。

(2)PPS(Picture Paramater Set):图像参数集。通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。

 

GOP
GOP(Group of Pictures,图像组)是将一个图像序列中连续的几个图像组成的一个小组,是对编码后的视频码流进行编辑、存取和压缩编码的基本单元,包含不同种类编码的帧。

增大GOP或提高GOP中P/B帧的占比,可以提高压缩比,降低码率。因此一般而言,在码率一定的条件下,GOP越大,图像质量越好(P/B帧的比重更大);在图像质量一定的条件下,GOP越大,码率越低。

使用码流分析仪

 

 

 

由上图可知,I帧的比特数是最多的,P帧次之,B帧最少。

I帧

视频的第一帧为I帧,该帧均采用帧内预测编码,其中橙色的点量化等级更高。由于该帧没有前参考帧,没有使用到运动矢量。

第一个I帧共有920个宏块,为帧内预测编码帧,没有参考帧。可以看到其在背景这种颜色变化不大的地方大多采用帧内16×16预测,但亮度和色度cbp值不同,在背景与人物衔接的边缘,宏块会更加细节,为I帧4×4预测。

 

P帧

第四帧是P帧,在编码时,是按照IPBBB的顺序进行编码,然后进行帧重排。该帧组成元素有黄色、蓝色和红色。红色代表帧内编码:

对于P帧来说,大部分采用了帧间编码的方式,而且还出现了P_Skip帧,说明这些位置的预测误差几乎为0,这样做可以降低码率,观察发现这些位置与I帧的差别并不是很大,从运动矢量也可以看出

P帧中的有些位置也采用了帧内编码的方式,可能对于这些位置来说空间比时间的相似性要大

 

B帧
第10帧为B帧,B帧支持帧间预测(包括了前向预测、后向预测和前向及后向预测)和帧内预测。

该帧组成元素有黄色、蓝色。这里黄色是B_skip块:它代表了这一帧的数据内容与前一帧相同,跳过不编码。可以看到黄色的Macro Block所占用bit数为0bit,只需要提前使用一些比特进行说明就行。

 

 本B帧为双向预测编码帧,前后向的帧都有参考。其宏块有920个,编码类型有7种,大多数都为跳过不编码的类型。其余为帧间预测编码宏块。

 对于这一个B帧来说,也有很多的B_Skip宏块,说明这些位置的预测误差接近于0,其他位置,B帧采用前向+后向的预测编码方式

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值