一、实验内容
编程实现RGB文件三通道分量的熵计算。
该测试文件分辨率为256256,数据格式为每个像素占用3字节,BGRBGR…保存。拿到文件可以先计算一下文件大小是否为宽高*3字节。
计算公式:
二、代码实现
先从test.rgb中读取rgb分量,再计算各分量出现的次数,由此计算概率密度,按照熵的计算公式计算出各分量的熵值。
采用C++语言。
注意:提取rgb分量时要按照BGR的顺序提取。
#pragma warning(disable:4996); //防止编译时不允许使用fopen函数
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
FILE* fp = fopen("C:\\Users\\26617\\Desktop\\数据压缩exe1\\exe1\\test.rgb", "rb"); //打开该文件
double h = 256; //高为256
double w = 256; //宽为256
unsigned char* r = (unsigned char*)malloc(256 * 256 * sizeof(unsigned char)); //分配r、g、b分量和buffer的空间
unsigned char* g = (unsigned cha