数据压缩 第一周作业

数据压缩 第一周作业

语音分析

(1)浊音u
时域:浊音u的时域波形具有比较明显的周期性,为准周期波,它具有短时平稳性,大约在10ms~30ms内特性相对平稳。
u
频域:浊音u有明显的共振峰,不同的浊音共振峰有所不同。
u
(2)清音x
时域:清音x的波形整体振幅小于准周期波,为噪声波。
x
频域:清音x无共振峰,但能量在某些频率区域比较集中。
x
(3)爆破音t
时域:爆破音t为脉冲波,较为尖锐。
t
频域:爆破音t无共振峰,频率分布较为均匀。
t

图像三通道概率分布及熵

(1)yuv图像
1.分别统计Y、U、V通道各个灰度值的像素个数
2.分别计算Y、U、V通道各个灰度值的概率
3.分别计算Y、U、V通道的熵,代码及结果见下方
(2)rgb图像
1.分别统计R、G、B通道各个灰度值的像素个数
2.分别计算R、G、B通道各个灰度值的概率
3.分别计算R、G、B通道的熵,代码及结果见下方
在这里插入图片描述

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    FILE* fp1,  * fp2;
    double Hy = 0.0, Hu=0.0, Hv=0.0, Hr=0.0, Hg=0.0, Hb=0.0;
    unsigned char* buffer0 = new unsigned char[256 * 256 * 1.5];
    unsigned char* buffer1 = new unsigned char[256 * 256 * 3];
    double buffer0y[256]{}, buffer0u[256]{}, buffer0v[256]{}, buffer1r[256]{}, buffer1g[256]{}, buffer1b[256]{};
    fopen_s(&fp1, "down.yuv", "rb");
    fopen_s(&fp2, "down.rgb", "rb");
    fread(buffer0, sizeof(unsigned char), 256 * 256 * 1.5, fp1);
    for (int i = 0; i < (256 * 256); i++)
    {
        buffer0y[buffer0[i]]++;
    }
    for (int j = 0;j < 256;j++)
    {
        buffer0y[j] = buffer0y[j] / (256 * 256);
        if (buffer0y[j] != 0)
        {
            Hy = Hy + buffer0y[j] * log2(1 / buffer0y[j]);
        }
    }
    for (int i = (256 * 256); i < (256 * 256*1.25); i++)
    {
        buffer0u[buffer0[i]]++;
        buffer0v[buffer0[i+16384]]++;
    }
    for (int j = 0;j < 256;j++)
    {
        buffer0u[j] = buffer0u[j] / (256 * 256 * 0.25);
        if (buffer0u[j] != 0)
        {
            Hu = Hu + buffer0u[j] * log2(1 / buffer0u[j]);
        }
        buffer0v[j] = buffer0v[j] / (256 * 256 * 0.25);
        if (buffer0v[j] != 0)
        {
            Hv = Hv + buffer0v[j] * log2(1 / buffer0v[j]);
        }
    }
    fread(buffer1, sizeof(unsigned char), 256 * 256 * 3, fp2);
    for (int i = 0; i < (256 * 256); i++)
    {
        buffer1b[buffer1[i*3]]++;
        buffer1g[buffer1[i*3+1]]++;
        buffer1r[buffer1[i*3+2]]++;
    }
    for (int j = 0;j < 256;j++)
    {
        buffer1r[j] = buffer1r[j]/ (256 * 256);
        if (buffer1r[j] != 0)
        {
            Hr = Hr + buffer1r[j] * log2(1 / buffer1r[j]);
        }
        buffer1g[j] = buffer1g[j] / (256 * 256);
        if (buffer1g[j] != 0)
        {
            Hg = Hg + buffer1g[j] * log2(1 / buffer1g[j]);
        }
        buffer1b[j] = buffer1b[j] / (256 * 256);
        if (buffer1b[j] != 0)
        {
            Hb = Hb + buffer1b[j] * log2(1 / buffer1b[j]);
        }       
    }
    fclose(fp1);
    fclose(fp2);
    cout << "Y通道的熵为" << Hy << endl;
    cout << "U通道的熵为" << Hu << endl;
    cout << "V通道的熵为" << Hv << endl;
    cout << "B通道的熵为" << Hb << endl;
    cout << "G通道的熵为" << Hg << endl;
    cout << "R通道的熵为" << Hr << endl;
    return (0);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值