matlab建立自组织神经网络处理遥感图像程序调试,求大神帮忙!!!!!
image = imread('f:\can_tmr.jpg', 'jpg') ; % 读入待分类的遥感图像imshow(image) ; % 显示图像
r = image ( : , : ,1);
g= image ( : , : ,2);
b = image ( : , : ,3); % 将彩色图像降维成二维黑白图像
rr = im2double (r) ;
gg= im2double ( g) ;
bb = im2double (b) ; % 各黑白图像分别转换成双精度格式并灰度值归一化到[0 ,1]之间
net = newsom( [0 1; 0 1] ,[6 6] ) ; % SOM网络的竞争层为一个二维6×6 的平面阵列
plotsom(net.layers{1}.positions); % 观察神经元位置分布
t= [ ] ;
len1 = length (rr) ;
for i = 1 :len1
t= cat (2 ,t ,rr(i,:) ) ; % 将输入样本拷贝到另一空数组中
end % 建立自组织神经网络, 将图像样本数据rr 输入到网络中 用同样的方法对gg 和bb 进行处理。
net=init(net); % 网络初始化
net.trainParam.epochs = 500 ; % 网络训练次数为1000
net1 = train(net ,t) ; % 网络训练并调整权值
y = sim(net ,t) ; %网络仿真
w1_init= net.iw{1 ,1} ; %权值向量
color= w1_init*y ;
col= color * 255 ; %将分类后的像元重新排成一维矩阵
image1 = [ ] ;
for i = 0 :n1 - 1
image1 = [image1 ;col( (i * n2 + 1) : (i * n2) + n2)];
end %将一维像元向量生成n1 ×n2 的二维数据矩阵
imshow (image1 ,map) ; %显示分类后遥感图像