如何编写求图像的熵的Matlab程序

如何编写求图像的熵的Matlab程序,第1张

图像的熵,在型纯许多场合下都有应用,也可以有多种编写程序的方法,下面介绍作者编写的一个图像熵的函数yentropy(),可以直接调用首租晌。可者锋以用于求图像的局部熵,也可以求其整体熵。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8195586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存