音频分析
1.概念区别
在语音学中,将发音时声带振动的音称为浊音,声带不振动的音称为清音。
爆破音是指发音器官在口腔中形成阻碍,然后气流冲破阻碍而发出的音。
2.音频分析
1)浊音a
时域:
频率分析:
2)清音k
时域:
频率分析:
3)爆破音p
时域:
频率分析:
3.总结分析
浊音信号时域波形具有短时周期性,过零率较低;频域波形起伏较大,短时能量高。
清音信号与爆破音信号均无短时周期性,其中清音信号的时域波形平稳,类似于噪声时域波形;爆破音信号时域会出现明显的脉冲。清音信号和爆破音信号的频域波形较为平稳,能量相对集中在低频部分。
RGB熵的计算
准备工作:
1.test.rgb文件分辨率为256×256,每个像素占用3个字节,存储格式为BGRBGRBGR······
2.熵计算的公式为:
代码部分:
#include <stdio.h>#include<stdlib.h>#include<malloc.h>#include<math.h>#include<iostream>using namespace std;int main(){FILE* photo;//FILE* pbsat;//FILE* pgsat;//FILE* prsat;int width = 256;int height = 256;int size = 3 * width * height;fopen_s(&photo, "C://Users//86188//Desktop//数据压缩//homework1//test.rgb", "rb");unsigned char* buffer;buffer = (unsigned char*)malloc(size);//申请内存fread(buffer, sizeof(unsigned char), size, photo);//分成三基色存储unsigned char B[256 * 256] = { 0 };unsigned char G[256 * 256] = { 0 };unsigned char R[256 * 256] = { 0 };int pb = 0;int pg = 0;int pr = 0;for (int i = 0; i < size; i++){if (i % 3 == 0){B[pb] = *(buffer + i);pb++;}else if (i % 3 == 1){G[pg] = *(buffer + i);pg++;}else if (i % 3 == 2){R[pr] = *(buffer + i);pr++;}}//计算频率int numb[256] = { 0 };for (int i = 0; i < 256; i++){for (int j = 0; j < width * height; j++){if (i == B[j]){numb[i]++;}}}double freqb[256] = { 0 };for (int i = 0; i < 256; i++){freqb[i] = double(numb[i]) / (width * height);}int numg[256] = { 0 };for (int i = 0; i < 256; i++){for (int j = 0; j < width * height; j++){if (i == G[j]){numg[i]++;}}}double freqg[256] = { 0 };for (int i = 0; i < 256; i++){freqg[i] = double(numg[i]) / (width * height);}int numr[256] = { 0 };for (int i = 0; i < 256; i++){for (int j = 0; j < width * height; j++){if (i == R[j]){numr[i]++;}}}double freqr[256] = { 0 };for (int i = 0; i < 256; i++){freqr[i] = double(numr[i]) / (width * height);}//计算香农熵double hb = 0;double hg = 0;double hr = 0;for (int i = 0; i < 256; i++){if (freqb[i] != 0){hb = hb - freqb[i] * log(freqb[i]) / log(2);}if (freqg[i] != 0){hg = hg - freqg[i] * log(freqg[i]) / log(2);}if (freqr[i] != 0){hr = hr - freqr[i] * log(freqr[i]) / log(2);}}cout << "B基色的香农熵是" << hb << endl;cout << "G基色的香农熵是" << hg << endl;cout << "R基色的香农熵是" << hr << endl;free(buffer);fclose(photo);return 0;}