• 大小: 2.16MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-22
  • 语言: Matlab
  • 标签:

资源简介

基于MATLAB写的可对遥感影像进行BP神经网络分类的m文件,里面有测试图像数据,其中感兴趣区域数据是由ENVI选取的感兴趣区域保存而来。

资源截图

代码片段和文件信息

clear all;
clc;
%<----------------------------贝叶斯算法进行遥感图像分类------------------------
%读入样本图像1
Y=imread(‘date\yangqu.tif‘);
%读入待分类遥感图像
I=imread(‘date\wuhan.bmp‘);
  %将彩色图像降维
  R=I(::1);
  G=I(::2);
  B=I(::3);
  %将灰度值归一化处理
  R=im2double(R);
  G=im2double(G);
  B=im2double(B);
  [MN]=size(R);
  P=[R;G;B];

a1=1;a2=1;a3=1;
for i = 1 : M
    for j = 1 : N
        if (Y(ij)==1)
            T1(:a1) = I(ij:);
            a1=a1+1;
        elseif (Y(ij)==2)
            T2(:a2) = I(ij:);
            a2=a2+1;
        elseif (Y(ij)==3)
            T3(:a3) = I(ij:);
            a3=a3+1;
        end
    end
end

T1 = im2double(T1);
T2 = im2double(T2);
T3 = im2double(T3);

P=[T1T2T3];    %样区数据
T=[];     %标记结果
TT=[0;0;0];
T=concur(TTa1-1);
TT=[0.4;0.7;0.7];
TT=concur(TTa2-1);
T=[TTT];
TT=[0.6;0.7;0.4];
TT=concur(TTa3-1);
T=[TTT];                    

%建立BP网络,中间层8,输出层3,tansig、purelin分别为中间层、输出层的转换函数,
 echo on
 net=newff(minmax(P)[83]{‘tansig‘‘purelin‘}‘trainlm‘);  
 clc
    %设置训练参数
    net.trainparam.show=50;        
    net.trainParam.epochs=1000;
    net.trainParam.goal=1e-4;
    net=init(net);%重新初始化
    [nettr]=train(netPT); 

A4=imread(‘date\wuhan.bmp‘);
A4=im2double(A4);%将各波段的灰度值类型转换为人工神经网络可用的类型
RB=A4(::1);%提取出图像红色波段的灰度值
GB=A4(::2);%提取出图像绿色波段的灰度值
BB=A4(::3);%提取出图像蓝色波段的灰度值
%初始化三个矩阵
[mn]=size(RB);%确定图像的行数和列数
RB1=reshape(RB1n*m);
GB1=reshape(GB1m*n);
BB1=reshape(BB1m*n);

X=[RB1;GB1;BB1];
OUT=sim(netX);
IN=sim(netX); 


clc
[mn]=size(RB);
r1=OUT(1:);%将数据还原成原始图像的rgb行列格式
r1=reshape(r1mn);
g1=OUT(2:);
g1=reshape(g1mn);
b1=OUT(3:);
b1=reshape(b1mn);
r2=IN(1:);%将数据还原成原始图像的rgb行列格式
r2=reshape(r2mn);
g2=IN(2:);
g2=reshape(g2mn);
b2=IN(3:);
b2=reshape(b2mn);
R=[];
G=[];
B=[];
for i=1:m
    for j=1:n
        if r1(ij)<0.9
            R(ij)=r1(ij);
            G(ij)=g1(ij);
            B(ij)=b1(ij);
        else
            R(ij)=r2(ij);
            G(ij)=g2(ij);
            B(ij)=b2(ij);
        end
    end
end
Rr=abs(R)*255;%还原成图像格式
Gg=abs(G)*255;
Bb=abs(B)*255;
Rr=uint8(Rr);
Gg=uint8(Gg);
Bb=uint8(Bb);
RGB=cat(3RrGgBb);

clc
imshow(RGB);
title(‘05年分类图像‘);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-05-22 21:10  BP神经网络\
     文件        2485  2013-05-22 19:44  BP神经网络\BPnetwork.m
     目录           0  2013-05-22 21:10  BP神经网络\date\
     文件     3000054  2013-05-22 19:17  BP神经网络\date\wuhan.bmp
     文件     1009921  2013-05-22 19:17  BP神经网络\date\yangqu.tif

评论

共有 条评论