实验说明
实验用图像为test.rgb,大小256*256,每个像素占3个字节,分别存放R、G、B三通道的值(范围0~255)。文件存储的格式为b1,g1,r1,b2,g2,r2,b3,g3,r3……
熵的计算公式为
本实验中熵的计算方法为log取2为底数
代码实现
Matlab代码实现如下:
clc
clear all
close all
fr = fopen('test.rgb','r');
x = fread(fr);
pb = zeros(256,1);
pg = zeros(256,1);
pr = zeros(256,1);
for i = 1:255*255
pb(x(3*i-2)+1) = pb(x(3*i-2)+1)+1;
pg(x(3*i-1)+1) = pg(x(3*i-1)+1)+1;
pr(x(3*i)+1) = pr(x(3*i)+1)+1;
end
pb = pb/(255*255);
pg = pg/(255*255);
pr = pr/(255*255);
hr = 0;
hg = 0;
hb = 0;
for i = 1:256
if(pr(i)>0)
hr = hr - pr(i)*log2(pr(i));
end
if(pg(i)>0)
hg = hg - pg(i)*log2(pg(i));
end
if(pb(i)>0)
hb = hb - pb(i)*log2(pb(i));
end
end
fprintf('R分量的熵为:%f\n',hr)
fprintf('G分量的熵为:%f\n',hg)
fprintf('B分量的熵为:%f\n',hb)
输出结果如下:
R分量的熵为:7.228471
G分量的熵为:7.178099
B分量的熵为:6.849904
版权声明:本文为qq_45893491原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。