PCNN在图像融合中应用广泛
1、脉冲耦合的神经元之间有有耦合和无耦合两种形式。,有耦合的神经元之间存在能量传播,产生同步脉冲发放,从而将输入相似的神经元在同一时刻点火。
3、脉冲神经网络–第三代人工神经网络。
4、PCNN是由多个PCNN神经元构成的单层反馈型网络,因此适合实时的图像处理环境,每个神经元由三个部分组成:接受部分、调制部分、脉冲产生部分。
5、PCNN神经元的个数和像素的个数相同,它们是一一对应的。且神经元的外部刺激等于图像的灰度值或者归一化之后的灰度值。当β=0时,这时候是没有耦合的。
6、PCNN如何工作:
一、不存在耦合:
1、假设神经元的反馈输入只有外部刺激一项,Sij>0;n=0时,时间t=0;Uij(0)=Sij-Tij >0,那么神经元(i.j)输出为高电平。这里的Tij是动态门限。
2、当高电平被输出时,Tij迅速增加到设定的常数VT,VT>Sij,从而使得Sij-Tij<0,输出低电平。
3、经过步骤1、2,神经元(i,j)输出了一个脉冲,这称为点火一次。在门限值Tij从VT衰减到Sij期间,神经元(i,j)是一直保持低电平的,而后当Uij>0时,重新点火,如此往复下去。
于是,神经元(i,j)的运行是这样的,在外部刺激Sij的作用下,以频率发送脉冲,频率为:【图像分割】基于脉冲耦合神经网络的图像分割_图像处理
。所以,灰度值越大,点火频率就越高。,不同灰度值输入的神经元也会在不同的时刻被点火,而输入相同的神经元将在同一时间被点火。
4、经过1,2,3步之后,PCNN就把图像变成了一个和时间相关的点火图了。【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_02二、存在耦合:
当β/=0时,神经元是否点火要受周围神经元的影响。
1、假设这里有一个强刺激神经元(i,j),在第n次迭代点火的时候,它的邻近神经元(p,n),其刺激spq由spq变为(1+βLpq)spq,【Lpq是神经元内部参数之一,连接输入】也就是神经元(p,q)的刺激被提高了。
2、如果此时,更新的spq大于阈值T,这会导致神经元(p,q)在第n次迭代的时候被提前点火。这个过程称为神经元(p.q)被神经元(i,j)捕获。
3、如此,当链接强度β和链接输入L越大,和神经元(i,j)同步点火的神经元就越多。那么,像素值越接近,就越容易被捕获。
4、于是,在存在耦合的情况下,耦合的神经元很有可能会出现集体的点火行为,发放同步脉冲:总结为空间近邻、强度相似的神经元倾向于在同一时刻点火。
5、这时PCNN的点火图就是有特征地将图像变成时间轴的点火图。【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_03PCNN的特性:1、构成PCNN系统的每一个神经元是动态的
2、PCNN不需要训练,是强自适应系统。

最后回顾一下PCNN的神经元结构:【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_04【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_05【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_06【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_07【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_08【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_09

M,W为权值;F,L,T分别是反馈,链接,阈值的意义;V是放大系数,a是常数,U是内部行为,Y是输出,S是外部刺激(像素值)。

function [Edge,Numberofaera]=pcnn(X)
% 功能:采用PCNN算法进行边缘检测
% 输入:X—输入的灰度图像
% 输出:Edge—检测到的       Numberofaera—表明了在各次迭代时激活的块区域
X=imread('lena.JPG');
figure(1);
imshow(X); 
X=double(X);
% 设定权值
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;

   imshow(Firate);
%%%%%%子函数 %%%%%%%
function Y=Jiabian(X)
[m,n]=size(X);
Y=zeros(m+2,n+2);
for i=1:m+2
    for j=1:n+2
        if i==1&j~=1&j~=n+2
            Y(i,j)=X(1,j-1);
        elseif j==1&i~=1&i~=m+2
            Y(i,j)=X(i-1,1);
        elseif i~=1&j==n+2&i~=m+2
            Y(i,j)=X(i-1,n);
        elseif i==m+2&j~=1&j~=n+2
            Y(i,j)=X(m,j-1);
        elseif i==1&j==1
            Y(i,j)=X(i,j);
        elseif i==1&j==n+2
            Y(i,j)=X(1,n);
        elseif i==(m+2)&j==1
            Y(i,j)=X(m,1);
        elseif i==m+2&j==n+2
            Y(i,j)=X(m,n);
        else
            Y(i,j)=X(i-1,j-1);
        end
    end
end
%%%%%%子函数%%%%%%
function Y=Bianhuan(X)
[m,n]=size(X);
Y=zeros(m+2,n+2);
for i=1:m+2
    for j=1:n+2
        if i==1|j==1|i==m+2|j==n+2
            Y(i,j)=0;
        else
            Y(i,j)=X(i-1,j-1);
        end
    end
end
%%%%%%子函数%%%%%%
function Y=judge_edge(X,n)
%X:每次迭代后PCNN输出的二值图像,如何准确判断边界点是关键
[a,b]=size(X);
T=Jiabian(X);
Y=zeros(a,b);
W=zeros(a,b);
for i=2:a+1
    for j=2:b+1
        if (T(i,j)==1)&((T(i-1,j)==0&T(i+1,j)==0)|(T(i,j-1)==0&T(i,j+1)==0)|(T(i-1,j-1)==0&T(i+1,j+1)==0)|(T(i+1,j-1)==0&T(i-1,j+1)==0))
            Y(i-1,j-1)=-n;
        end
    end
end
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.

【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_10【图像分割】基于脉冲耦合神经网络的图像分割_图像处理_11