• 大小: 18KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: 图像分割  

资源简介

写了一些关于图像写了一些关于图像最大类间方差阈值和遗传算法的例子,程序含有说明解释,适合初学者。例子,程序含有说明解释,适合初学者。

资源截图

代码片段和文件信息

function [EdgeNumberofaera]=pcnn(X)
% 功能:采用PCNN算法进行边缘检测
% 输入:X—输入的灰度图像
% 输出:Edge—检测到的       Numberofaera—表明了在各次迭代时激活的块区域
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;   
[ab]=size(X);
V_T=0.2;
%门限值
Threshold=zeros(ab);  
S=zeros(a+2b+2);
Y=zeros(ab);
%点火频率
Firate=zeros(ab); 
n=1;
%统计循环次数
count=0; 
Tempu1=zeros(ab); 
Tempu2=zeros(a+2b+2); 
%%%%%%图像增强部分%%%%%%
Out=zeros(ab);
Out=uint8(Out);
for i=1:a
for j=1:b
 if(i==1|j==1|i==a|j==b)
  Out(ij)=X(ij);
 else  
  H=[X(i-1j-1)  X(i-1j) X(i-1j+1);
     X(ij-1)   X(ij)   X(ij+1);
    X(i+1j-1) X(i+1j) X(i+1j+1)]; 
 temp=d1*sum(sum(H.*WeightLI));
 Out(ij)=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-1i1-1)  S(i0-1i1) S(i0-1i1+1);
             S(i0i1-1)   S(i0i1)   S(i0i1+1);
             S(i0+1i1-1) S(i0+1i1) S(i0+1i1+1)];
           L=sum(sum(V.*Weight));
           V2=[Tempu2(i0-1i1-1)  Tempu2(i0-1i1) Tempu2(i0-1i1+1);
               Tempu2(i0i1-1)   Tempu2(i0i1)   Tempu2(i0i1+1);
               Tempu2(i0+1i1-1) Tempu2(i0+1i1) Tempu2(i0+1i1+1)];        F=X(i0-1i1-1)+sum(sum(V2.*WeightLI2));
%保证侧抑制图像无能量损失
F=d*F; 
U=double(F)*(1+Beta*double(L));                          
Tempu1(i0-1i1-1)=U;
    if U>=Threshold(i0-1i1-1)|Threshold(i0-1i1-1)<60
      T(i0-1i1-1)=1;
      Threshold(i0-1i1-1)=Yuzhi;
       %点火后一直置为1
Y(i0-1i1-1)=1;    
     else
        T(i0-1i1-1)=0;
        Y(i0-1i1-1)=0;
                 end
            end
         end
   Threshold=exp(-Decay)*Threshold+V_T*Y;
   %被激活过的像素不再参与迭代过程
     if n==1
        S=zeros(a+2b+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);
%%%%%%子函数 %%%%%%%
function Y=Jiabian(X)
[mn]=size(X);
Y=zeros(m+2n+2);
for i=1:m+2
    for j=1:n+2
        if i==1&j~=1&j~=n+2
            Y(ij)=X(1j-1);
        elseif j==1&i~=1&i~=m+2
            Y(ij)=X(i-11);
        elseif i~=1&j==n+2&i~=m+2
            Y(ij)=X(i-1n);
        elseif i==m+2&j~=1&j~=n+2
            Y(ij)=X(mj-1);
        elseif i==1&j==1
            Y(ij)=X(ij);
        elseif i==1&j==n+2
            Y(ij)=X(1n);
        elseif i==(m+2)&j==1
            Y(ij)=X(m1);
        elseif i==m+2&j==n+2
            Y(ij)=X(mn);
        else
            Y(ij)=X(i-1j-1);
        end
    end
end
%%%%%%子函数%%%%%%
function Y=Bianhuan(X)
[mn]=size(X

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14059  2011-06-06 21:07  3.25 基于脉冲耦合神经网络的图像分割\lena.JPG

     文件       3695  2012-02-15 23:28  3.25 基于脉冲耦合神经网络的图像分割\pcnn.m

     文件      24064  2011-09-26 22:47  3.25 基于脉冲耦合神经网络的图像分割\程序运行说明.doc

     目录          0  2019-06-18 09:26  3.25 基于脉冲耦合神经网络的图像分割

----------- ---------  ---------- -----  ----

                41818                    4


评论

共有 条评论