【影象分類】基於matlab極限學習分類器對遙感影象分類【含Matlab原始碼 150期】
一、原始碼
```c 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);%線性灰度拉伸 Im=double(Image)/255; nums=size(Im,3);%波段數 %讀入樣本 snum=14;%樣本數 cli_list=1:14;%各樣本對應初分類別號 for i=1:snum eval(['sss{i}=double(imread(''s',num2str(i),'.tif''));']);%樣本檔名:si.bmp,i=1,2,3... if size(sss{i},1)<=2 || size(sss{i},1)<=2 error('第%d個樣本圖太小!',i); end s{i}=sss{i}(2:(size(sss{i},1)-1),2:(size(sss{i},2)-1),:); end %初分類別各引數計算 numcli=length(unique(cli_list));%初分類別數 %當類標不是連續自然數時,修改為從1開始的連續自然數編號 cli_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; %重新編碼 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(y-0.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); %製作配色表 for i=1:numcli map(i,1)=i; map(i,2)=floor(abs(i-0.5numcli)2); map(i,3)=numcli-i+1; end map=map./max(max(map)); Image_cli_c=grayslice(Image_cli,numcli); %類別合併,以下內容在初次分類完成後,給定引數 %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];%對初分類標進行合併,各類標對應的最終類標(連續自然數); 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));%最終分類矩陣 end end fprintf('\n最終分類完成。'); Image_clf=mat2gray(Im_clf); for i=1:numclf mapf(i,1)=i; mapf(i,2)=floor(abs(i-0.5numclf)2); mapf(i,3)=numclf-i+1; end mapf=mapf./max(max(mapf)); Image_clf_c=grayslice(Image_clf,numclf); figure(); imshow(Image); title('待分類原始影象'); figure(); imshow(Ls_Image) title('待分類影象(線性拉伸)'); figure(); imshow(Image_cli_c,map); title('初次分類結果圖'); figure(); imshow(Image_clf_c,mapf); title('最終分類結果圖'); ill=ones(50,150); illu=ill; if(numclf>1) for i=2:numclf illu=[illu;ill*i]; end end figure(); imshow(illu,mapf); ylabel(' 6 5 4 3 2 1'); title('各類顏色圖例');
```
二、執行結果
\
\
三、備註
版本:2014a
- 【路徑規劃】基於matlab GUI改進的DWA演算法機器人靜態避障路徑規劃【含Matlab原始碼 678期】
- 【目標檢測】基於matlab GUI差分法運動目標檢測【含Matlab原始碼 1284期】
- 【交通預測】基於matlab GUI交通預測四階段法交通分配【含Matlab原始碼 1140期】
- 【路徑規劃】基於matalb遺傳演算法機器人柵格地圖路徑規劃【含Matlab原始碼 022期】
- 【路徑規劃】基於matlab改進的人工勢場演算法機器人避障路徑規劃【含Matlab原始碼 1151期】
- 【飛行器】基於matlab多源資訊融合演算法多旋翼無人機組合導航系統【含Matlab原始碼 1267期】
- 【無人機】基於matlab無人機追蹤軌跡【含Matlab原始碼 1152期】
- 【影象加密】基於matlab混沌演算法影象加密解密【含Matlab原始碼 1218期】
- 【影象檢測】基於matlab GUI比值 歸一化 相關係數遙感影象【含Matlab原始碼 737期】
- 【影象加密】基於matlab混沌系統圖像加密【含Matlab原始碼 1190期】
- 【影象分類】基於matlab極限學習分類器對遙感影象分類【含Matlab原始碼 150期】
- 【影象增強】基於matlab GUI暗通道影象去霧【含Matlab原始碼 740期】
- 【優化求解】基於matlab差分進化演算法求解函式極值問題【含Matlab原始碼 1199期】
- 【身份證識別】基於matlab GUI身份證號碼識別【含Matlab原始碼 014期】
- 【三維路徑規劃】基於matlab RRT演算法無人機路徑規劃【含Matlab原始碼 155期】
- 【優化求解】基於matlab GUI模擬退火演算法求解全域性最大值最小值問題【含Matlab原始碼 1242期】
- 【優化充電】基於matlab蒙特卡洛演算法求解電動汽車充電優化問題【含Matlab原始碼 1164期】
- 【定位問題】基於matlab GUI SLAM模擬地圖構建和定位【含Matlab原始碼 1120期】
- 【水果識別分類】基於matlab形態學水果識別分類【含Matlab原始碼 1132期】
- 【數學建模】基於matlab UKF腳踏車狀態估計【含Matlab原始碼 1111期】