当前位置: 代码迷 >> 综合 >> 数据压缩(一)——音频文件时域频域分析RGB文件三通道的熵
  详细解决方案

数据压缩(一)——音频文件时域频域分析RGB文件三通道的熵

热度:55   发布时间:2023-12-04 05:00:09.0

一、音频文件时域频域分析

(一)实验要求

分别录制浊音、清音、爆破音的音素,通过软件audacity分析其时域及频域所具有的特点

(二)实验内容

1、浊音a

时域波形:

频域波形:

分析:时域部分具有短时的周期性

频域部分波形幅度较大,具有多个共振峰,具有短时能量高的特点

2、清音s

时域波形:

频域波形:

分析:时域波形比较随机

            频域波形短时能量较低

3、爆破音t

时域波形:

 频域波形:

分析:时域波形不具有周期性,逐渐衰减

           频域波形能量较大且比较集中

二、RGB文件三通道的熵

(一)实验目的

计算指定RGB文件三通道的熵

(二)实验内容

该RGB文件指定分辨率为256*256,数据格式为每个像素占用3个字节,存储格式为BGRBGRB...实现方式为c++,代码如下:

#include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;int main()
{//文件的大小int size = 256 * 256;//定义图像和RGBunsigned char* image;unsigned char* R, * G, * B;R = (unsigned char*)malloc(size);G = (unsigned char*)malloc(size);B = (unsigned char*)malloc(size);image= (unsigned char*)malloc(size*3);//读入图像FILE* fp;fopen_s(&fp, "C://Users//Administrator//Documents//数据压缩与应用//test.rgb","rb");fread(image, sizeof(unsigned char), size * 3, fp);//统计数据for (int i = 0; i < size; i++){B[i] = image[i * 3];G[i] = image[i * 3 + 1];R[i] = image[i * 3 + 2];}//计算频率double PR[256] = { 0 }; double PG[256] = { 0 };double PB[256] = { 0 };for (int j = 0; j < 256*256; j++){PB[B[j]]++;PG[G[j]]++;PR[R[j]]++;}for (int k = 0; k < 256; k++){PB[k] = PB[k] / size;PG[k] = PG[k] / size;PR[k] = PR[k] / size;}//计算并输出熵double HR=0, HG=0, HB=0;for (int i = 0; i < 256; i++){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); }if (PB[i] != 0) { HB += -PB[i] * log(PB[i]) / log(2.0); }}cout << "该文件三通道的熵分别为:" << endl;cout << "HR=" << HR << endl;cout << "HG=" << HG << endl;cout << "HB=" << HB << endl;fclose(fp);}

(三)实验结果