2.1介绍
视频编码是对一个数字视频信号的编码和解码的过程.这一章讨论了数字图象和视频信号的结构和特征以及对于视频编码来说很重要的一些基本概念,比如采样格式等.数字视频是对于一人自然的视觉场景的从时间和空间上进行采样的表示方式.一个场景是由通过在时间上对于点进行采样来得到帧从而产生的(一种对于在时间上点在整个视频场景中的表示方法)或是一个场(由奇数或偶数行的空间采样组成).采样在一定的时间间隔上(通常是1/25或1/30秒时间间隔)进行重复,从而产生一个可动的视频信号。一般来说,需要三种采样集来表示一个有色的场景。表示数字视频的流行的方法是使用ITU-R601标准并使用"中间集"。对于一个视觉场景的重建的准确性必须被计算来决定一个视频通信系统的性能,这是一个出了名的困难和极为不准确的过程。主观的测量方法是极耗时间而且它与观察者对于变换的反应程序不同而不同。客观的测量方法实现起来就更简单一些,但是目前还不能与人类实际视觉感完完全全匹配。
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.1RGB
在RGB颜色空间中,一个带颜色的图象采样是用三个值来表示一个象素点的相对的红,绿和蓝色比(三种光线的主样构成颜色)。
任何颜色都可以通过把红,绿和蓝来通过不同的比例相混得到。RGB颜色空间更加适合于捕捉并显示颜色图像。捕捉RGB图像
包括过滤出红,绿和蓝色的构成比率,并用一个单独的传感器数组来捕捉。CRT和LCD通过分别对每个像素点的红绿蓝值进行
显示来得到各种颜色。从一个通常的观察距离来看,不同的构成部分可以达到颜色上的真实感。
2.4.2YCbCr
人类视觉系统(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=krR+(1-kb-kr)G+kbB
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.3YCbCr采样格式
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.2ITU-R500
很多的关于主观质量认下的测试过程都在ITU-RBT.500-11中被定义。一个常用的过程就是DoubleStimulusContinuousQuality
Scale(DSCQS)方法,评价者被展示了一系列的图片或两个视频序列A和B(一个接一个地),然后被要求给出A和B的质量评价值,方法
是在五个分隔着的评价值(从"Excellent"到"Bad")画连续线来定。在一个典型的测试会话中,评价者被展示了一系列的序列,并被
要求对它们进行评价。对于每对序列来说,一个是未受损的"参考“序列,另一个是同样的序列,它被在测试的系统或过程中修改了。
这两个序列的顺序,原始的和有损的,在测试地过程中被随机的给出,这样评价者就不知道哪个是原始的,哪个是改变过的序列。
这样就防止了评价者带偏见地比交这两个测试序列。在结束的时候,评分被转化到一个规范化的范围内,最终的结果是用平均评价值
来说的,用它来指明相应的帧的质量。
像DSCQS这样的测试被广泛地接受,并被用来评价主观的视频效果。然而,这样的测试受实际问题的影响。这样结果对于评价者来说
差别会非常大。这个不同会被在重复测试的过程中被弥补过来。一个有经验的评价者(对视频压缩失真了解的比较多的)会比那些非
有经验性的用户会给出一个更带偏见的评分。这就意味着一个很大的评价用户群是需要的,因为没有经验的用户很快会发现被改变
的视频的一些特征。这些因素使得使用DSCQS方式的代价更大。
2.6.2客观的质量测量
主观测量质量的方法的复杂性和消耗性让用算法自动测量质量要更加的吸引人。视频压缩的开发者和视频处理系统很大程序上依赖
于所谓的客观质量测量方法。最广泛应用的方法是PSNR方法,但是这种方法的局限性使人们不得不找更加复杂的方法来逼近人类视觉性。
2.6.2.1PSNR
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结论
采样模拟信号会形成数字视频信号,它有准确,高质量和对于数字媒体的存储传递等各种优势,但是会占用比较在的空间。与生俱来的
问题包括空间和时间分辨率,颜色表示和视频质量的测量问题。下一章会介绍视频压缩的一些其他的基本理论.
视频编码2
3.1介绍
压缩(compress)动词:挤压到更小的空间中;即condense
压缩(conpress)名词:压缩的行为或是压缩的状态
压缩是把数据用更小的空间来存放的技术.视频压缩(视频编码)是把数字视频流序列用更少的数据位进行存放的方法."Raw"
或叫没压缩过的视频需要大量的码(大约每秒信息216M),而且压缩对于数字视频的存储和传输来说都是需要的.
压缩包括一对互补的系统,一个编码器(encoder)和一个解压器(decoder).编码器把原数据在传输或存放之前转变为压缩格式(
占用更少的数据位),而解压器把压缩的格式转会到原来的视频数据格式上.编码器/解码器对经常被叫做CODEC(enCOder/DECoder)
数据压缩是通过移除数据冗余来实现的,比如说,对于数据重构过程中无用的数据。很多种数据都有统计上的冗余性,它们
就可以通过无损压缩进行有效的压缩,这样的标准比如说JPEG-LS,它可以达到3-4倍的压缩。有损压缩可以达到更高的压缩
比。在有损压缩系统中,解压数据与源码流数据是不同的,高压缩率是通过视频质量的下降来达到的。有损视频压缩系统是
建立在删除主观冗余的原理之上的,从图象或视频中删掉的部分不会很大程度上影响观察者对于视频质量的认识的。
大多数视频编码方法寻找空间和时间上的冗余来达到压缩的效果。在时间域中,连续几帧的视频通常有很强的相关性,特别
是当时域采样率是非常高的时候尤其如止。在空间域中,通常像素采样点之间是相互关联的,比如说,相邻象素之间很相近。
H.264和MPEG4视频标准共用了一部分特征。这两种标准都假设了一种以块(block)为基础的运动补偿,变换,量化和熵编码。
我们主要关注到这些主要的方法中,并从时间模型开始,接下来是图象变换,量化,预测式编码和熵编码。并以对于一个图
象采样块进行编码和解码的过程进行描述。
3.2视频编解码器
一个视频编码器器把一个源图像或视频序列转化为一种压缩模式,并在解码器把它构造为源序列的一个拷贝的或是一个近似.
如果解压了的视频序列与原序列是相同的,那么编码过程是无损的,如果解压序列与源序列是不同的,那么这个过程是有损的。
CODEC用一种模型来表示原始视频流(一个被有效编码的表示方式,并可以用它来重建视频数据的近似结果或尽量取得高的码率。
这两个目标(压缩效率和高质量)通常是相矛盾的,因为一个低的压缩码率通常在解压部分会降低图象的质量。码率和质量的平
衡我们会在之后进行介绍
视频编码器是由三个主要的功能部件实现的:时域模型,空域模型和熵编码。时域模型的输入为一个未压缩的视频流序列。时
域模型试图用邻近帧的相似性来消除了时域冗余,通常是构造通当前帧的预测。在MPEG4视频部分和H.264中,预测通常从一个
或多个之前或之后的帧来进行的,并通过对于帧之间的差别进行补偿。时域模型的输出是一个剩余帧(通过从实际当前帧中减
去预测值得到),而一系列的模型参数,通常是一系列用来描述运动是如何补偿的运动向量。
剩余帧构成了时域模型的输入,它会利用邻近采样点的相似性来降低空域的冗余。在MPEG4视频部分和H.264中,这通常通过一些
变换来对样点进行处理来实现。变换把采样点转到其他的域中,在这些域中用变换系数来表示。这些系数被量化来删除不明显的
值,只留下很少的大系数来对剩余帧进行表示。空域模型的输出是一系列的量化变换的系数。
时域模型的参数(通常是运动向量)和空域模型的参数(系数)通常用熵编码来进行压缩。这就删除掉了统计上的冗余度(比如,用
短二进制码表示当前的向量和系数)并制造出一个压缩流或文件来进行传输或存储。一个压缩的序列由编码的运动向量参数,编
码的剩余系数和头信息表示。
视频解吗器从一个压缩流中构造一个视频帧。系数和运动向量由熵解码器进行解码,然后空域模型构建出一个版本的剩余帧。
解码器利用运动向量参数与一个或多个解压帧来构成一个对当前帧的预测,然后帧就可以通过加入这个剩余帧来得到。
3.3时域模型
时域模型的目标是要减少减少传输帧的冗余性。这个过程的输出是一个剩余帧,而且预测过程越准确,剩余帧中包含的能量就越
小。剩余帧被编码并送到解压器用来构造预测帧,加上解码的剩余帧来构成当前帧。预测帧是通过一个或多个过去或未来的帧(
都叫做参考帧)来创建的。预测的准确性通常可以由参考帧和当前帧之间的运动补偿来改进。
3.3.1从前一视频帧进行预测
时间域的预测的最简单的方法是从当前帧的前一帧进行预测。用两帧之间的差来做为剩余帧。这个方法的明显的问题在于剩余帧
中的能量太多了,这也就是说在时域压缩之后还有大量的数据可以被压缩。大部分的剩余能量是由于在二帧中的物体运动可能造
成两帧的运动补偿形成的。
文章评论(0条评论)
登录后参与讨论