您的位置:首页 > 其它

MPEG2帧内编码与帧间编码

2017-02-13 19:14 120 查看
晚上没事干,无聊,所以想写点什么。

为了达到节约空间的目的,视频图像都是经过编码,然后用于各种不同的场合,特别是网络传输,因为带宽的限制,为了更好的传输数据,必须对视频进行压缩处理。而目前最流行的当属H264了。

经过H264压缩的视频,可分为I、B、P三种不同的帧。其中I帧因为不参考其他帧,所以是帧内编码。P帧,要前向参考,而B帧,则要进行双向参考,这两种,都属于帧间编码。

先说说帧内编码:

帧内,顾名思义,就是不求外,只求内。不管外部数据如何,仅仅通过自身已有的数据进行编码。一幅图像里面的物体往往具有空间上的相关性,比如,以下图片:



除了中间的几个字,其他区域都是蓝色的,并且是一模一样的,所以,在空间上,数据就有相当大的冗余。而帧内编码,就是要去除这部分冗余数据。在帧内编码情况下,编码图像仅仅进过DCT(离散余弦变换)、量化器呗编码器就可生成编码比特流。DCT直接用于原始数据。

下面来说说帧间编码:

视频,其实就是一张一张图片而已,而这些图片其实都是相似的,仅仅只有很小的区别,这样就可以达到欺骗我们肉眼的效果,给我们一种动画的感觉。而这,就是所谓的时间相关性。比如上图,如果我们把它想象成一个视频,Media这个单词在里面运动,不管Media运动到哪里,他始终都是Media这个单词,样子都没有任何变化,仅仅是位置变了。而变化量、方向,我们可以用一个矢量表示,这就是所谓的运动矢量。帧间编码与帧内编码的不同之处在于他经过预测环节的处理。步骤如下:

1、计算参考帧与原始帧之间的运动矢量

2、通过参考帧与运动矢量生成原始帧的预测图像

3、讲原始图像与预测像素差值生成差分图像数据

4、对差分图像数据进行DCT变换

5、经过量化器量化

6、编码器生成压缩数据

以上就是笔者对编码的意见简单的理解,后面再有无聊的时候,会对这几个步骤做一些详细的分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编码 压缩 预测 h264