ENVI图像处理(4):主分量变换(主成分分析、PCA)

PCA

PCA主成分分析

特征变换的目的在于使地物集中在几个主要的波谱段上,在保证信息容量最大化的前提下压缩参与分类的数据量,以提高分类速度。

此处主要介绍主分量变换,也叫做主成分分析(Principal component analysis,PCA)

基本概念

首先来介绍一些基本概念

协方差矩阵

方差:针对一维集合,反映了其离散程度。是协方差的一种特殊情况

ENVI图像处理(4):主分量变换(主成分分析、PCA)
协方差矩阵:针对二维集合时,反映的是两个维度之间的相关性,正相关或负相关或无关
ENVI图像处理(4):主分量变换(主成分分析、PCA)
针对三维样本集合时,求出的是各个维度总体的相关性,针对各维度之间的关系,所以二维以上计算协方差,用的就是协方差矩阵

; 特征值和特征向量

特征值和特征向量:由协方差矩阵的特征值和特征向量

PCA思想

在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴和第一个坐标轴正交且具有最大方差的方向。该特征一直重复,重复次数为原始数据中特征的数目,我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行了降维处理

方差最大:在此方向上所含的有关原始信息样品间的差异信息是最多的

优缺点

优点:降低数据的复杂性,识别最重要的多个特征

缺点:不一定需要,且可能损失有用信息

PCA基本步骤

PCA算法的基本步骤:

  • 去中心化:让所有的点都到坐标原点附件的位置,即每一位特征减去各自的平均值
  • 计算协方差矩阵X
  • 计算协方差矩阵的特征值和特征向量。特征值表示的是两个特征之间的相关性
  • 对特征值进行排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。
  • 将数据转换到k个特征向量构建的新空间中,即Y=PX。对数据进行旋转使得符合最大方差

PCA-code(python)

来看看相关的python代码(C++用opencv可能好一点,直接用数组太难受了)

def pac(data_mat, N):

    mean_val = mean(data_mat)
    mean_removed = data_mat - mean_val

    cov_mat = cov(mean_removed, rowvar=0)

    eig_val, eig_vector = linalg.eig(mat(cov_mat))

    eig_val_ind = argsort(eig_val)
    eig_val_ind = eig_val_ind[: -(N+1): -1]

    red_eig_val = eig_vector[, :eig_val_ind]

    low_data_mat = mean_removed * red_eig_val
    return low_data_mat

ENVI的PCA操作

toolbox中搜索PCA

ENVI图像处理(4):主分量变换(主成分分析、PCA)
ENVI图像处理(4):主分量变换(主成分分析、PCA)
对生成的主分量图像进行比较,大部分信息均已经集中到前面的几个分量图像,后面的分量图像基本上都是噪声。实际应用时,可以舍掉后面的几个分量图像,从而达到减少数据量的目的。
ENVI图像处理(4):主分量变换(主成分分析、PCA)

Original: https://blog.csdn.net/qq_48322523/article/details/116903937
Author: 二芒星
Title: ENVI图像处理(4):主分量变换(主成分分析、PCA)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645651/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球