function entr=yentropy(a)
a=uint8(a) %这里a为8位的单色图像或24为的RGB彩色图像
[m n l]=size(a)
entr=0
for k=1:l
hi=zeros(1,256)
for i=1:m
for j=1:n
hi(a(i,j,k)+1)=hi(a(i,j,k)+1)+1 %求每种值的在图像中出现的次数
end
end
hi=sort(hi,'descend')
hi=hi./m./n %求概率
en=0.0
for i=1:256
if hi(i)>0
en=en-hi(i).*log2(hi(i)) %概率不为0 累加求熵
else
i=257 %否则停止
end
end
entr=entr+en
end
entr=entr/l %当l=1时a为单色图像;当l=3时a为彩色图像,三个页面的熵平均
计算步骤如下图渣蔽:在信枯梁山息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个事件的没中随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。%---------------------------------%求一幅数字图像的熵值
%---------------------------------
I=imread('lena.bmp')
%I=double(I)
[C,R]=size(I)%求图像的规格
Img_size=C*R%图像像素点的总谈弯饥个数
L=256%图像的灰度级
H_img=0
nk=zeros(L,1)
for i=1:C
for j=1:R
Img_level=I(i,j)+1%获取图闹返像的灰度级
nk(Img_level)=nk(Img_level)+1%统计每个灰度级像素的点数
end
end
for k=1:L
Ps(k)=nk(k)/Img_size%计算每一个灰度级像素点所占的概率
if Ps(k)~=0%去掉概率为0的像素点
H_img=-Ps(k)*log2(Ps(k))+H_img%求熵值含返的公式
end
end
H_img
%entropy(I)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)