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变换算法c语言,K-L变换(示例代码)相关推荐

  1. 易语言html规则分析,易语言算法原理浅析【一】(示例代码)

    注: 如果你看完了下面的文章.就来试试这个KeyGenMe吧,相信你能有所收获. 一.文章开头首先我们要贴上一段易语言代码,并且编译这段代码,从汇编角度分析易语言程序编译后,易语言算法在汇编中的实现过 ...

  2. 编码译码算法c语言程序,LDPC编码C代码 LDPC编译码的C代码程序 - 下载 - 搜珍网

    压缩包 : d29aa0dfee3e50fde4850fb5dc47a57a.rar 列表 LDPC编码C代码/LDPC编码C代码/Debug/ldpc_encode.exe LDPC编码C代码/LD ...

  3. c语言作业统计字符,C语言统计字符数(示例代码)

    输出样例 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ...

  4. java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)

    一.贪心算法 定义:一个算法是贪心算法,如果它是通过一些小的步骤来一个求解,并且在每一步根据局部情况选择一个决定,使得某些主要的指标得到优化. 二.区间调度问题 1. 问题:我们有一组需求{1,2,3 ...

  5. c语言有效的预处理命令,9、C语言之预处理命令(示例代码)

    预处理命令 基本概念:ANSI C标准规定可以在C源程序中加入一些"预处理命令",以改进程序设计环境,提高编程效率. 这些预处理命令是由ANSI C同一规定的,但是它们不是C语言本 ...

  6. python三人同行七十稀_【算法入门第二章练习题】(示例代码)

    习题2-1 水仙花数 输出100~999中的所有水仙花数.若3位数ABC满足ABC=A2+B2+C2,则称其为水仙花数.例如:153=12+52+32,所以153是水仙花数. 解析:只有1000个数, ...

  7. 按键脚本c语言,按键精灵脚本(示例代码)

    1电脑版读取文件脚本Dim path path = "C:/Users/Administrator/Desktop/accounts" //直接读取文件到变量,文件的每一行在变量中 ...

  8. 表格 树形结构 HTML 语言 CSS,HTML介绍(示例代码)

    一.什么是HTML html(hypertext makeup language),中文名为超文本标记语言,他是一门能被浏览器解析成网页的标签语言,当我们使用浏览器访问网页时,那边就有一个服务端给你发 ...

  9. c语言apply函数,R语言apply()函数用法(示例代码)

    在R语言的帮助文档里,apply函数的功能是: Retruns a vector or array or list of values obtained by applying a function ...

最新文章

  1. 算法基础知识科普:8大搜索算法之红黑树(下)
  2. Log4j的FileAppender配置
  3. 如何在 ASP.Net Core 中实现 健康检查
  4. 用haslib给字符加密
  5. 计算机机房维护保养计划表,机房日常维护保养计划
  6. [Linux][Ubuntu][14.04.3LTS]安装NVidia显卡驱动
  7. 易到起死回生的背后,谁在指点江山?
  8. Mac 使用Charles进行手机https抓包(超详细教程)
  9. 小谈startup类ConfigureServices方法的作用
  10. macOS Big Sur 11.7.5 (20G1225) 正式版 ISO、PKG、DMG、IPSW 下载
  11. java 读取svg元素_Java Batik操作SVG,实现svg读取,生成,动态操作
  12. 完美解决android软键盘挡住输入框方法,还不顶标题栏
  13. 为什么要用肖特基二极管续流?
  14. 暑期实践第九天 2022-7-12
  15. LeetCode刷题之T46全排列(中等)
  16. IDEA连接MySQL数据库[42000][1049] Unknown database ‘logistics‘.
  17. 在TTL线下使用DD命令备份电视盒子各个分区教程
  18. 爱奇艺UI赏析—首页推荐
  19. 如何15分钟快速入门LaTeX公式?
  20. 助推国产基础软硬件建设,巨杉数据库与湘江鲲鹏完成产品兼容认证

热门文章

  1. 从AFN错误码中获取错误code和信息
  2. 哈夫曼编/译码器(Huffman)
  3. 为什么搜狗浏览器打开新网页是后台显示,而不是直接显示新打开
  4. ISL81487IBZ 瑞萨-Renesas 5V,半双工,5Mbps,RS-485/RS-422 收发器
  5. VMware虚拟机装win7系统时遇到vmware tools无法安装的问题
  6. 题目0158-快递业务站
  7. 我得毕业设计终于快完成了
  8. 干货 | 各行业都极其加分的数据分析,到底应该怎么学?
  9. 智能家居DIY连载教程(2)——在实际项目中运用消息队列与邮箱
  10. griffon桌面开发之hello world