一、视频分析
1.YUV与RGB格式转换
YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式。因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式。RGB与YUV的变换公式如下:
Y=0.30R+0.59G+0.11B R = Y + 1.4075 *(V-128)
U=0.493(B-Y), G = Y – 0.3455 *(U–128) – 0.7169 *(V –128)
V=0.877(R-Y) B = Y + 1.779 *(U – 128)
因为U和V是差值,其取值范围在正负值上都有分布,为使其方便处理,通常会加一个128的偏移量,使之为非负数。
1.1 整型算法
要用整型运算代替浮点运算,当然是要用移位的办法了,我们可以很容易得到下列算法:
u = YUVdata[UPOS] - 128;
v = YUVdata[VPOS] - 128;
rdif = v + ((v * 103) >> 8);
invgdif = ((u * 88) >> 8) +((v * 183) >> 8);
bdif = u +( (u*198) >> 8);
r = YUVdata[YPOS] + rdif;
g = YUVdata[YPOS] - invgdif;
b = YUVdata[YPOS] + bdif;
为了防止出现溢出,还需要判错计算的结果是否在0-255范围内,做类似下面的判断。
if (r>255)
r=255;
if (r<0)
r=0;
要从RGB24转换成RGB565数据还要做移位和或运算:
RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
2.不同色度采样格式
根据人眼对亮度敏感而对色度不敏感,可以有不同的色度采样方式:
4:4:4:每一个像素中都有该像素对应的Y,U,V分量
4:2:2:在水平方向上,即每一行的像素中,两个色差信号的取样点数减少为亮度取样点数的一半。也就是说,一行中,如果一个像素是拥有该像素所对应的所有YUV分量,那么下一个像素只有色度信号分量。
4:2:0:在每一行中,亮度取满点,色度取样点只有亮度取样点的一半,且色度只取两个色度分量的其中一个,下一行再取另一个色度分量。
二、 音频分析
1. wav文件格式
WAVE,扩展名为WAV:该格式记录声音的波形,故只要采样率高、采样字节长、机器速度快,利用该格式记录的声音文件能够和原声基本一致,质量非常高,但这样做的代价就是文件太大。
采样位数——可以理解数字音频设备处理声音的解析度,即对声音的辨析度。就像表示颜色的位数一样(8位表示256种颜色,16位表示65536种颜色),有8位,16位,24位等。这个数值越大,解析度就越高,录制和回放的声音就越真实。
采样频率——就是对声音信息1秒钟采样多少次,以记录成数字信息。如CD音频是44.1KHz采样率,它对声音以每秒44100次的频率来记录信息。原则上采样率越高,声音的质量越好。
比特率 —— 表示单位时间( 1 秒)内传送的比特数 bps ( bit per second ,位 / 秒)的速度。作为一种数字音乐压缩效率的参考性指标,通常使用 kbps (通俗地讲就是每秒钟 1024 比特)作为单位1.1音频数据源取样频率:44.1kHz
1.2量化比特数:16bit
1.3每个WAVE文件的头四个字节便是“RIFF”。WAVE文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分,如下图:
16bit的单声道WAVE文件和双声道WAVE文件的数据采样格式分别如下图所示:
2. PCM编码
数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM(Pulse-code modulation),即脉冲编码调制。 PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入(它的基本组织单位是BYTE(8bit)或WORD(16bit)),如果是双声道的文件,采样数据按时间先后顺序交叉地存入。如下图所示:
PCM数据的存放方式: 样本1 样本2
双极性表示方法:PCM编码有一位表示极性