图片格式:分辨率为256*256,数据格式为每个像素占用3字节,BGRBGR...
环境:VS2019
语言:C++
思路:
- 读文件至RGB_buffer_in 数组,;
- for (int i = 0; i < image_size; i++) 分别统计RGB的直方图,如R[3]=4代表R分量为3的像素有4个;
- 分别计算三个通道的熵:
,代入p[i]=R[i]/(256*256),B、G同理,化简;
- 输出结果;
- 关文件、释放内存。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
using namespace std;
#include<iostream>
#include<cmath>
int main()
{
int w = 256;
int h = 256;
int image_size = w * h;
unsigned char* RGB_buffer_in = (unsigned char*)malloc(image_size * 3);
int R[256] = { 0 }, G[256] = { 0 }, B[256] = { 0 };//频率
double Hr = 0,