aoe三元音的测绘以及rgb三原色熵的计算

元音(Vowel),又称母音,是音素的一种,与辅音相对。元音是在发音过程中气流通过口腔而不受阻碍发出的音。
发元音时,气流从肺部通过声门冲击声带,使声带发出均匀震动,然后震音气流不受阻碍地通过口腔,通过舌、唇的调节而发出不同的声音。发元音时声带必然震动的叫浊元音。有些语言发元音时声带不振动,发出清元音。
元音时域波形具有周期性;频谱图像中可以看出元音的短时能量和短时平均幅度比较大,但是短时过零率低,具有明显的共振峰。
本实验采用a,o,e三个元音测绘,得到图像如下:
a的图像
o的图像
e的图像

对于RGB的三原色通道熵,用简单编程实现计算:

#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
//测试图片大小
const int width = 256;
const int height = 256;
//预留空间
int bnum[256] = { 0 };
int gnum[256] = { 0 };
int rnum[256] = { 0 };
unsigned char num[width * height * 3];
unsigned char B[width * height];
unsigned char G[width * height];
unsigned char R[width * height];
double b = 0;
double g = 0;
double r = 0;
int main() 
{
    FILE* test_rgb;
    fopen_s(&test_rgb, "E://WeChat Files//wxid_hl6iriltk6cz22//FileStorage//File//2022-02//test.rgb", "rb");
    fread(num, sizeof(unsigned char), width * height * 3, test_rgb);
    for (int i = 0; i < width * height; i++)
    {
        B[i] = num[i * 3];
        G[i] = num[i * 3 + 1];
        R[i] = num[i * 3 + 2];
    }
    //读取三通道对应数据
    for (int i = 0; i < 256; i++) 
    {
        for (int j = 0; j < width * height; j++) 
        {
            if (B[j] == i) 
            {
                bnum[i]++;
            }
        }
        for (int k = 0; k < width * height; k++)
        {
            if (G[k] == i) 
            {
                gnum[i]++;
            }
        }
        for (int l = 0; l < width * height; l++)
        {
            if (R[l] == i)
            {
                rnum[i]++;
            }
        }

    }
    //求概率,熵
    for (int i = 0; i < 256; i++)
    {
        if (bnum[i] != 0)
        {
            b += (double)bnum[i] / (width * height) * (log(width * height) - log(bnum[i])) / log(2);
        }
        if (gnum[i] != 0) 
        {
            g += (double)gnum[i] / (width * height) * (log(width * height) - log(gnum[i])) / log(2);
        }
        if (rnum[i] != 0) 
        {
            r += (double)rnum[i] / (width * height) * (log(width * height) - log(rnum[i])) / log(2);
        }
    }
    cout << "H(B)=" << b << endl;
    cout << "H(G)=" << g << endl;
    cout << "H(R)=" << r << endl;
    fclose(test_rgb);
    system("pause");
    return 0;
}

结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值