1. RGB与YUV之间的转换
1)由电视原理可知,亮度和色差信号的构成如下:
Y=0.2990 R+0.5870G+0.1140B
R-Y=0.7010R-0.5870G-0.1140B
B-Y=-0.2990R-0.5870G+0.8860B
为了使色差信号的动态范围控制在0.5之间,需要进行归一化,对色差信号引入压缩系数。归一化后的色差信号为:
U=-0.1684R-0.3316G+0.5B
V=0.5R-0.4187G-0.0813B
2)码电平分配及数字表达式
A.亮电平信号量化后码电平分配
在对分量信号进行8比特均匀量化时,共分为256个等间隔的量化级。为了防止信号变动造成过载,在256级上端留20级,下端留16级作为信号超越动态范围的保护带。
B.色差信号量化后码电平分配
色差信号经过归一化处理后,动态范围为-0.5-0.5,让色差零电平对应码电平128,色差信号总共占225个量化级。在256级上端留15级,下端留16级作为信号超越动态范围的保护带。
3)色度格式
若色差信号的取样频率低于亮度信号的取样频率,就称为图像亚取样。
4:4:4格式:对图像不亚取样,通常用于图像信号源及特殊的高质量视频信号。
4:2:2格式:色差信号U,V的取样频率为亮度信号取样频率的二分之一,在水平方向的取样点数为Y的一半,而在垂直方向则与Y相同。
4:2:0格式:色差信号U,V的取样频率为亮度信号取样频率的四分之一,在水平方向和垂直方向上的取样点数均为Y的一半。
2.WAV数据解析
RIFF(Resource Interchange File Format)用来捕获、编辑和播放音频和视频序列。RIFF数据格式有两种类型:
Chunks:包含4字节的标识符,4字节表示该chunk的大小,以及数据。
Lists:一个chunk的子集,它包含关键字“LIST”,4字节表示该list的大小,4字节标识符,以及数据。
WAV是波形音频文件(Wave Audio),是Windows中用来表示数字化声音的一种标准格式,其文件扩展名为.wav,是一种非常简单的RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeof(PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT结构中的数据。WAVE文件结构如下。
标志符(RIFF) |
数据大小 |
格式类型("WAVE") |
"fmt" |
Sizeof(PCMWAVEFORMAT) |
PCMWAVEFORMAT |
"data" |
声音数据大小 |
声音数据 |
1. 整个WAV文件分成两部分:文件头和数据块.WAV格式文件主要有两种文件头:
1)标准的44字节文件头
以'RIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID和Size所占用的字节数,即FileLen - 8 =Size.然后是Type字段,为'WAVE',表示是wav文件.结构定义如下:
struct RIFF_HEADER
{char szRiffID[4]; //'R','I','F','F'
DWORD dwRiffSize;
char szRiffFormat[4]; //'W','A','V','E'
};
以'fmt '作为标示.一般情况下Size为16,此时最后附加信息没有;如果为18则最后多了2个字节的附加信息.主要由一些软件制成的wav格式中含有该2个字节的
struct WAVE_FORMAT
{ WORD wFormatTag;
WORD wChannels;
DWORD dwSamplesPerSec;
DWORD dwAvgBytesPerSec;
WORD wBlockAlign;
WORD wBitsPerSample;};
struct FMT_BLOCK
{ char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;};
2)58字节文件头
如果不是Windows的标准WAV文件,而是经过了一些软件处理的,往往就是58字节的文件头,如下图所示.
它比44字节的多了一个fact子块.<fact—ck>储存了关于WAV文件内容的重要信息.该子块定义如下:
Fact Chunk
Fact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk.结构定义如下:
struct FACT_BLOCK
{ char szFactID[4]; // 'f','a','c','t'
DWORD dwFactSize;};
2. "data"子块数据安排方式
"data"子块中装的是真正的声音数据.除非安装其它特殊软件,否则Windows目前仅提供WAVE_FORMAT_PCM一种数据格式,即脉冲编码调制(Pulse Code Modulation).所谓PCM就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。
3.AVI数据解析
AVI(Audio Video Interleave)是微软开发的音频/视频格式。”Interleave“指视频数据和音频数据以交织形式保存在文件中。通常AVI文件包含多个不同类型的音频和视频数据流。AVI是RIFF的子集或特例。所有AVI文件以“RIFF”标识符后跟的标识码“AVI”开始。所有AVI文件包含两个必须的LIST chunk和一个索引chunk。(1)‘hdrl’LIST主要定义数据的格式。它包含主要的AVI格式头。
(2)‘movi’LIST包含实际的音频和视频数据。
(3)‘idxl’chunk需要此chunk以索引文件。
RIFF AVI格式如下。
RIFF xxxx 'AVI'
{LIST xxxx 'hdrl'
{'avih'(<Main AVI Header>)
LIST xxxx 'strl'
{'strh'(<Stream header>)
'strf'(<Stream format>)
'strd'(additional header data)
}
}
LIST xxxx 'movi'
{SubChunk1
Subchunk2...
}
['idxl'<AVIIndex>]
}