第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【数据压缩】作业1:分析浊音清音爆破音的时域和频域特性以及RGB熵的计算

【数据压缩】作业1:分析浊音清音爆破音的时域和频域特性以及RGB熵的计算

时间:2024-08-24 08:35:29

相关推荐

【数据压缩】作业1:分析浊音清音爆破音的时域和频域特性以及RGB熵的计算

音频分析

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;}

计算结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。