clsAll 所有类的光谱信息
posAll 所有类的位置信息
label 所有分类标记
imGIS GIS数据
im 剔除水蒸气波段后的数据集
im1 = multibandread('92AV3C.lan',[145,145,bandnum],'uint16',128,'BIL','ieee-le');
读取数据集中数据
im1 (:,:,220) = []; %剔除水蒸气波段
im1(:,:,150:163) = []; %剔除水蒸气波段
im1(:,:,104:108) = []; %剔除水蒸气波段
imGIS = multibandread('92AV3GT.GIS',[145,145,1],'uint8',128,'BSQ','ieee-le');
读取GIS类别标记矩阵
figure;
imshow(imGIS);
figure;
imshow(label2rgb(imGIS));
img1=im(:,:,20)/max(max(max(im)));
img2=im(:,:,80)/max(max(max(im)));
img3=im(:,:,170)/max(max(max(im)));
figure;
imshow((img1+img2+img3)/3);
显示图像
clsNum = 16; %16类数据
clsAll = [];
posAll = [];
for i = 1 : clsNum %统计各类元素数目
[x,y] = find (imGIS == i);
Class_num(i) = size(x,1);
end
此代码块仅计数
choose_index = 1:1:16;
for i = 1 : size(choose_index,2) %遍历每一类标记
[x,y] = find (imGIS == choose_index(i));
Class_num1(i) = size(x,1);
pos{
i} = [x,y]'; %各类的位置信息 (行列信息经过转置)
%本来是左边为行,右边为列
%转置后第一行为行,第二行为列
for j=1:length(pos{
i})
cls{
i}(:,j) = im(x(j),y(j),:); %各类的光谱信息
end
clsAll = [clsAll cls{
i}]; %所有类的光谱信息
posAll = [posAll pos{
i}]; %所有类的位置信息
end
储存位置信息
label = [];
for i = 1 : size(choose_index,2)
label = [label, repmat(i,[1, Class_num1(i)])];
end
储存Label信息(一个Label一列)
save('data.mat', 'clsAll', 'posAll', 'label', 'imGIS','im' ,'-v7.3');
储存数据文件