⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcnn.m

📁 脉冲耦合神经网络(PCNN)用matlab的实现
💻 M
字号:
clear all
A = imread('2.jpg'); %读入图像文件
%A = imread('eight.tif');

%h1 = ones(3)/9;
%B1 = imfilter (A ,h1);%用第一种线性低通滤波算子对图像滤波
%h2 = [1 1 1 1 1;1 2  2 2 1;1 2 3 2 1;1 2  2 2 1;1 1 1 1 1]/35;
%B2 = imfilter (B1 ,h2);%用第二种线性低通滤波算子对图像滤波
%A = imnoise (B2,'gaussian',0,0.02);
B2= imnoise (A,'salt & pepper',0.01);
A=B2;
[ROW,COL]=size(A);       %求出图象尺寸
S=im2double(A);
Y=zeros(ROW,COL);       %生成零矩阵
E=ones(ROW,COL)*2;
M=[0.707 1 0.707;1 1 1;0.707 1 0.707];%模板
W=[0.707 1 0.707;1 1 1;0.707 1 0.707];
%下面是系数,其他文章的系数不一定一样
aF=0.1;
aL=0.3;
aE=0.2;
VF=0.5;%1; 
VL=0.2;%1;
VE=20;%50;
F=S;
L=S;
b=0.1;%0.05;
%按公式计算
num=20;

for n=1:num
    SUM1=imfilter(Y,M);
    SUM2=imfilter(Y,W);
    for i=1:ROW
        for j=1:COL
           F(i,j)=exp(-aF)*F(i,j)+S(i,j)+VF*SUM1(i,j);
           L(i,j)=exp(-aL)*L(i,j)+VL* SUM2(i,j);
           U(i,j)=F(i,j)*(1+b*L(i,j));
           E(i,j)=exp(-aE)*E(i,j)+VE*Y(i,j);
           if  U(i,j)-E(i,j)>0
                Y(i,j)=1; 
          else
                Y(i,j)=0;
          end
       end 
    end
    if (n>=1&n<=20)
       figure;
       imshow(Y);
    end
       if (n==1) C1=Y;
       end
       if (n==20) C2=Y;
       end   
end
C3=xor(C1,C2);
figure; 
imshow(C3);


   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -