首先,我们需要知道几个简单的知识:
1、任何一张灰度图片都是由二维的像素组成的,每一个像素对应一个颜色块(这一点用过ps的应该比较了解),其对应一个二维的矩阵;
2、对于RGB色彩的图像来说,每一维度分别是RGB的一个分量,整张图像对应一个三维矩阵;
3、利用SVD分解用于压缩图片可以在满足清晰度需求的情况下尽可能的减少图片的大小,也就是所占的存储空间。
其次,首先将matlab测试代码展示如下,代码中的每一步都做了注释:
我们来使用如下图片来进行测试: 其图片大小为554kb
我们分别测试代码中取特征值为10,50,100三种情况,来看看有什么变化 k=10时:图像大小为242kb
k=50时:图像大小为329kb
k=100时:图像大小为370kb
我们发现随着取的特征值k的不断增大,图像会越来越清晰,但是当图片清晰到一定程度之后,我们继续增加特征值的数值时会发现清晰度没有明显的变化,此时像素分辨率超出了人眼识别的敏感区,所以只需要在满足个人清晰度需求的情况下选取合适的特征值即可。
最后,还需要注意的一点是,用户所取的特征值k不能超过原矩阵的秩,否则将会报错!
————————————————
版权声明:本文首发于个人CSDN,未经允许严禁转载。