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了。
经过H264压缩的视频,可分为I、B、P三种不同的帧。其中I帧因为不参考其他帧,所以是帧内编码。P帧,要前向参考,而B帧,则要进行双向参考,这两种,都属于帧间编码。
先说说帧内编码:
帧内,顾名思义,就是不求外,只求内。不管外部数据如何,仅仅通过自身已有的数据进行编码。一幅图像里面的物体往往具有空间上的相关性,比如,以下图片:
除了中间的几个字,其他区域都是蓝色的,并且是一模一样的,所以,在空间上,数据就有相当大的冗余。而帧内编码,就是要去除这部分冗余数据。在帧内编码情况下,编码图像仅仅进过DCT(离散余弦变换)、量化器呗编码器就可生成编码比特流。DCT直接用于原始数据。
下面来说说帧间编码:
视频,其实就是一张一张图片而已,而这些图片其实都是相似的,仅仅只有很小的区别,这样就可以达到欺骗我们肉眼的效果,给我们一种动画的感觉。而这,就是所谓的时间相关性。比如上图,如果我们把它想象成一个视频,Media这个单词在里面运动,不管Media运动到哪里,他始终都是Media这个单词,样子都没有任何变化,仅仅是位置变了。而变化量、方向,我们可以用一个矢量表示,这就是所谓的运动矢量。帧间编码与帧内编码的不同之处在于他经过预测环节的处理。步骤如下:
1、计算参考帧与原始帧之间的运动矢量
2、通过参考帧与运动矢量生成原始帧的预测图像
3、讲原始图像与预测像素差值生成差分图像数据
4、对差分图像数据进行DCT变换
5、经过量化器量化
6、编码器生成压缩数据
以上就是笔者对编码的意见简单的理解,后面再有无聊的时候,会对这几个步骤做一些详细的分析
相关文章推荐
- 使用spark和spark mllib进行股票预测
- 【2017 IT 预测】Mircosoft 询问 17 位女性对 2017 及未来 10 年的展望
- 初级:如何在 Linux 中 zip 压缩文件和文件夹
- 如何在 Ubuntu Linux 中使用 RAR 文件
- C#把UNICODE编码转换为GB编码的实例
- ASP编码必备的8条原则
- C#使用DeflateStream解压缩数据文件的方法
- C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
- C#使用WinRar命令进行压缩和解压缩操作的实现方法
- XML指南——XML编码
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- C#调用WinRar执行rar、zip压缩的方法
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- C语言压缩文件和用MD5算法校验文件完整性的实例教程
- C语言安全编码之数值中的sizeof操作符
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解