⑴ 什么是奇异值数
奇异值:对于一个实矩阵a(m×n阶),如果可以分解为a=usv’,其中u和v为分别为m×n与n×m阶正交阵,s为n×n阶对角阵,且s=diag(a1,a2,...,ar,0,...,
0)。且有a1>=a2>=a3>=...>=ar>=0.那么a1,a2,...,ar称为矩阵a的奇异值。u和v成为左右奇异阵列.
a的奇异值为a’a的特征值的平方根(a’表示a的转置矩阵),通过此可以求出奇异值.
奇异值分解法是线性代数中一种重要的矩阵分解法,在信号处理、统计学等领域有重要应用。
其定义为定义:设a为m*n阶矩阵,a'表示a的转置矩阵,a'*a的n个特征值的非
负平方根叫作a的奇异值。记为σi(a)。
如果把a‘*a的特征值记为λi(a‘*a),则σi(a)=sqrt(λi(a’*a))。
希望能帮助到您,望采纳,谢谢
⑵ 奇异值分解(SVD)的原理及应用
姓名:刘保阔
学号:19021210887
转自:https://www.cnblogs.com/tianqi/p/9745913.html
【嵌牛导读】
奇异值分解(Singular Value Decomposition)是 矩阵论 中一种重要的 矩阵 分解,奇异值分解则是 特征 分解在任意矩阵上的推广。在 信号处理 、 统计学 等领域有重要应用。
【嵌牛正文】
一、奇异值与特征值基础知识:
特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:
1)特征值:
如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:
这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵:
它其实对应的线性变换是下面的形式:
因为这个矩阵M乘以一个向量(x,y)的结果是:
上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子:
它所描述的变换是下面的样子:
这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。
当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
2)奇异值:
下面谈谈奇异值分解。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:
假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片
那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到:这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:
这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:
右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。
二、奇异值的计算:
奇异值的计算是一个难题,是一个O(N^3)的算法。在单机的情况下当然是没问题的,matlab在一秒钟内就可以算出1000 * 1000的矩阵的所有奇异值,但是当矩阵的规模增长的时候,计算的复杂度呈3次方增长,就需要并行计算参与了。Google的吴军老师在数学之美系列谈到SVD的时候,说起Google实现了SVD的并行化算法,说这是对人类的一个贡献,但是也没有给出具体的计算规模,也没有给出太多有价值的信息。
其实SVD还是可以用并行的方式去实现的,在解大规模的矩阵的时候,一般使用迭代的方法,当矩阵的规模很大(比如说上亿)的时候,迭代的次数也可能会上亿次,如果使用Map-Rece框架去解,则每次Map-Rece完成的时候,都会涉及到写文件、读文件的操作。个人猜测Google云计算体系中除了Map-Rece以外应该还有类似于MPI的计算模型,也就是节点之间是保持通信,数据是常驻在内存中的,这种计算模型比Map-Rece在解决迭代次数非常多的时候,要快了很多倍。
Lanczos迭代 就是一种解对称方阵部分特征值的方法(之前谈到了,解A’* A得到的对称方阵的特征值就是解A的右奇异向量),是将一个对称的方程化为一个三对角矩阵再进行求解。按网上的一些文献来看,Google应该是用这种方法去做的奇异值分解的。请见Wikipedia上面的一些引用的论文,如果理解了那些论文,也“几乎”可以做出一个SVD了。
由于奇异值的计算是一个很枯燥,纯数学的过程,而且前人的研究成果(论文中)几乎已经把整个程序的流程图给出来了。更多的关于奇异值计算的部分,将在后面的参考文献中给出,这里不再深入,我还是focus在奇异值的应用中去。
三、奇异值与主成分分析(PCA):
主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。以下面这张图为例子:
这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假如我们想要用一条直线去拟合这些点,那我们会选择什么方向的线呢?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上得到的方差是相似的(因为这些点的趋势是在45度左右的方向,所以投影到x轴或者y轴上都是类似的),如果我们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。但是如果我们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。
一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。对上图来说,如果我们只保留signal方向的数据,也可以对原数据进行不错的近似了。
PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。
还是假设我们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另一个N维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。
而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。用数学语言表示就是:
但是这个怎么和SVD扯上关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子:
在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子
将后面的式子与A * P那个m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩,如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的sample合并在一起,或者将一些没有太大价值的sample去掉)怎么办呢?同样我们写出一个通用的行压缩例子:
这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置U'
这样我们就得到了对行进行压缩的式子。可以看出,其实PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了,而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。
四、奇异值与潜在语义索引LSI:
潜在语义索引(Latent Semantic Indexing)与PCA不太一样,至少不是实现了SVD就可以直接用的,不过LSI也是一个严重依赖于SVD的算法,之前吴军老师在 矩阵计算与文本处理中的分类问题 中谈到:
“三个矩阵有非常清楚的物理含义。第一个矩阵X中的每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性(或者说相关性),数值越大越相关。最后一个矩阵Y中的每一列表示同一主题一类文章,其中每个元素表示这类文章中每篇文章的相关性。中间的矩阵则表示类词和文章雷之间的相关性。因此,我们只要对关联矩阵A进行一次奇异值分解,w 我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。”
上面这段话可能不太容易理解,不过这就是LSI的精髓内容,我下面举一个例子来说明一下,下面的例子来自LSA tutorial,具体的网址我将在最后的引用中给出:
这就是一个矩阵,不过不太一样的是,这里的一行表示一个词在哪些title中出现了(一行就是之前说的一维feature),一列表示一个title中有哪些词,(这个矩阵其实是我们之前说的那种一行是一个sample的形式的一种转置,这个会使得我们的左右奇异向量的意义产生变化,但是不会影响我们计算的过程)。比如说T1这个title中就有guide、investing、market、stock四个词,各出现了一次,我们将这个矩阵进行SVD,得到下面的矩阵:
左奇异向量表示词的一些特性,右奇异向量表示文档的一些特性,中间的奇异值矩阵表示左奇异向量的一行与右奇异向量的一列的重要程序,数字越大越重要。
继续看这个矩阵还可以发现一些有意思的东西,首先,左奇异向量的第一列表示每一个词的出现频繁程度,虽然不是线性的,但是可以认为是一个大概的描述,比如book是0.15对应文档中出现的2次,investing是0.74对应了文档中出现了9次,rich是0.36对应文档中出现了3次;
其次,右奇异向量中一的第一行表示每一篇文档中的出现词的个数的近似,比如说,T6是0.49,出现了5个词,T2是0.22,出现了2个词。
然后我们反过头来看,我们可以将左奇异向量和右奇异向量都取后2维(之前是3维的矩阵),投影到一个平面上,可以得到:
在图上,每一个红色的点,都表示一个词,每一个蓝色的点,都表示一篇文档,这样我们可以对这些词和文档进行聚类,比如说stock 和 market可以放在一类,因为他们老是出现在一起,real和estate可以放在一类,dads,guide这种词就看起来有点孤立了,我们就不对他们进行合并了。按这样聚类出现的效果,可以提取文档集合中的近义词,这样当用户检索文档的时候,是用语义级别(近义词集合)去检索了,而不是之前的词的级别。这样一减少我们的检索、存储量,因为这样压缩的文档集合和PCA是异曲同工的,二可以提高我们的用户体验,用户输入一个词,我们可以在这个词的近义词的集合中去找,这是传统的索引无法做到的。
⑶ 图像矩阵用奇异值分解的方法压缩图像
利用奇异值分解可以压缩一个矩阵,但是对于一般的图像来说每个通道都是一个矩阵,所以不能直接用SVD。
对于A=UDV',如果要重排D的话直接交换U,V中相应的列就行了,相当于A=UP*P'DP*P'V'。一般来讲如果调用数学库中的函数的话D肯定是已经排好的。
补充:
给你举个例子,如果你要交换D(i,i)和D(j,j),那么同时把U的第i列和第j列交换一下,把V的第i列和第j列交换一下。
主流的数学库当中SVD都是LAPACK的实现,次序已经排好了。
⑷ 什么是矩阵的奇异值,为什么它能将高维压缩成低维
任何一本线代书都有介绍.矩阵奇异就是行列式为零,又称降秩矩阵.
⑸ 数值分析对学计算机有什么用途
数值分析里,有很多关于迭代的介绍,而计算机编程,对于迭代运用有着一定的要求,所以,数值分析学好以后,更方便学习计算机编程。
数值分析是是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科。以数字计算机求解数学问题的理论和方法为研究对象,为计算数学的主体部分。
(5)奇异值图像压缩扩展阅读:
数值分析的研究领域:
函数求值
数值分析中最简单的问题就是求出函数在某一特定数值下的值。最直觉的方法是将数值代入函数中计算,不过有时此方式的效率不佳。像针对多项式函数的求值,较有效率的方式是秦九韶算法,可以减少乘法及加法的次数。若是使用浮点数,很重要的是是估计及控制舍入误差。
求解方程
求根算法是要解一非线性方程,其名称是因为函数的根就是使其值为零的点。若函数本身可微且其导数是已知的,可以用牛顿法求解,其他的方法包括二分法、割线法等。线性化则是另一种求解非线性方程的方法。
求解特征值
许多重要的问题可以用奇异值分解或特征分解来表示。例如有些图像压缩算法就是以奇异值分解为基础。统计学中对应的工具称为主成分分析。
最优化
最优化问题的目的是要找到使特定目标函数有最大值(或最小值)的点,一般而言这个点需符合一些约束。
依目标函数及约束条件的不同,最佳化又可以再细分:例如线性规划处理目标函数及约束条件均为线性的情形,常用单纯形法来求解。若目标函数及约束条件其中有一项为非线性,就是非线性规划的范围。
有约束条件的问题可以利用拉格朗日乘数转换为没有约束条件的问题。
积分计算
数值积分的目的是在求一定积分的值。一般常用牛顿-寇次公式,包括辛普森积分法、高斯求积等。上述方式是利用分治法来处理积分问题,也就是将大范围的积分切割成许多小范围的积分,再进行计算。
⑹ svd奇异值分解算法可以做数据压缩吗
基于双边Jacobi旋转的奇异值分解算法
V是A的右奇异向量,也是的特征向量;
U是A的左奇异向量,也是的特征向量。
特别地,当A是对称矩阵的时候,=,即U=V,U的列向量不仅是的特征向量,也是A的特征向量。这一点在主成分分析中会用到。
对于正定的对称矩阵,奇异值等于特征值,奇异向量等于特征向量。
U、V都是正交矩阵,满足矩阵的转置即为矩阵的逆。
双边Jacobi方法本来是用来求解对称矩阵的特征值和特征向量的,由于就是对称矩阵,求出的特征向量就求出了A的右奇异值,的特征值开方后就是A的奇异值。
一个Jacobi旋转矩阵J形如:
它就是在一个单位矩阵的基础上改变p行q行p列q列四个交点上的值,J矩阵是一个标准正交矩阵。
当我们要对H和p列和q列进行正交变换时,就对H施行:
在一次迭代过程当中需要对A的任意两列进行一次正交变换,迭代多次等效于施行
迭代的终止条件是为对角矩阵,即原矩阵H进过多次的双边Jacobi旋转后非对角线元素全部变成了0(实现计算当中不可能真的变为0,只要小于一个很小的数就可以认为是0了)。
每一个J都是标准正交阵,所以也是标准正交阵,记为V,则是,则。从此式也可以看出对称矩阵的左奇异向量和右奇异向量是相等的。V也是H的特征向量。
当特征值是0时,对应的Ui和Vi不用求,我们只需要U和V的前r列就可以恢复矩阵A了(r是非0奇异值的个数),这也正是奇异值分解可以进行数据压缩的原因。
+ View Code
基于单边Jacobi旋转的SVD算法
相对于双边,单边的计算量小,并且容易并行实现。
单边Jacobi方法直接对原矩阵A进行单边正交旋转,A可以是任意矩阵。
同样每一轮的迭代都要使A的任意两列都正交一次,迭代退出的条件是B的任意两列都正交。
单边Jacobi旋转有这么一个性质:旋转前若,则旋转后依然是;反之亦然。
把矩阵B每列的模长提取出来,,把记为V,则。
⑺ 视频怎么压缩到500m以内
将一个视频压缩到500m以内需要使用格式工厂来修改视频的比特率,操作方法如下:
操作设备:戴尔电脑
操作系统:win10
操作软件:格式工厂v4.8
1、选中要压缩的文件,查看内存大小(文件为4G多)。
⑻ matlab股票协方差
pp概述
原则上,所有图象处理都是图像的变换,而本章所谓的图象变换特指数字图象经过某种数学工具的处理,把原先二维空间域中的数据,变换到另外一个"变换域"形式描述的过程。例如,傅立叶变换将时域或空域信号变换成频域的能量分布描述。
任何图象信号处理都不同程度改变图象信号的频率成分的分布,因此,对信号的频域(变换域)分析和处理是重要的技术手段,而且,有一些在空间域不容易实现的操作,可以在频域(变换域)中简单、方便地完成。
Pp
如上所述,图象变换是将 维空间图象数据变换成另外一组基向量空间(通常是正交向量空间)的坐标参数,我们希望这些离散图象信号坐标参数更集中地代表了图象中的有效信息,或者是更便于达到某种处理目的。下图描述了数字图象处理中空域处理与变换域处理的关系。
pp
图象变换的实质就是将图象从一个空间变换到另一个空间,各种变换的不同之处关键在于变换的基向量不同。以下给出几种不同变换基向量的变换示例。
例如,由直角坐标系变化到极坐标系,见下图
pp
同样,一幅彩色图象可以按照某种准则,分解成若干个基本色彩分量图象的和。
傅立叶变换可以将一维信号从时间域变换到频率域,例如下图,一个正弦信号经过傅立叶变换后,得到它的频率分布零频(直流分量)和基频。
一维傅立叶变换的定义:
一维傅立叶反变换定义:
F(u)包含了正弦和余弦项的无限项的和,u称为频率变量,它的每一个值确定了所对应的正弦-余弦对的频率。
根据尤拉公式
傅立叶变换系数可以写成如下式的复数和极坐标形式:
其中:
傅立叶谱(幅值函数)为
相角为
能量谱为
pp
连续二维函数的傅立叶变换对定义
二维函数的傅立叶正变换
二维函数的傅立叶逆变换
二维函数的傅立叶谱
二维函数的傅立叶变换的相角
二维函数的傅立叶变换的能量谱
pp
2离散傅立叶变换
由于实际问题的时间或空间函数的区间是有限的,或者是频谱有截止频率。至少在横坐标超过一定范围时,函数值已趋于 而可以略去不计。将 和 的有效宽度同样等分为 个小间隔,对连续傅立叶变换进行近似的数值计算,得到离散的傅立叶变换定义。
其中,一维离散傅立叶正变换
一维离散傅立叶逆变换
pp
二维离散傅立叶变换:对于 图象
对于 图象
pp
1.3离散傅立叶变换的性质
性质1:可分离性
二维傅立叶变换可分解成了两个方向的一维变换顺序执行。
pp
性质2:平移性
空间域平移:
频率域平移:
pp
当 时有:
可以简单的用 乘以 将 的傅立叶变换的原点移动到相应 频率方阵的中心。
(图)
pp
性质3:周期性及共轭对称性
离散的傅立叶变换和它的反变换具有周期为 的周期性:
傅立叶变换也存在共轭对称性:
pp
性质4:旋转性质
平面直角坐标改写成极坐标形式:
做代换有:
如果 被旋转 则 被旋转同一角度。即有傅立叶变换对:
pp
(图)
性质5:线性性质
如果:
则有:
pp
性质6: 与图象均值的关系
二维图象灰度均值定义:
而傅立叶变换变换域原点的频谱分量:
所以有:
即 数值 倍于图象灰度均值。
Pp
性质7:图象拉普拉斯算子处理后的傅立叶变换
图象拉普拉斯算子处理的定义:
则图象拉普拉斯算子处理后的傅立叶变换对为:
pp
性质8:卷积与相关定理
卷积定理 一维序列的卷积运算定义为:
当
则有
注意在用傅立叶变换计算卷积时, 由于函数被周期化,为了保证卷积结果正确,计算过程中两个序列长度N1,N2都要补零加长为N1+ N2-1。二维图象序列卷积定理的定义和计算过程与一维情况相同。*为卷积符号。
pp
相关定理:
一维、二维两个离散序列的相关可以写作
则有相关定理
pp
4快速傅立叶变换
由一维傅立叶变换入手,换一种表示方法
pp
定义:
则:
因为:
pp
傅立叶变换的快速计算示意图:
(图)
pp
一维傅立叶变换:
其逆变换为: R
则有:
对于二维情况:
pp
§2离散余弦变换(DCT)
从第一节内容我们可以看到,傅立叶变换是用无穷区间上的复正弦基函数和信号的内积描述信号中总体频率分布,或者是将信号向不同频率变量基函数矢量投影。实际上,基函数可以有其它不同类型,相当于用不同类型基函数去分解信号(图象)。余弦变换是其中常用的一种。
pp
设离散序列 ,为一离散序列,根据下式延拓成偶对称序列 :
其中 。 是关于 为中心的偶对称序列如下图所示。
(图)
pp
以 代入在 范围内作 点的傅立叶变换:
pp
余弦变换的变换核为:
表示成矩阵形式为:(其中各列模为1)
pp
定义偶余弦变换(EDCT)和逆变换为:
pp
二维余弦变换:
二维余弦变换具有可分离性:
表示成矩阵形式:
pp
余弦变换可以利用傅立叶变换实现:
将 延拓为:
则有:
借助傅立叶变换计算余弦变换的步骤:
1)把 延拓成 ,长度为 ;
2)求 的 点的FFT;
3)对 各项乘上对应的因子 ;
4)取实部,并乘上因子 ;
5)取 的前 项,即为 的余弦变换。
Pp
余弦反变换:
首先延拓 ,
反变换,
pp
§3 正弦变换
一维正弦变换核
一维正弦变换
二维正弦变换核
二维正弦变换
pp
§4 沃尔什-哈达玛变换
沃尔什-哈德玛(Walsh-Hadamard)变换的变换核是一类非正弦的正交函数(Walsh函数),例如方波或矩形波。与正弦波频率相对应,这种非正弦波形可用"列率"(单位时间内波形通过零点数平均值的一半)描述。Walsh函数可以由Rademacher函数构成,Rademacher函数集是一个不完备的正交函数集,Rademacher函数有两个自变量 和 ,用 表示。
pp
Rademacher函数波形图和矩阵表示
(图)
pp
用Rademacher函数构造沃尔什函数:
其中: 表示 所选用的二进制位数
是Rademacher函数
是 的自然二进制的位序反写后的第 位数字,
例: 用三位二进制码, ,求
pp
(图)
pp
Walsh函数的矩阵形式
其变换核矩阵有递推关系:(直积)
沃尔什-哈达玛变换定义:
一维沃尔什-哈达玛变换可表示成矩阵形式:
pp
例:
二维沃尔什-哈达玛变换:
,
其中 , 阶数相同。
pp
例:
另外有
pp
§5 奇异值分解
基于矩阵奇异值分解的二维酉变换:
任何 矩阵 可以分解成:
和 是正交矩阵, 是矩阵 的特征值。
则:
称为矩阵 的奇异值。
Pp
对矩阵 作奇异值分解:
令:
则;
是 或 的特征值所构成的对角阵。
矩阵的特征矢量
矩阵的特征矢量
pp
矩阵 可用奇异值分解的级数展开式表示成:
是 矩阵的第 行第 列阵元,即 分别是 矩阵的第 列矢量。
(图)
pp
§6 K_L变换
K_L变换又称为Hotelling变换和主成分分析。
当变量之间存在一定的相关关系时,可以通过原始变量的线性组合,构成为数较少的不相关的新变量代替原始变量,而每个新变量都含有尽量多的原始变量的信息。这种处理问题的方法,叫做主成分分析,新变量叫做原始变量的主成分。例如人脸图象可表示成:
(图)
pp
主成分分析与线性回归的比较:
设有 个观测点 ,散布如图所示,线性回归的问题是要找一条对 个点 的拟合直线 ,使偏差平方和最小。
主成分的基本思想是,先对 个点 求出第一条"最佳"拟合直线,使得这 个点到该直线的垂直距离的平方和最小,并称此直线为第一主成分。然后再求与第一主成分相互独立(或者说垂直)的,且与 个点 的垂直距离平方和最小的第二主成分。
Pp
(图)
有 幅图象 ,大小为 。每幅图象表示成向量:
向量的协方差矩阵定义为:
其中:
令 和 是 的特征向量和对应的特征值。
特征值按减序排列,
变换矩阵的行为 的特征值,则变换矩阵为:
对应第 个特征向量的第 个分量。
K_L变换定义为:
变换后,有:
pp
K_L变换的计算步骤:
1. 求协方差矩阵 ;
2. 求协方差矩阵的特征值 ;
3. 求相应的特征向量
4. 用特征向量 构成变换矩阵 ,求 。
Pp
K-L变换的一种快速算法:
输入图像样本集合为: ,每一个样本图的大小为 , 可以用 维的向量 来表示(即把原图像按行连到一起构成 维向量)。它也可看作 维空间的一个点,称此空间为原始图像空间S。实际上样本图像具有较大的相似性的, 因此,全部样本图象不会
充满整个 维的空间,只是会聚集
在图像空间的一个相对狭小子空间内。
Pp
(图)
样本图象在原始图像空间中的分布
如果以样本图集的总体协方差矩阵为主成分分析的产生矩阵,则所有样本图像的总体协方差矩阵为:
式中, , 是全体样本图像均值。 满足下面的方程
是矩阵 的特征向量, 是对应的特征值。根据主成分分析理论,得到一个从原始图像空间到新特征空间的线性变换 。 是由 的特征向量构成的变换矩阵。
Pp
但是,直接求矩阵 的特征值和特征向量很困难。如果样本图象个数 不太多,可以先计算出 维矩阵 的特征值 和特征向量 。因为
左乘矩阵 ,得
那么 就是矩阵 的特征向量。
Pp
-主成分空间的基。根据主成分分析,可以选择 个较大特征值对应的特征向量(主成分),构造新的 维主成分空间 。每一幅图象在此空间的投影对应一个 维向量 ,它们就是低维新特征向量(主成分)。
Pp
小结
傅立叶变换(FFT) 具有快速算法,数字图象处理中最常用。需要复数运算。可把整幅图象的信息很好地用若干个系数来表达。
余弦变换(DCT) 有快速算法,只要求实数运算。在相关性图象的处理中,最接近最佳的K_L变换,在实现编码和维纳滤波时有用。同DFT一样,可实现很好的信息压缩。
正弦变换(DST) 比快速DCT快一倍。只需实数运算,可导出快速的K_L变换算法。在实现编码和滤波时有用。具有很好的信息压缩效果好。
沃尔什-哈达玛变换(WHT) 在数字图象处理的硬件实现时有用。容易模拟但很难分析。在图象数据压缩、滤波、编码中有应用。信息压缩效果好。
K_L变换(KLT) 在许多意义下是最佳的。无快速算法。在进行性能评估和寻找最佳性能时有用。对小规模的向量有用,如彩色多谱或其他特征向量。对一组图象集而言,具有均方差意义下最佳的信息压缩效果。
奇异值分解(SVD) 对任何一幅给定的图象而言,具有最佳的信息压缩效果。无快速算法。设计有限冲激响应(FIR)滤波器时,寻找线性方程的最小范数解时有用。潜在的应用是图象恢复,能量估计和数据压缩。
>> A=[0,0,0;2,0,2;]
A =
0 0 0
2 0 2
>> v = diag(cov(A))'
v =
2 0 2 说实在的我也看不懂啦,。
⑼ 奇异值分解(SVD)
奇异值分解(SVD)是一种矩阵因子分解方法。任意一个m*n的矩阵,都可以表示为三个矩阵的乘积(因子分解)的形式,分别是m阶正交矩阵、由降序排列的非负的对角线元素组成的m*n矩阵和n阶正交矩阵,称为该矩阵的奇异值分解。矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作出矩阵数据压缩的一种方法。即用因子分解的方式近似地表示原始矩阵,这种矩阵在平方损失意义下的最优近似。
矩阵的奇异值分解是指,将一个非零的m*n实矩阵 ,表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解
其中U是m阶正交矩阵,V是n阶正交矩阵, 是由降序排列的非负的对角元素组成的 的矩形对角矩阵
称为矩阵的奇异值分解, 称为矩阵A的奇异值, 的列向量称为左奇异向量, 的列向量成为右奇异向量
紧凑奇异值分解是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵降低秩的奇异值分解。在实际应用中,常常需要对矩阵的数据进行压缩,将其近似表示,奇异值分解提供了一种方法。奇异值分解是在平方损失意义下对矩阵的最优近似。紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩
设有 实矩阵A,其秩为rank(A) = r, ,则称 为A的紧奇异值分解,即
其中 是 矩阵, 是 矩阵, 是r阶对角矩阵,矩阵 由完全奇异分解中的前r列,矩阵 由V的前r列,矩阵 由 的前r个对角线元素得到,紧奇分解的对角矩阵 的秩与原始矩阵A的秩相等
在矩阵的奇异值分解中,只取最大的k个奇异值(k < r,r为矩阵的秩)对应的部分,就得到矩阵的截断奇异值分解。实际应用中提到的矩阵的奇异值分解,通常指截断奇异值分解
设A为 实矩阵,其秩rank(A)=r,且, ,则称 为矩阵A的截断奇异值分解
其中 是 矩阵, 是n*k矩阵, 是k阶对角矩阵;矩阵 由完全奇异分解U的前k列,矩阵 由V的前k列,矩阵 由 的前k个对角线元素得到。对角矩阵 的秩比原始矩阵A的秩低。
从线性变换的角度理解奇异值分解, 矩阵A表示从n维空间 到m空间 的一个线性变换,
x和Ax分别表示各自空间的向量。线性变换可以分解为三个简单的变换:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射。
对矩阵A进行奇异值分解,得到 ,V和U都是正交矩阵,所以V的列向量 构成空间的一组标准正交基,表示 中的正交坐标系的旋转或反射;U的列向量 构成 空间的一组标准正交基,表示 中正交坐标系的旋转或反射; 的对角元素 是一组非负实数,表示 中原始正坐标系坐标轴的 倍的缩放变换。
任意一个向量 ,经过基于 的线性变换,等价于经过坐标系的旋转或反射变换 ,坐标轴的缩放变换 ,以及坐标轴的旋转或反射变换U,得到相框
矩阵A是 的正交实矩阵,则矩阵 是n阶实对称矩阵,因而 的特征值都是实数,并且存在一个n阶正实矩阵V实现 的对角化,使得 成立,其中 是n阶对角矩阵,其对角元素由 的特征值组成。
而且, 的特征值都是非负的。事实上,令 是 的一个特征值,x是对应的特征向量,则
于是
可以假设正交矩阵V的列排列使得对应的特征值形成降序排列。
计算特征值的平方根(实际上解释矩阵A的奇异值)
设矩阵A的秩是r,rank(A)=r,则矩阵 的秩也是r。由于 是对称矩阵,它的秩等于正的特征值的个数。
对应的
令
其中 为 的特征值对应的特征向量, 为0特征值对应的特征向量。
则
这就是矩阵A的奇异值分解中的n阶正交矩阵V
令
则 是个一个r阶对角矩阵,其对角线元素为按降序排列的正的 ,于是 矩形对角矩阵 可以表示为
这就是矩阵A的奇异值分解中的 矩阵对角矩阵
接着构造m阶正交实矩阵U
令
则有
的列向量构成正交基是因为
对 的非零空间的一组标准正交基 ,令
并令
⑽ 基于奇异值分解(SVD)的方法压缩图像MATLAB实现
对图像压缩不是很了解。奇异值分解在matlab中一般用SVD(X)语句