一、元音
元音是在发音过程中由气流通过口腔而不受阻碍发出的音。发元音时,气流从肺部通过声门冲击声带,使声带发出均匀震动,然后震音气流不受阻碍地通过口腔、鼻腔,通过舌、唇的调节而发出不同的声音。发元音时声带必然震动,这叫做浊音。也有的语言发元音时声带不振动,发出清元音。
二、时域
从上至下依次为元音A、E、I的时域波形
特点:呈现一定周期性,短时平均过零率低。
三、频域
从上至下依次为元音A、E、I的频谱
特点:可看出有明显共振峰,且能量集中在低频区域,短时能量较高。
四、RGB文件三通道熵计算
4.1 实验要求
编程实现RGB文件三通道分量的熵计算。该测试文件分辨率为256 * 256,数据格式为每个像素占用3字节,BGRBGR...保存。拿到文件可以先计算一下文件大小是否为宽 * 高 * 3字节。
查看文件大小为196608字节,196608=256 * 256 * 3,文件大小为宽 * 高 * 3字节。
知道文件分辨率和每像素占用字节数后,在python中打开test.rgb文件得到图像。
import cv2 as cv
import numpy as np
if __name__ == '__main__':
f = open("D://test.rgb", "rb")
data = f.read()
f.close()
data = [int(x) for x in data]
data = np.array(data).reshape((256, 256, 3)).astype(np.uint8)
cv.imshow("data", data)
cv.waitKey()
4.2 实验代码
#include<iostream>
#include<math.h>
#include<malloc.h>
const int width = 256;
const int height = 256;
int main()
{
FILE* fp;
fopen_s(&fp, "D:\\test.rgb", "rb");
unsigned char* buf = (unsigned char*)malloc(sizeof(unsigned char) * width * height * 3); //分配空间
fread(buf, 1, width * height * 3, fp);
//存放每个像素RGB值
unsigned char r[width * height] = {0};
unsigned char g[width * height] = {0};
unsigned char b[width * height] = {0};
//存放每个通道的数量
int r_count[256] = {0};
int g_count[256] = {0};
int b_count[256] = {0};
//RGB频率
double r_f[256] = {0};
double g_f[256] = {0};
double b_f[256] = {0};
//RGB熵
double r_s = 0;
double g_s = 0;
double b_s = 0;
//存入每个像素的RGB值
for (int i = 0; i < width * height; i++)
{
b[i] = *(buf + 3 * i);
g[i] = *(buf + 3 * i + 1);
r[i] = *(buf + 3 * i + 2);
}
//统计三通道各像素值的总和
for (int i = 0; i < 256; i++)
{
for (int j = 0; j < width * height; j++)
{
if (r[j] == i) { r_count[i]++; }
if (g[j] == i) { g_count[i]++; }
if (b[j] == i) { b_count[i]++; }
}
}
//计算三通道频率
for (int i = 0; i < 256; i++)
{
r_f[i] = double(r_count[i]) / (width * height);
g_f[i] = double(g_count[i]) / (width * height);
b_f[i] = double(b_count[i]) / (width * height);
}
//计算三通道的熵
for (int i = 0; i < 256; i++)
{
if (r_f[i] != 0) { r_s -= r_f[i] * log(r_f[i]) / log(2); }
if (g_f[i] != 0) { g_s -= g_f[i] * log(g_f[i]) / log(2); }
if (b_f[i] != 0) { b_s -= b_f[i] * log(b_f[i]) / log(2); }
}
printf("r_entropy:%f\n", r_s);
printf("g_entropy:%f\n", g_s);
printf("b_entropy:%f\n", b_s);
fclose(fp);
return 0;
}
4.3 实验结果