数据压缩作业第一周:清浊音时频特性分析与RGB文件熵计算

本文探讨了使用Audacity分析浊音、清音、爆破音的时频特性,揭示了它们在频谱图和时域波形上的差异。此外,还介绍了RGB文件的熵计算,针对256*256分辨率的图像,展示了每个像素占用3字节的BGR数据排列,并给出了计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用audacity分析浊音、清音、爆破音的时频特性

1.a

频谱图:

 时域波形:

浊音的时域波形具有周期性,频谱具有较明显的共振峰,频谱能量分布较均匀。

2.清音s

频谱图:

 时域波形:

 清音的时域波形几乎没有起伏,无周期性变化,

频谱无明显共振峰,低频部分能量较高,随后逐渐减小。

3.爆破音p

频谱图:

 时域波形:

 爆破音的时域波形有短暂的明显起伏,而后归于平稳,

频谱图低频部分能量均匀,随后逐渐减小。

二、RGB文件熵计算

test文件分辨率为256*256,数据格式为每个像素占用3字节。

RGB文件为三通道,按照BGRBGRBGR……排列而成。

代码如下:

#include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;

int main()
{
	//原图宽高
	int height = 256;
	int width = 256;
	
	unsigned char* Y_in;
	unsigned char* R_in;
	unsigned char* G_in;
	unsigned char* B_in;

	//装入原图和rgb通道数据
	Y_in = new unsigned char[256 * 256 * 3];
	R_in = new unsigned char[256 * 256];
	G_in = new unsigned char[256 * 256];
	B_in = new unsigned char[256 * 256];

	FILE* fp;
	fopen_s(&fp, "D:\\大三\\数据压缩\\第一周作业\\test.rgb", "rb");

	fread(Y_in, sizeof(unsigned char), 256 * 256 * 3, fp);

	//概率
	double pro_R[256] = { 0 };
	double pro_G[256] = { 0 };
	double pro_B[256] = { 0 };

	//熵
	double HR = 0;
	double HG = 0;
	double HB = 0;

	int i, j;
	//数组存储rgb
	for (i = 0, j = 0; i < 256 * 256 * 3; i = i + 3, j++)
	{
		B_in[j] = *(Y_in + i);
		G_in[j] = *(Y_in + i + 1);
		R_in[j] = *(Y_in + i + 2);
	}
	//分别统计次数
	for (i = 0; i < 256; i++)
	{
		for (j = 0; j < height * width; j++)
		{
			if (R_in[j] == i)
				pro_R[i]++;
			if (G_in[j] == i)
				pro_G[i]++;
			if (B_in[j] == i)
				pro_B[i]++;
		}
	}
	//计算概率
	for (i = 0; i < 256; i++)
	{
		pro_R[i] = pro_R[i] / double(height * width);
		pro_G[i] = pro_G[i] / double(height * width);
		pro_B[i] = pro_B[i] / double(height * width);
	}
	//计算熵
	for (i = 0; i < 256; i++)
	{
		if (pro_R[i] != 0)
			HR += -pro_R[i] * log2(pro_R[i]);
		if (pro_G[i] != 0)
			HG += -pro_G[i] * log2(pro_G[i]);
		if (pro_B[i] != 0)
			HB += -pro_B[i] * log2(pro_B[i]);
	}
	//输出
	cout << "H(R)=" << HR << endl;
	cout << "H(G)=" << HG << endl;
	cout << "H(B)=" << HB << endl;
}

输出结果为:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值