I. Source code

clear all; close all; clc; Image=imread('p_small.tif');
Image=Image(2:(size(Image,1)- 1),2:(size(Image,2)- 1), :); Ls_Image=Linear_stretch(Image,8); % linear grayscale stretching Im=double(Image)/255;
nums=size(Im,3); % number of bands % read sample snum=14; % number of samples cli_list=1:14; % Each sample corresponds to the initial classification numberfor i=1:snum
    eval(['sss{i}=double(imread(''s',num2str(i),'.tif'')); ']); % Sample file name: si.bmp, I =1.2.3..if size(sss{i},1) < =2 || size(sss{i},1) < =2
        error('The %d sample map is too small! ',i);
    end
    s{i}=sss{i}(2:(size(sss{i},1)- 1),2:(size(sss{i},2)- 1), :); Numcli =length(unique(cli_list)); % Initial category % When the class index is not a continuous natural number, change to from1Cli_sort =sort(unique(cli_list));for i=1:numcli ff=find(cli_list==cli_sort(i)); clilist(ff)=i; % end %ELM sample_s=[]; label=[];for i=1:snum
    for j1=1:size(s{i},1)
        for j2=1:size(s{i},2)
                temp_v=[];
                for k=1:nums
                    temp_v=[temp_v s{i}(j1,j2,k)];
                end
                sample_s=[sample_s; temp_v];
                label=[label; cli_list(i)];
        end
    end
end
sample_s=double(sparse(sample_s))/255; x=sample_s; % recode la_temp=label;for i=1:ceil(log(snum)/log(2))
    y(:,i)=mod(la_temp,2);
    la_temp=floor(la_temp/2);
end
y=sign(y0.5);
nump=size(y,1);
ELM=ELM_train(y,x,300); % Cmap=zeros(size(Im,1),size(Im,2));
for i=1:size(Im,2)
    Pclass=ELM_classify(reshape(Im(:,i,:),size(Im,1),nums),ELM);
    for j=1:1:ceil(log(snum)/log(2))
        la_temp=(sign(Pclass)+1) *0.5;
        Cmap(:,i)=Cmap(:,i)+la_temp(:,j)*2^(j- 1);
    end
end
Cmap(find(Cmap>snum))=snum;
Cmap(find(Cmap<1=))1; Image_cli=mat2gray(Cmap); Make a color chartfor i=1:numcli
    map(i,1)=i;
    map(i,2) =floor(abs(i0.5*numcli)*2);
    map(i,3)=numcli-i+1;
end
map=map./max(max(map)); Image_cli_c=grayslice(Image_cli,numcli); % category merge, the following after the initial classification is complete, given the parameter %1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 
clf_list=[1 1 2 2 2 2 3 3 4 5 5 5 6 6]; % Merge the initial classification criterion, and the final class criterion corresponding to each criterion (continuous natural number); numclf=length(unique(clf_list));for i=1:size(Cmap,1)
    for j=1:size(Cmap,2) Im_clf(i,j)=clf_list(Cmap(i,j)); % Final classification matrixend
end
fprintf('\n Final classification complete. ');
Image_clf=mat2gray(Im_clf);
for i=1:numclf
    mapf(i,1)=i;
    mapf(i,2) =floor(abs(i0.5*numclf)*2);
    mapf(i,3)=numclf-i+1;
end
mapf=mapf./max(max(mapf));
Image_clf_c=grayslice(Image_clf,numclf);
figure();
imshow(Image);
title('Original image to be classified');
figure();
imshow(Ls_Image)
title('Image to be classified (Linear stretch)');
figure();
imshow(Image_cli_c,map);
title('First Classification Result Chart');
figure();
imshow(Image_clf_c,mapf);
title('Final Classification Result Chart');
ill=ones(50.150);
illu=ill;
if(numclf>1)
for i=2:numclf
    illu=[illu;ill*i];
end
end
figure(a);
imshow(illu,mapf);
ylabel('6 5 4 3 2 1');
title('Various colors legend');
 
 
    
        
        
Copy the code

Second, operation results





Third, note

Version: 2014 a