一、实验目的
对已有的down.rgb和down.yuv分析三个通道的概率分布,并计算各自的熵。(编程实现)两个文件的分辨率均为256*256,yuv为4:2:0采样空间,存储格式为:RGB文件按每个像素BGR分量依次存放;YUV格式按照全部像素的Y数据块、U数据块和V数据块依次存放。
二、实验思路
1.读入一个RGB/YUV文件,创建3个空txt文件
2.开辟3个数组,将RGB/YUV数据从RGB/YUV文件中读出,并分别保存到3个数组中
3.计算各颜色通道数据概率分布,并写入txt文件
4.计算熵并输出
三、代码
1.RGB
代码如下
unsigned char r[65535]={0};
unsigned char g[65535]={0};
unsigned char b[65535]={0};
double f_r[256]={0};
double f_g[256]={0};
double f_b[256]={0};
double h_r= 0,h_g= 0,h_b= 0; //熵
FILE *fp1,*red,*green,*blue;
fopen_s(&fp1, "//Mac//Home//Desktop//数据压缩//计算熵//down.rgb", "rb");
fopen_s(&red, "//Mac//Home//Desktop//数据压缩//计算熵//red.txt","w");
fopen_s(&green, "//Mac//Home//Desktop//数据压缩//计算熵//green.txt","w");
fopen_s(&blue, "//Mac//Home//Desktop//数据压缩//计算熵//blue.txt","w");
unsigned char a[196608];
fread(a, sizeof(unsigned char), 196608, fp1);
for (i=0,j=0;i<196608;i=i+3,j++) {
b[j] = a[i];
g[j] = a[i+1];
r[j] = a[i