您现在的位置:首页 >> 机器学习 >> 内容

基于PCNN脉冲耦合神经网络的图像分割

时间:2022/12/18 20:07:56 点击:

  核心提示:A129包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5qWk5hv

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

       脉冲耦合神经网络(PCNN-Pulse Coupled Neural Network)与传统神经网络相比,有着根本的不同。PCNN有生物学的背景,它是依据猫、猴等动物的大脑皮层上的同步脉冲发放现象提出的。PCNN有着广泛的应用,可应用于图像分割,边缘检测、细化、识别等方面。

4.部分源码

Weight=[0.07 0.1 0.07;0.1 0 0.1;0.07 0.1 0.07]; 

WeightLI2=[-0.03 -0.03 -0.03;-0.03 0 -0.03;-0.03 -0.03 -0.03];

d=1/(1+sum(sum(WeightLI2)));

%%%%%%测试权值%%%%%%

WeightLI=[-0.03 -0.03 -0.03;-0.03 0.5 -0.03;-0.03 -0.03 -0.03];

d1=1/(sum(sum(WeightLI)));

%%%%%%%%%%%%%%%%%%

Beta=0.4;  

Yuzhi=245;

%衰减系数

Decay=0.3;   

[a,b]=size(X);

V_T=0.2;

%门限值

Threshold=zeros(a,b);  

S=zeros(a+2,b+2);

Y=zeros(a,b);

%点火频率

Firate=zeros(a,b); 

n=1;

%统计循环次数

count=0; 

Tempu1=zeros(a,b); 

Tempu2=zeros(a+2,b+2); 

%%%%%%图像增强部分%%%%%%

Out=zeros(a,b);

Out=uint8(Out);

for i=1:a

for j=1:b

 if(i==1|j==1|i==a|j==b)

  Out(i,j)=X(i,j);

 else  

  H=[X(i-1,j-1)  X(i-1,j) X(i-1,j+1);

     X(i,j-1)   X(i,j)   X(i,j+1);

    X(i+1,j-1) X(i+1,j) X(i+1,j+1)]; 

 temp=d1*sum(sum(H.*WeightLI));

 Out(i,j)=temp;

 end

 end

end

figure(2);

imshow(Out); 

%%%%%%%%%%%%%%%%%%%

for count=1:30 

 for i0=2:a+1

    for i1=2:b+1

         V=[S(i0-1,i1-1)  S(i0-1,i1) S(i0-1,i1+1);

             S(i0,i1-1)   S(i0,i1)   S(i0,i1+1);

             S(i0+1,i1-1) S(i0+1,i1) S(i0+1,i1+1)];

           L=sum(sum(V.*Weight));

           V2=[Tempu2(i0-1,i1-1)  Tempu2(i0-1,i1) Tempu2(i0-1,i1+1);

               Tempu2(i0,i1-1)   Tempu2(i0,i1)   Tempu2(i0,i1+1);

               Tempu2(i0+1,i1-1) Tempu2(i0+1,i1) Tempu2(i0+1,i1+1)];        F=X(i0-1,i1-1)+sum(sum(V2.*WeightLI2));

%保证侧抑制图像无能量损失

F=d*F; 

U=double(F)*(1+Beta*double(L));                          

Tempu1(i0-1,i1-1)=U;

    if U>=Threshold(i0-1,i1-1)|Threshold(i0-1,i1-1)<60

      T(i0-1,i1-1)=1;

      Threshold(i0-1,i1-1)=Yuzhi;

       %点火后一直置为1

Y(i0-1,i1-1)=1;    

     else

        T(i0-1,i1-1)=0;

        Y(i0-1,i1-1)=0;

                 end

            end

         end

   Threshold=exp(-Decay)*Threshold+V_T*Y;

   %被激活过的像素不再参与迭代过程

     if n==1

        S=zeros(a+2,b+2);

        else

        S=Bianhuan(T);

     end

     n=n+1;

     count=count+1; 

     Firate=Firate+Y;

    figure(3);

    imshow(Y);

    Tempu2=Bianhuan(Tempu1);

end

   Firate(find(Firate<10))=0;

   Firate(find(Firate>=10))=10;

   figure(4);

   imshow(Firate);

 A129

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168