KLT简述
KLT (Karhunen-Loeve Transform) 是变换编码 (Transform Coding) 的一种方法,它能够将数据转化为更利于压缩的一种形式,去除数据相关性造成的冗余。KLT一般也称为PCA (Principal Component Analysis) 或者EVD (Eigenvalue Decomposition), 在不同的课程和教材中它们可能有一些差别,但本文将要讲的图像压缩中的KLT指的就是计算图像协方差矩阵,保留较大的特征值和其对应的特征向量的方法。
步骤原理
-
首先将待处理的图像分割成n个 M × N M\times N M×N 的图像块,并将图像块中数据按照从左到右,从上到下的顺序重新排列成一个列向量,每一个列向量长度为 M × N M\times N M×N,共有 N T N_{T} NT个这样的列向量,第 i i i个列向量为 x n i \bm{x}_{ni} xni
以二维向量为例,假设每一个向量可以表示为 [ x 1 , x 2 ] T \left [x_1,x_2 \right ]^T [x1,x2]T,那么可以将这些数据点表示在二维平面内,如下图所示,椭圆内为二维向量分布点。
-
数据中心化: x = x n i − x ˉ \bm{x}=\bm{x}_{ni}-\bar{\bm{x}} x=xni−xˉ ,其中 x ˉ \bar{\bm{x}} xˉ为所有列向量的均值。可以看作将数据集平移至原点。
-
计算协方差矩阵 C \bm{C} C
C = E [ x x T ] = E [ ( x n i − x ˉ ) ( x n i − x ˉ ) T ] \bm{C}=E\left [\bm{x}\bm{x}^{T} \right ]=E\left [(\bm{x}_{ni}-\bar{\bm{x}})(\bm{x}_{ni}-\bar{\bm{x}})^{T} \right ] C=E[xxT]=