查看: 125|回复: 0|关注: 0

[未答复] som自组织神经网络遥感分类结果出现条带状问题,怎么回事?

[复制链接]

新手

10 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 5 天前 | 显示全部楼层 |阅读模式
clear
clc

myimage=imread('yanan543test.tif');
dmyimage=im2double(myimage);%将图像变为双精度格式, 其灰度值归一到0, 1之间
figure,imshow(mat2gray(dmyimage));
title('原始图像');
[n1,n2,~]=size(dmyimage);
X=[];

for i=1 : n1 % n1表示原始图像的行数, i为循环变量。
    X=[X, dmyimage(i,:)];
end

minx=min(X);
maxx=max(X);
m=5; %分类数,即竞争获胜的神经元数
mysonet=newsom([minx maxx],m);%创建一个自组织神经网络
mysonet.trainParam.epochs=50;%设定网络训练的次数;
net =train( mysonet, X );%网络训练, 也即不断调整权值的过程;
plotsom (net.iw{1, 1}, net.layers{1}.distances) ;%绘自组织神经网络的权值图。

%竞争获胜的神经元代表输入模式X的输出(分类)模式Y,下面的matlab程序可以完成网络的仿真与输出。
Simresult=sim(net, X);%仿真
we=net.iw{1, 1};%权值向量
cc=we'*Simresult;
cc=cc*255; %权值图像
[maxSim,maxSimind]=max(Simresult,[],1); %求a每列最大值及对应的索引

%将仿真后的1维向量还原成2维矩阵;n1表示原始图像的行数, n2表示列数。
classimage=[];
classmap=[];
for i=0:n1-1
    classimage=[classimage; cc( (i*n2+1) : (i*n2)+n2)];
    classmap=[classmap; maxSimind( (i*n2+1) : (i*n2)+n2)];
end
figure
imshow (classimage,maps);
title('神经网络分类权值图');
figure
imshow(classmap,maps);
title('神经网络分类结果图');

原始图片

原始图片

原始图片


分类结果图片:
分类结果.jpg

回复主题 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表