1、信息论之视频压缩讲稿景麟 2007.05 主要讨论的问题:主要讨论的问题:41.视频压缩的必要性42.视频压缩的信息论基础43.常用的视频压缩方法44.视频压缩的关键技术45.MPEG-2运动视频压缩标准46.作业 1 视频压缩的必要性一幅中等分辨率一幅中等分辨率24位真彩色的位图图像(位真彩色的位图图像(640480,24位位/像素),典型参数为:像素),典型参数为:图像分辨率:图像分辨率:640480图像颜色数:图像颜色数:16,777,216(=224)颜色深度颜色深度(位位):24数据量为:约数据量为:约0.9MB,根据下式计算,根据下式计算:对于以上数据量,若用对于以上数据量,若用N
2、TSC制式(制式(30帧帧/秒)播放动秒)播放动态视频,需要约态视频,需要约27MB/秒的视频传输速度,在秒的视频传输速度,在650MB的光盘中存放时间约的光盘中存放时间约24秒。秒。):(8)(字节单位颜色深度水平方向分辨率垂直方向分辨率数据量1 视频压缩的必要性可见,在不经过数据压缩情况下,CD视频播放机根本无法达到实用目的。目前一张650MB的CD激光视盘可以连续播放75分钟的视频电影。说明压缩的余地相当大。同样,传输中也存在同样的困难。网络带宽受限。2 视频压缩的信息论基础信息论是视频数据压缩的重要理论基础。4信息之所以能进行压缩,是因为信息本身通常存在很大的冗余量。4根据信息论的观点
3、,若信源编码的熵大于信源的实际熵,则该信源中一定存在冗余。因此,在数据存储或传输时,通过对信源选择优化的编码方案,消除了冗余,也就达到了数据压缩目的。信息冗余信息冗余4三种基本的信息冗余三种基本的信息冗余 编码冗余编码冗余 自然码,码字长度自然码,码字长度L L 编码效率编码效率 像素间冗余像素间冗余 与像素间相关性直接联系着的数据冗余与像素间相关性直接联系着的数据冗余(统计冗余统计冗余)结构结构 空间冗余空间冗余 (几何冗余)(几何冗余)心理视觉冗余心理视觉冗余 人眼不是对所有视觉信息有相同的敏感度。人眼不是对所有视觉信息有相同的敏感度。马赫带效应马赫带效应 知识冗余知识冗余统计冗余图像数据
4、存在大量的统计特征的重复,这种重复包括静态单帧图像数据在空间上的冗余和视频数据在时间上的冗余。在动态图像序列中,前后两帧图像之间具有较大的相关性,表现出帧与帧之间的重复,因而存在时间冗余。结构冗余有些图像从大面积上或整体上看存在着重复出现的相同或相近的纹理结构,例如布纹图像和草席图像,被称为结构冗余。几何冗余知识冗余有许多图像的理解与图像所表现内容的基础知识(先验或背景知识)有相当大的相关性,从这种知识出发可以归纳出图像的某种规律性变化,这类冗余称为知识冗余。知识冗余的一个典型例子是对人像的理解,比如,鼻子上方有眼睛,鼻子又在嘴的上方等。视觉冗余 人类的视觉系统实际上只在一定程度上对图像的变化
5、产生敏感,即图像数据中存在着大量人类视觉觉察不到的细节。事实上,人类视觉系统的一般分辨力为64级灰度,而一般图像量化采用的是256级灰度,这类冗余称为视觉冗余。256色标准图像转换成的灰度图 24比特标准图像转换成的灰度图 l视频编码的基本思想是去除视频图像中的冗余信息。而信息论和Shannon三大编码定理是视频编码技术的理论基础。lShannon三大编码定理:无失真信源编码定理 有噪离散信道编码定理 限失真信源编码定理3 常用的视频压缩方法(1)数据压缩方法分类从信息保持的角度可分为两大类:无损压缩和有损压缩。无损压缩无损压缩是利用信源的统计冗余,数据间的相关性,可完全恢复数据而不引入失真,
6、由于整个编解码过程中,信源信息的熵始终保持不变,因此无损压缩又被称为熵保持编码,无损压缩的编码效率受信息的熵限制,压缩率通常在2至5倍。无损编码包括:变换编码、Huffman量化、游程编码、算术编码等。3 常用的视频压缩方法 有损编码有损编码则是利用人眼视觉特性(HVS:Human Vision System),对人眼不敏感的某些图像细节信息进行压缩甚至忽略不编码,因此在解码恢复的过程时,不能完全恢复数据的全部信息,引入了失真,但是对于图像的最终接收者人眼而言,获得的信息的变化不大(即无大的视觉失真),同时获得较大的压缩率(10到200倍)。3 常用的视频压缩方法在常用的视频编码应用中,有损编
7、码是与无损编码进行混合编码,并以无损编码为基础。3 常用的视频压缩方法(2)常用的数据压缩算法 预测编码预测编码(DPCM、ADPCM)变换编码变换编码(最佳变换、最佳变换、KLT、DCT)统计编码统计编码(Huffman码、码、Shannon-Fano码、算术编码、算术编码码)分形图像编码分形图像编码(概念、特点、原理、技术、过程概念、特点、原理、技术、过程)游程编码游程编码(Zig-Zag编码编码)轮廓编码轮廓编码 混合编码混合编码 4 视频编码的关键技术4运动图像是视频编码的基础n利用人眼的视觉惰性作用:对亮度信号保持感觉1/201/10秒n序列图象、图形(动画)(2530帧/秒)形成运
8、动感觉4 视频编码的关键技术(1)色彩模型 MPEG的视频图像使用的是YCbCr(Y色度CbCr为亮度)颜色模型,而不是计算机上最常用的 RGB。YCbCr 模型更适合图形压缩,因为人眼对图像上的亮度Y的变化远比色度 CbCr 的变化敏感。我们完全可以每个点保存一个 8bit 的亮度值,每 2x2 个点保存一个 CbCr 值,而图象在肉眼中的感觉不会起太大的变化。所以,原来用RGB模型,4个点需要4x3=12字节。而现在仅需要4+2=6字节;平均每个点占12bit,简写为 YUV12。4 视频编码的关键技术RGB-YCbCr的转换:YCbCr-RGB的转换:0.2990.5870.114-0.
9、1687-0.33130.50.5-0.4187-0.0813YRCbGCrB101.4021-0.344-0.71411.7720RYGCbBCr4 视频编码的关键技术(2)预测编码(帧间编码)n帧间编码技术处理的对象是序列图像(也称为运动图像);nASIC的迅速发展,已有可能把几帧图像存储起来作实时处理,利用帧间的时间相关性进一步消除图像信号的冗余度,提高压缩比。n帧间编码的技术基础是运动预测和补偿运动预测和补偿。4 视频编码的关键技术(2.1)运动预测和补偿n目前,从H.26x到MPEG-1,2,4都无一例外地采用“简单帧间预测运动补偿”(或者“简单帧间预测+有条件地切换为帧内编码”)的
10、技术框架。n运动补偿(Motion Compensation)简写为MC。运动补偿运动补偿n运动补偿是MPEG中使用的主要技术之一。对提高编码压缩比很有好处。尤其对于运动部分只占整个画面较小的会议电视和可视电话,此技术后,压缩比可以提高很多。n用这一技术计算图像中运动部分位移的两个分量可使预测效果大大提高。n运动补偿方法是跟踪画面内的运动情况对其加以补偿之后再进行帧间预测。n这项技术的关键是运动向量的计算。运动补偿运动补偿运动预测和补偿通常由下面几方面组成:把图象分割为静止和运动两部分,并假设运动物体仅作平移。估计物体的位移值。用位移估值(即运动矢量)进行运动补偿预测。预测信息编码。运动预测补
11、偿示意图例如图中将当前预测值的位置沿物体平移的方向错开Dx个象素再进行预测,称运动预测补偿。运动预测与补偿技术示意运动预测与补偿技术示意图象分割图象分割(Image Segmentation)是运动补偿预测的基础,分割的办法:实际分割成不同运动的物体,但较困难。把图象分为矩形子块,将子块分为动与不动两种,估计出运动子块的位移。对每个象素的位移都进行递归估计,计算量大。块匹配法则块匹配法则(Block Matching Algorithm)简称BMA,它假设块内各象素只作相等的平移,H.26x和MPEG都采用了BMA。首先确定MN块与搜索区的几何关系如右图,用MN子块在搜搜索区索区内寻求最优匹配
12、来得 到 运 动 矢 量 估 值(dx,dy)。搜索区域搜索区域块匹配法则4最佳匹配块判决准则互相关函数(CCF,Cross Correlation Func)均方误差(MSE,Mean Squared Error)为第k帧中(m,n)位置的像素亮度值。112121(,)(,)(,)y Nx Nkkm xn yMSE i jIm nImi njN(,)kIm n1111/21/211111(,)(,)(,)(,)(,)y Nx Nkkm xn yy Ny Nx Nx Nkkm xn ym xn yIm n Imi njCCF i jIm nImi nj 块匹配法则绝对差值和(SAD,Sum o
13、f Absolute Difference)为第k帧中(m,n)位置的像素亮度值。其中CCF 计算量大,运用较少;MSE匹配效果最好,实验中多为采用;MAD计算量小,效果接近于MSE,多在快速算法中使用。111(,)(,)(,)y Nx Nkkm xn ySAD i jIm nImi nj(,)kIm n搜索方法全搜索(FS,Full Search)精度最高,最为复杂,必须对搜索范围内所有块进行匹配运算。上图区域总共需要搜索2Mx2My次(整象素搜索)。快速算法快速算法三步法(3SS,Three Step Search)四步法(4SS,Four Step Search)二维对数搜索法(LOGS
14、,Logarithmic Search)菱形搜索法(CS,Cross Search)钻石搜索法(DS,Diamond Search)块匹配法则存在的问题:4块尺寸的选择,块小的时候才可近似认为块内各点作相等平移,但块太小易受干扰噪声的影响,不可靠,而且矢量场比特数多,块大可减轻噪声影响,但影响估值精度。而且大的块常包含多个不同运动的物体,块内运动一致性难于满足。H.26x和MPEG的建议选1616作为“宏块”。4估值得到的运动矢量场一致性不够好,这是由于分割图象为块的缘故。(3)离散余弦变换(DCT)MPEG采用88子块的二维离散余弦变换算法。DCT的实质与特点:利用正交变换实现图象数据压缩的
15、实质,是通过图象取样信息从空间域转到变换域,其能量集中且保持不变,相邻系数近似于不相关,从而保留能量集中部分即可使频带压缩。DCT是离散傅里叶变换(DFT)的实部。DCT的均方误差编码性能在理论上最接近于在马尔科夫模型假定下的最佳统计匹配正交变换(KLT)。DCT可用快速算法来实现。(3)离散余弦变换(DCT)488的子图像块的变换示意图(3)离散余弦变换(DCT)4DCT公式(Discrete Cosine Transform)正向DCT(FDCT)上式表明将图象 f 从空间域(x y平面)转换到变换域(u v平面)。其中 。当u=v=0时,;为所有系数的均值,称为DC系数。当u,v不同时为
16、0,;g(u,v)称为AC系数。11002(21)(21)(,)()()(,)coscos22NNxyxuyvg u vC u C vf x yNNN,0,1,2,.,1u vN()()1/2C uC v()()1C uC v11001(0,0)(,)NNxygf x yN(3)离散余弦变换(DCT)二维DCT的矩阵形式:其中:(1)TGCFC(,),(,)g u vGf x yF(21)32222(21)26222(1)(1)3(1)(21)222111coscoscoscoscoscoscoscoscosNNNNNNNNNNNNNNNC(3)离散余弦变换(DCT)显然:所以 ,即二维反向D
17、CT(IDCT)的变换式。11,TTCCC CC CI或(2)TFC GC(3)离散余弦变换(DCT)反向DCT(IDCT)式(2)展开为求和形式为:11002(21)(21)(,)()()(,)coscos22NNxyxuyvf x yC u C v g u vNNNDCT的可分离性n二维DCT可分成行向一维DCT和列向一维DCT组合运算。由公式(1)是F每行的一维DCT变换,为G所有列的一维DCT变换。,TTGCFCCG GFCGCGDCT的快速算法4二维快速DCT是把88块不断分成更小的无交叠子块,直接对数据块进行运算操作。4AA&N 优化算法,在 Intel 主页上可以找到 AA&N
18、IDCT 的 MMX 优化代码。(Intel 主页上的代码,输入数据为 12.4 的定点数,输入矩阵需要转置 90 度)(3)离散余弦变换(DCT)4FDCT输出64个基信号的幅值称作“DCT系数”,即DCT变换系数值。64个变换系数中包括一个代表直流分量的“DC系数”和63个代表交流分量的“AC”系数。4IDCT是FDCT的逆过程,它把64个DCT变换系数经逆变换运算,重建一个64点的输出图象。在所用设备的计算精足够高的前提下,且系数未经过量化,原始的64点信号就能够精确地恢复。(DCT可以看做是无损的无损的)(4)量化4量化的作用是在一定的主观保真度图象质量前提下,丢掉那些对视觉影响不大的
19、信息,不同频率的DCT系数对视觉影响不同,可以根据不同频率的视觉阈值来选择量化表中的元素值的大小。这样通过心理视觉实验,去确定对应于不同频率的视觉阈值,以确定不同频率的量化器步长。(4)量化4MPEG-2中采用线性量化器,量化定义为对64个DCT系数除以量化步长(QP),四舍五入取整。所以量化的过程是有损的有损的。QP由量化表给出,并可以加权伸缩。MPEG-2给出的量化表,是根据人类视觉系统(HVS)特性而得到的。并对于内部块和残差块采用不同的量化表。(/),QQGround G QPGGQP(4)量化4亮度量化表和色度量化表 非内部块非内部块(亮度和色度亮度和色度)默认量化表默认量化表 内部
20、块内部块(亮度和色度亮度和色度)默认量化表默认量化表 低频分量部分,量化步距较小(5)DC系数编码464个变换系数经量化后,坐标(u,v)=(0,0)的DC系数是直流分量,即64个空域图象采样值的平均值。由于相邻块(88)之间的DC系数相关性强,MPEG对DC系数采用DPCM(差分编码)方法,即Diff=DCi-DCi-1。即对相邻像素块之间DC系数的差值进行编码。(5)DC系数编码4根据DC系数的特点,MPEG算法使用了差分脉冲调制编码(DPCM)技术,即对相邻块之间的DC系数的差值:Diff=DCi-DCi-1进行编码。图图 DC系数差分编码系数差分编码(6)行程编码4其余63个交流系数(
21、AC系数)采用行程编码从左上方AC1开始,沿对角线方向,以“Z”字形(Zig-Zag)行程扫描,直至AC63扫描结束。量化后的AC系数通常会有许多零值,以“Z”字形路经进行行程编码,可增加行程中连续零的个数,63个AC系数行程编码的码字甚至可用两个字节表示。(6)行程编码(6)行程编码4编排的方法是按照Z字形的式样编排。这样就把一个88的矩阵变成一个164的矢量,频率较低的系数放在矢量的顶部。(7)变长编码(VLC)4经过行程编码后的矢量中有许多连续的0。为了压缩掉这些连续的0,可对DC和AC行程编码的码字再作基于统计特性的熵编码,MPEG采用基于统计的哈夫曼熵编码(Huffman)。变长编码
22、步骤:把DC系数和行程AC系数进行run-level编码;查变长码表将(run,level)码字转换成变长的二进制码字;串行地输出变长码字作为输入码流。(7)变长编码(VLC)4run-level 编码:计算每个非零 DCT系数前连续0的个数记为run,然后和当前DCT系数的幅值(level)配对作为一个(run,level)码字。例如:有一组矢量(64 个的后 63 个)是 40,31,0,0,0,0,2,0,-30,-16,0,0,1,0,0,0,0,0,0,0,.,0经过 run-level编码后就是 (0,40);(0,31);(4,2);(1,-30);(0,-16);(2,1)(7
23、)变长编码(VLC)4查VLC码表将(run,level)转换成二进制变长码。VLC码表是基于统计的Huffman表,其制定原则是根据MPEG组织对大量的(run,level)进行统计后,对于出现频率高的(run,level)用短码来表示,对于出现频率低的(run,level)用长码来表示,对于极少出现的(run,level)用定长码(转码)来表示。所有VLC码都是即时码,即任一变长码不是其他变长的前缀,满足Huffman码的特征。(7)变长编码(VLC)接上例,查VLC码表:(0,40)-0000 0000 0010 000 0;(0,31)-0000 0000 0100 00 0;(4,2
24、)-1111 1101 1 0;(1,-30)-0000 01(换码)0000 01(run)1111 1110 0010(level);(0,-16)-0000 0000 0111 11 1;(2,1)-0010 1 0。5 MPEG-2运动视频压缩标准4MPEG-2 是国际标准化组织于1994年发布的面向演播级的视频、音频压缩标准。MPEG-2编码码率从3M100Mbps,标准的正式规范在ISO/IEC13818中。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和HD
25、TV的编码标准。5 MPEG-2运动视频压缩标准(1)MPEG-2视频流数据层次MPEG-2标准定义了视频流数据结构的层次如下图所示:运动图象序列画面组画面885 MPEG-2运动视频压缩标准4比特流的语法层及其功能如下表所示(结合上图):5 MPEG-2运动视频压缩标准其中包括:n视频序列(Video Sequence)由一系列的头,一个或多个图组,和一个序列结束码组成。n图组(Group of Pictures)是一个或多个帧图片序列。允许随机访问其序列。n图(Picture)是一个视频序列的基本编码单元,图片由三个正交的本色组成,包括亮度Y,两个色度CbCr的值。5 MPEG-2运动视频
26、压缩标准n切片(Slice)是一个或多个结构宏块,在Slice里宏块的顺序是从左到右,从上到下。在差错处理时Slice是很重要。如果位流有一个错误,解码器可以从下一个Slice起点开始解码,这有利于改善图像质量。n宏块(Macroblock)是一个1616的亮度分区和相应的88色度分量分区。宏块是进行运动估计和运动补偿的基本单元。n块(Block)是一个88的亮度分区和相应的44色度分量分区。块是进行编码的基本单元。5 MPEG-2运动视频压缩标准(2)编码帧类型MPEG-2标准专门定义3种编码帧类型:Intra、Predicted和Bidirectional。nIntra-Pictures即
27、称图,编码时仅使用本图信息,图提供所有可能的随机访问点进入压缩的视频数据,图仅使用变换编码,因此它提供适度的压缩倍数,典型的约每象素2位为宜。I帧的压缩编码算法框图nPredicted Pictures称为P图,它被编码时参考最接近的前面的或P图作运动预测和补偿,这种技术称之为前向预测,如下图:IBBPBBPTimeForward predictionP帧的压缩编码算法框图nBidirectional Pictures称为B图,它使用I图或过去的或将来的P图作参考帧,这种技术称为双向预测。如下面图所示,B类图提供最大的压缩并不会产生误差,因为它不会被用作参考图。由于它对两帧起了平均作用,双向预
28、测还减少了噪声的影响。IBBPBBPTimeB帧的压缩编码算法框图(3)视频流IPB典型布局MPEG-2算法允许编码时选择频率并定位图,这种选择基于对随机访问性在应用时的需要(例如实验快进、快退),并定位在视频序列里场景的剪切。在应用中随机访问是重要的,I图典型地用于每秒每秒两次两次。4下图表示一个典型的I、P和B图的布局,按显示顺序布局。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 I B B P B B P B B P B B -PAL制I B B P B B P B B P B B P B B -NTSC制帧重排4MPEG编码器在视频流里重排图片顺序,提交给解码器,以最有效的序列方式来表示图片。实际上,在组合B图之前参考的P图需要先重构出来。IBBPBBP1234567Display orderIPBBPBB1423756Video stream order作业4实现一个简单的基于MPEG-2标准的编码器,包括以下内容:n基于宏块的运动估计补偿(块匹配准则、搜索范围、搜索算法);n离散余弦变换(DCT),快速算法;n量化(Quantization);nDC系数的差分编码(DPCM);nAC系数的行程编码(RLE);n基于run-level的变长编码(VLC)。GOP布局为IBBPBBP,至少一个GOP的编码。