图像处理中的数学知识
矩阵的特征值、特征向量的概念
这里,我们讨论的是
n 阶的方阵A
定义
从向量的定义可知,它是方向和长度的结合体。当一个线性变换
其中,
从公式(1)中,可以看出特征向量和特征值的计算方法:
对应于同一个线性变换
公式(2)的左侧,总可以展成如下形式的多项式:
所以求特征值就是求下面方程的解:
关于从方程(4)得到的特征值,有几个比较重要的结论(参考资料1):
-
n 阶矩阵在复数范围内,一定有n 个特征值(重特征值按重数计算个数)。 -
n 阶矩阵在实数范围内有多少个特征值是不一定的 -
n 阶实对称矩阵可以看成是一个特例,因为它一定有n 个实特征值(重特征值按重数计算个数)。如果其中一个特征值λ=0 ,矩阵的秩r(A)=k ,(0<k<n ,k 是正整数),则λ=0 恰为A 的n−k 重特征值。 - 如果
n 阶矩阵A 不是对称矩阵,那么,λ=0 至少为A 的n−k 重特征值。
关于特征值和特征向量的理解,参考资料3写的也很好,知乎上有很多大神的回答直击要害,对问题的理解很有帮助。
作用
参考资料4中,认为矩阵的变换有三个作用:旋转,拉伸和投影。
当
其中正交矩阵
当矩阵不是方阵而是
在之前,想研究一下正交矩阵。
正交矩阵
按照定义,正交矩阵是
正交矩阵的性质
了解正交矩阵的性质,在很多计算方面,能够更深入了解所进行的运算的意义。
我们这里说的都是有限维欧式空间内的正交矩阵
- 正交矩阵的转置、伴随矩阵、之间的积矩阵都是正交矩阵;
- .每一行(列)都是单位向量
- 任意两行或两列相互垂直
- 其行列式等于±1
假设
根据正交矩阵行列式的值,将其分为两类:
第一类正交矩阵,当其左乘一个向量时,几何意义是使该量在
第一类正交矩阵,当其左乘一个向量时,几何意义是使该向量沿
无论是哪一类正交矩阵,其左乘向量,均不会改变向量的长度,即
所以上面将矩阵
需要注意的是,只有当矩阵
SVD分解
协方差
假设有两个变量
根据奇异值分解
与
那么得到的U是一个
求法
利用如下公式可以计算出各矩阵:
对方程计算,得到的
作用
当矩阵
用奇异值分解图像
用奇异值的方法,将这幅图像进行分解,得形如
我们分别保留前10,30,100,300个奇异值,其余奇异值设为0,比较图像的变化:
奇异值保留前10
奇异值保留前30
奇异值保留前100
奇异值保留前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)
参考资料
- 秦川, 李小飞. 方阵的秩与特征值的关系[J]. 课程教育研究:学法教法研究, 2015(27):120-120.
- 如何通俗易懂地解释「协方差」与「相关系数」的概念?
- 如何理解矩阵特征值?马同学的回答
- 矩阵的特征值分解与奇异值分解的几何意义
- 杜美华, 孙建英. 正交变换的几何意义及其应用[J]. 哈尔滨师范大学自然科学学报, 2014, 30(3):36-39.
上一篇: 矩-图像处理中的距
推荐阅读
-
如何优雅地处理Django中的favicon.ico图标详解
-
ORACLE DATAGUARD中手工处理日志v$archive_GAP的方法
-
Python中针对函数处理的特殊方法
-
python处理json数据中的中文
-
PHP 图像处理与SESSION制作超简单验证码的方法示例
-
python将处理好的图像保存到指定目录下的方法
-
Android多线程处理机制中的Handler使用介绍
-
Python中的异常处理try/except/finally/raise用法分析
-
.net core webapi 文件上传在 Swagger 文档中的有好提示处理
-
PHP开发框架kohana中处理ajax请求的例子