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);
[M,N]=size(R);
P=[R;G;B];
a1=1;a2=1;a3=1;
for i = 1 : M
for j = 1 : N
if (Y(i,j)==1)
T1(:,a1) = I(i,j,:);
a1=a1+1;
elseif (Y(i,j)==2)
T2(:,a2) = I(i,j,:);
a2=a2+1;
elseif (Y(i,j)==3)
T3(:,a3) = I(i,j,:);
a3=a3+1;
end
end
end
T1 = im2double(T1);
T2 = im2double(T2);
T3 = im2double(T3);
P=[T1,T2,T3]; %样区数据
T=[]; %标记结果
TT=[0;0;0];
T=concur(TT,a1-1);
TT=[0.4;0.7;0.7];
TT=concur(TT,a2-1);
T=[T,TT];
TT=[0.6;0.7;0.4];
TT=concur(TT,a3-1);
T=[T,TT];
%建立BP网络,中间层8,输出层3,tansig、purelin分别为中间层、输出层的转换函数,
echo on
net=newff(minmax(P),[8,3],{'tansig','purelin'},'trainlm');
clc
%设置训练参数
net.trainparam.show=50;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-4;
net=init(net);%重新初始化
[net,tr]=train(net,P,T);
A4=imread('date\wuhan.bmp');
A4=im2double(A4);%将各波段的灰度值类型转换为人工神经网络可用的类型
RB=A4(:,:,1);%提取出图像红色波段的灰度值
GB=A4(:,:,2);%提取出图像绿色波段的灰度值
BB=A4(:,:,3);%提取出图像蓝色波段的灰度值
%初始化三个矩阵
[m,n]=size(RB);%确定图像的行数和列数
RB1=reshape(RB,1,n*m);
GB1=reshape(GB,1,m*n);
BB1=reshape(BB,1,m*n);
X=[RB1;GB1;BB1];
OUT=sim(net,X);
IN=sim(net,X);
clc
[m,n]=size(RB);
r1=OUT(1,:);%将数据还原成原始图像的rgb行列格式
r1=reshape(r1,m,n);
g1=OUT(2,:);
g1=reshape(g1,m,n);
b1=OUT(3,:);
b1=reshape(b1,m,n);
r2=IN(1,:);%将数据还原成原始图像的rgb行列格式
r2=reshape(r2,m,n);
g2=IN(2,:);
g2=reshape(g2,m,n);
b2=IN(3,:);
b2=reshape(b2,m,n);
R=[];
G=[];
B=[];
for i=1:m
for j=1:n
if r1(i,j)<0.9
R(i,j)=r1(i,j);
G(i,j)=g1(i,j);
B(i,j)=b1(i,j);
else
R(i,j)=r2(i,j);
G(i,j)=g2(i,j);
B(i,j)=b2(i,j);
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(3,Rr,Gg,Bb);
clc
imshow(RGB);
title('05年分类图像');
基于Matlab的遥感影像BP神经网络分类算法
版权申诉
5星 · 超过95%的资源 60 浏览量
2022-05-06
15:11:56
上传
评论 11
收藏 2.16MB ZIP 举报
处处清欢
- 粉丝: 153
- 资源: 2471
最新资源
- hadoop-基于hive的聊天数据分析报表可视化案例数据源
- Advanced Multicore Systems-On-Chip
- kb-2026-0504cbr-3.zip
- 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统设计+源码+文档(毕业设计&课程设计&项目开发)
- 在链表的任意位置插入一个节点.c
- 基于python实现使用谷歌mediapipe的手关键点检测模型+源码(毕业设计&课程设计&项目开发)
- 西门子电梯PLC比赛代码
- 66eb59b9321b30b62a979f86d7d100f2.pptx
- 异或加密解密的CC++源代码示例
- 基于QT+C++实现的会逃跑的按钮+源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页