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

📄 morbpnn.m

📁 基于形态神经网络的 模式识别方法
💻 M
字号:
clc
clear
'start morphological neural networks'
load F:\data(important)\T72_mag.mat    %%%%读入T72的数据图像
T72=mobandata;
[rt72,ct72]=size(T72);
load F:\data(important)\BTR_mag.mat    %%%%%%读入BMP的数据图像
BTR=mobandata;
[rbtr,cbtr]=size(BTR);
load F:\data(important)\BMP_mag.mat    %%%%%%读入BMP的数据图像
BMP=mobandata;
[rbmp,cbmp]=size(BMP);
%%%%%得到100×100的T72子图像中心为(50,64)
for i=1:ct72
    t72{1,i}= imcrop(T72{1,i},[26 26 99 99]);  %%%调整图像的大小为100×100
end
%%%%%得到100×100的BTR子图像中心为(50,64)
for i=1:cbtr
    btr{1,i}= imcrop(BTR{1,i},[26 26 99 99]);  %%%调整图像的大小为100×100
end
%%%%%得到100×100的BMP子图像中心为(50,64)
for i=1:cbmp
    bmp{1,i}= imcrop(BMP{1,i},[26 26 99 99]);  %%%调整图像的大小为100×100
end
%%%%%%%%%% hit_miss extraction character %%%%%%%%%%%%%%%%%%%%%%
SEm1 = rand(3,3) ;
SEh2 = rand(3,3) ;   %%%% character extraction structuring elments SE1 and SE2 
%%%t72 feature map
[M,N]=size(t72{1,1});
Fmap=zeros(100,100);
t=4;
F=zeros(t,50*50);
for k=1:t 
    for i=2:M-1
        for j=2:N-1
            I=[t72{1,k}(i-1,j-1) t72{1,k}(i-1,j) t72{1,k}(i-1,j+1);t72{1,k}(i,j-1) t72{1,k}(i,j) t72{1,k}(i,j+1);t72{1,k}(i+1,j-1) t72{1,k}(i+1,j) t72{1,k}(i+1,j+1)];
            Miss=I+SEm1;
            Hit=I-SEh2;
            Miss=reshape(Miss,1,9);
            Hit=reshape(Hit,1,9);
            Fmap(i,j)=min(Miss)-max(Hit);     %得到feature map             
        end
    end
    Fmap11=downsample(Fmap,2);         %%%% 行downsample rate 4
    Fmap1=reshape(Fmap11.',1,100*50);
    fmap1=downsample(Fmap1,2);         %%%% 列downsample rate 4
    F(k,:)=fmap1;
end

%%%% bmp feature map
[M,N]=size(bmp{1,1});
Fmap1=zeros(100,100);
t=4;
F1=zeros(t,50*50);
for k=1:t 
    for i=2:M-1
        for j=2:N-1
            I=[bmp{1,k}(i-1,j-1) bmp{1,k}(i-1,j) bmp{1,k}(i-1,j+1);bmp{1,k}(i,j-1) bmp{1,k}(i,j) bmp{1,k}(i,j+1);bmp{1,k}(i+1,j-1) bmp{1,k}(i+1,j) bmp{1,k}(i+1,j+1)];
            Miss1=I+SEm1;
            Hit1=I-SEh2;
            Miss1=reshape(Miss1,1,9);
            Hit1=reshape(Hit1,1,9);
            Fmap1(i,j)=min(Miss1)-max(Hit1);     %得到feature map             
        end
    end
    Fmap22=downsample(Fmap1,2);         %%%% 行downsample rate 4
    Fmap2=reshape(Fmap22.',1,100*50);
    fmap2=downsample(Fmap2,2);         %%%% 列downsample rate 4
    F1(k,:)=fmap2;
end
%%%% btr feature map
[M,N]=size(btr{1,1});
Fmap2=zeros(100,100);
t=4;
F2=zeros(t,50*50);
for k=1:t 
    for i=2:M-1
        for j=2:N-1
            I=[btr{1,k}(i-1,j-1) btr{1,k}(i-1,j) btr{1,k}(i-1,j+1);btr{1,k}(i,j-1) btr{1,k}(i,j) btr{1,k}(i,j+1);btr{1,k}(i+1,j-1) btr{1,k}(i+1,j) btr{1,k}(i+1,j+1)];
            Miss2=I+SEm1;
            Hit2=I-SEh2;
            Miss2=reshape(Miss2,1,9);
            Hit2=reshape(Hit2,1,9);
            Fmap2(i,j)=min(Miss2)-max(Hit2);     %得到feature map             
        end
    end
    Fmap33=downsample(Fmap2,2);         %%%% 行downsample rate 4
    Fmap3=reshape(Fmap33.',1,100*50);
    fmap3=downsample(Fmap3,2);         %%%% 列downsample rate 4
    F2(k,:)=fmap3;
end
%%%%%%%%%%%%%%%%% train samples 4t72 4bmp 4btr%%%%%%%%%%%%%%%%%%
P=zeros(12,50*50);
P(1:t,:)=F(:,:);
P(t+1:2*t,:)=F1(:,:);
P(2*t+1:3*t,:)=F2(:,:);
P1=P.';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%权值%%%%%%%%%%%%%%%%%%%%%
outport = 3 ;   %%%%output class
w1 = rand(5,2500) ;    %%%%%  pattern recognition weight w1,w2 and w3
w2 = rand(3,5) ;
b1 = rand(5,1) ;
b2 = rand(3,1) ;



%目标值
targett72 = [1,0,0]';
targetbmp = [0,1,0]' ;
targetbtr = [0,0,1]' ;
target=[1 1 1 1 0 0 0 0 0 0 0 0;0 0 0 0 1 1 1 1 0 0 0 0;0 0 0 0 0 0 0 0 1 1 1 1];

net=newff(minmax(P1),[5,3,3],{'tansig','logsig','logsig'},'traingdx');
net = init(net);
net.performFcn='sse';
net.trainParam.epochs=2000;  %最大训练次数
net.trainParam.goal=0.001;  %训练要求精度
net.trainParam.lr=0.01;      %网络学习速率
net.trainParam.mc=0.9;      %动量因子
net=train(net,P1,target);
w1=net.IW{1,1};
b1=net.b{1,1};
w2=net.LW{2,1};
b2=net.b{2,1};
'end BP train'

%%%%%%%%%%new detection sample%%%%%%%%%%%%%%%%%%%%%%

%保存网络训练结果
fww1=fopen('w1.dat','w');
fwb1=fopen('b1.dat','w');
fww2=fopen('w2.dat','w');
fwb2=fopen('b2.dat','w');

fprintf(fww1,'%6.4f %6.4f\n',w1);
fprintf(fwb1,'%6.4f %6.4f\n',b1);
fprintf(fww2,'%6.4f %6.4f\n',w2);
fprintf(fwb2,'%6.4f %6.4f\n',b2);

fclose(fww1);
fclose(fwb1);
fclose(fww2);
fclose(fwb2);

'start BP detection'
%即时仿真
y1=sim(net,P1);

'new detect class start'
%仿真程序
%此为一仿真程序
%首先读入权域值参数
frw1=fopen('w1.dat','r');
frb1=fopen('b1.dat','r');
frw2=fopen('w2.dat','r');
frb2=fopen('b2.dat','r');

[w1,count]=fscanf(frw1,'%f',[5,2500]);
[b1,count]=fscanf(frb1,'%f',[5,1]);
[w2,count]=fscanf(frw2,'%f',[3,5]);
[b2,count]=fscanf(frb2,'%f',[3,1]);

fclose(frw1);
fclose(frb1);
fclose(frw2);
fclose(frb2);

%net = newff([-1 2;0 5],3);

%%%%%%%%%% hit_miss extraction character %%%%%%%%%%%%%%%%%%%%%%
SEm1 = rand(3,3) ;
SEh2 = rand(3,3) ;   %%%% character extraction structuring elments SE1 and SE2 
%%%t72 feature map
[M,N]=size(t72{1,1});
Fmap=zeros(100,100);
t=4;
FF=zeros(t,50*50);
for k=9:3*t 
    for i=2:M-1
        for j=2:N-1
            I=[t72{1,k}(i-1,j-1) t72{1,k}(i-1,j) t72{1,k}(i-1,j+1);t72{1,k}(i,j-1) t72{1,k}(i,j) t72{1,k}(i,j+1);t72{1,k}(i+1,j-1) t72{1,k}(i+1,j) t72{1,k}(i+1,j+1)];
            Miss=I+SEm1;
            Hit=I-SEh2;
            Miss=reshape(Miss,1,9);
            Hit=reshape(Hit,1,9);
            Fmap(i,j)=min(Miss)-max(Hit);     %得到feature map             
        end
    end
    Fmap11=downsample(Fmap,2);         %%%% 行downsample rate 4
    Fmap1=reshape(Fmap11.',1,100*50);
    fmap1=downsample(Fmap1,2);         %%%% 列downsample rate 4
    FF(k-2*t,:)=fmap1;
end

%%%% bmp feature map
[M,N]=size(bmp{1,1});
Fmap1=zeros(100,100);
t=4;
FF1=zeros(t,50*50);
for k=9:3*t 
    for i=2:M-1
        for j=2:N-1
            I=[bmp{1,k}(i-1,j-1) bmp{1,k}(i-1,j) bmp{1,k}(i-1,j+1);bmp{1,k}(i,j-1) bmp{1,k}(i,j) bmp{1,k}(i,j+1);bmp{1,k}(i+1,j-1) bmp{1,k}(i+1,j) bmp{1,k}(i+1,j+1)];
            Miss1=I+SEm1;
            Hit1=I-SEh2;
            Miss1=reshape(Miss1,1,9);
            Hit1=reshape(Hit1,1,9);
            Fmap1(i,j)=min(Miss1)-max(Hit1);     %得到feature map             
        end
    end
    Fmap22=downsample(Fmap1,2);         %%%% 行downsample rate 4
    Fmap2=reshape(Fmap22.',1,100*50);
    fmap2=downsample(Fmap2,2);         %%%% 列downsample rate 4
    FF1(k-2*t,:)=fmap2;
end
%%%% btr feature map
[M,N]=size(btr{1,1});
Fmap2=zeros(100,100);
t=4;
FF2=zeros(t,50*50);
for k=9:3*t 
    for i=2:M-1
        for j=2:N-1
            I=[btr{1,k}(i-1,j-1) btr{1,k}(i-1,j) btr{1,k}(i-1,j+1);btr{1,k}(i,j-1) btr{1,k}(i,j) btr{1,k}(i,j+1);btr{1,k}(i+1,j-1) btr{1,k}(i+1,j) btr{1,k}(i+1,j+1)];
            Miss2=I+SEm1;
            Hit2=I-SEh2;
            Miss2=reshape(Miss2,1,9);
            Hit2=reshape(Hit2,1,9);
            Fmap2(i,j)=min(Miss2)-max(Hit2);     %得到feature map             
        end
    end
    Fmap33=downsample(Fmap2,2);         %%%% 行downsample rate 4
    Fmap3=reshape(Fmap33.',1,100*50);
    fmap3=downsample(Fmap3,2);         %%%% 列downsample rate 4
    FF2(k-2*t,:)=fmap3;
end
%%%%%%%%%%%%%%%%% train samples 4t72 4bmp 4btr%%%%%%%%%%%%%%%%%%
PP=zeros(12,50*50);
PP(1:t,:)=FF(:,:);
PP(t+1:2*t,:)=FF1(:,:);
PP(2*t+1:3*t,:)=FF2(:,:);
PP1=PP.';


net=newff(minmax(PP1),[5,3,3],{'tansig','logsig','logsig'},'traingdx');
%net = initwb(net,3)
net.IW{1,1}=w1;
net.b{1,1}=b1;
net.LW{2,1}=w2;
net.b{2,1}=b2;

y = sim(net,PP1)
'end BP class'

⌨️ 快捷键说明

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