K-L变换( Karhunen-Loeve Transform)是建立在统计特性基础上的一种变换,有的文献也称为霍特林(Hotelling)变换,因他在1933年最先给出将离散信号变换成一串不相关系数的方法。K-L变换的突出优点是去相关性好,是均方误差(MSE,Mean Square Error)意义下的最佳变换,它在数据压缩技术中占有重要地位。

K-L(Karhunen-Loeve)变换形式

设X=(X1,X2,…,XN)T为N维随机矢量,mX=E(X)和CX=E{(X-mX)(X-mX)T}分别为其平均值向量和协方差矩阵,ei和λi分别为CX的特征向量和对应的特征值,其中i=1,…,N,并设特征值已按降序排列,即λ1≥λ2≥…≥λN,则K-L变换式为:[1] 
Y=A(X-mx) (1.1)
其中变换矩阵A的行为CX的特征值,即:
式中:eij表示第i个特征向量的第j个分量。

K-L变换的性质

①Y的均值向量为零向量0。即:
mY=E{Y} =E{A(X-mX)}=0 (1.2)
②K-L变换使矢量信号各分量不相关,即变换域信号的协方差为对角矩阵。
③K-L反变换式为:
X=A-1Y+mX=ATY+mx (1.3)
④K-L变换是在均方误差准则下失真最小的一种变换,故又称作最佳变换。
这条性质与压缩编码有关。其意义是,如果在数据传输中只传送变换后的前n个系数组成的矢量,则根据这n个系数得到的恢复值可以得到最小的均方误差,其值为:
上式表明,在K-L变换下,最小均方误差值等于变换域中矢量信号的最小的N-n个方差的和。特别有意义的是,如果这些分量的均值为零,则在恢复时只要把这些分量置零,便可以使均方误差最小。

图像信号的K-L变换

K-L变换是一维变换,在对图像信号进行变换时,矢量可以是一幅图像或一幅图像中的子图像。矢量各分量之间的相关性反映了像素之间的相关性。为了得到矢量X,可以将图像或子图像的像素按行行相接或列列相接的次序排列,如图1所示。

(a)行行相接
(b)列列相接
图1由二维图像信号建立矢量信号
在建立了矢量信号之后,就要计算协方差矩阵CX,然后计算的特征矢量才能得到K-L变换矩阵A。
由此可见,尽管K-L变换具有性质(2)和(4)的最佳去相关和误差性能,但是由于求解特征值和特征根并非易事,特别是在维数高时甚至可能求不出来,而且变换矩阵与图像的内容有关,因而难以满足实时处理的要求。但是,K-L变换在变换编码中具有理论指导意义,人们通过比较,寻找出一些性能与K-L变换接近,但实现却容易得多的“准最佳”编码方法。
 

聚类变换认为:重要的分量就是能让变换后类内距离小的分量。类内距离小,意味着抱团抱得紧。但是,抱团抱得紧,真的就一定容易分类么?

如图1所示,根据聚类变换的原则,我们要留下方差小的分量,把方差大(波动大)的分量丢掉,所以两个椭圆都要向y轴投影,这样悲剧了,两个重叠在一起,根本分不开了。而另一种情况却可以这么做,把方差大的分量丢掉,于是向x轴投影,很顺利就能分开了。因此,聚类变换并不是每次都能成功的。

图1

摧枯拉朽的K-L变换

K-L变换是理论上“最好”的变换:是均方误差(MSE,MeanSquare Error)意义下的最佳变换,它在数据压缩技术中占有重要地位。

聚类变换还有一个问题是,必须一类一类地处理,把每类分别变换,让它们各自抱团。

K-L变换要把所有的类别放在一起变换,希望通过这个一次性的变换,让它们分的足够开。

K-L变换认为:各类抱团紧不一定好区分。目标应该是怎么样让类间距离大,或者让不同类好区分。因此对应于2种K-L变换。

其一:最优描述的K-L变换(沿类间距离大的方向降维)

首先来看个二维二类的例子,如图2所示。

图2

如果使用聚类变换,方向是方差最小的方向,因此降维向方向投影,得到2类之间的距离即为2条红线之间的距离,但是这并不是相隔最远的投影方向。将椭圆投影到方向,得到2类之间的距离为2条绿线之间的距离。这个方向就是用自相关矩阵的统计平均得到的特征向量

设共有M个类别,各类出现的先验概率为

表示来自第i类的向量。则第i类集群的自相关矩阵为:

混合分布的自相关矩阵R是:

然后求出R的特征向量和特征值:

将特征值降序排列(注意与聚类变换区别)

为了降到m维,取前m个特征向量,构成变换矩阵A

以上便完成了最优描述的K-L变换。

为什么K-L变换是均方误差(MSE,MeanSquare Error)意义下的最佳变换?

其中表示n维向量y的第j个分量,表示第个特征分量。

引入的误差

均方误差为

m+1开始的特征值都是最小的几个,所以均方误差得到最小。

以上方法称为最优描述的K-L变换,是沿类间距离大的方向降维,从而均方误差最佳。

本质上说,最优描述的K-L变换扔掉了最不显著的特征,然而,显著的特征其实并不一定对分类有帮助。我们的目标还是要找出对分类作用大的特征,而不应该管这些特征本身的强弱。这就诞生了第2种的K-L变换方法。

其二:最优区分的K-L变换(混合白化后抽取特征)

针对上述问题,最优区分的K-L变换先把混合分布白化,再来根据特征值的分离程度进行排序。

最优区分的K-L变换步骤

首先还是混合分布的自相关矩阵R


然后求出R的特征向量和特征值:

以上是主轴变换,实际上是坐标旋转,之前已经介绍过。

令变换矩阵

则有

这个作用是白化R矩阵,这一步是坐标尺度变换,相当于把椭圆整形成圆,如图3所示。

图3

以二类混合分布问题为例。

分别求出二类的特征向量和特征值,有

则二者的特征向量完全相同,唯一的据别在于其特征根,而且还负相关,即如果取降序排列时,则以升序排列。

为了获得最优区分,要使得两者的特征值足够不同。因此,需要舍弃特征值接近0.5的那些特征,而保留使大的那些特征,按这个原则选出了m个特征向量记作

则总的最优区分的K-L变换就是:

K-L变换的更多相关文章

  1. ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)

     目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...

  2. Gym 101606 - A/B/C/D/E/F/G/H/I/J/K/L - (Undone)

    链接:https://codeforces.com/gym/101606 A - Alien Sunset 暴力枚举小时即可. #include<bits/stdc++.h> using ...

  3. UVa10025-The ? 1 ? 2 ? ... ? n = k problem

    分析:因为数字之间只有加减变换,所以-k和k是一样的,都可以当成整数来考虑,只要找到最小的n满足sum=n*(n+1)/2>=k:且sum和k同奇同偶即可,做法是用二分查找,然后在就近查找 因为 ...

  4. 离散傅立叶变换与快速傅立叶变换(DFT与FFT)

    自从去年下半年接触三维重构以来,听得最多的词就是傅立叶变换,后来了解到这个变换在图像处理里面也是重点中的重点. 本身自己基于高数知识的理解是傅立叶变换是将一个函数变为一堆正余弦函数的和的变换.而图像处 ...

  5. 基于visual Studio2013解决C语言竞赛题之1087数字变换

        题目 解决代码及点评 /************************************************************************/ /* ...

  6. 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 682  Solved: 280[Submit][Sta ...

  7. 1640: [Usaco2007 Nov]Best Cow Line 队列变换

    1640: [Usaco2007 Nov]Best Cow Line 队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 543  Solved: 2 ...

  8. CZT变换(chirp z-transform)

    作者:桂. 时间:2018-05-20  12:04:24 链接:http://www.cnblogs.com/xingshansi/p/9063131.html 前言 相比DFT,CZT是完成频谱细 ...

  9. $\mathcal{FFT}$·$\mathcal{Fast \ \ Fourier \ \ Transformation}$快速傅立叶变换

    \(2019.2.18upd:\) \(LINK\) 之前写的比较适合未接触FFT的人阅读--但是有几个地方出了错,大家可以找一下233 啊-本来觉得这是个比较良心的算法没想到这么抽搐这个算法真是将一 ...

  10. TOT 傅立叶变换 FFT 入门

    HDU 1402,计算很大的两个数相乘. FFT 只要78ms,这里: 一些FFT 入门资料:http://wenku.baidu.com/view/8bfb0bd476a20029bd642d85. ...

随机推荐

  1. [转] immutability-helper 插件的基本使用(附源码)

    概念 先理解一下 Immutable 的概念,Immutable数据就是一旦创建,就不能更改的数据.每当对Immutable对象进行修改的时候,就会返回一个新的Immutable对象,以此来保证数据的 ...

  2. Python开启进程的2中方式

    知识点一:进程的理论 进程:正在进行的一个程序或者说一个任务,而负责执行任务的则是CPU 进程运行的的三种状态: 1.运行:(由CPU来执行,越多越好,可提高效率) 2.阻塞:(遇到了IQ,3个里面可 ...

  3. Linux Shell系列教程之(一)Shell简介

    本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...

  4. C++之Effective STL学习笔记Item21

    好了,先贴一段英文,真心不想翻译过来,而且感觉也翻译不到那么到位: The STL is awash in comparisons of objects to see if they have the ...

  5. 【bzoj4026】dC Loves Number Theory 可持久化线段树

    题目描述 dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源.  给定一个长度为 n的正整数序列A,有q次询问,每次询问一段区间内所有元素乘积的φ(φ(n ...

  6. FZU Problem 2200 cleaning dp

    Problem Description N个人围成一圈在讨论大扫除的事情,需要选出K个人.但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法. Inp ...

  7. 从输入url到页面呈现的过程

    从输入url到页面呈现的过程包括两个基本过程:网络通信和页面渲染 网络通信主要过程是 域名解析 -> TCP连接 -> HTTP请求 -> 服务端响应,返回HTML 页面渲染的主要过 ...

  8. [CF888G] Xor-mst (Trie 树,最小生成树)

    题目链接 Solution \(Trie\) 树 + 启发式合并. 考虑到是异或,于是按位贪心.让高位的尽量相同. 然后要计算每棵子树的代价,似乎并没有很好的方法?? 于是只能启发式合并. 对于每一个 ...

  9. java面试题之Thread和Runnable是什么关系?

    Thread实现了Runnable接口,使得run方法支持多线程: 因类的单一继承原则,推荐多实用Runnable接口

  10. 解决 Springboot中Interceptor拦截器中依赖注入失败

    问题: 在Springboot拦截器Interceptor中使用@Resource依赖注入时,发现运行的时候被注解的对象居然是null,没被注入进去 原配置为: @Configurationpubli ...