close all;
clear all;
clc;
%——————读入彩色图片,显示彩色图片——————%
X=imread('13.jpg');
Y=imread('23.jpg');
figure(1),imshow(X),title('彩色图1');
figure(2),imshow(Y),title('彩色图2');
%——————彩色转化成灰度图,显示灰度图————————%
A=rgb2gray(X);
B=rgb2gray(Y);
figure(3),imshow(A),title('灰度图1');
figure(4),imshow(B),title('灰度图2');
[M,N]=size(A);
[O,P]=size(B);
temp1=zeros(1,256);
temp2=zeros(1,256);
%————图片1的信息熵——————%
p1 = imhist(A(:));
% remove zero entries in p
p1(p1==0) = [];
% normalize p so that sum(p) is one.
p1 = p1./ numel(A);
Entropy1 = -sum(p1.*log2(p1));
disp('图片1的信息熵');
Entropy1
Ha=Entropy1;
%^^^^^^^^^^^^^^^^^^ Compute Entropy Of Image I ^^^^^^^^^^^^^
p2 = imhist(B(:));
% remove zero entries in p
p2(p2==0) = [];
% normalize p so that sum(p) is one.
p2 = p2./ numel(B);
Entropy2 = -sum(p2.*log2(p2));
disp('图片2的信息熵');
Entropy2
Hb=Entropy2;
%——————计算联合熵————————%
temp3=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
temp3(i,j)=temp3(i,j)+1;
end
end
temp3=temp3./(M*N);
%——————计算联合熵——————%
result3=0;
for i=1:size(temp3,1)
for j=1:size(temp3,2)
if temp3(i,j)==0;
result3=result3;
else
result3=result3-temp3(i,j)*log2(temp3(i,j));
end
end
end
Hab=result3;
disp('两图的联合熵');
Hab
%——————计算互信息————————%
MI = Ha+Hb-Hab;
disp('两图的互信息');
MI
%——————计算条件熵——————%
Ha1b=Hab-Hb;
Hb1a=Hab-Ha;
disp('条件熵');
Ha1b
Hb1a
%————对图像1的灰度值在[0,255]上做统计————%
for m=1:M;
for n=1:N;
if A(m,n)==0;
i=1;
else
i=A(m,n);
end
temp1(i)=temp1(i)+1;
end
end
temp1=temp1./(M*N);
%————对图像2的灰度值在[0,255]上做统计————%
for o=1:O;
for p=1:P;
if B(o,p)==0;
i=1;
else
i=B(o,p);
end
temp2(i)=temp2(i)+1;
end
end
temp2=temp2./(O*P);
%————图片1的信息熵——————%
%result1=0;
%for i=1:length(temp1)
%if temp1(i)==0;
% result1=result1;
%else
% result1=result1-temp1(i)*log2(temp1(i));
%end
%end
%Ha=result1;
%Ha
%————图片2的信息熵——————%
%result2=0;
%for i=1:length(temp2)
% if temp2(i)==0;
% result2=result2;
% else
% result2=result2-temp2(i)*log2(temp2(i));
%end
%end
%Hb=result2;
%Hb
%——————计算相对熵——————%
result4=0;
for i=1:length(temp2);
if temp2(i)==0||temp1(i)==0;
result4=result4;
else
result4=result4+temp1(i)*log2(temp1(i)/temp2(i));
end
end
Dab=result4;
disp('两图的相对熵');
Dab