图像处理中的数学知识

矩阵的特征值、特征向量的概念

这里,我们讨论的是 n 阶的方阵 A

定义

从向量的定义可知,它是方向和长度的结合体。当一个线性变换 A 作用在 n 维线性空间 V 中的某一非零向量 x 上时,便是对该向量的长度和方向进行变化。然而,存在一些向量,线性变换 A 并没有改变其方向,而只是改变了长度,这种向量,叫做线性变换 A 特征向量,它在变换中被改变的倍数,叫做它的特征值。用数学公式表示这一概念,即:

Ax=λx(1)

其中, λ 的个线性变换 A 的某一个特征值。从公式上可以轻易发现,如果某一向量 x 是线性变换 A 的特征向量,那么与其方向相同的任意长度(不为零)向量,都是 A 的特征向量,并且属于同一个特征值 λ 。由于相同方向的特征向量具有相同特征值,我们可以同特征值来描述这一族向量( 同一个特征值,可以有多个方向的特征向量)。
从公式(1)中,可以看出特征向量和特征值的计算方法:
|λEA|=0(2)
(λEA)x=0(3)

对应于同一个线性变换 A ,可以有多个特征向量(方向不同),但是有多个特征向量可以对应同一个特征值。 一个向量是一个方向,两个不同方向的向量就可以张成一个空间。在相同特征值的特征向量张成的空间内,任何一个向量在变换 A 下,都有相同的放大倍数 λ

公式(2)的左侧,总可以展成如下形式的多项式:

|λEA|=λn(a11+a22++ann)λn1++(1)n|A|

所以求特征值就是求下面方程的解:

λn(a11+a22++ann)λn1++(1)n|A|=0(4)

关于从方程(4)得到的特征值,有几个比较重要的结论(参考资料1):

  1. n 阶矩阵在复数范围内,一定有 n 个特征值(重特征值按重数计算个数)。
  2. n 阶矩阵在实数范围内有多少个特征值是不一定的
  3. n 阶实对称矩阵可以看成是一个特例,因为它一定有 n 个实特征值(重特征值按重数计算个数)。如果其中一个特征值 λ=0 ,矩阵的秩 r(A)=k ,( 0<k<n k 是正整数),则 λ=0 恰为 A nk 重特征值。
  4. 如果 n 阶矩阵 A 不是对称矩阵,那么, λ=0 至少为 A nk 重特征值。

关于特征值和特征向量的理解,参考资料3写的也很好,知乎上有很多大神的回答直击要害,对问题的理解很有帮助。

作用

参考资料4中,认为矩阵的变换有三个作用:旋转拉伸投影
A 是一个 n×n 方阵时,只涉及到旋转,拉伸。如果矩阵在实数域内可以得到 n 个特征值(重特征值按重数计算个数),那么利用其对应的特征向量(单位化后)组成矩阵正交 Q 可以使得:

A=QΛQ1

其中正交矩阵 Q 起到旋转作用( 旋转矩阵都是正交矩阵,且行列式都为1),对角矩阵 Λ 起拉伸作用。
当矩阵不是方阵而是 m×n 时,可以对其进行 SVD分解
在之前,想研究一下正交矩阵。

正交矩阵

按照定义,正交矩阵是 QQT=E ,它的行列式为1或者-1。

正交矩阵的性质

了解正交矩阵的性质,在很多计算方面,能够更深入了解所进行的运算的意义。
我们这里说的都是有限维欧式空间内的正交矩阵

  1. 正交矩阵的转置伴随矩阵、之间的积矩阵都是正交矩阵;
  2. .每一行(列)都是单位向量
  3. 任意两行或两列相互垂直
  4. 其行列式等于±1

假设 n 维欧式空间 Rn 中,一个正交变换 Q 存在一个一一对应的正交矩阵 Q 。所以研究正交变换的性质,可以转为研究正交矩阵。
根据正交矩阵行列式的值,将其分为两类: |Q|=1 ,为第一类; |Q|=1 ,为第二类。
第一类正交矩阵,当其左乘一个向量时,几何意义是使该量在 Oxyz 坐标系下旋转;
第一类正交矩阵,当其左乘一个向量时,几何意义是使该向量沿 Oxyz 某一轴(点)进行反射;[5]
无论是哪一类正交矩阵,其左乘向量,均不会改变向量的长度,即 |Qv|=|Q||v|=|v|
所以上面将矩阵 A 拆成 A=QΛQ1 的形式后,由于 Q 是正交矩阵,它作用在向量 v 上,只是对其进行旋转或者反射,而对向量长度有影响的是矩阵 Λ 。其上的元素由矩阵 A 的特征值组成。
需要注意的是,只有当矩阵 A 能够在实数域内有n个特征值(重数也计入)的情况下,可以如此分解。但是,对更多的一般性矩阵 A ,在实数域内没有 n 个实特征根,或者是更一般的 m×n 维矩阵,此时,我们用SVD分解的方法进行研究。

SVD分解

协方差

假设有两个变量 X Y ,他们的取值为 X={x1,x2,,xn} Y={y1,y2,,yn} ,他们的平均值(期望)记为是 E(X)=X¯=1nxi E(Y)=Y¯=1nyi X Y 的协方差就是研究两个变量之间的相关关系。比如当一个的取值不断增大时,另一个变量的取值如何变化,知乎上的一篇文章( 如何通俗易懂地解释「协方差」与「相关系数」的概念?)讲的很好。

根据奇异值分解

n×n 阶矩阵按特征值分解相似,任一 m×n 阶矩阵 A 也可以写成类似的形式:

A=UΣVT(5)

那么得到的U是一个 m×m 的方阵(里面的向量是正交的, U 里面的向量称为左奇异向量), Σ 是一个 m×n 的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值), VT ( V 的转置)是一个 n×n 的矩阵,里面的向量也是正交的, V 里面的向量称为右奇异向量)。

求法

利用如下公式可以计算出各矩阵:

(ATA)vi=λivi(6)

δi=λi(7)

ui=1δiAvi(8)

对方程计算,得到的 v ,就是的 右奇异向量 σ 就是 奇异值 u 就是 左奇异向量

作用

当矩阵 A=UΣVT 左乘一个向量 v 时,只有 Σ 对向量的长度进行了拉伸(收缩),而矩阵 U V 都只是对其进行旋转或反射。当作用在图像上时,也只有 Σ 对图像进行了各个方向上的伸缩改变。

用奇异值分解图像

这里写图片描述
用奇异值的方法,将这幅图像进行分解,得形如 A=UΣVT 格式的矩阵。其中 Σ 是由矩阵奇异值由大到小排列组成的对角矩阵。
我们分别保留前10,30,100,300个奇异值,其余奇异值设为0,比较图像的变化:
奇异值保留前10
奇异值保留前10
奇异值保留前30
奇异值保留前30
奇异值保留前100
奇异值保留前100
奇异值保留前300
奇异值保留前300。

代码

import cv2
import numpy as np
from numpy import linalg as la  # 用到别名
from scipy.misc import imsave

import scipy
im = cv2.imread('lena512.bmp')
print(im.shape)
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
U, Sigma, VT = la.svd(gray)
print('矩阵U的形状:', U.shape, '    矩阵Sigma的形状:',
      Sigma.shape, '    矩阵VT的形状:', VT.shape)
se = np.eye(512, dtype=np.float64)
n = 512
i = 0
k = 30  # 保留特征值数目
# 改变特征值
while i < n:
    if i > k - 1:
        Sigma[i] = 0
    se[i, i] = Sigma[i]
    i += 1

svt = np.dot(se, VT)
usvt = np.dot(U, svt)
imsave('USVT_Sigma=30m.bmp', usvt)

参考资料

  1. 秦川, 李小飞. 方阵的秩与特征值的关系[J]. 课程教育研究:学法教法研究, 2015(27):120-120.
  2. 如何通俗易懂地解释「协方差」与「相关系数」的概念?
  3. 如何理解矩阵特征值?马同学的回答
  4. 矩阵的特征值分解与奇异值分解的几何意义
  5. 杜美华, 孙建英. 正交变换的几何意义及其应用[J]. 哈尔滨师范大学自然科学学报, 2014, 30(3):36-39.

猜你喜欢

转载自blog.csdn.net/jayandchuxu/article/details/80107856
今日推荐