基于特征值阈值的端元数估计方法
基于特征值阈值的端元数估计方法
在高光谱图像分析中,端元数估计是一个关键步骤,它关系到后续处理的准确性和效率。本文介绍了一种基于特征值阈值的端元数估计方法,该方法通过噪声白化和特征值分析来确定高光谱数据中的端元数量。
高光谱图像的噪声白化
首先,我们考虑一个高光谱图像 \(\mathbf{X} \in \mathbb{R}^{M \times B}\),其中 \(M\) 是空间像素数,\(B\) 是谱带数。每个谱带可以表示为 \(\mathbf{X}\) 的一个列向量 \(\mathbf{x}_i\)。
噪声白化是预处理高光谱数据的第一步,目的是减少数据中的噪声,从而更容易识别出端元。为此,我们首先计算高光谱数据的协方差矩阵 \(\mathbf{C}_x\),其定义如下:
\[ \mathbf{C}_x = \operatorname{Cov}(\mathbf{X}) = \left[\begin{array}{ccc} \sigma\left(\mathbf{x}_{1}, \mathbf{x}_{1}\right) & \cdots & \sigma\left(\mathbf{x}_{1}, \mathbf{x}_{B}\right) \\ \vdots & \ddots & \vdots \\ \sigma\left(\mathbf{x}_{B}, \mathbf{x}_{1}\right) & \cdots & \sigma\left(\mathbf{x}_{B}, \mathbf{x}_{B}\right) \end{array}\right] \in \mathbb{R}^{B \times B} \]
其中,\(\sigma\left(\mathbf{x}_{m}, \mathbf{x}_{k}\right)\) 是两个向量 \(\mathbf{x}_m\) 和 \(\mathbf{x}_k\) 之间的协方差,计算公式为:
\[ \sigma\left(\mathbf{x}_{m}, \mathbf{x}_{k}\right) = \frac{1}{n-1} \sum_{i=1}^{n}\left(\mathbf{x}_{m i} - \bar{\mathbf{x}}_{m}\right)\left(\mathbf{x}_{k i} - \bar{\mathbf{x}}_{k}\right) \]
接下来,我们根据协方差矩阵 \(\mathbf{C}_x\) 计算噪声矩阵协方差 \(\mathbf{N}\):
\[ \mathbf{N} = \operatorname{diag}\left(\frac{1}{\operatorname{Getdiag}(\mathbf{C}_x^{-1})}\right) \in \mathbb{R}^{B \times B} \]
其中,\(\operatorname{Getdiag}(\cdot)\) 表示提取矩阵的对角线元素,\(\operatorname{diag}(\cdot)\) 表示将向量转换为对角矩阵。
有了噪声矩阵协方差 \(\mathbf{N}\),我们可以计算白化噪声矩阵 \(\mathbf{Y}\):
\[ \mathbf{Y} = \mathbf{X}\left(\left(\sqrt{\mathbf{N}}\right)^{-1}\right)^\top \]
特征值软阈值算法
白化后的噪声矩阵 \(\mathbf{Y}\) 用于端元数估计。我们首先计算 \(\mathbf{Y}\) 的自相关矩阵 \(\mathbf{C}_y\) 和自协方差矩阵 \(\mathbf{R}_y\):
\[ \mathbf{C}_y = \operatorname{Cov}(\mathbf{Y}) \in \mathbb{R}^{B \times B} \]
\[ \mathbf{R}_y = E\left(\mathbf{Y} \mathbf{Y}^{T}\right) \in \mathbb{R}^{B \times B} \]
其中,自相关矩阵 \(\mathbf{C}_y\) 的元素 \(\sigma\left(\mathbf{y}_{i}, \mathbf{y}_{j}\right)\) 和自协方差矩阵 \(\mathbf{R}_y\) 的元素 \(\rho(\mathbf{y}_i, \mathbf{y}_j)\) 定义如下:
\[ \rho(\mathbf{y}_i, \mathbf{y}_j) = \operatorname{corr}(\mathbf{y}_i, \mathbf{y}_j) = \frac{\operatorname{cov}(\mathbf{y}_i, \mathbf{y}_j)}{\sigma_Y \sigma_Y} \]
接下来,我们分别计算这两个矩阵的特征值:
\[ \mathbf{\Sigma}_C = \operatorname{eig}(\mathbf{C}_y) \]
\[ \mathbf{\Sigma}_R = \operatorname{eig}(\mathbf{R}_y) \]
特征值矩阵 \(\mathbf{\Sigma}_C\) 和 \(\mathbf{\Sigma}_R\) 包含了自相关矩阵和自协方差矩阵的特征值。我们通过这两个矩阵计算特征值之间的方差 \(\mathbf{D}\):
\[ \mathbf{D} = \mathbf{\Sigma}_R - \mathbf{\Sigma}_C \]
然后,我们估计噪声方差 \(\mathbf{V}\):
\[ \mathbf{V} = \frac{2}{M}\left(\mathbf{\Sigma}_R^2 + \mathbf{\Sigma}_C^2\right) \]
最后,我们根据噪声方差 \(\mathbf{V}\) 计算特征值阈值门限 \(\operatorname{gate}\):
\[ \operatorname{gate} = \sqrt{2 \times \mathbf{V}} \]
利用特征值阈值算法,我们可以得到估计的端元数 \(I\):
\[ I = \sum_{i = 1}^B (\mathbf{D}_{ii} > \operatorname{gate}) \]