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

Matlab高光谱图像PCA降维[附代码]相关推荐

  1. 高光谱图像pca降维_高光谱图像的数据特性之探讨

    图像是获取信息以及探知世界的重要媒介.近年来,传感科技与成像技术实现了跨越式发展,促使图像获取在质与量上均获得了显著提升.在多样化成像手段中,光谱成像技术是成像科技的重要组成部分,是人类借助光这一能量 ...

  2. MATLAB坐标系变换动画gif(附代码):坐标系旋转动画+坐标系平移动画代码

    MATLAB坐标系变换动画gif(附代码) 以之前的文章中的例题为例,绘制一个向量和一个运动坐标系在空间中的变换过程,并生成gif动画. 已知坐标系{B}的初始位姿与{A}重合,首先{B}相对于{A} ...

  3. MATLAB高光谱图像构建KNN图

    在高光谱图像的特征提取过程中,采用非线性降维的方式对高光谱图像降维的过程中,采用图自编码器来对数据进行降维,需要将利用高光谱图像的结构信息和内容信息,则需要将高光谱图像数据构造为一个图结构,图结构的构 ...

  4. MATLAB实战系列(一)-二维路径规划算法续集-图像边缘提取(附代码)

    用MATLAB实现的图像边缘提取的代码: clear;clc;I=imread('lena.bmp'); I=rgb2gray(I); imshow(I,[]); title('Original Im ...

  5. 基于python的pca实现(附代码)

    前段时间根据项目需要,了解了PCA的降维方法,现将自己的心得与代码记录下来. 本文主要从python代码的实现入手,对理论知识剖析较少. PCA,即为主成分分析法,旨在通过纯数理的方式将多个特征维度降 ...

  6. 写一个基于MATLAB的图像均值滤波去噪代码

    首先,需要载入图像.在 MATLAB 中,可以使用函数 imread 来载入图像.例如: I = imread('image.jpg'); 然后,可以使用函数 imfilter 来对图像进行均值滤波. ...

  7. 2022年 change detection遥感图像变化检测 论文附代码

    1.Remote Sensing Change Detection using Denoising Diffusion Probabilistic Models 论文 代码 22-6 动机: 可用于训 ...

  8. PCA降维算法总结以及matlab实现PCA(个人的一点理解)

    转载请声明出处.by watkins song 鉴于本文比较混乱, 所以写了一个新的PCA的详细介绍, 请参见: http://blog.csdn.net/watkinsong/article/det ...

  9. MATLAB处理高光谱图像数据

    以下内容主要包括四个方面: (1)显示第2到5条光谱反射率和波长的关系(折线图): (2)显示前四条叶绿素值的条形图 (3)显示叶绿素与各个波段的相关性折线图 (4)计算植被指数NDVI与叶绿素对应的 ...

最新文章

  1. VMWARE错误-“VirtualInfrastructure.Utils.ClientsXml“的类型初始值设定项引发异常
  2. 如何快速上手 AB Testing ?阿里技术专家秘方公开
  3. mysql 自动热备份_mysql(mariadb)定时自动热备份+增量+远程备份脚本
  4. jdbc连接mysql传参_将参数传递给JDBC PreparedStatement
  5. 【ArcGIS Pro微课1000例】0011:ArcGIS Pro范围内汇总工具的巧妙使用——以甘肃省各地区内河流总长度计算为例
  6. 什么是javax.ws.rs.core.context? [第4部分]
  7. openjdk:8u22-jre-alpine在java开发中的NullPointerException错误解决方案
  8. H3C SecPath F100-C 防火墙默认配置
  9. 《迎向开阔的人生》——刘墉
  10. Chrome扩展程序开发文档(中文译文)
  11. 单片机(ISIS 7 Professional):简易LED警报灯代码项目
  12. 2018年迎春杯复赛入围名单(三年级)
  13. 论文笔记:Deep Object Co-Segmentation(ACCV2018)
  14. oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复
  15. 北邮研究生《计算机网络原理》课程期末通过经验
  16. 企业微信管理系统分析
  17. python处理行列分明的txt文件
  18. MSP430学习笔记-定时器A
  19. 服务器维护稀有宝宝,完美国际的中的稀有宝宝
  20. 【大数据】InfluxDB的常用查询及常用函数

热门文章

  1. python项目一:外星人入侵:(一)武装飞船
  2. 程序员职场进阶 32 讲
  3. 深度解读 | 从Gartner SIEM魔力象限报告看安全运营的门道
  4. 马勒戈壁的.net mvc webapi中的ajax 、post与 frombody
  5. python 计算图像结构张量(Structure_tensor)
  6. 在nginx日志的access log中记录post请求的参数值
  7. rust进水器怎么用_易水香教你如何正确使用家用净水器
  8. anki公司即将出品Vector家庭机器人(正在预售)
  9. 【时序】N-BEATS:用于可解释时间序列预测的神经基础扩展分析
  10. ChatGPT进化了,全新GPT-4发布,识图做网页,阅万行代码改BUG都不在话下,实在太强!...