一、 浊音时域波形和频谱分析
本实验采用软件audacity录制浊音a、o、e、u,绘制时域波形和频谱并进行分析。
①a:
②e:
③o:
④u:
由上图可知:
浊音时域波形具有周期性,频谱中有多个明显的共振峰。
二、计算RGB文件三通道分量的熵
该测试文件分辨率为256*256,数据格式为每个像素占用3字节,BGRBGR...保存。
用C++实现编程,代码如下:
#include <iostream>
using namespace std;
int main()
{
int image_size = 256 * 256;
double Pr[256] = { 0 }, Pg[256] = { 0 }, Pb[256] = { 0 };//定义R、G、B的概率分量
double Hr = 0, Hg = 0, Hb = 0;//定义R、G、B的熵
unsigned char* R, * G, * B;//定义R、G、B
unsigned char* RGB_in;//定义图像
R = (unsigned char*)malloc(image_size);
G = (unsigned char*)malloc(image_size);
B = (unsigned char*)malloc(image_size);
RGB_in = (unsigned char*)malloc(image_size*3);
FILE* fp;
fopen_s(&fp, "C://Users//86152//Desktop//大三下//数据压缩与应用//RGB熵//test.rgb", "rb");
fread(RGB_in, sizeof(unsigned char), image_size*3, fp);
fclose(fp);
//把R、G、B三通道的数据分别取出
for (int i = 0; i < 256 * 256; i++)
{
B[i] = RGB_in[i * 3];
G[i] = RGB_in[i * 3 + 1];
R[i] = RGB_in[i * 3 + 2];
}
for (int i = 0; i < image_size; i++)
{
Pb[B[i]]++;
Pg[G[i]]++;
Pr[R[i]]++;
}
//分别计算R、G、B三通道的颜色强度级的频率
for (int i = 0; i < 256; i++)
{
Pr[i] = Pr[i] / image_size;
Pg[i] = Pg[i] / image_size;
Pb[i] = Pb[i] / image_size;
}
//计算R、G、B的熵
for (int i = 0; i < 256; i++)
{
if (Pb[i] != 0) { Hb += -Pb[i] * log(Pb[i]) / log(2.0); }
if (Pr[i] != 0) { Hr += -Pr[i] * log(Pr[i]) / log(2.0); }
if (Pg[i] != 0) { Hg += -Pg[i] * log(Pg[i]) / log(2.0); }
}
cout << "Hr=" << Hr << endl;
cout << "Hg=" << Hg << endl;
cout << "Hb=" << Hb << endl;
}
运行结果如图所示:
即:R通道分量的熵为7.22955,G通道分量的熵为7.17846;G通道分量的熵为6.85686。