MPEG-2视频编码系统原理及关键技术
概括地说,MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。一帧图像内的任何一个场景都是由若干像素点构成的,因此一个
像素通常与它周围的某些像素在亮度和色度上存在一定的关系,这种关系叫作空间相关性;一个节目中的一个情节常常由若干帧连续图像组成的图像序列构成,一个
图像序列中前后帧图像间也存在一定的关系,这种关系叫作时间相关性。这两种相关性使得图像中存在大量的冗余信息。如果我们能将这些冗余信息去除,只保留少
量非相关信息进行传输,就可以大大节省传输频带。而接收机利用这些非相关信息,按照一定的解码算法,可以在保证一定的图像质量的前提下恢复原始图像。一个
好的压缩编码方案就是能够最大限度地去除图像中的冗余信息。
MPEG-2中编码图像被分为三类,分别称为I帧,P帧和B帧。
----I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I帧图像的压缩倍数相对较低。I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。
P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的
相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧
内编码。B帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是,由于B帧图像采用了未来帧作为参考,因此MPEG-2编码码流中图像帧的传输顺
序和显示顺序是不同的。
MPEG-2的编码码流的六个层次
从上至下依次为:视频序列层(Sequence),图像组层(GOP:GroupofPicture),图像层(Picture),像条层
(Slice),宏块层(MacroBlock)和像块层(Block)。从图1中可以看到,除宏块层和像块层外,上面四层中都有相应的起始码
(SC:StartCode),可用于因误码或其它原因收发两端失步时,解码器重新捕捉同步。因此一次失步将至少丢失一个像条的数据。
序列指构成某路节目的图像序列,序列起始码后的序列头中包含了图像尺寸,宽高比,图像速率等信息。序列扩展中包含了一些附加数据。为保证能随时进入图像序列,序列头是重复发送的。
序列层下是图像组层,一个图像组由相互间有预测和生成关系的一组I、P、B图像构成,但头一帧图像总是I帧。GOP头中包含了时间信息。
图像组层下是图像层,分为I、P、B三类。PIC头中包含了图像编码的类型和时间参考信息。
图像层下是像条层,一个像条包括一定数量的宏块,其顺序与扫描顺序一致。MP@ML中一个像条必须在同一宏块行内。
像条层下是宏块层。MPEG-2中定义了三种宏块结构:4:2:0宏块4:2:2宏块和4:4:4宏块,分别代表构成一个宏块的亮度像块和色差像块的数量关系。
4:2:0宏块中包含四个亮度像块,一个Cb色差像块和一个
Cr色差像块;4:2:2宏块中包含四个亮度像块,二个Cb色差像块和二个Cr色差像块;4:4:4宏块中包含四个亮度像块,四个Cb色差像块和四个Cr
色差像块。这三种宏块结构实际上对应于三种亮度和色度的抽样方式。
在进行视频编码前,分量信号R、G、B被变换为亮度信号Y和色
差信号Cb、Cr的形式。4:2:2格式中亮度信号的抽样频率为13.5MHz,两个色差信号的抽样频率均为6.75MHz,这样空间的抽样结构中亮度信
号为每帧720x576样值,Cb,Cr都为360x576样值,即每行中每隔一个像素对色差信号抽一次样,如图3所示,○代表Y信号的抽样点,×代表
Cb,Cr信号的抽样点。
4:4:4格式中,亮度和色差信号的抽样频率都是
13.5MHz,因此空间的抽样结构中亮度和色差信号都为每帧720x576样值。而4:2:0格式中,亮度信号的抽样频率13.5MHz,空间的抽样结
构中亮度信号为每帧720x576样值,Cb,Cr都为360x288样值,即每隔一行对两个色差信号抽一次样,每抽样行中每隔一个像素对两个色差信号抽
一次样。
通过上述分析不难计算出,4:2:0格式中,每四个Y信号的像
块空间内的Cb,Cr样值分别构成一个Cb,Cr像块;4:2:2格式中,每四个Y信号的像块空间内的Cb,Cr样值分别构成两个Cb,Cr像块;而
4:4:4格式中,每四个Y信号的像块空间内的Cb,Cr样值分别构成四个Cb,Cr像块。相应的宏块结构正是以此基础构成的。
宏块层之下是像块层,像块是MPEG-2码流的最底层,是
DCT变换的基本单元。MP@ML中一个像块由8x8个抽样值构成,同一像块内的抽样值必须全部是Y信号样值,或全部是Cb信号样值,或全部是Cr信号样
值。另外,像块也用于表示8x8个抽样值经DCT变换后所生成的8x8个DCT系数。
在帧内编码的情况下,编码图像仅经过DCT,量化器和比特流编码器即生成编码比特流,而不经过预测环处理。DCT直接应用于原始的图像数据。
在帧间编码的情况下,原始图像首先与帧存储器中的预测图像进行比较,计算出运动矢量,由此运动矢量和参考帧生成原始图像的预测图像。而后,将原始图像与预测像素差值所生成的差分图像数据进行DCT变换,再经过量化器和比特流编码器生成输出的编码比特流。
可见,帧内编码与帧间编码流程的区别在于是否经过预测环的处理。
MPEG-2视频压缩方案中包含的关键技术环节
1、余弦变换DCT
DCT是一种空间变换,在MPEG-2中DCT以8x8的像块
为单位进行,生成的是8x8的DCT系数数据块。DCT变换的最大特点是对于一般的图像都能够将像块的能量集中于少数低频DCT系数上,即生成
8x8DCT系数块中,仅左上角的少量低频系数数值较大,其余系数的数值很小,这样就可能只编码和传输少数系数而不严重影响图像质量。
DCT不能直接对图像产生压缩作用,但对图像的能量具有很好的集中效果,为压缩打下了基础。
2、量化器
量化是针对DCT变换系数进行的,量化过程就是以某个量化步长
去除DCT系数。量化步长的大小称为量化精度,量化步长越小,量化精度就越细,包含的信息越多,但所需的传输频带越高。不同的DCT变换系数对人类视觉感
应的重要性是不同的,因此编码器根据视觉感应准则,对一个8x8的DCT变换块中的64个DCT变换系数采用不同的量化精度,以保证尽可能多地包含特定的
DCT空间频率信息,又使量化精度不超过需要。DCT变换系数中,低频系数对视觉感应的重要性较高,因此分配的量化精度较细;高频系数对视觉感应的重要性
较低,分配的量化精度较粗,通常情况下,一个DCT变换块中的大多数高频系数量化后都会变为零。
分享到:
相关推荐
MPEG-2视频编解码 参考代码 c++源码
MPEG-4编解码技术, MPEG-4编解码技术
可以解码MPEG-4编码,通过读取MPEG-4中的数据结构来一帧一帧解析
主要内容包括:视频编解码原理及视频图像的捕获与显示、基于Visual C++2005分析MPEG-4/H.264编解码原理、基于TI DSP设计和优化开源工程(Xvid/x264/ffmpeg)、视频算法的标准接口xDAIS开发和视频监控中心软件设计等...
mpeg-2视频解码器下载src_mpeg2.zip
《MPEG-4/H.264视频编解码工程实践》的配套光盘
MPEG-4_H.264视频编解码工程实践.rar 光盘资源 非常好的H.264解码参考
关于视频编解码技术的原理分析,MPEG-4作为当前主流的视频编解码协议,有着优越的视频编解码性能。
VC++实现的MPEG-4编/解码,分享给大家~需要的朋友可以看看~
《MPEG-JPEG 编解码技术》附带光盘的源代码 完整版 Visual C++开发工具
MPEG-2视频编解码源代码 This directory contains our implementation of an ISO/IEC DIS 13818-2 codec. It converts uncompressed video frames into MPEG-1 and MPEG-2 video coded bitstream sequences, and ...
MPEG-2和MP3编解码 用于编解码mp3 和mpeg 解决了播放器不能播放的原因,大多都是因为这样子。好东西,大家共享吧!
Visual C++ 实现 MPEG-JPEG 编解码...全书主要内容包括:压缩技术基础、JPEG压缩编解码技术、JPEG 2000编解码技术、MPEG-1压缩编码技术、MPEG-2标准、MPEG-4压缩编码标准、MPEG-4实用源代码分析以及数字录像监控系统。
Visual C++ 实现 MPEG-JPEG 编解码...全书主要内容包括:压缩技术基础、JPEG压缩编解码技术、JPEG 2000编解码技术、MPEG-1压缩编码技术、MPEG-2标准、MPEG-4压缩编码标准、MPEG-4实用源代码分析以及数字录像监控系统。
MPEG-2源代码用于视频编解码,此程序经过测试能够运行
Visual C++ 实现 MPEG-JPEG 编解码...全书主要内容包括:压缩技术基础、JPEG压缩编解码技术、JPEG 2000编解码技术、MPEG-1压缩编码技术、MPEG-2标准、MPEG-4压缩编码标准、MPEG-4实用源代码分析以及数字录像监控系统。
基于FPGA的MPEG-4编解码芯片开发系统设计研究,是论文,可以参考一下
Visual C++实现MPEG-JPEG编解码技术2.rar
MPEG-2编解码音频指标测试指导书,各指标具体测试步骤详述
Mpeg-4/H.264视频编解码工程实践源码chapter2-chapter10,供大家一次性下载全。