课程学习——脉冲耦合神经网络

代码:

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
课程学习——脉冲耦合神经网络_第1张图片少年不被楼层误,余生不羁尽自由。
加油,加油!

你可能感兴趣的:(自我学习)