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)
%计算一副图像的熵%随机生成图像
A=floor(rand(8,8).*255)
[M,N]=size(A)
temp=zeros(1,256)
%对图像睁棚野的灰度值在[0,255]上做统计
for
m=1:M
for
n=1:N
if
A(m,n)==0
i=1
else
i=A(m,n)
end
temp(i)=temp(i)+1
end
end
temp=temp./(M*N)
%由熵的定义做计算
result=0
for
i=1:length(temp)
if
temp(i)==0
result=result
else
result=result-temp(i)*log2(temp(i))
end
end
result
%计算联合熵
%随机生成图像
A=floor(rand(8,8).*255)
B=floor(rand(8,8).*255)
[M,N]=size(A)
temp=zeros(256,256)
%对图像的灰度值成对地做统悉喊计
for
m=1:M
for
n=1:N
if
A(m,n)==0
i=1
else
i=A(m,n)
end
if
B(m,n)==0
j=1
else
j=B(m,n)
end
temp(i,j)=temp(i,j)+1
end
end
temp=temp./和塌(M*N)
%由熵的定义做计算
result=0
for
i=1:size(temp,1)
for
j=1:size(temp,2)
if
temp(i,j)==0
result=result
else
result=result-temp(i,j)*log2(temp(i,j))
end
end
end
result
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)