【数学和算法】奇异值分解在【图像压缩】中的应用

图片压缩

这篇博客奇异值的物理意义是什么有例子分析使用奇异值分解来进行图像压缩图像去噪,并且对于不是方阵的矩阵也可以分解。

下面这个图像压缩例子是以方阵图像为例,使用暴力分解得到特征值和特征向量。但是一般情况下,图像不是方阵,所以没有特征值,就需要用到SVD奇异值分解来进行压缩。方法点击这里

千万别把本文图像压缩PCA降维当成一回事:

  • 因为PCA降维是降低特征的维度,而本文图像压缩并没有降低特征的维度,也没有求平均值、求协方差、求协方差的特征值和特征向量等操作;
  • 只不过,某些地方和PCA有点像,都是取前k个主要特征;
  • 一个是直接求图像像素的原始矩阵的特征向量,另一个是求原始矩阵的协方差矩阵的特征向量。

这里附上PCA的相关博客:【机器学习】降维——PCA(非常详细)
PCA降维中可能会用到奇异值分解【数学和算法】SVD奇异值分解原理、以及在PCA中的运用


比如说,有下面这么一副512x512的图片(方阵才有特征值,所以找了张正方形的图):
在这里插入图片描述

这个图片可以放到一个矩阵里面去,就是把每个像素的颜色值填入到一个512x512的A矩阵中。
在这里插入图片描述

其中, Λ \color{blue}\Lambda Λ是对角阵,对角线上是从大到小排列的特征值
现在,有了A的特征值,可以求得上面的对角阵 Λ \color{blue}\Lambda Λ,也可以求出特征值对应的特征向量,从而也就得到了P和P的逆,那么就可以反推出矩阵A。

我们在对角阵 Λ \color{blue}\Lambda Λ中只保留前面50个的特征值(也就是最大的50个,其实也只占了所有特征值的百分之十),其它的都填0,P也只保留前50个特征向量,其他特征向量值全部赋值为0,并不是去掉那些向量,重新计算矩阵后,恢复为下面这样的图像:

在这里插入图片描述
效果还可以,其实一两百个特征值之和可能就占了所有特征值和的百分之九十了,其他的特征值都可以丢弃了。
该方法就是使用暴力特征分解,运算时很耗时,我自己测试时,跑程序有明显的卡顿,效率很低,还会求出复数解,不推荐。

上面的图像压缩 A m ∗ m A_{m*m} Amm,把对角阵 Λ \color{blue}\Lambda Λ中的第k个后面的对角元素全置零,那么对应的矩阵 P P P就可以把第k个后面向量也全部置零,这样 P P P就只保存m*k个数, Λ \color{blue}\Lambda Λ只保存k个数,总共保存m*k+k,由于m>>k,所以压缩后需要保存的数字个数肯定远小于保存原始像素矩阵有m*m个值,即m*k+k <<m*m。这样就达到了压缩的目的。需要恢复图像的时候,就可以直接使用这m*k+k个数字即可。

例如,矩阵 A A A为512*512的图像,取矩阵 A A A的前50个特征值,那么,需要保存的数字个数为:512*50+50=25650,而不压缩的话需要存储原始矩阵512*512=262144,一下子少了10倍。


本文的图片压缩借鉴马同学博客 《如何理解矩阵特征值和特征向量?》中的例子,添加了我自己的一些理解和说明。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值