简述
上一篇博文算法学习之SVD理论推导介绍了SVD矩阵分解的完整过程,感兴趣的可以去阅读一下。本文以图像为基础,利用SVD理论对二维图像矩阵进行分解,同时选取不同的特征值个数来对图像进行重构。主要使用OpenCV第三方视觉库完成SVD应用过程,原谅我这个调包小虾米。
使用OpenCV库的SVD功能API函数时,简短说一下SVD的分解矩阵,我们通过对图像矩阵 A A A( m × n m×n m×n,其中 m > n m>n m>n)表示分解为 U U U、 ∑ ∑ ∑、 V V V后,我们从对角矩阵 ∑ ∑ ∑中选取有限( k k k)个特征值保存,这些特征值对应的 U U U与 V V V中的一维向量 u i u_i ui与 v i v_i vi也对应保存,这样就可以用较少的特征值与特征向量来代表整个矩阵 A A A。
假设图像矩阵 A A A的完整表示如下:
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n u n v n T A=σ_1 u_1 v_1^T+σ_2 u_2 v_2^T+⋯+σ_n u_n v_n^T A=σ1u1v1T+σ2u2v2T+⋯+σnunvnT
图像矩阵 A A A( m × n m×n