图像RGB分量熵计算(Matlab实现)

  • Post author:
  • Post category:其他


实验说明

实验用图像为test.rgb,大小256*256,每个像素占3个字节,分别存放R、G、B三通道的值(范围0~255)。文件存储的格式为b1,g1,r1,b2,g2,r2,b3,g3,r3……

熵的计算公式为

H(X)=-\sum_{x\in X}^{} p(x)log(x)

本实验中熵的计算方法为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 版权协议,转载请附上原文出处链接和本声明。