資源簡介
matblab平臺編寫的N-FINDR算法提取遙感衛星影像的純凈像元(端元)。
代碼片段和文件信息
//讀取影像為矩陣,188為波段數,47750為單波段像元數(長*寬)
x=rand(18847750);
[L?N]=size(x);
%正交投影算法壓縮數據
d=6;%壓縮至6個波段
y_m?=?mean(x2);
Corr?=?x*x‘/N;
Cov??=?Corr?-?y_m*y_m‘;
[US]?=?svds(Covd-1);?????????%?computes?the?a?(p-1)-orth?basis
Y_o?=?x?-?repmat(y_m[1?N]);???%?remove?mean
Yp?=??U‘?*?Y_o;???????????????%?project?the?zero-mean?data?onto?a?
???????????????????????????????%?(p-1)?subspace
%初始化端元矩陣
rand_index?=?randperm(N);
pp_indices?=?rand_index(1:d);
Yp?=?[ones(1N);?Yp];
%開始提取
m=250;n=191;P=188;
orignreshape=x‘;
xresh=Yp‘;
XDouble=?double(xresh);
tstart=cputime;
randpoints=rand(1d+1);
randpoints=randpoints*m*n;
randpointsindex=?uint32(randpoints);
EndmemberInOrign=zeros(d+11);
membervalues=zeros(dd+1);%dBandsd+1?Endmembers
detAA=zeros(d+1d+1);
detAA(1:)=1;
%?maxdet=0;
%?maxdetindex=1;
index=m*n;
for?i=1:d+1
????membervalues(:i)=?XDouble(?randpointsindex(i):);%初始化endmember矩陣,列向量
end
detAA(2:d+1:)=membervalues(1:d:);
for?i=1:d+1
????maxdet=0;
????maxdetindex=0;
????for?j=1:index?%固定后d個點在點集中尋找一個最優值,
????????use=1;
????????for?ii=1:i-1
????????????if?j==EndmemberInOrign(ii)
????????????????use=0;
??????
評論
共有 條評論