一、原理分析
用fopens打开,fread读入,计算概率分布,再计算熵。注意rgb是每像素B.G.R分布,yuv是分块分布,算法原理相同,主要修改一下读取部分就可以了。
二、代码
1.RGB
代码如下:
#include<iostream>
#include <stdlib.h>
#include <math.h>
int main()
{
FILE* AFile = NULL;
fopen_s(&AFile, "down.rgb", "rb");
unsigned char AFile_data[256 * 256 * 3] = {
0 };
unsigned char BFile_data[256 * 256] = {
0 };
unsigned char GFile_data[256 * 256] = {
0 };
unsigned char RFile_data[256 * 256] = {
0 };
fread(AFile_data, 1, 196608, AFile);
for (int i = 0, j = 0; i < 196608; i = i + 3, j++)
{
BFile_data[j] = AFile_data[i];
GFile_data[j] = AFile_data[i + 1];
RFile_data[j] = AFile_data[i + 2];
}
double BFile_count[256] = {
0 };
double GFile_count[256] = {
0 };
double RFile_count[256] = {
0 };
for (int n = 0; n < 65536; n++)
{
for (int m = 0; m < 256; m++)
if (BFile_data[n] == m)
BFile_count[m]++