【MATLAB编程实战】计算图片的信息熵

欢迎关注,本专栏主要更新MATLAB仿真、界面、基础编程、画图、算法、矩阵处理等操作,拥有丰富的实例练习代码,欢迎订阅该专栏!(等该专栏建设成熟后将开始收费,快快上车吧~~)

【MATLAB编程实战】计算图片的信息熵

完整项目

项目下载

以下的完整代码自己复制一下就是可以使用的,如果仍然不会的话,可以支付1.9元直接下载完整项目哈~完整项目的word中包含了几种指标以及介绍的说明:
【MATLAB编程实战】计算图片的信息熵_第1张图片

完整代码

首先给出计算信息熵的函数:


function Entropy=entropy(image)

[C,R]=size(image);
Img_size=C*R;
L=256;
H_img=0;
nk=zeros(L,1);
for i=1:C
    for j=1:R
       Img_level=image(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;
    H_img=-Ps(k)*log2(Ps(k))+H_img;
    end
end
Entropy=H_img;

end

然后在主程序中调用即可:

clc;
clear;


 image=imread('jiedaopeda.png');
e = entropy(image)
uciqe=uciqe(image)

这里的uciqe函数如下:



function uciqe=uciqe(image)

hsv=rgb2hsv(image);
H=hsv(:,:,1); S=hsv(:,:,2); V=hsv(:,:,3);

delta=std2(H);
mu=mean2(S);

[n,m]=size(V);
number=floor(n*m/100);

Maxsum=0; Minsum=0;
V1=V; V2=V;

for i=1:number
    Maxvalue=max(max(V1));
    [x,y]=find(V1==Maxvalue);
    Maxsum=Maxsum+V1(x(1),y(1));
    V1(x(1),y(1))=0;
end

top=Maxsum/number;

for i=1:number
    Minvalue=min(min(V2));
    [x,y]=find(V2==Minvalue);
    Minsum=Minsum+V2(x(1),y(1));
    V2(x(1),y(1))=1;
end

bottom=Minsum/number;

conl=top-bottom;

uciqe=0.4680*delta+0.2745*conl+0.2576*mu;

end

运行结果如下:
【MATLAB编程实战】计算图片的信息熵_第2张图片

你可能感兴趣的:(matlab代码应用,matlab,开发语言)