資源簡介
8波段的遙感影像,其中包含建筑物、道路、植被、 水四種地物類型,現已從四種類型中分別選取了訓練樣本若干,分別存儲在building.xls、road.xls、vegetation.xls和water.xls四個文件中,unknow.xls文件中存儲了待分類像素在8個波段上的灰度值以及這些像素的真實地物類型,要求利用最大似然法對unknow.xls中的像素進行分類,并利用unknow.xls文件中最后一列的類別信息對分類結果進行精度評價。已求出總體精度、用戶精度、制圖精度、Kappa系數。內附數據以及結果文件。 需要更改讀取文件的路徑為自己的路徑。matlab完美運行

代碼片段和文件信息
function?class=supervised_classification(~)
[U]=xlsread(‘D:\朝花夕拾\淡\遙感原理與應用\分類——實驗\road\unknown.xlsx‘);%感興趣區數據
u=U(:1:8);%感興趣區8個波段的灰度值
[munu]=size(u);
A=xlsread(‘D:\朝花夕拾\淡\遙感原理與應用\分類——實驗\road\building.xls‘);???%建筑物
B=xlsread(‘D:\朝花夕拾\淡\遙感原理與應用\分類——實驗\road\road.xls‘);???????%道路
C=xlsread(‘D:\朝花夕拾\淡\遙感原理與應用\分類——實驗\road\vegetation.xls‘);?%植被
D=xlsread(‘D:\朝花夕拾\淡\遙感原理與應用\分類——實驗\road\water.xls‘);??????%水
MA=mean(A);MB=mean(B);MC=mean(C);MD=mean(D);%均值
EA=cov(A);?EB=cov(B);?EC=cov(C);?ED=cov(D);?%協方差
[mana]=size(A);[mbnb]=size(B);[mcnc]=size(C);[mdnd]=size(D);
PA=ma/(ma+mb+mc+md);
PB=mb/(ma+mb+mc+md);
PC=mc/(ma+mb+mc+md);
PD=md/(ma+mb+mc+md);
%判別
for?i=1:mu
????%選擇UNKONW?的第i個向量X
????%計算Da?Db?Dc?Dd
????X=u(i1:8);
?????
????Da=-0.5*((X-MA)*inv(EA)*(X-MA)‘)-0.5*log(det(EA))+log(PA);
????Db=-0.5*(X-MB)*inv(EB)*(X-MB)‘-0.5*log(det(EB))+log(PB);
????Dc=-0.5*(X-MC)*inv(EC)*(X-MC)‘-0.5*log(det(EC))+log(PC);?
????Dd=-0.5*(X-MD)*inv(ED)*(X-MD)‘-0.5*log(det(ED))+log(PD);
????D=[Da?Db?Dc?Dd];
????[xy]=max(D);
????class_now(i1)=y;
???
end
uo=U(:9);
%c=0
%for?i=1:mu
????%if(uo(i1)==class_now(i1))
???????%?c=c+1;
????%end
%end
class=class_now;
[fnamefilepath]=uiputfile(‘*.txt‘‘分類結果另存為‘);
fid=fopen(strcat(filepathfname)‘wt‘);
fprintf(fid‘分類結果:\n‘);
for?j=1:mu
????fprintf(fid‘%d\n‘class(j1));
????
end
%精度
XX=confusionmat(uo‘class‘);%混淆矩陣
disp(XX);
disp(XX(44));
sp=0;
XKS=0;
for?i=1:4
????pu(i)=XX(ii)/(XX(i1)+XX(i2)+XX(i3)+XX(i4));%用戶精度
????sp=XX(ii)+sp;
????pA(i)=XX(ii)/(XX(1i)+XX(2i)+XX(3i)+XX(4i));%制圖精度
????XKS=XKS+(XX(i1)+XX(i2)+XX(i3)+XX(i4))*(XX(1i)+XX(2i)+XX(3i)+XX(4i));%kappa系數
end
p=sp/mu;%總體精度
Kappa=(mu*sp-XKS)/(mu^2-XKS);
fprintf(fid‘總體精度:\n‘);
fprintf(fid‘%f\n‘p);
fprintf(fid‘用戶精度:\n‘);
fprintf(fid‘%f\n‘pu);
fprintf(fid‘制圖精度:\n‘);
fprintf(fid‘%f\n‘pA);
fprintf(fid‘Kappa系數:\n‘);
fprintf(fid‘%f\n‘Kappa);
fclose(fid);
disp(p);
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-25?10:19??road\
?????文件??????254976??2018-05-25?10:07??road\building.xls
?????文件??????218112??2018-05-25?10:07??road\road.xls
?????文件???????50417??2018-05-25?10:07??road\unknown.xlsx
?????文件??????226816??2018-05-25?10:07??road\vegetation.xls
?????文件??????253952??2018-05-25?10:07??road\water.xls
?????文件?????????165??2018-05-25?10:19??road\~$unknown.xlsx
?????文件????????2161??2018-06-01?12:28??supervised_classification.m
?????文件????????2618??2018-06-01?12:31??監督分類結果.txt
?????文件???????12185??2018-05-31?22:21??說明.docx
- 上一篇:卡爾曼濾波MATLAB代碼
- 下一篇:Harris角點檢測matlab實現
評論
共有 條評論