问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

创作时间:
作者:
@小白创作中心

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

引用
CSDN
1.
https://m.blog.csdn.net/m0_66360845/article/details/141985541

特征值分解(EVD)和奇异值分解(SVD)是线性代数中重要的矩阵分解方法,它们在图片压缩领域有着广泛的应用。本文将详细介绍这两种方法的基本原理,并通过实验展示它们在图片压缩中的效果。

一、特征值分解

特征值分解英文缩写为EVD,全称为eigenvalue decomposition。假设一个向量 $\mathbf{v}$ 是 $m \times m$ 阶方阵 $\mathbf{A}$ 的特征向量,那么一定可以表示成下面的形式:

$$
\mathbf{A}\mathbf{v} = \lambda\mathbf{v}
$$

其中,$\lambda$ 是特征值。这种形式在数学上的含义是描述矩阵对向量的变换效果只有拉伸,没有旋转。特征值分解可以表示为:

$$
\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^{-1}
$$

其中,$\mathbf{Q}$ 是特征向量矩阵,$\mathbf{\Lambda}$ 是特征值矩阵。

应用特征值分解对图片进行压缩

假设原图大小为 $m \times m$,保留前 $k$ 个特征值需要存储的点数为 $m \times k + k + k \times m$,定义压缩率为:

$$
r = \frac{m \times k + k + k \times m}{m \times m}
$$

下面是一张大小为 $1024 \times 1024$ 的图片:

保留不同数量的特征值得到的压缩效果如下:

  • 保留前10个特征值(压缩率为0.0196):

  • 保留前100个特征值(压缩率为0.2048):

  • 保留前200个特征值(压缩率为0.4288):

  • 保留前500个特征值(压缩率为1.2150):

  • 保留前988个特征值(压缩率为2.8606):

总结:这张原始图片的秩为988,发现保留前988个特征值就能完全恢复原图像,但是会发现保留特征值个数太多,其实并没有起到压缩的作用。因此特征值分解的确能压缩图片,但是恢复的效果不是很好,而且仅仅适用于方阵。所以接下来继续介绍矩阵的奇异值分解。

三、矩阵的奇异值分解

奇异值分解英文缩写为SVD,全称为singular value decomposition。对于任意一个 $m \times n$ 阶矩阵 $\mathbf{A}$,我们都可以将它分解为:

$$
\mathbf{A} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T
$$

其中 $\mathbf{U}$ 和 $\mathbf{V}$ 是正交矩阵,$\mathbf{\Sigma}$ 是对角矩阵,其主对角线上的每个值我们称为奇异值。

具体原理推导可以参考文章:奇异值分解(SVD分解)———超详细讲解-CSDN博客

本文重在应用。

应用奇异值分解对图片进行压缩

假设原图大小为 $m \times n$,保留前 $k$ 个奇异值需要存储的点数为 $m \times k + k + k \times n$,定义压缩率为:

$$
r = \frac{m \times k + k + k \times n}{m \times n}
$$

还是刚才那张大小为 $1024 \times 1024$ 大小的图片。

保留不同数量的奇异值得到的压缩效果如下:

  • 保留前10个奇异值(压缩率为0.0195):

  • 保留前100个奇异值(压缩率为0.1954):

  • 保留前200个奇异值(压缩率为0.3908):

  • 保留前300个奇异值(压缩率为0.5862):

总结:可以看出奇异值分解的效果比特征值分解好的多,能在起到压缩大小的情况下还能比较好的保留原图像的效果。

五、MATLAB仿真代码

感兴趣的读者可以访问以下链接获取MATLAB仿真代码:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号