1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Matlab高光谱图像PCA降维[附代码]

Matlab高光谱图像PCA降维[附代码]

时间:2022-11-04 21:52:38

相关推荐

Matlab高光谱图像PCA降维[附代码]

开始介绍高光谱降维之前,我们首先回忆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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。