矩阵的秩和图像的秩的一些了解

参考链接:cv论文(Low-rank相关)_weixin_30790841的博客-CSDN博客

相关论文

第一篇:RASL: Robust Alignment by Sparse and Low-rank Decomposition for Linearly Correlated Images ,这是我接触Low-rank的第一篇文章,文章利用Low-rank的算法进行图片的对齐(Alignment)同时还可以有效的去遮挡,从实验的效果来看,算法的对齐效果和去遮挡效果还是很好的。不过这种算法只能对批量的图片进行处理,不能对单张图片处理,这也局限了它的应用场景,下面我来简单的介绍下文章的实现过程。

    首先矩阵里面秩的概念相信大家都很熟悉,假设给定我们同一个人的10张图片,如果这10张图片表情,光照,人脸的偏斜角度都是一模一样的,并且没有受到任何噪声的干扰没有任何的遮挡。那么把这10张图片拉成列构成一个矩阵,理想的角度来讲,这个矩阵的秩应该是1,我们可以认为这10张图片是完全对齐的的。如果这10张图片中只有少数图片不是对齐的,被遮挡了,位置偏移了或者受到了光照的影响,那么把这10张图片放在一起构成的矩阵,矩阵的秩肯定就不为1。如果这10张人脸的图片,相互的差异都非常大,那么把它们放在一起构成的矩阵,秩就可能是满纸的。从这个角度来说,我们可以认为low-rank是图片对齐的一种数学上的表示。由于实际情况中,对齐的图片不可能完全一样,所以不可能为1,但是我们可以放宽条件,当样本所组成的矩阵,秩比较小时,可以认为样本对齐的效果是比较好的。这就是文章的主要数学思想,貌似很简单是吧,不过要实现却不是那么容易,其中涉及到了大量的数学运算。

参考链接:矩阵的秩,特征值和特征向量 矩阵基础概念_TranSad的博客-CSDN博客_矩阵的秩和特征值

矩阵的秩,特征值和特征向量

1.矩阵的秩
 

把一个m*n的矩阵拿出来,可以得到它的行向量组(每一行是一个向量,共m个向量)或者列向量组(每一列是一个向量,共n个向量)。

  我们就拿行向量组来分析:

  假如这m个向量,互相全都是线性无关的,则这个矩阵的秩就是m。其实就是:有几个线性无关,则这个矩阵的秩就是几。什么是“线性无关呢”,举个例子,向量[1,2,1]和向量[2,4,2]一看就知道是*2的关系,则这两者“现行有关”;若是向量[1,2,1]和向量[1,5,2],则这两个矩阵线性无关。

  要判断a1,a2,a3是否线性无关,可以令k1a1+k2a2+k3a3=0,通过解方程的方式来判断是否a1,a2,a3线性无关。若k1=k2=k3=0,则线性无关。

  这里有个规律:不管是拿矩阵的行向量组还是列向量组来计算,最终得到的秩都是一样的。

  我的理解:矩阵的秩就是矩阵当中互不相关的向量的个数。

2.矩阵的特征值和特征向量
 

首先明确,矩阵乘以向量,可以对向量起到拉伸和旋转的作用。

  比如我现在有一个向量(1,1)

  则它现在是这样的:

若拿一个矩阵乘以这个向量(1,1),比如拿这个矩阵来乘:

 可以看出我们会得到结果(2,1),画在图上就是这个效果:

 

          可以发现这里我们只用了一个对角矩阵,实现了对原向量在横坐标上的一个拉伸。再进一步思考,其实如果矩阵的右上角不为0,或者左下角不为0(假设是个正值),则分别会导致原向量向右旋转或向左旋转。可以得到结论:矩阵可以作用到一个向量,使其旋转或拉伸。

         那有没有一类向量,我使用一个矩阵去作用之后,它的方向不变呢?有!通过这样就可以引出特征值和特征向量来:

         对于一个矩阵A,我们寻找一个非零向量x,使得A作用后的x(即Ax)与x平行,并且大小上满足Ax=λx(λ是个常数)。一旦找到这样的存在,则x就是特征向量,λ就是特征值

         换个通俗的说法:我们用矩阵A去作用(乘以)世界上所有的向量。其中矩阵A作用后的大部分向量都会被旋转和拉伸,只有矩阵A的特征向量能够独善其身(保持原有的方向)~

  其实,特征向量就代表了矩阵当中的“某一方向”,它能够代表矩阵的关键信息。所以这样两个拥有同样特征的存在相互作用,方向自然不会改变了。而且他们“方向”越一致(越是同道中人~),作用的结果就会越大,λx当中的特征值λ也会越大,因此特征值λ的大小也代表了这个特征向量的重要程度(相比于这一矩阵的其他特征向量)。我记得学习和接触PCA降维的时候,特征值越大的特征向量就越重要,因为这样的向量更能代表图像特征,就是这个意思。

         一个矩阵有多个特征向量,我们用特征空间来表示所有这些。即特征空间包含了所有的特征向量。

        我们来看特征值和特征向量的定义。我们来结合矩阵与空间变换的理解,矩阵对向量的作用,就是相当于把原来的空间变换到新的空间;如果我们用矩阵是线性变换的理解(形象理解线性代数(一)——什么是线性变换?),那么说就是对原来的基底的变换。

         从空间的角度来理解,对于向量乘以系数其实就是对向量的缩放(长度或正负方向发生改变,但还是在同一直线上),而矩阵(方阵)的作用是空间的转变。如果一个矩阵对一个向量的作用只是对其进行了缩放,而没有角度的改变,那么这个向量就叫做特征向量,而缩放的比例就叫做特征值。(参考链接:https://blog.csdn.net/qq_34099953/article/details/84291180

参考链接:图像的秩与矩阵的秩_深度瞎学的博客-CSDN博客_图像矩阵的秩

2、图像的秩和矩阵的秩

矩阵的秩 = 最大的线性无关的行(或列)向量的个数。对于图像而言,秩可以表示图像中包含信息的丰富程度、
冗余程度、噪声。

秩越小:

  • 基的个数少
  • 数据冗余性大
  • 图像信息不丰富
  • 图像噪声少

低秩矩阵

概念

当矩阵的秩较低时(r << n, m),就可以视其为低秩矩阵。低秩矩阵意味着,此矩阵中有较多的行(或列)是线性相关,即:信息冗余较大。

作用

  • 利用低秩矩阵的冗余信息,可以对缺失数据进行恢复,此问题叫做 “低秩矩阵重构” ,即:“假设恢复出来的矩阵是低秩的,利用已有的矩阵元素,恢复出矩阵中的缺失元素”,可以应用在图像修复、协同过滤等领域。
  • 在深度学习中,卷积核的参数过多,往往存在较大的冗余,即:卷积核参数是低秩的。此时,可以对卷积核进行低秩分解,将k × k 的卷积核分解为一个k × 1 和一个1×k的核,这样可以降低参数量、提高计算速度、防止过拟合。

稀疏编码

为什么要稀疏编码?
        首先,存在一个假设(也是事实,算是先验知识)——自然界的信号组成是稀疏的。进行稀疏编码后,可以达到降维,提高计算效率的作用。


图像与秩


问题:如何界定一个图像或一个物体具有低秩属性?具有高秩属性的图像,如存在缺失现象,应如何恢复,现有何方法可以解决?
  回答:在图像处理问题中,图像的秩可以简单理解为图像所包含的信息丰富程度,图像由于局部分块之间的相似性、重复性,往往具有低秩的属性;图像的秩比较高,可能是因为图像噪声的影响,通过低秩的限制,应该能够很好的达到去噪的效果。

你可能感兴趣的:(矩阵,算法,python)