您的位置:首页 > 运维架构 > Linux

Media---I,P,B帧区别

2015-09-23 11:05 513 查看
I帧又称为内部画面,通常是一组连续画面的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像。I帧采用帧内压缩法,这种压缩与静态图像的压缩算法类似。I帧是靠尽可能去除图像空间冗余信息来压缩的。

P帧是通过充分降低与图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧。P帧由在它前面的P帧或者I帧预测而来,它根据本帧与邻近的前一帧或几帧的不同点来压缩本帧数据。采取P帧和I帧联合压缩的方法可达到更高的压缩且无明显的压缩痕迹。P帧属于前向预测的帧间编码。它只参考前面靠近它的I帧或P帧。

B帧也叫双向预测帧,当把一帧压缩成B帧时,它根据邻近的前几帧、本帧以及后几帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。只有采用B帧压缩才能达到超高的压缩比。一般地,I帧压缩效率最低,P帧较高,B帧最高。

采用的压缩方法: 分组:把几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。 

1.定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧; 

2.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧; 

3.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

I帧:帧内编码帧 

I帧特点: 

1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输; 

2.解码时仅用I帧的数据就可重构完整图像; 

3.I帧描述了图像背景和运动主体的详情; 

4.I帧不需要参考其他画面而生成; 

5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量); 

6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧; 

7.I帧不需要考虑运动矢量; 

8.I帧所占数据的信息量比较大。

P帧:前向预测编码帧。 

P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。 

P帧特点: 

1.P帧是I帧后面相隔1~2帧的编码帧; 

2.P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差); 

3.解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像; 

4.P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧; 

5.P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧; 

6.由于P帧是参考帧,它可能造成解码错误的扩散; 

7.由于是差值传送,P帧的压缩比较高。

B帧:双向预测内插编码帧。  B帧的预测与重构 

B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。 

B帧特点 

1.B帧是由前面的I或P帧和后面的P帧来进行预测的; 

2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量; 

3.B帧是双向预测编码帧; 

4.B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确; 

5.B帧不是参考帧,不会造成解码错误的扩散。  

注:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列

GOP:Group of Pictures 画面组

  GOP(Group of Pictures)策略影响编码质量:所谓GOP,意思是画面组,一个GOP就是一组连续的画面。MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码,这就是MPEG格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。   MPEG-2 帧结构

  MPEG-2压缩的帧结构有两个参数,一个是GOP(Group Of Picture)图像组的长度,一般可按编码方式从1-15;另一个是I帧和P帧之间B帧的数量,一般是1-2个。前者在理论上记录为N,即多少帧里面出现一次I帧;后者描述为多少帧里出现一次P帧,记录为M。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux IPB 压缩