今天,计算机多媒体技术的应用越来越广泛。多媒体技术的核心就是使用计算机综合处理声、文、图、像等多媒体信息。数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。那么如何对数据进行压缩呢?首先得知道数据的格式,根据不同数据的存储格式使用不同的压缩算法对数据进行压缩。本文主要分析语音、图像和视频数据的存储格式。
目前,语音文件格式有.WAV格式、.VOC格式和.AU格式。下面将对三种格式的语音文件进行详细的分析。
VOC文件由文件首部和数据块两大部分组成。文件首部包括标识符、版本号和一个指向数据块开始的指针。如表1所示。
数据块包括语音数据、静态标记、ASCII字符、重复、重复结束、终止以及新加入的扩展块等。其中扩展块用于立体声或高速语音数据。数据块被分为9个类型的数据子块,每个子块的第一个字节称为块类型(BLKTYPE),指出本子块所办含的数据类型,取值为00~08,接着三个字节为块长度(BLKLEN),为本子块中除了BLKTYPE与BLKLEN域以外的字节数(只有类型0数据没有BLILEN)。根据BLKTYPE,块中后面的数据可以是语音特征值(如采样率、压缩方式)、语音数据或其他一些信息数据子块。程序开发中,应用程序不必翻译所有的BLKTYPE,当遇到不认识的BLKTYPE时,不难根据BLKLEN跳到下一数据子块。下面给出9种数据类型的数据子块内容分析。
(1)类型0:终止整个数据块,表示其后再无其它数据块。
(2)类型1:语音数据
其中:TC域是时间常量(TimeConstant),TC=256-1000000/采样率;PACK域表示本块数据的压缩方式:0:8位源码 1:压缩到4位 2:压缩到2—6位 3:压缩到2位。不难看出本数据块的实际长度=BLKLEN-2.
(3)类型2:该子块是上一个语音数据块的继续,长度为BLKLEN字节。
(4)类型3:该子块定义了语音数据中的一段静音,静音长度以采样周期为单位,其值比静止时间少1,BLKLEN一般为3.
(5)类型4:该特殊子块在语音数据中定义了一个标志,该标志可用声霸卡的应用程序VOICE EDITOR插入到语音数据中。
(6)类型5:ASCII字符
该子块确定一个以null结束的ASCII字符串,该块仅在需要有关语音的信息(如名字、类型等)时被定义,一般可忽略。
(7)类型6:重复循环
该子块确定重复循环的开始,循环次数为COUNT,其中COUNT范围为1~0FFFE,当其值为FFFE时,将无限循环,BLKLEN一般置为2.
(8)类型7:结束重复循环块,确定重复循环的结束。
其中,BLKLEN一般置为0.
(9)类型8:扩展块
该扩展块仅用于立体声或高速语音数据的描述,必须位于数据类型1 块之前。它确定了后面的立体声或高速语音数据的属性特征,位于立体声或高速语音数据之前。
其中:BLKLEN一般置为4;MODE确定单声道或立体声方式。单声道MODE=0.立体声MODE=1
单声道:TC=65532-256000000/采样率
立体声:TC=65532-256000000/2*采样率;
PACK一般置为0.
该块之后的数据类型1块所确定的语音属性特征将被忽略。
wave文件也是由文件首部及波形音频数据块组成。
文件首部包括标识符。语音特征值,声道特征以及脉冲编码调制格式类型标志等。如表2所示。
wave文件数据块包含以脉冲编码调制格式表示的样本。wave文件是由样本组织而成的。在单声道wave文件中,声道0代表左声道,声道1代表右声道。在多声道wave文件中,样本室交替出现的。
AU语音文件是UNIX系统的工作站上的语音存储格式。其格式较WAVE、VOC文件简单。其结果如表3所示。
视频数据,图像数据在存储中的存储格式主要有RGB和YUV。RGB是多媒体数据进行数据存储采用的主流格式;YUV格式所需存储空间一般是RGB格式存储空间的一半,所以TUV格式主要用于多媒体数据传输中。
计算机彩色显示器显示彩色的原理与彩色电视机一样,都是采用R(red)、G(green)和B(blue)相加混色的原理;通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示。
根据三基色原理,任意一种色光F都可以由不同分量的R、G、B三色相加混合而成。F=r[R]+g[G]+b[B]。其中,r、g、b分别为三基色参与混合的系数。当三基色分量都为0时混合为黑色光;而当三基色分量都为k(最强)时混合为白色光。调整r、g、b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光。
RGB的GUID(globally unique identifier全球唯一标识符)格式描述如下表所示:
在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机进行摄像,然后把摄得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R--Y(即U)、B——Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。
采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。
在DirectShow中,常见的YUV格式有YUV2、YUYV、YVYU、UYVY、AYUV、Y41P等。。
主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以,原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 1个点需要 8x3=24 bits,若4:4:4按采样后,YUV仍各占8bit。按4:1:1采样后,而现在一个点平均仅需要 8+(8/4)+(8/4)=12bits。这样就把图像的数据压缩了一半。
YUV 的优点之一是,色度频道的采样率可比 Y 频道低,同时不会明显降低视觉质量。有一种表示法可用来描述 U 和 V 与 Y 的采样频率比例,这个表示法称为 A:B:C 表示法:
4:4:4:表示色度频道没有下采样。
4:2:2:表示
2:1 的水平下采样,没有垂直下采样,对于每两个 U 样例或 V 样例,每个扫描行都包含四个 Y 样例。
4:2:0:表示 2:1 的水平下采样,2:1 的垂直下采样。
4:1:1:表示 4:1 的水平下采样,没有垂直下采样,对于每个 U 样例或 V 样例,每个扫描行都包含四个 Y 样例。
YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。
4:2:0表示每4个像素有4个亮度分量,2个色度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常用格式。
4:2:2表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最常用格式。
4:4:4表示全像素点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。
yuv<-->rgb
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
yCbCr<-->rgb
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
YUV色彩模型来源于RGB模型。 该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。颜色模型用于模拟彩色电视广播。
YCbCr模型来源于YUV模型。
YCbCr是一个的YUV色彩空间缩放和偏移的版本应用:数字视频,ITU-R BT.601T推荐标准。