MPEG | 您所在的位置:网站首页 › 编码的基本原理有哪些类型和特点 › MPEG |
参考链接: https://blog.csdn.net/houxiaoni01/article/details/99829909https://blog.csdn.net/houxiaoni01/article/details/99830240https://blog.csdn.net/houxiaoni01/article/details/99830965 一、MPEG-1压缩视频数据主要从两个方面着手:(1)在空间方向上,采用了和JPEG类似的算法来去掉空间冗余数据。空间冗余是单帧图像中,相邻像素间产生的冗余数据。 (2)在时间方向上,采用移动补偿(motion compensation,也叫运动补偿)算法去掉时间冗余数据。时间冗余是帧与帧之间产生的冗余数据。 MPEG基于这两个方面,开发了两项重要的技术,一项是定义视像数据的结构,而另一项是定义了图像的三种类型。 1、视像数据结构MPEG专家组把视像片段,看成是一系列静态图像(picture)组成的视像序列(sequence),然后把这个视像序列分成许多图像组(Group Of Picture,GOP),把GOP里的每一帧图像,分成许多像片(slice),每个像片由16行组成。然后把像片分为16像素X16像素的宏块(macroblock, MB),进而把宏块分为8像素X8像素的图块(block)。 (1)帧内图像I(intra-picture),简称为I图像或I帧(I-picture/I-frame)。I帧包含了完整内容的图像,用于为其他帧图像的编解码做参考,所以这也就是我们常说的,关键帧。 (2)预测图像P(predicated picture),简称P图像或P帧(P-picture/P-frame)。P帧是指以它之前出现的I帧作为参考的图像,而对P帧进行编码,其实就是对它们之间的差值进行编码。 (3)双向预测图像B(bidirectionally-predictive picture),简称B图像或B帧(B-picture/B-frame)。B帧是以在它之前和之后的图像,也就I帧和P帧作为参考的图像。对B帧进行编码,就是对它和I帧、P帧的差值分别进行编码。 MPEG-1数据流结构从上到下分为6层,分别为序列层、GOP层、图像层、像片层、宏块层、图块层。 对于I帧来说,因为它是关键帧,既不需要参考过去的帧,也不需要参考将来的帧。所以对I帧的编码,是为了消除空间冗余数据,而且它采用的压缩算法,和JPEG类似。如下图: P帧也就是预测图像P,与I帧不同的是,它不仅要从空间上去除冗余数据,还要从时间冗余方面上着手,因为它是以在它之前出现的I帧作为参考对象来编码的。 与I帧不同的是,预测图像P的编码是以16x16像素的宏块为基本编码单元的。对于P帧,为了表示它与前面I帧的关系,我们会一直用预测图像和参考图像这两个词。 其实很好想象,因为对预测图像编码,就是对它和参考图像直接的差值进行编码。所以我们只需要做到以下两点即可: 1、算出当前要编码的图像宏块,与参考图像宏块之间的差值 2、计算出宏块的移动矢量 比如下图: B帧也是双向预测图像B,对它的编码,即是对它前后帧的像素值之差进行编码,具体的方法和对预测图像P的算法类似。 I帧是对视频最重要的图像帧,P帧其次,B帧更次。所以B帧的压缩比也是最高的,P帧其次,I帧压缩比最小。 在实际应用中,对于快速运动的图像,I帧的频率可以高一些,B帧的数目可以少一些。而对于慢速运动的图像,则相反。 |
CopyRight 2018-2019 实验室设备网 版权所有 |