-
(一)三个元音音频分析
-
/ai/
-
时域波形
从时域波形来看,音频信号具有短时平稳性,该部分周期为10ms。
-
频域波形
频谱在230Hz、370Hz、618Hz处产生共振峰,能量集中在231Hz~1390Hz。
-
-
/ɔ/
-
时域波形
音频信号具有短时平稳性,周期在10ms左右。
-
频域波形
频谱在232Hz、356Hz、519Hz出现共振峰,能量集中在232Hz~1007Hz附近。
-
-
/e/
-
时域波形
时域波形具有短时平稳性,周期在10ms左右。
-
频域波形
频谱在222Hz、344Hz、582Hz出现共振峰,能量集中在222Hz~812Hz附近。
对比单元音和双元音的频谱发现,单元音的共振峰一般是单峰,而双元音的共振峰出现双峰;单元音的能量集中在200-1000Hz,双元音的能量集中在200-1400Hz。
-
-
-
(二)RGB三通道的熵计算
-
相关原理
-
测试文件:test.rgb,大小为256*256
-
RGB文件中数据的存储形式是BGRBGRBGR…,将BRG的数值分别存储在3个256*256大小的数组中并统计0~255的数量,统计概率后计算三通道的熵。
-
离散随机变量信息熵的计算公式:
H ( X ) = − ∑ x i ∈ χ P ( x i ) l o g 2 P ( x i ) {H(X)=-\sum_{x_i\in\chi} P(x_i)log_2P(x_i)} H(X)=−xi∈χ∑P(xi)log2P(xi)
-
-
代码实现
/* * 该测试文件分辨率为256*256,数据格式为每个像素占用3字节,BGRBGR...保存 * 计算RGB文件三通道分量的熵。 */ #include <iostream> const int width = 256; const int height = 256; const int size = width * height; int main() { FILE* fp; fopen_s(&fp, "test.rgb", "rb");//只读二进制形式打开rgb文件 unsigned char* buffer = (unsigned char*)malloc(sizeof(unsigned char) * size * 3); fread(buffer, sizeof(unsigned char), size*3, fp);//读入缓存区buffer int numR[256] = { 0 }, numG[256] = { 0 }, numB[256] = { 0 };//存放0~255的数量 unsigned char B[size] = { 0 }, G[size] = { 0 }, R[size] = { 0 };//存放各位置的RGB值 double freqR[256] = { 0 }, freqG[256] = { 0 }, freqB[256] = { 0 }; for (int i = 0; i < size; i++) { B[i] = *(buffer + 3 * i); G[i] = *(buffer + 3 * i + 1); R[i] = *(buffer + 3 * i + 2); } /统计每个通道0~255的数量 for (int i = 0; i < size; i++) { numR[R[i]]++; numG[G[i]]++; numB[B[i]]++; } //统计概率 for (int i = 0; i < 256; i++) { freqR[i] = double(numR[i]) / size; freqG[i] = double(numG[i]) / size; freqB[i] = double(numB[i]) / size; } //计算各通道的熵 double HR = 0, HG = 0, HB = 0; for (int i = 0; i < 256; i++) { if (freqR[i] != 0) { HR = HR - freqR[i] * log(freqR[i]) / log(2); } if (freqG[i] != 0) { HG = HG - freqG[i] * log(freqG[i]) / log(2); } if (freqB[i] != 0) { HB = HB - freqB[i] * log(freqB[i]) / log(2); } } printf("passage R's entropy is %f\n", HR); printf("passage G's entropy is %f\n", HG); printf("passage B's entropy is %f\n", HB); free(buffer); fclose(fp); }
-
实验结果
passage R's entropy is 7.229553 passage G's entropy is 7.178462 passage B's entropy is 6.856861
-