👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🌈3 Matlab代码实现
🎉4 参考文献
💥1 概述
高光谱解混是一种在高光谱数据中的所有像素处近似纯类型的光谱特征及其相应组合比例的技术。高光谱解混是理解、研究和可视化高光谱图像的一项值得注意的任务。在这项任务中,提取纯光谱特征非常具有挑战性。该文提出一种利用凸几何和k均值概念进行端部提取的新方法。大多数现有的端部提取技术仅使用凸几何形状。将 K 均值与凸几何一起使用可提高提取过程的准确性。使用模拟和真实数据集将所提出的算法与其他最先进的算法进行比较。通过仿真结果可以看出,所提算法优于其他现有算法。
📚2 运行结果
部分代码:
%% CG-kmeans algorithm
[endmemberindex] = CGkmeans(Y,VD);
endmemberindex_CGKMEANS=change_index(endmemberindex,p,q);
%% VCA algorithm
[U_VCA,e_index,snrEstimate]=hyperVca(Y,VD);
endmemberindex_VCA=change_index(e_index,p,q);
%% GT
t1=load('groundTruth_Cuprite_nEnd12.mat');
gt=t1.M;
tit=t1.cood;
n1=gt(3:103,:);
n2=gt(114:147,:);
n3=gt(168:220,:);
gt=[n1;n2;n3];
[gt_m,gt_n]=size(gt);
%% Total Spectral Angle Mapper (TSAM) calculations
for i=1:gt_n
for j=1:Bands
extracted_CGKMEANS(j,i)=xp(endmemberindex_CGKMEANS(i,1),endmemberindex_CGKMEANS(i,2),j);
extracted_VCA(j,i)=xp(endmemberindex_VCA(i,1),endmemberindex_VCA(i,2),j);
end
end
[ex_m,ex_n]=size(extracted_VCA);
store_CGKMEANS=[0,0];
store_VCA=[0,0];
sam_VCA=0;
sam_CGKMEANS=0;
sam_total_CGKMEANS=0;
sam_total_VCA=0;
for i=1:gt_n
for j=1:ex_n
Mat_SAM_VCA(i,j)=real(acos(dot(gt(:,i),extracted_VCA(:,j))/(norm(gt(:,i)*norm(extracted_VCA(:,j))))));
Mat_SAM_CGKMEANS(i,j)=real(acos(dot(gt(:,i),extracted_CGKMEANS(:,j))/(norm(gt(:,i)*norm(extracted_CGKMEANS(:,j))))));
end
end
for i=1:gt_n
%VCA
[max_value1,mrow]=min(Mat_SAM_VCA);
[max_value,col_VCA]=min(max_value1);
sam_total_VCA=sam_total_VCA+max_value;
sam_VCA=[sam_VCA;max_value];
row_VCA=mrow(col_VCA);
s1=[row_VCA,col_VCA];
store_VCA=[store_VCA;s1];
save_VCA(row_VCA)=max_value;
Mat_SAM_VCA(row_VCA,:)=[100*ones];
Mat_SAM_VCA(:,col_VCA)=[100*ones];
%CGKMEANS
[max_value1,mrow]=min(Mat_SAM_CGKMEANS);
[max_value,col_CGKMEANS]=min(max_value1);
sam_total_CGKMEANS=sam_total_CGKMEANS+max_value;
sam_CGKMEANS=[sam_CGKMEANS;max_value];
row_CGKMEANS=mrow(col_CGKMEANS);
s1=[row_CGKMEANS,col_CGKMEANS];
store_CGKMEANS=[store_CGKMEANS;s1];
save_CGKMEANS(row_CGKMEANS)=max_value;
Mat_SAM_CGKMEANS(row_CGKMEANS,:)=[100*ones];
Mat_SAM_CGKMEANS(:,col_CGKMEANS)=[100*ones];
end
rms_sae=[rms(save_CGKMEANS);
rms(save_VCA)];
rms_sae = radtodeg(rms_sae);
disp('RMSSAE of VCA');
disp(rms_sae(2));
disp('RMSSAE of CGKMEANS');
disp(rms_sae(1));
🌈3 Matlab代码实现
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Dharambhai Shah, Tanish Zaveri, Rutvik Dixit (2020) Hyperspectral Endmember Extraction Algorithm Using Convex Geometry and K-Means