原创 MPEG 4 & H.263视频编码从基础到深入

2009-9-23 08:28 1364 3 3 分类: 通信
作者:    时间:2009-03-03    来源:52RD手机研发 
 
      

2.1介绍
视频编码是对一个数字视频信号的编码和解码的过程.这一章讨论了数字图象和视频信号的结构和特征以及对于视频编码来说很重要的一些基本概念,比如采样格式等.数字视频是对于一人自然的视觉场景的从时间和空间上进行采样的表示方式.一个场景是由通过在时间上对于点进行采样来得到帧从而产生的(一种对于在时间上点在整个视频场景中的表示方法)或是一个场(由奇数或偶数行的空间采样组成).采样在一定的时间间隔上(通常是1/25或1/30秒时间间隔)进行重复,从而产生一个可动的视频信号。一般来说,需要三种采样集来表示一个有色的场景。表示数字视频的流行的方法是使用ITU-R 601标准并使用"中间集"。对于一个视觉场景的重建的准确性必须被计算来决定一个视频通信系统的性能,这是一个出了名的困难和极为不准确的过程。主观的测量方法是极耗时间而且它与观察者对于变换的反应程序不同而不同。客观的测量方法实现起来就更简单一些,但是目前还不能与人类实际视觉感完完全全匹配。


2.2 自然视频场景


一个经典的"现实世界"或"自然世界"的视频场景是由多个有各自特征形状,深度,纹理和亮度的物体构成的。视频场景的颜色和明亮度在不同的场景中根据不同程序的光滑度而定。一个与视频处理和压缩相关的经典的自然视频场景包括空间特征(纹理变换,物体的数目和形状,颜色等)和时间特征(物体运动,亮度的变化,视点的移动等)


2.3 捕捉
一个自然视频场景在空间和时间上是连续的。用数字的形式表示一个视频场景包括在空间对实际场景进行采样(通常是通过在视频图形面上用长方形格处理)和时间采样(以一系列以某时间间隔采样得到的静态帧组成)。数字视频就是在数字形式下的一个视频场景的采样的表示方式。每一个时-空采样(像素)用一个数或一组数来表示,用来描述采样点的亮度和色度。


为了得到一个二维的采样图像,摄像头把一个视频场景的二维投影聚焦到传感器上,比如一组电荷耦合装置(CCD)。在带色的图像捕捉过程中,每一个颜色成员都分别被过滤并投影到一组CCD中。


2.3.1 空间采样
一组CCD的输出就是一个模拟的视频信号,一组可以表示一个视频图像的电信号。在时间上对一点进行采样就形成了一个有定值的采样点图像或帧。最常用的采样方法是把采样点置于一个正方形或长方形格中进行操作。然后对于每个格交点处的点进行采样,重建过程就以采样值对应到像素上进行显示。重建图的视觉效果取决于采样点的数量。选择一个粗糙的采样格会得到一个低分辨率的采样图像,而增加采样点的数量就会增加采样图像的分辨率。


2.3.2 时间采样
一个可动的视频图像是通过对信号在周期性的时间间隔上进行快照得到的。重放这一系列的帧会得到一个运动的效果。一个高的时间采样率(帧率)会产生更加平滑的运动但是它就要求有更多的采样要被捕捉并被保存。在10帧每秒之下的帧率有些被用于一些很低码率的视频通信中(因为被传输的数据量非常的小)但是运动却看起来很笨拙而且不自然。在10-20帧每秒是比较经典的低码率视频。在25-30帧每秒进行采样是标准电视信号图象的采样帧率(配合隔行扫描采样来达到更好的运动效果)。50-60帧每秒就可以形成平滑的运动(代价就是帧率太过高,传输和存储的压力大).


2.3.3 帧和场
一个视频信号可以被通过对于一系列帧(渐进采样)或一个序列的隔行扫描的场(隔行扫描采样)来进行采样。在一个隔行扫描采样的视频序列里,一帧的一半的数据是在每个时间采样间隔进行采样的。一个场由奇数个或偶数个扫描线组成,而一个隔行扫描的视频序列包括一系列的视频帧。这种采样方式的优点在于与有相同帧数的同样码率的渐进序列相比,可以在一秒中传输两倍多的场,这样就可以形成更加平滑的运动。比如,一个PAL视频序列由50场/秒的码率组成,在回放过程中,运动可以比与之相同的25帧每秒的用渐进视频序列形成的运动显得更加的平滑。


2.4 颜色空间
大多数数字视频程序都依赖于彩色视频的显示,这样的话,就需要一个来捕捉并表示颜色空间的表示方法。一个单色的图像只需要一个在空间内表示一个像素点的亮度或流明度的值就可以了。但对于颜色图像来说,对于一个像素点至少需要三个数来把颜色信息准确地表示出来。用来表示亮度和颜色的方法叫做颜色空间。


2.4.1 RGB
在RGB颜色空间中,一个带颜色的图象采样是用三个值来表示一个象素点的相对的红,绿和蓝色比(三种光线的主样构成颜色)。任何颜色都可以通过把红,绿和蓝来通过不同的比例相混得到。RGB颜色空间更加适合于捕捉并显示颜色图像。捕捉RGB图像包括过滤出红,绿和蓝色的构成比率,并用一个单独的传感器数组来捕捉。CRT和LCD通过分别对每个像素点的红绿蓝值进行显示来得到各种颜色。从一个通常的观察距离来看,不同的构成部分可以达到颜色上的真实感。


2.4.2 YCbCr
人类视觉系统(HVS)相比亮度来说对于颜色不是那么敏感的。在RGB颜色空间中,三种颜色被平等地看待,并用相同的分辨率存放起来。但是通过把亮度与颜色信息分离,并对亮度值取更高的分辨率可以更有效地表示一个颜色图像。


YCbCr颜色空间和它的变换(通常写为YUV)是一种流行而高效的表示一个颜色图像的方法。Y是亮度值,由R,G,B的加权平均可以得到: Y="krR" + kgG + kbB
这里k是加权因子。


颜色信号可以由不同的颜色差别来表示:
Cb = B-Y
Cr = R-Y
Cg = G-Y
对于一个颜色图像的完整的描述由给定Y和三个色差:Cb,Cr,Cg来表示。


目前为止,我们的表示方法好像并不那么好,因为相比RGB表示来说,我们这次用了四个参数。然后Cb+Cr+Cg是一个常数,那么我们只需要两个色度参数就可以了,第三个可以通过其他两个计算出来。在YCbCr空间中,只有Y和Cb,Cr值被传输和存储,而且Cb和Cr的分辨率可以比Y低,因为人类视觉系统对于亮度更加敏感。这就减少了表示图像的数据量。通常的观察情况下,RGB和YCbCr表示的图像看上去没有什么不同。对于色度采用比亮度低的分辨率进行采样是一种简单而有效的压缩办法。


一个RGB图像可以在捕捉之后转换为YCbCr格式用来减少存储和传输负担。在显示图象之前,再转回为RGB.注意没有必要去指明分别的加权值kg(因为kb+kr+kg=1),而且G可以从YCbCr中解压出来,这说明不需要存储和传输Cg参数。


Y = kr R + (1-kb-kr)G + kb B
Cb = 0.5/(1-kb) * (B-Y)
Cr = 0.5/(1-kr) * (R-Y)


R = Y + (1-kr)/0.5 * Cr
G = Y - 2kb(1-kb)/(1-kb-kr) * Cb - 2kr(1-kr)/(1-kb-kr) * Cr
B = Y + (1-kb)/0.5 * Cb


ITU-R的BT.601决议定义了kb=0.114,kr=0.299,那么代换参数就有了如下等式:


Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y )
Cr = 0.713(R - Y )


R = Y + 1.402Cr
G = Y - 0.344Cb - 0.714Cr
B = Y + 1.772Cb


2.4.3 YCbCr采样格式
4:4:4采样就是说三种元素Y,Cb,Cr有同样的分辨率,这样的话,在每一个像素点上都对这三种元素进行采样.数字4是指在水平方向上对于各种元素的采样率,比如说,每四个亮度采样点就有四个Cb的Cr采样值.4:4:4采样完整地保留了所有的信息值.4:2:2采样中(有时记为YUY2),色度元素在纵向与亮度值有同样的分辨率,而在横向则是亮度分辨率的一半(4:2:2表示每四个亮度值就有两个Cb和Cr采样.)4:2:2视频用来构造高品质的视频彩色信号.


在流行的4:2:0采样格式中(常记为YV12)Cb和Cr在水平和垂直方向上有Y分辨率的一半.4:2:0有些不同,因为它并不是指在实际采样中使用4:2:0,而是在编码史中定义这种编码方法是用来区别于4:4:4和4:2:2方法的).4:2:0采样被广泛地应用于消费应用中,比如视频会议,数字电视和DVD存储中。因为每个颜色差别元素中包含了四分之一的Y采样元素量,那么4:2:0YCbCr视频需要刚好4:4:4或RGB视频中采样量的一半。


4:2:0采样有时被描述是一个"每像素12位"的方法。这么说的原因可以从对四个像素的采样中看出.使用4:4:4采样,一共要进行12次采样,对每一个Y,Cb和Cr,就需要12*8=96位,平均下来要96/4=24位。使用4:2:0就需要6*8=48位,平均每个像素48/4=12位。


在一个4:2:0隔行扫描的视频序列中,对应于一个完整的视频帧的Y,Cb,Cr采样分配到两个场中。可以得到,隔行扫描的总采样数跟渐进式扫描中使用的采样数目是相同的。


2.5 视频格式
这本书中描述的视频压缩标准可以压缩很多种视频帧格式。实际中,捕捉或转化一个中间格式或一系列中间格式是很平常的事情。CIF就是一种常见的流行的格式,并由它衍生出了4CIF和Sub-QCif。帧分辨率的选择取决于应用程序,可使用的存储量以及传输带宽。比如说4CIF对于标准定义的电视和DVD视频来说是合适的,CIF和QCIF在视频会议中是常被使用的格式。QCIF和SQCIF对于移动设备的多媒体程序来说是合适的,在这样的情况下,显示分辨率和码率都是有限的。以下是各种格式的具体使用位数的需求(使用4:2:0采样,对于每个元素用8个位大小表示):


格式: Sub-QCIF 亮度分辨率: 128*96  每帧使用的位: 147456
格式: QCIF  亮度分辨率: 176*144  每帧使用的位: 304128
格式: CIF  亮度分辨率: 352*288  每帧使用的位: 1216512
格式:  4CIF  亮度分辨率: 704*576  每帧使用的位: 4866048



一种在电视信号中被应用的很广的数字视频信号编码格式就是ITU-R的BT.601-5 提案。亮度元素被在13.5MHz下采样,而亮度值则在6.75MHz下采样,这样就形成了一个4:2;2的Y:Cb:Cr采样结果。采样数字信号的参数取决于视频码率(对于NTSC来说是30Hz,对于PAL/SECAM来说是25Hz)。NTSC的30Hz是对低空间分辨率的补偿,这样总的码率就是216Mbps.实际显示的激活部分的区域要比总量小,因为它去掉了在一帧边缘处的水平和垂直空白间隔。
每一个采样都有0-255的采样范围。0和255两个等级被留作同步,而且激活的亮度信号被限制到26(黑色)到235(白色)之间.


2.6 质量
为了指定,评价和比较视频通信系统,我们需要决定向观察者显示的视频图像的质量。衡量视频信号的质量是一件困难的事情,通常也是不准确的,因为有太多的因素会影响到衡量的结果了。视觉质量与生俱来就是主观的因素,它被很多因素影响着,这就使对于这个衡量结果的准确性变得更难了。比如说,一个视频信号的质量对于一个观察者来说主要取决于任务本身,比如说,被动地观看一部DVD影片,主动地参与一个视频会议,用符号评议进行通信交流,或是试图从一个视频场景中认出一个人。衡量视频信号的客观分类给定了一个准确的可重复的结果,但是没有哪种客观的测量方法可以完全地模拟人类视觉主观的感受。


2.6.1  主观质量测量
2.6.1.1 影响主观质量的因素
对于一个视频场景的感觉是由人类视觉系统对于不同元素复杂交互性决定的----眼睛和大脑.对于视频信号的感知是受空间保真度的影响的(不管有没有明显的失真,问题在于我们是否可以清楚地看到一个场景的各个部分)和时间保真度(运动是否自然平滑)。然而,一个观察者对于质量的看法经常会被观察环境,观察者的心情和观察者与场景的交互程序相关。一个执行特定任务的用户需要关注于视频场景的一部分。观察一个场景常与看一个电影时的对于"好"的概念是不同的。例如,一个观察者的对视频质量的看法在观察环境好的情况下会更好一些(而这一点不取决于视频信号本身的好坏)


其他的重要的影响因素包括视觉焦点(一个观察者通过一系列的观察点而不是同时观察所有的内容)和所谓的"最新效应"(我们对于一个视频序列的看法总是更多地受更新看到的内容的影响而不是老的内容)。所有的这些因素都让衡量一个视频的质量的好坏的任务变得极为困难。


2.6.1.2 ITU-R 500
很多的关于主观质量认下的测试过程都在ITU-R BT.500-11中被定义。一个常用的过程就是Double Stimulus Continuous Quality Scale(DSCQS)方法,评价者被展示了一系列的图片或两个视频序列A和B(一个接一个地),然后被要求给出A和B的质量评价值,方法是在五个分隔着的评价值(从"Excellent"到"Bad")画连续线来定。在一个典型的测试会话中,评价者被展示了一系列的序列,并被要求对它们进行评价。对于每对序列来说,一个是未受损的"参考"序列,另一个是同样的序列,它被在测试的系统或过程中修改了。


这两个序列的顺序,原始的和有损的,在测试地过程中被随机的给出,这样评价者就不知道哪个是原始的,哪个是改变过的序列。这样就防止了评价者带偏见地比交这两个测试序列。在结束的时候,评分被转化到一个规范化的范围内,最终的结果是用平均评价值来说的,用它来指明相应的帧的质量。


像DSCQS这样的测试被广泛地接受,并被用来评价主观的视频效果。然而,这样的测试受实际问题的影响。这样结果对于评价者来说差别会非常大。这个不同会被在重复测试的过程中被弥补过来。一个有经验的评价者(对视频压缩失真了解的比较多的)会比那些非有经验性的用户会给出一个更带偏见的评分。这就意味着一个很大的评价用户群是需要的,因为没有经验的用户很快会发现被改变的视频的一些特征。这些因素使得使用DSCQS方式的代价更大。


2.6.2 客观的质量测量
主观测量质量的方法的复杂性和消耗性让用算法自动测量质量要更加的吸引人。视频压缩的开发者和视频处理系统很大程序上依赖于所谓的客观质量测量方法。最广泛应用的方法是PSNR方法,但是这种方法的局限性使人们不得不找更加复杂的方法来逼近人类视觉性。


2.6.2.1 PSNR
PSNR是用来在对数级上描述质量,并且依赖于原始信号和改变后信号的均方差(MSE):
PSNR(db) = 10log(10)(2^n-1)^2/MSE


PSNR可以很方便而快速地被计算出来,这样它就成为了一种很流行使用的方法,并用来测量压缩和解码视频图像的质量。


PSNR方法有几个局限性,PSNR需要一个原始的图像做为对比,但是这也许是无法在所有情况下都可以实现的,也难保所谓的原始图象没受过影响。PSNR不能准确地给出主观的视频质量值。对于给定的一个图象或一个图象序列来说,高的PSNR通常说明质量高,低PSNR说明质量低。然而,一个特定的PSNR值并不等于绝对的主观的质量。主观上感觉好的图象不一定PSNR值高。这种情况下,人类的观察敏感区中心让人感觉清晰度很好,但信嗓比不一定高。


2.6.2.2 其他的客观质量衡量方法
因为PSNR方法的局限性,最近有很多工作用来开发更加复杂的客观的测试过程,而且表示更准确的主观信息。很多不同的方法都被提出了。但是没有一个可以完全代替主观测试。所以还没有一个比较标准的,准确的,可用的方法。意识到这一点之后,ITU-T视频质量专家组(VQEG)就致力于提出一种客观的视频质量评价机制。每一步就是测试并比较隐藏的模型与测试模型。在2000年三月,VQEG宣布有10个这样的测试系统备选。不幸的是,没有一种被认为是适合的。VQED在2003年进行了第二次的评估。除非非常在自动质量评价中有一个非常大的突破,否则这个问题是很难被解决了。


2.7 结论
采样模拟信号会形成数字视频信号,它有准确,高质量和对于数字媒体的存储传递等各种优势,但是会占用比较在的空间。与生俱来的问题包括空间和时间分辨率,颜色表示和视频质量的测量问题。下一章会介绍视频压缩的一些其他的基本理论.


email:  


 

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条