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);

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的小伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值