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

📄 pcnnsegmentation.asv

📁 这是一些关于PCNN进行图像分割的Matlab程序,里面包括全部人子函数.请站长开通我的帐号,我有一个重要程序要下.谢谢!
💻 ASV
字号:
function[Edge,Numberofaera]=PCNN(X)
%X:输入的灰度图像,Edge:检测到的一些边界点,Numberofaera则表明了在各次迭代时激活的块区域
clear;
clc;
I=imread('lena1.bmp');
subplot(1,2,1);
imshow(I);
%imshow(I);
X=double(I);
%X=double(imread('lena.bmp'));
Weight=[0.5 1 0.5;1 0 1;0.5 1 0.5];   %此可权值矩阵的选取原则(或者根据)是什么?
Beta=0.4;
Yuzhi=200;
Decay=0.3;
[a,b]=size(X);
Threshold=zeros(a,b);
S=zeros(a+2,b+2);
B=zeros(a,b);   %标记样板,表明该pixel是否被激活过;
Y=zeros(a,b);
Edge=zeros(a,b);Numberofaera=zeros(a,b);Numberofaera_1=zeros(a,b);
Num_1=0;Num=0;
n=1;
while(sum(sum(B))~=256*256)   %若采用128*128的图像,须注意。
    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));
            F=X(i0-1,i1-1);
            U=double(F)*(1+Beta*double(L));
            if U>=Threshold(i0-1,i1-1)|Threshold(i0-1,i1-1)<95
                T(i0-1,i1-1)=1;   %这是什么?
                Threshold(i0-1,i1-1)=Yuzhi;
                Y(i0-1,i1-1)=1;
                if n==1
                    B(i0-1,i1-1)=0;   %避免第一次全部激发造成的影响
                else
                    B(i0-1,i1-1)=1;  %已发射过的标记
                    Threshold(i0-1,i1-1)=1000000;%相当于不会被第二次激活
                end 
            else
                T(i0-1,i1-1)=0;  %no use?
                Y(i0-1,i1-1)=0;
            end
        end
    end
Threshold(find(B~=1))=exp(-Decay)*Threshold(find(B~=1));
%被激活过的像不再参与迭代过程
if n~=1
    Edge=Edge+judge_edge(Y,n);
    Y(find(Edge<0))=0;   %边界点被置零,Y本来是激发的像素,现在边界被置零,
                         %也不能说白激发了,B矩阵有纪录!当然下次就休想再被激发
    [Numberofaera_1,Num_1]=bwlabel(Y,4);
    for i=1:a
        for j=1:b
            if Numberofaera_1(i,j)~=0
                 Numberofaera_1(i,j)=Numberofaera_1(i,j)+Num;      
            end
        end
    end
    Numberofaera=Numberofaera+Numberofaera_1;
    Num=Num_1;
end
if n==1
    S=zeros(a+2,b+2);
else
    S=Bianhuan(T);
end
n=n+1;
Numberofaera_1=zeros(a,b);
subplot(1,2,2);
imshow(S);
end  %while

                  
                  
                    
        
    

⌨️ 快捷键说明

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