代码:
clear all
data=imread('E:\matlabCX\图片\7.jpg');
figure(1)
subplot(2,3,1)
imshow(uint8(data));
title('原图像');
subplot(2,3,2);
data=rgb2gray(data);
imhist(uint8(data));
title('1D直方图');
data=double(data);
[M,N]=size(data);
ve=1000;
B=1;
H1=zeros(50,1);
a1=1.0;
ae=1.0;
af=0.1;
vf=0.5;
v1=0.2;
W=[0.5 1 0.5 ; 1 0 1; 0.5 1 0.5];
G=W;
Y=zeros(M,N);
F=Y;
L=Y;
U=Y;
E=Y;
for k=1:50
F=exp(-af)*F+vf*conv2(Y,G,'same')+data;
L=exp(-a1)*L+v1*conv2(Y,W,'same');
U=F.*(1+B*L);
Y=double(U>E);
E=exp(-ae)*E+ve*Y;
p=zeros(2);
for i=1:M
for j=1:N
p(Y(i,j)+1)=p(Y(i,j)+1)+1;
end
end
p=p/(M*N);
tp=0.0;
if p(1)>0&p(2)>0
H1(k,1)=-p(1)*log(p(1))-p(2)*log(p(2));
end
end
subplot(2,3,3)
P=1:50,
plot(P,H1);
data1=imread('E:\matlabCX\图片\8.jpg');
subplot(2,3,4)
imshow(uint8(data1));
title('原图像');
subplot(2,3,5);
data1=rgb2gray(data1);
imhist(uint8(data1));
title('1D直方图');
data1=double(data1);
[M,N]=size(data1);
data=data1;
H2=zeros(50,1);
a1=1.0;
ae=1.0;
af=0.1;
vf=0.5;
v1=0.2;
W=[0.5 1 0.5 ; 1 0 1; 0.5 1 0.5];
G=W;
Y1=zeros(M,N);
F=Y1;
L=Y1;
U=Y1;
E=Y1;
for k=1:50
F=exp(-af)*F+vf*conv2(Y1,G,'same')+data;
L=exp(-a1)*L+v1*conv2(Y1,W,'same');
U=F.*(1+B*L);
Y1=double(U>E);
E=exp(-ae)*E+ve*Y1;
p1=zeros(2);
for i=1:M
for j=1:N
p1(Y1(i,j)+1)=p1(Y1(i,j)+1)+1;
end
end
p1=p1/(M*N);
tp=0.0;
if p1(1)>0&p1(2)>0
H2(k,1)=-p1(1)*log(p1(1))-p1(2)*log(p1(2));
end
end
subplot(2,3,6)
P=1:50,
plot(P,H2);
value=0.0;
for i=1:50
for j=1:50
value=value+(H1(i,1)-H2(j,1))^2*1/(1+(i-j)^2);
end
end
ss='两幅不同大小的灰度图像特征差异性程度大小=';
tt1=num2str(value);
ss=strcat(ss,tt1);
disp(ss);
结果:
两幅不同大小的灰度图像特征差异性程度大小=2.8224
少年不被楼层误,余生不羁尽自由。
加油,加油!