视频编解码基础1(转)

来源:互联网 发布:企业网络管理 编辑:程序博客网 时间:2024/04/29 23:04
http://www.usr.cc/thread-51994-1-3.html

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采样分配到两个场中。可以得到,隔行扫描的总采样数跟渐进式扫描中使用的采样数目是相同的。
原创粉丝点击