因项目上需要用到特征提取算法,突然想起早些时候看吴军的数学之美里有讲到SVD分解,当时就大致浏览了下,今天在这里用图像作为例子加深下印象,显示下svd特征提取、降维效果。
奇异值分解(Singular Value Decomposition)定理:设A为m*n阶复矩阵,则存在m阶酉阵U和n阶酉阵V,使得:
A = U*S*V’
其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r),r=rank(A)。
推论:设A为m*n阶实矩阵,则存在m阶正交阵U和n阶正交阵V,使得
A = U*S*V’
其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r),r=rank(A)。
算法流程:
1. 读取图像:
2. 对图像进行svd分解,得到svd分解对应的图像
其中,上图第三幅代表分解后的特征值(这里用直方图显示其结果值),从图中可以看出,特征值从大到小依次排列,特征值分解可以用在主成分分析(PCA)中,可以利用分解的矩阵恢复或者近似原图像。比如,取前10特征值时恢复如下:
取前20个特征时时恢复如下:
取前40个特征时时恢复如下:
参考文献:吴军--数学之美
奇异值分解(SVD) --- 几何意义 http://blog.chinaunix.net/uid-20761674-id-4040274.html