公式
熵的计算公式:
H
(
x
)
=
−
∑
i
=
1
n
P
(
a
i
)
∗
l
o
g
P
(
a
i
)
H(x)=-\sum_{i=1}^{n}P(a_i)*logP(a_i)
H(x)=−i=1∑nP(ai)∗logP(ai)
其中P(ai)为某一事件发生的概率,式中对数一般取2为底,单位为比特。
编程实现
使用MATLAB计算一幅图像的熵,代码如下:
clc
clear
close all
%---------------------------------
%求一幅图像的熵值
%---------------------------------
I=imread('rice.png');
[C,L]=size(I); %求图像的规格
Img_size=C*L; %图像像素点的总个数
G=256; %图像的灰度级
H_x=0;
nk=zeros(G,1);%产生一个G行1列的全零矩阵
for i=1:C
for j=1:L
Img_level=I(i,j)+1; %获取图像的灰度级
nk(Img_level)=nk(Img_level)+1; %统计每个灰度级像素的点数
end
end
for k=1:G %循环
Ps(k)=nk(k)/Img_size; %计算每一个像素点的概率
if Ps(k)~=0; %如果像素点的概率不为零
H_x=-Ps(k)*log2(Ps(k))+H_x; %求熵值的公式
end
end
H_x %显示熵值
本程序中使用MATLAB自带的图片,所计算的熵为: