【数据压缩作业】使用c语言分析图像三个通道的概率分布,并计算各自的熵。

一、实验目的

对已有的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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值