高光谱图像处理笔记——数据集信息读取

数据集信息读取

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);

       显示图像

高光谱图像处理笔记——数据集信息读取_第1张图片
高光谱图像处理笔记——数据集信息读取_第2张图片
高光谱图像处理笔记——数据集信息读取_第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');

     储存数据文件

你可能感兴趣的:(matlab,算法)