开始介绍高光谱降维之前,我们首先回忆PCA的原理。
推荐B站UP:交通数据小旭学长 《用最直观的方式告诉你:什么是主成分分析PCA》
一、PCA原理
1.1 引入
假设手上有一组二维数据D,它们排列成了一条直线实则一维数据,此时我们如果能找到新的一维坐标系,这些点即可存储成一维数据。本文接下来所讲述的主成分分析方法(Principal Component Analysis, PCA)就是满足这种需求的降维方法。
所以,PCA最重要的就是找一个好的坐标系,使手上的数据最大程度地保留信息。
那什么样的坐标系算好的呢?答:数据在该坐标系上的投影越分散越好,也就是方差越大越好。
1.2 PCA步骤详解
第一步,去中心化 把坐标原点放在数据中心
第二步,找坐标系 找到方差最大的方向(核心问题)
第三步,求新的坐标点
第二步是最核心的步骤,怎么找到新坐标轴的方向呢?在这之前,先复习一下数据线性表换。
拉伸矩阵S 数据D SD表示对数据D进行拉伸
旋转矩阵R RD表示对数据D进行旋转
(左乘矩阵相当于对数据进行线性变换)
白数据是我们希望得到的各坐标轴不相关的,没有冗余的数据
我们手上的数据可以通过降维得到类似白数据的形式。
白数据D可以通过拉伸和旋转得到我们手上的数据D'=RSD
手上的数据也可以通过逆变换得到白数据
旋转矩阵R怎么求呢?答:协方差矩阵的特征向量
总结:
PCA缺点:离群点的影响大
二、高光谱图像降维
数据来源:
http://www.ehu.eus/ccwintco/index.php?title=Hyperspectral_Remote_Sensing_Scenes#Salinas_scene
Indian Pines: 该场景由AVIRIS (Airborne VisibleInfrared Imaging Spectrometer,机载可见光/红外成像光谱仪) 传感器在印第安纳州西北部的印第安松树试验场采集,由145×145像素和224个光谱反射带组成,波长范围为0.4–2.5μm。空间分辨率20m,谱分辨率10nm。该数据文件下包括Indian_pines_corrected.mat和Indian_pines_gt.mat文件。其中文件名中含有corrected的.mat文件为原始三维的遥感数据。剩下的一个.mat文件是遥感数据的lable标签,它是二维数据。
%% 数据读取
filename = ['Indian_pines\Indian_pines_corrected'];
X=load(filename);
A=X.indian_pines_corrected; %高光谱数据X是结构体,需要X.来进行调用;
%% 数据降维 reshape
[m,n,p]=size(A); %m行数 n列数 p波段数
t=m*n;
M=reshape(A,t,p);% M[样本数 波段数]
%% 主成分分析
[pc,score,latent,tsquare]=pca(M);%pc为主成分系数,score为主成分的结果,latent为方差
k=3;
feature_after_PCA=score(:,1:k);
RES=reshape(feature_after_PCA,m,n,k);