2018-11-20 17:28:29 kellyroslyn 阅读数 493
  • 秒学面向对象视频课程(C++实践篇)视频课程(50课时...

    封装:是指将事物 的特征和行为抽象为一个类。封装实际上是对事物的抽象过程,依据实际应用,按照主观意识将事物的特征和行为描述为类 继承:是指可以从一个类派生一个子类,子类通过继承具有了父类的特征和行为,并且可以在子类中添加自己的特征和行为 多态:是指对于相同的调用或操作,作用于不同的对象,而导致其行为也不同,它增强了软件的灵活性和重要性 有问题咨询老师微信,微信号:mikeshizhanbiao

    24048 人正在学习 去看看 师占标

转自http://www.cnblogs.com/isabelincoln/archive/2009/06/18/1504623.html


特征向量与特征值

在看线性代数这一部分的时候,真是一头雾水。虽然明白了特征值和特征向量的求法,但总觉得没有用。在《理解矩阵》一文中,虽然提到了这与矩阵的本质有关,但并未详细提及,但我知道了一定具有一定的几何意义。

后来,查看了《特征向量的几何意义》一文,才明白了。特别是wikipedia中关于《特征向量》的文章,终于对特征向量有了一点认识。

      

因为l是常数,所以lx与x的方向相同。即,一个变换的特征向量是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。

下图是从wikipedia的《特征向量》一文中引用的。通过这个图可以对变与不变有一个进一步的了解。

图1. 在这个错切变换中,蒙娜丽莎的图像被变形,但是中心的纵轴在变换下保持不变。(注意:角落在右边的图像中被裁掉了。)蓝色的向量,从胸部到肩膀,其方向改变了,但是红色的向量,从胸部到下巴,其方向不变。因此红色向量是该变换的一个特征向量,而蓝色的不是。因为红色向量既没有被拉伸又没有被压缩,其特征值为1。所有沿着垂直线的向量也都是特征向量,它们的特征值相等。它们构成这个特征值的特征空间
 
在wikipedia的《特征向量》一文中还提到了一个地球旋转的例子,旋转本身是一种线性变化,出来在旋转轴上的向量之外,所有从地心指向地表的向量的方向都变了。在旋转轴上的向量的向量就是这个线性变化的特征向量。
 
说到这我想很多人应该明白了,矩阵是一种线性变化,特征向量就是在这个变化当中不变的向量。说白了就是在变化当中寻找不变的东西。这不就是很多学科研究的内容吗?
 
关于这个主题的更多内容可以参考《漫谈高数(四) 特征向量物理意义》一文,该文对这个主题做了一个深入浅出的解释,是一篇比较好的文章。
2014-01-10 15:41:56 OPPOA113 阅读数 8243
  • 秒学面向对象视频课程(C++实践篇)视频课程(50课时...

    封装:是指将事物 的特征和行为抽象为一个类。封装实际上是对事物的抽象过程,依据实际应用,按照主观意识将事物的特征和行为描述为类 继承:是指可以从一个类派生一个子类,子类通过继承具有了父类的特征和行为,并且可以在子类中添加自己的特征和行为 多态:是指对于相同的调用或操作,作用于不同的对象,而导致其行为也不同,它增强了软件的灵活性和重要性 有问题咨询老师微信,微信号:mikeshizhanbiao

    24048 人正在学习 去看看 师占标

注:以下为个人学习笔记、知识整理

1.特征值

从线性变换入手,把一个矩阵当作一个线性变换在某一组基下的矩阵,而最简单的线性变换就是数乘变换。

特征值的意义就是:目的就是看看一个线性变换对一些非零向量的作用是否能够相当于一个数乘变换,特征值就是这个数乘变换的变换比。

特征值得简单理解就是:输入x到系统A中,输出得到的是输出x的landa倍。

2.特征向量

公式当中的x就是特征向量。

我们更关心的是把原先的线性空间(如A)分解成一些和特征向量相关的子空间的直和。

这样我们的研究就可以分别限定在这些子空间上来进行,这和物理中在研究运动的时候将运动分解成水平方向和垂直方向的做法是一个道理!

 特征值是针对方阵而言的。

3.特征值和特征向量在图像处理的含义

我们知道,一个变换可由一个矩阵乘法表示,那么一个空间坐标系也可视作一个矩阵,而这个坐标系就可由这个矩阵的所有特征向量表示,用图来表示的话,可以想象就是一个空间张开的各个坐标角度,这一组向量可以完全表示一个矩阵表示的空间的“特征”,而他们的特征值就表示了各个角度上的能量(可以想象成从各个角度上伸出的长短,越长的轴就越可以代表这个空间,它的“特征”就越强,或者说显性,而短轴自然就成了隐性特征),因此,通过特征向量/值可以完全描述某一几何空间这一特点,使得特征向量与特征值在几何(特别是空间几何)及其应用中得以发挥。

4.矩阵论之图像处理

矩阵论在图像中的应用比如有PCA( Principal Component Analysis)主成分析方法,选取特征值最高的k个特征向量来表示一个矩阵,从而达到降维分析+特征显示的方法。一般而言,这一方法的目的是寻找任意统计分布的数据集合之主要分量的子集。相应的基向量组满足正交性且由它定义的子空间最优地考虑了数据的相关性。将原始数据集合变换到主分量空间使单一数据样本的互相关性降低到最低点。

5.PCA例子说明

      对于一个k维的feature来说,相当于它的每一维feature与其他维都是正交的(相当于在多维坐标系中,坐标轴都是垂直的),那么我们可以变化这些维的坐标系,从而使这个feature在某些维上方差大,而在某些维上方差很小。例如,一个45度倾斜的椭圆,在第一坐标系,如果按照x,y坐标来投影,这些点的x和y的属性很难用于区分他们,因为他们在x,y轴上坐标变化的方差都差不多,我们无法根据这个点的某个x属性来判断这个点是哪个,而如果将坐标轴旋转,以椭圆长轴为x轴,则椭圆在长轴上的分布比较长,方差大,而在短轴上的分布短,方差小,所以可以考虑只保留这些点的长轴属性,来区分椭圆上的点,这样,区分性比x,y轴的方法要好!

所以我们的做法就是求得一个k维特征的投影矩阵,这个投影矩阵可以将feature从高维降到低维。投影矩阵也可以叫做变换矩阵。新的低维特征必须每个维都正交,特征向量都是正交的。通过求样本矩阵的协方差矩阵,然后求出协方差矩阵的特征向量,这些特征向量就可以构成这个投影矩阵了。特征向量的选择取决于协方差矩阵的特征值的大小。

举一个例子:

对于一个训练集,100个sample,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的协方差矩阵(解释在第6),然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个sample的维数下降了。

当给定一个测试的特征集之后,比如1*10维的特征,乘以上面得到的10*4的特征矩阵,便可以得到一个1*4的特征,用这个特征去分类。

所以做PCA实际上是求得这个投影矩阵,用高维的特征乘以这个投影矩阵,便可以将高维特征的维数下降到指定的维数。

6.协方差矩阵

	定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。例如x是变量,μ是均值,协方差矩阵等于E[(x-μ)(x-μ)^t],物理意义是这样的,例如x=(x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与xn的协方差,若m=n,则是xn的方差。如果x的元素之间是独立的,那么协方差矩阵只有对角线是有值,因为x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。
一般多变量分布的时候(例如多元高斯分布)会用到协方差矩阵,工程上协方差矩阵也用来分析非确定性平稳信号的性质以及定义非确定性向量的距离(马哈拉诺比斯范数)。



2017-06-04 16:58:11 coming_is_winter 阅读数 10173
  • 秒学面向对象视频课程(C++实践篇)视频课程(50课时...

    封装:是指将事物 的特征和行为抽象为一个类。封装实际上是对事物的抽象过程,依据实际应用,按照主观意识将事物的特征和行为描述为类 继承:是指可以从一个类派生一个子类,子类通过继承具有了父类的特征和行为,并且可以在子类中添加自己的特征和行为 多态:是指对于相同的调用或操作,作用于不同的对象,而导致其行为也不同,它增强了软件的灵活性和重要性 有问题咨询老师微信,微信号:mikeshizhanbiao

    24048 人正在学习 去看看 师占标

图像处理之特征提取(二)之LBP特征简单梳理


  LBPLocal Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子,具有多分辨率、灰度尺度不变、旋转不变等特性。主要用于特征提取中的纹理提取。
  纹理是个什么概念呢?具体定义为:泛指物体面上的花纹或线条,是物体上呈现的线形纹路。在图像处理中一般理解也就是灰度变化引起的某些特征反应。具体深一步了解:ChenLee_1 ,http://blog.csdn.net/carson2005/article/details/44676281,纹理特征简介
  总体来讲LBP特征提取及算法比较好理解,对于其整体性认识与理解请移步:
       zouxy09,http://blog.csdn.net/zouxy09/article/details/7929531,目标检测的图像特征提取之(二)LBP特征
  老子今晚不加班,http://blog.csdn.net/hqh45/article/details/24501097,LBP特征理解
  其中涉及原理步骤算法讲解的很清楚,这里不再赘述,这里把其中几点重点介绍一下:

  一、灰度不变性

  
图1
以原始的LBP3*3的局部区域为例,最后编码形成的01111100八位码体现的只是邻域对于中心像素差值的相对量,像素值本身的大小体现出来,所以这里你可以想象一下,把一幅灰度图的所有像素对应加上一个常数C,最后得出的图像LBP特征码是一样的,常数C在局部像素差值中已经消掉了。这里联系一下HOG特征,最后的梯度值是不是也是灰度不变的?可以思考一下。

二、支持多分辨率  

  LBP算子在每个像素点都可以得到一个LBP“编码”,那么,对一幅图像(记录的是每个像素点的灰度值)提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”(记录的是每个像素点的LBP值)。

图2

  在圆形LBP中只要不断改变P和R的大小(即图像处理中常用的所谓“窗口大小”的概念),即可以让LBP具有多分辨率识别的特性。这句话看起来没有什么问题,但是仔细想却抓不住其中的具体原理,变换P,R就可以提取在多分辨率中适用的LBP特征?这里的前提是某个特征存在于连续的一个局部空间内,举个例子,某个特征存在于R∈(x,y)的区间,变换R可以提取不同分辨率下的同一特征,假设某个特征只存在于R=x的一个圆上,你变换个R就肯定提取不到对应的特征了,不知表述清楚没?但这是特殊情况,一般特征存在于不可能是单个像素宽度或长度级别。(这一块还是有待进一步学习)。最后的实验结论是具有多分辨率特性是成立的,处理单张图片,对应RP取(2,8)(3,16)(4,24)三组数据,结果图3所示,可以看到纹理的细腻程度不同。一个自我理解无具体依据的推断:LBP中PR效果类似于SIFT中σ,最后造成图像影响就是模糊的效果,达到多分辨率提取特征的目的。这里说是多分辨率而不是尺度不变,因为最后检测时根据简单几组PR提取的对应LBP特征还是只适用于不同PR对应的几组固定的具体大小图像,而没有达到对于所有大小图像适用的尺度不变特性。


图3

三、等价模式

  有一类模式在图像中出现的频率及其高,这类模式就是等价模式,它们都有一个特性,就是黑白跳变数量都小于等于2。另外我们也可以推出,在P邻域中,等价模式的个数U为:U=P*(P-1)+2。
   上面这句话意思主要是由于PR的增加,LBP码的长度对应增加,对应的码的数量呈指数增长,2^P次个,不利于计算,找一种方法将编码数量降低一点。
  重点U=P*(P-1)+2,这个东东是怎么来的?具体公式啥的没找到,感觉应该存在比较简单的推导方法,这里的方法比较笨。  

  编码由01组成,这里单独拿出0来计算,怎样保证0/1之间的跳变满足≤2呢?一种情况所有的0都在编码中聚在一起(设为情况1),如100011,110001这种,另一种是0分开两拨,但只能存在于编码的最左端与最右端(设为情况2),如011100,001110这种,其余的(010110,001011)跳变次数都大于2了。设定P为偶数。为了表述方便表后半部分取P=4示例。


图4

  等价模式这里的跳变次数为≤2,,变成3,4等可不可以呢(?)?最后实验证明(这是个统计量?还是公式计算量?):尽管等价模式(≤2)只占了全部模式的一小部分,但表明这一小部分等价模式能够刻画90%以上的纹理特征。这里其实可以简单想象一下,在一个LBP局域中跳变1,2次是正常的,假设跳变次数太多,也就是0/1之间转换的太快,局域内就成了黑白相间的噪声了,体现不出来纹理。


参考文献:

部分上已给出。

迈克老狼2012,http://www.cnblogs.com/mikewolf2002/p/3438698.html,,  (里面包含LBP特征提取opencv源码)    OpenCV学习(39) OpenCV中的LBP图像








2019-10-21 09:38:36 sddzlsc 阅读数 76
  • 秒学面向对象视频课程(C++实践篇)视频课程(50课时...

    封装:是指将事物 的特征和行为抽象为一个类。封装实际上是对事物的抽象过程,依据实际应用,按照主观意识将事物的特征和行为描述为类 继承:是指可以从一个类派生一个子类,子类通过继承具有了父类的特征和行为,并且可以在子类中添加自己的特征和行为 多态:是指对于相同的调用或操作,作用于不同的对象,而导致其行为也不同,它增强了软件的灵活性和重要性 有问题咨询老师微信,微信号:mikeshizhanbiao

    24048 人正在学习 去看看 师占标

图像处理中,特征点指的是图像灰度值发生剧烈变化的点或者在图像边缘上曲率较大的点(即两个边缘的交点)。图像特征点在基于特征点的图像匹配算法中有着十分重要的作用。图像特征点能够反映图像本质特征,能够标识图像中目标物体。通过特征点的匹配能够完成图像的匹配。 [1] 

2017-07-31 20:36:36 woainishifu 阅读数 33631
  • 秒学面向对象视频课程(C++实践篇)视频课程(50课时...

    封装:是指将事物 的特征和行为抽象为一个类。封装实际上是对事物的抽象过程,依据实际应用,按照主观意识将事物的特征和行为描述为类 继承:是指可以从一个类派生一个子类,子类通过继承具有了父类的特征和行为,并且可以在子类中添加自己的特征和行为 多态:是指对于相同的调用或操作,作用于不同的对象,而导致其行为也不同,它增强了软件的灵活性和重要性 有问题咨询老师微信,微信号:mikeshizhanbiao

    24048 人正在学习 去看看 师占标

在线性代数的最后,我们都会学矩阵的特征值分解,我们知道一个方阵A经过特征值分解后就得到特征向量和特征值了。那么,这个所谓的特征值和特征向量到底是什么东西呢?


我们一上来就会学到这样的一个公式:

Ax = λx,其中x是一个向量

这个式子是如此的简单粗暴,以致于从这个公式来看,给向量x乘上一个矩阵A,只是相当于给这个向量乘上了一个系数λ。偌大一个矩阵A对向量x的作用竟然本质上不过只是和一个小小的数字λ相同而已!!!


所以这个矩阵分解方法到底具有什么样的意义?


首先给出概念上的一种解释。所谓的特征值和特征向量,最重要的是理解“特征”这两个字,特征向量翻译为eigen vector, eigen这个单词来自德语,本义是在“本身固有的,本质的”。纯数学的定义下,并不能很明白地理解到底为什么叫做特征值和特征向量。但是举一个应用例子,可能就容易理解多了。


在图像处理中,有一种方法就是特征值分解。我们都知道图像其实就是一个像素值组成的矩阵,假设有一个100x100的图像,对这个图像矩阵做特征值分解,其实是在提取这个图像中的特征,这些提取出来的特征是一个个的向量,即对应着特征向量。而这些特征在图像中到底有多重要,这个重要性则通过特征值来表示。比如这个100x100的图像矩阵A分解之后,会得到一个100x100的特征向量组成的矩阵Q,以及一个100x100的只有对角线上的元素不为0的矩阵E,这个矩阵E对角线上的元素就是特征值,而且还是按照从大到小排列的(取模,对于单个数来说,其实就是取绝对值),也就是说这个图像A提取出来了100个特征,这100个特征的重要性由100个数字来表示,这100个数字存放在对角矩阵E中。在实际中我们发现,提取出来的这100个特征从他们的特征值大小来看,大部分只有前20(这个20不一定,有的是10,有的是30或者更多)个特征对应的特征值很大,后面的就都是接近0了,也就是说后面的那些特征对图像的贡献几乎可以忽略不计。我们知道,图像矩阵A特征值分解后可以得到矩阵Q和矩阵E:

那么反推出去,把右边的三个矩阵相乘肯定也能得到矩阵A。既然已经知道了矩阵E中只有前20个特征值比较重要,那么我们不妨试试把E中除了前20个后面的都置为0,即只取图像的前20个主要特征来恢复图像,剩下的全部舍弃,看看此时会发生什么:

原图:【注意:特征值分解要求必须是nxn的方阵,如果不是行列相等的方阵,请使用奇异值分解】


只取前10个特征值:


只取前20个特征值:


只取前50个特征值:


只取前100个特征值:



我们可以看到,在只取前20个特征值和特征向量对图像进行恢复的时候,基本上已经可以看到图像的大体轮廓了,而取到前50的时候,几乎已经和原图像无异了。明白了吧,这就是所谓的矩阵的特征向量和特征值的作用。


我们再来从数学定义上尝试去理解。对应一个给定的矩阵A,如果有一个向量v,使得矩阵A作用于v之后(即A和v相乘),得到的新向量和v仍然保持在同一直线上,像下面这样:

{\displaystyle Av=\lambda v}

那么就称向量v是矩阵A的一个特征向量,而λ就是特征向量v对应的特征值【一个特征向量一定对应有一个特征值】。

注意这个定义中的要点,我们都知道矩阵其实就是一个线性变换,向量v在经过矩阵A这个线性变换之后,新向量和原来的向量v仍然保持在同一直线上,也就是说这个变换只是把向量v的长度进行了改变而保持方向不变(在特征值是负数的情况下,新向量的方向是原来方向的反向,即180°反方向)。


为了理解这个概念,我们再看维基百科上关于特征向量给出的一个《蒙娜丽莎》的例子:

当蒙娜丽莎的图像左右翻转时,中间垂直的红色向量方向保持不变。而水平方向上黄色的向量的方向完全反转,因此它们都是左右翻转变换的特征向量。红色向量长度不变,其特征值为1。黄色向量长度也不变但方向变了,其特征值为-1。橙色向量在翻转后和原来的向量不在同一条直线上,因此不是特征向量。


所以归根结底,特征向量其实反应的是矩阵A本身固有的一些特征,本来一个矩阵就是一个线性变换,当把这个矩阵作用于一个向量的时候,通常情况绝大部分向量都会被这个矩阵A变换得“面目全非”,但是偏偏刚好存在这么一些向量,被矩阵A变换之后居然还能保持原来的样子,于是这些向量就可以作为矩阵的核心代表了。于是我们可以说:一个变换(即一个矩阵)可以由其特征值和特征向量完全表述,这是因为从数学上看,这个矩阵所有的特征向量组成了这个向量空间的一组基底。而矩阵作为变换的本质其实不就把一个基底下的东西变换到另一个基底表示的空间中么?


图像处理特征提取

阅读数 4375

没有更多推荐了,返回首页