LRTA:Denoising and Dimensionality Reduction Using Multilinear Tools for Hyperspectral Images
引言
高维数据空间大多是空的,表明所涉及的数据结构主要存在于子空间中。最流行的降维方法是主成分分析,它通过正交投影最大化数据方差。PCAdr的一个改进是独立成分分析(ICA),它使用更高阶的统计量。但是,这两种降维方法需要初步的数据安排。事实上,在处理三向数据时,第一步是对所有图像进行矢量化,生成双向数据,允许使用信号处理,但忽略空间重排。
最大噪声分数,维纳和小波阈值,以及收缩都是有用的去噪技术。通常,混合方案包括通过主成分分析、傅立叶或离散余弦变换对每个去相关波段进行二维滤波的波段去相关。
我们的多线性代数方法同时降低了光谱维数,并以各种方式联合去噪。基于Tucker3分解,我们展示了低秩- ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)张量近似 [LRTA- ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)]作为去噪工具的能力。我们提出了一种新的方法,称为LRTA d r _{dr} dr- ( K 1 , K 2 , D 3 ) (K_1,K_2,D_3) (K1,K2,D3),它既执行空间低秩近似又执行光谱降维。
多向表示与性质
考虑三阶张量 X ∈ R I 1 × I 2 × I 3 \mathcal{X}\in\mathbb{R}^{I_1\times I_2\times I_3} X∈RI1×I2×I3,元素为 x i 1 i 2 i 3 x_{i_1i_2i_3} xi1i2i3,其中 i 1 = 1 , ⋯ , I 1 i_1=1,\cdots,I_1 i1=1,⋯,I1,以此类推, R \mathbb{R} R为实流形,每个索引(index)称为way或mode,n模向量为 I n I_n In维,由张量通过改变指标 i n i_n in而保持其他指标不变得到。 X \mathcal{X} X的n模展平矩阵 X n \mathbf{X}_n Xn的列均为n模向量。HSI数据可以表示为一个三维数组或三阶张量:行和列的两个方向和光谱波段的一个方向。
X ∈ R I 1 × I 2 × I 3 \mathcal{X}\in\mathbb{R}^{I_1\times I_2\times I_3} X∈RI1×I2×I3的n模秩定义为 R a n k n ( X ) Rank_n(\mathcal{X}) Rankn(X),即 I n I_n In维向量(n模向量)张成的向量空间的维度, X \mathcal{X} X称为一个rank- ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)张量如果 R a n k n ( X ) = K n Rank_n(\mathcal{X})=K_n Rankn(X)=Kn.
去噪工具:LRTA- ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)
根据Tucker3模型,任何三维数据
X
∈
R
I
1
×
I
2
×
I
3
\mathcal{X}\in\mathbb{R}^{I_1\times I_2\times I_3}
X∈RI1×I2×I3可分解为
X
=
C
×
1
U
(
1
)
×
2
U
(
2
)
×
3
U
(
3
)
\mathcal{X}=\mathcal{C} \times_{1} \mathbf{U}^{(1)} \times_{2} \mathbf{U}^{(2)} \times_{3} \mathbf{U}^{(3)}
X=C×1U(1)×2U(2)×3U(3)
其中 U ( n ) \mathbf{U}^{(n)} U(n)为正交n-模矩阵,包含与展平矩阵 X n \mathbf{X}_n Xn的 K n K_n Kn个最大特征值相关的 K n K_n Kn个特征向量, C ∈ R I 1 × I 2 × I 3 \mathcal{C}\in\mathbb{R}^{I_1\times I_2\times I_3} C∈RI1×I2×I3为core张量,类似于传统矩阵奇异值分解中的对角奇异值矩阵, × n \times_{n} ×n为n-模积。
给定一个实值三维数据
X
∈
R
I
1
×
I
2
×
I
3
\mathcal{X}\in\mathbb{R}^{I_1\times I_2\times I_3}
X∈RI1×I2×I3,LRTA-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)的目的是寻找更低秩–
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)多向数据
X
^
\hat{\mathcal{X}}
X^,
K
n
<
I
n
K_n<I_n
Kn<In,
n
=
1
,
2
,
3
n=1,2,3
n=1,2,3,最小化quadratic Frobenius范数:
∥
X
−
X
^
∥
F
2
\Vert \mathcal{X}-\hat{\mathcal{X}}\Vert_F^2
∥X−X^∥F2.
X
\mathcal{X}
X的最佳更低秩-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)多向近似表述为
X
^
=
X
×
1
P
(
1
)
×
2
P
(
2
)
×
3
P
(
3
)
\widehat{\mathcal{X}}=\mathcal{X} \times_{1} \mathbf{P}^{(1)} \times_{2} \mathbf{P}^{(2)} \times_{3} \mathbf{P}^{(3)}
X
=X×1P(1)×2P(2)×3P(3)
其中 P ( n ) = U ( n ) U ( n ) T \mathbf{P}^{(n)}=\mathbf{U}^{(n)}{\mathbf{U}^{(n)}}^T P(n)=U(n)U(n)T, P ( n ) \mathbf{P}^{(n)} P(n)是经过交替最小二乘(ALS)算法收敛后得到的,由于这个过程,沿着给定模式的任何projector都依赖于沿着所有其他模式的projector.
加性噪声也可以表示为一个三向数组 N \mathcal{N} N,因此观测的HSI数据可以表示为 R = X + N \mathcal{R}=\mathcal{X}+\mathcal{N} R=X+N, R , X , N ∈ R I 1 × I 2 × I 3 \mathcal{R},\mathcal{X},\mathcal{N}\in\mathbb{R}^{I_1\times I_2\times I_3} R,X,N∈RI1×I2×I3,我们使用基于子空间的方法估计张量 X \mathcal{X} X. 在二维信号处理中,这些方法使用由与观测向量组的协方差矩阵的最大特征值相关联的特征向量所跨越的信号子空间。同样,当噪声 N \mathcal{N} N与信号张量 X \mathcal{X} X不相关时,通过假设不管n-模是什么, E ( n ) E^{(n)} E(n)是维数为 K n K_n Kn的信号子空间 E s s ( n ) E^{(n)}_{ss} Ess(n)和维数为 I n − K n I_n-K_n In−Kn的噪声正交子空间 E n s ( n ) E^{(n)}_{ns} Ens(n)的直接(direct)和,经典的子空间方法可以扩展到多向数据。
在张量公式中,通过计算LRTA-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)来确定n-模向量空间上的投影。从含噪张量
R
\mathcal{R}
R中估计信号张量
X
\mathcal{X}
X的一个方法是在
R
\mathcal{R}
R的每个n-模中估计
E
s
s
(
n
)
E^{(n)}_{ss}
Ess(n),并将
R
\mathcal{R}
R的每个n-模向量正交投影到n-模信号子空间
E
s
s
(
n
)
E^{(n)}_{ss}
Ess(n)上,
n
=
1
,
2
,
3
n=1,2,3
n=1,2,3. LRTA-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)允许对于每一个n-模,只保留与n-模展平矩阵
R
n
\mathbf{R}^n
Rn的
K
n
K_n
Kn个最大特征值相关的
K
n
K_n
Kn个特征向量。这个声明可以写成
X
^
=
R
×
1
P
(
1
)
×
2
P
(
2
)
×
3
P
(
3
)
\widehat{\mathcal{X}}=\mathcal{R} \times_{1} \mathbf{P}^{(1)} \times_{2} \mathbf{P}^{(2)} \times_{3} \mathbf{P}^{(3)}
X
=R×1P(1)×2P(2)×3P(3)
其中 P ( n ) = U ( n ) U ( n ) T \mathbf{P}^{(n)}=\mathbf{U}^{(n)}{\mathbf{U}^{(n)}}^T P(n)=U(n)U(n)T, U ( n ) = [ u 1 , ⋯ , u K n ] \mathbf{U}^{(n)}=[\mathbf{u}_1,\cdots,\mathbf{u}_{K_n}] U(n)=[u1,⋯,uKn]为n-模信号子空间上的投影。为了估计信号子空间维数 K n K_n Kn,扩展了著名的的Akaike信息准则(AIC)。这种多向数据分析的主要问题是利用ALS算法联合空间和光谱信息去除噪声。
降维工具:LRTA d r _{dr} dr- ( K 1 , K 2 , D 3 ) (K_1,K_2,D_3) (K1,K2,D3)
我们有兴趣通过选择更重要的光谱特征来减少光谱波段的数量,以改进分类。
I
3
I_3
I3张大小为
I
1
×
I
2
I_1\times I_2
I1×I2的图像,通过行连接(concatenation),每个图像被转换成一个向量。数据张量
R
∈
R
I
1
×
I
2
×
I
3
\mathcal{R}\in\mathbb{R}^{I_1\times I_2\times I_3}
R∈RI1×I2×I3变为矩阵
R
∈
R
I
3
×
p
\mathbf{R}\in\mathbb{R}^{I_3\times p}
R∈RI3×p,其中
p
=
I
1
×
I
2
p=I_1\times I_2
p=I1×I2. 降维的目的是提取少量
D
3
<
I
3
D_3<I_3
D3<I3的特征,称为PCs,因此,
D
3
D_3
D3PCs生成一个reducing矩阵
Z
∈
R
D
3
×
p
\mathbf{Z}\in\mathbb{R}^{D_3\times p}
Z∈RD3×p
Z
=
R
×
Λ
−
1
/
2
U
T
\mathbf{Z}=\mathbf{R} \times \Lambda^{-1 / 2} \mathbf{U}^{\mathrm{T}}
Z=R×Λ−1/2UT
数据可以被重新reshaped为一个三向数组
Z
∈
R
I
1
×
I
2
×
D
3
\mathcal{Z}\in\mathbb{R}^{I_1\times I_2\times D_3}
Z∈RI1×I2×D3. 先前获得的矩阵
R
\mathbf{R}
R等价于
R
\mathcal{R}
R的三模展平矩阵,记为
R
3
\mathbf{R}_3
R3. 然后,上式可以写为
Z
=
R
×
3
Λ
−
1
/
2
U
(
3
)
T
\mathcal{Z}=\mathcal{R} \times_{3} \mathbf{\Lambda}^{-1 / 2} \mathbf{U}^{(3)^{\mathrm{T}}}
Z=R×3Λ−1/2U(3)T
同样的,我们可以把LRTA-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)变成光谱DR工具,称为LRTA
d
r
_{dr}
dr-
(
K
1
,
K
2
,
D
3
)
(K_1,K_2,D_3)
(K1,K2,D3),其中
D
3
D_3
D3代表光谱PCs的数量。由于LRTA
d
r
_{dr}
dr-
(
K
1
,
K
2
,
D
3
)
(K_1,K_2,D_3)
(K1,K2,D3)是联合降低光谱模式的维数并将信息沿着空间模式投影到较低的
(
K
1
,
K
2
)
(K_1,K_2)
(K1,K2)-维的子空间上,所以执行该挑战。后一种处理允许对数据进行压缩和空间去噪。对于每种模式,可以保留不同的参数值
(
K
1
,
K
2
,
D
3
)
(K_1,K_2,D_3)
(K1,K2,D3). LRTA
d
r
_{dr}
dr-
(
K
1
,
K
2
,
D
3
)
(K_1,K_2,D_3)
(K1,K2,D3)模型为
Z
=
R
×
1
P
(
1
)
×
2
P
(
2
)
×
3
Λ
−
1
/
2
U
(
3
)
T
\mathcal{Z}=\mathcal{R} \times_{1} \mathbf{P}^{(1)} \times_{2} \mathbf{P}^{(2)} \times_{3} \mathbf{\Lambda}^{-1 / 2} \mathbf{U}^{(3)^{\mathrm{T}}}
Z=R×1P(1)×2P(2)×3Λ−1/2U(3)T
其中, U ( 3 ) U^{(3)} U(3)是包含 D 3 D_3 D3个选定特征向量的矩阵, Λ \mathbf{\Lambda} Λ是包含 D 3 D_3 D3个最大特征值的对角特征值矩阵,而 P ( n ) P^{(n)} P(n)是n-模的投影。
首先,LRTA d r _{dr} dr- ( K 1 , K 2 , D 3 ) (K_1,K_2,D_3) (K1,K2,D3)联合使用空间和光谱信息来提取光谱PCs。其次,由于估计的空间投影 P ( n ) , n = 1 , 2 P^{(n)},n = 1,2 P(n),n=1,2,LRTA d r _{dr} dr- ( K 1 , K 2 , D 3 ) (K_1,K_2,D_3) (K1,K2,D3)对提取的光谱PCs进行去噪。迭代ALS算法允许人们考虑NR和DR之间的交叉相关性。
实验
实验数据: R 310 × 220 × 148 \mathcal{R}^{310×220×148} R310×220×148,预处理步骤去除初始多向数据 R \mathcal{R} R的每个矢量像素的平均值。
分类是通过SAM算法进行的,评估指标:总准确率OA,对于P类
C
i
,
i
=
1
,
⋯
,
P
C_i,i=1,\cdots,P
Ci,i=1,⋯,P,
a
i
j
a_{ij}
aij定义为实际上属于
C
i
C_i
Ci类却被划分到
C
j
C_j
Cj类的测试样本的个数,
i
,
j
=
1
,
⋯
,
P
i,j=1,\cdots,P
i,j=1,⋯,P,则OA定义为
O
A
=
1
M
∑
i
=
1
P
a
i
i
.
\mathrm{OA}=\frac{1}{M} \sum_{i=1}^{P} a_{i i}.
OA=M1∑i=1Paii. 其中
M
M
M为样本总数。
无降维的分类
该实验评估了对真实数据去噪以改善分类结果的必要性,LRTA- ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)的 ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)值由AIC估计。对于本实验, ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)值估计为(100,100,80).
分类结果中出现的黑色像素代表未分类的像素。我们从视觉结果和OA值中注意到去噪是一个必要的预处理步骤。对于这个真实世界的数据,LRTA-
(
K
1
,
K
2
,
K
3
)
(K_1,K_2,K_3)
(K1,K2,K3)优于比较的方法。
有降维的分类
保留的光谱特征的数量对分类效率有影响,对于
D
3
D_3
D3的每个值,
(
K
1
,
K
2
)
(K_1,K_2)
(K1,K2)值越低,分类结果越好。
对于PCA
d
r
_{dr}
dr方法,我们注意到有一个最佳的光谱维数。LRTA
d
r
_{dr}
dr-
(
K
1
,
K
2
,
D
3
)
(K_1,K_2,D_3)
(K1,K2,D3)在所有
D
3
D_3
D3值下都比PCA
d
r
_{dr}
dr-(
D
3
D_3
D3)产生更好的OA.
LRTA
d
r
_{dr}
dr-
(
40
,
40
,
30
)
(40,40,30)
(40,40,30)允许同时降低光谱维数和空间维数,这对于SAM分类器是非常重要的。
有噪声环境下分类
改进之处:
代码(matlab)
function [X, Z, K] = LRTA(Y) % addpath 'D:\kp_matlab\tensor dictionary learning\tdl_demo\compete_methods'
%==========================================================================
% Implements the lower rank tensor approximation (LRTA) for MSI [1].
%
% Syntax:
% [X, Z, K] = LRTA(Y);
%
% Input:
% Y - the I1 x I2 x I3 noisy imagery tensor
%
% Output:
% X - the denoised imagery tensor whose size is equal to Y's
% Z - the I1 x I2 x D3 reducing tensor after DR
% K - estimated n-rank of the imagery
%
% [1] N. Renard, S. Bourennane, and J. Blanc-Talon, "Denoising and
% Dimensionality Reduction Using Multilinear Tools for Hyperspectral
% Images", IEEE Geoscience and Remote Sensing Letters, vol. 5, no. 2,
% Apr. 2008.
%
% by Yi Peng
%==========================================================================
typename = class(Y); % 返回对象的数据类型
addpath 'D:\kp_matlab\tensor dictionary learning\tensor_dl\dependency\tensor_toolbox'
if ~strcmp(typename, 'tensor') % 用于做字符串比较的函数
Y = tensor(Y); % creates a tensor from the multidimensional array Y, using SIZ = size(Y).
end
I = size(Y);
if numel(I) == 2 % 二维图像
I(3) = 1;
end
% remove the average of each band
Yflat = double(tenmat(Y, 3)); % tenmat函数将张量存储为矩阵形式,也就是张量展开成矩阵,I(3)*[I(1)*I(2)]
bandwise_avg = mean(Yflat, 2); % 对每一行求平均
Y = Y - reshape(repmat(bandwise_avg, [1, I(1)*I(2)])', I); % repmat将bandwise_avg复制成1*(I(1)*I(2))
% estimate K1, K2 and K3
K = zeros(1, 3);
addpath 'D:\kp_matlab\tensor dictionary learning\tensor_dl\utils'
for k = 1:3
Yflat = double(tenmat(Y, k));
AICscore = DimDetectAIC(Yflat'); % 调用DimDetectAIC函数,返回size(Yflat',2)-1维向量
[~, K(k)] = min(AICscore); % 返回索引
end
% denoising via LRTA
X = tucker_als(Y, K, 'init', 'nvecs', 'tol', 1e-8, 'printitn', 0); % 调用tucker_als函数
% perform DR to improve classification performance
Z = ttm(X.core, X.U, -3); % ktensor、@tensor、@ttensor里面都有ttm
X = tensor(X) + reshape(repmat(bandwise_avg, [1, I(1)*I(2)])', I); % add the average of each band
代码测试结果: