MPEG2编码

计算机编码

‌MPEG-2编码是MPEG(Moving Picture Experts Group,运动图像专家组)组织制定的一种视频和音频有损压缩标准,主要用于传输和存储高质量的图像和声音。

基本介绍
一个简单的MPEG-2 Non-scalable视讯编解码器(Codec),MPEG-2视讯编码器(Encoder)包含Inter Frame/Field离散馀弦变换(Discrete Cosine Transform,DCT)编码器、Frame/Field动态估计及补偿器(Motion Estimator and Compensator)、以及可变长度编码器(Variable Length Encoder,VLE)。离散馀弦变换编码器主要是利用空间上的冗馀(Spatial Redundancies),而动态估计及补偿器则是利用时间上的冗馀(Temporal Redundancies)来压缩资料;最后资料经过可变长度编码器编码后送至MPEG-2的系统多工器(System Multiplexer,SysMux),再由Transport或Program Stream将资料送出。
所谓的压缩,就是找出冗馀内容,再从资料流中除去的技术。如之前所提,MPEG-2的视讯主要是就是利用空间上及时间上冗馀资讯的消除来达到压缩的效果。图4及图5为典型的MPEG-2编解码器,以下我们将针对其中重要的压缩技巧做解说。
压缩技巧
1. 空间上的冗馀去除
视讯资料的一个特性是空间冗馀。一般来说,在同一张画面上必有一些共通特性,也许是色彩上的,也许是几何上的,或是其它特征值得到的。所谓的空间冗馀去除,就是要识别出画面中重要的元素,并移除重复且较无影响的元素的动作。
a. 色彩取样
跟据实验,人眼对于亮度变化较敏感而对于色度的变化相对的较不易查觉。依此实验,MPEG-2采用亮度色度的色彩表示格式,Y表示亮度值(Luminance),Cr及Cb表示色度值(Chrominance),并且从降低色度取样来减少讯号量。MPEG-2中定义了4:2:0、4:2:2及4:4:4采样格式。4:2:0表示四个Y取一个Cr一个Cb;4:2:2表示四个Y取两个Cr两个Cb;而4:4:4表示四个Y取四个Cr四个Cb,即不做任何的采度取样减少。减少色度采样可以在尽量降低对视觉的影响下达到较大的资料缩减效果。
b.离散馀弦变换
离散馀弦变换是一个无损的,可逆的数学计算。在用于视讯压缩时,它把空间亮度采样和相应的色度采样强度资料转化为空间频率资料。在MPEG-2的视讯压缩中,找出存在于视讯中的每张画面里的空间冗馀,就是以将图切成8x8的区块(Block)后做离散馀弦变换来完成的。区块的色彩值转换后的离散馀弦变换系数依然是一个8x8的矩阵,左上角的系数称为DC系数,其馀称为AC系数。DC系数往下代表着逐渐增高的垂直空间频率系数,往右代表看逐渐增高的水平空间频率系数,其他系数则代表垂直水平空间频率的不同组合。由于图像的自然属性,一个画面中通常不会有很密集且大的波动,因此离散馀弦变换经常使代表较高空间频率的离散馀弦变换系数的值很小,甚至为零。基本上,离散馀弦变换并不能减少数据量,但是却可以将资料转成较易找寻冗馀的表达型式。
c. 量化
除了在4:2:2或4:2:0的色彩采样过程中丢失了有限数量的资讯以外,MPEG-2的压缩能力来自对离散馀弦变换系数灵活的量化过程。简单地讲,量化(Quantization)就是减少描述各系数的位元数的过程,亦即将各系数以较粗糙的度量单位描述之。量化的动作主要有两个功能:一是让原已很接近零的值尽量变成零,另外则是使得原来非零的系数分布范围变小,有助于压缩。量化是一种破坏性压缩技巧,量化后的资料再还原时与原来的资料不会全然相同,因此视讯压缩后失真的程度,主要便取决于量化位阶(Quantization Scale)的选取。由于人视觉上的特性,高空间频率的讯号往往不易察觉其变化,因此用较大的位阶表示甚至忽略之,对人眼来说亦不会造成多大的差异。
2. 时间上的冗馀去除
视讯资料的另一个特性是时间上的冗馀。一般播放的视讯,其实只是一连串连续的图像序列,然而因为人类视觉的视觉暂留现象,所以会有连贯影像的错觉。而此种视讯因为画面间时间间隔甚小,因此相临的画面几无差异,大多只是图像内容的位置变化。因为有此现象产生,所以我们可以利用除去在时间轴上画面与画面的相似性造成的冗馀来进行压缩。
a.动态补偿
动态补偿(Motion Compensation,MC)便是基于上述概念所发展出来的一种视讯压缩技巧。在做动态补偿之前,首先将画面分为16x16的大区块(Macro-block,MB),然后找寻其在参考画面(Reference Picture)中近似的大区块所在位置,并将由目标大区块到参考大区块间位置的坐标差记录成动态向量(Motion Vector)。参考画面在该画面之前,称为向前预测(Forward Prediction);参考画面在该画面之后,称为向后预测(Backward Prediction);而参考画面在该画面前后都有,称为双向预测(Bi-directionally Prediction)。而整个找寻动态向量的过程称为动态估计(Motion Estimation),常见的有区块匹配法(Block Match Method)及递回法(Recursive Method)。
另外,因为预测可能不是最佳匹配且目标大区块与参考大区块间不一定完全一致,因此还要计算目标大区块与参考大区块间画面讯号的差值,称为预测误差(Prediction Error),用以在解码时做补偿之用。最后预测误差再以空间的冗馀去除的压缩法处理之。
b. 画面压缩
要探讨如何压缩MPEG-2的视讯之前,首先来看看MPEG-2的视讯资料结构,由下而上依序为:
1. 区块(Block):包含量化后的画面资料,由8x8的像素所组成,是离散馀弦转换的最小单位。
2. 大区块(Macroblock):为一个16 x 16的大区块,是色彩取样、动态估计及动态补偿的基本单位。
3. 片段(Slice):由数个大区块(Macro-block)所组成,主要将每张画面作水平且固定单位的切割。片 段以上的各种结构都有讯号同步及错误控制能力。
4. 画面(Picture):由数个片段(Slice)所组成,为最主要的编码单位,主要有三种影像编码的型态 I、P、B,稍后会有详细叙述。
5. 画面群组(Group of Pictures,GOP):由一张 I 画面及数张 P 及 B 画面所组成。在MPEG-2中,画面群组的总长及P画面张数是可以动态调整的。
6. 视讯序列(Video Sequence):由数个画面或画面群组所组成,然而一部影片可以只由一个视讯序列组成,也可以由数个视讯序列所组成。
MPEG-2定义了三种画面压缩模式,I画面、P画面、B画面:
I画面(Intra Coded Pictures):
当大区块仅使用本身的画面资料进行空间的冗馀去除,并没有参考其他画面的资料,我们称为Intra模式大区块(Intra Mode Macro-block)。在I画面中,所有的大区块皆为Intra模式大区块。I画面可以做为视讯资料流中的索引点,也是提供随机存取能力的主要来源。I画面通常在视讯序列或画面群组的第一张,解码时I画面可独立解码,并做为P及B画面的参考影像的来源。由于不须参考其他画面,因此无法得到消除时间上冗馀的好处,因此压缩率较差。
P画面(Predictive Coded Pictures):
在编码及解码时,会使用参考画面(Reference Picture),这些参考画面可为该画面前面最近的I画面或P画面。编码时,在P画面中的大区块,若能在参考画面上找到相对应的大区块,则用动态补偿方式做预测编码(Predictive Coding);若找不到,则以Intra模式做编码。由于加入消除时间上冗馀的技术,因此其编码效率较高。
B画面(Bi-directionally Predicted Pictures):
在解码及编码时,会使用到前面及后面两个方向参考画面的资料。如同 P 画面一样,编码时,在B画面中的大区块,若能在参考画面上找到相对应的大区块,则用动态补偿方式做双向预测编码(Bi-directionally Predictive Coding);若找不到,则以Intra模式做编码。B画面拥有最高的编码效率,然画质最差,故本身不再做为其他预测编码用。
3.以资料本身冗馀为基础的压缩
MPEG-2在以视讯的特性做了空间及时间上的冗馀压缩后,还会再以资料本身的冗馀再做压缩。在量化完成后,MPEG-2舍弃了MPEG-1所采用的Zigzag Scan而改采Alternate Scan来将量化后二维的离散馀弦系数串接成一维的数列,以锯齿状路线处理8x8的块中的64个系数,尽量形成最大长度的连续零值,以提高压缩效率。接着将串接起来的资料以游程编码(Run Length Coding,RLC)及可变长度编码(Variable Length Coding,VLC)处理。
可变长度编码基本概念则是:越常出现的样版,就以越短的位元数来表示之。因此可变长度编码是这样一个过程,找出资料中所有的资料样版及其出现频率,接着以较少的位元来描述较常出现的样版,用较多的位元描述不常出现的样版。Huffman Coding就是其中一种基本的演算法。基本上游程编码及可变长度编码都是非破坏性压缩。
4.可变位元率
最后要提到MPEG-2不同于MPEG-1的其中一样很大的差异,就是MPEG-2除了固定位元率(Constant Bit Rate,CBR)之外,另外提供了可变位元率(Variable Bit Rate)来调节资料速率。位元率的控制往往决定了离散馀弦系数量化的的结果。视讯的资料经过压缩后并非皆有相同的资料流量。一般说来,画面变动越大,压缩比越小,资料流频宽需求越大;反之,画面变动越小,压缩比越大,资料流频宽需求就越小。各画面间压缩后的值并不是固定的,固定的资料速率只是个理想,实际状况下一昧的要求固定位元率不是牺牲了影像品质(以较低流量画面为基准,较大流量的画面强制做过多的压缩)就是牺牲了容量(以较大流量画面为基准,较低流量的画面强制做过低的压缩)。一般说来,可变位元率对于提供稳定的影像品质是个更好的选择,因为其能够根据动态画面的复杂程度,适时改变数据传输率获得最适且一致的编码效果。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市