基于奇异值分解的图像压缩-奇异值分解SVD
基于奇异值分解(SVD)的方法压缩图像MATLAB实现

对图像压缩不是很了解。奇异值分解在matlab中一般用SVD(X)语句
奇异值分解SVD

主要是奇异值分解(Singular Value Decomposition,SVD)的意义,在5G mimo、图像压缩均有应用
如果矩阵是一个对角矩阵,可以理解为 拉伸; 如果是正交(酉)矩阵,可以理解为 旋转 ,当然正交矩阵比旋转矩阵更为一般,正交矩阵包括 旋转 、 反射 以及两者的组合
上图也可以用下图中的式子形式来表示
一个奇异值的大小可以表征它对应的这个秩为1的矩阵在整体展开式中的重要性,如下图的例子,可以看出有最大奇异值的第一项矩阵已经比较接近原矩阵了,这对于图像压缩的启示是:得到图像奇异值分解后,取其奇异值较大的几个矩阵即可,这样可以大大压缩存储空间
利用奇异值分解SVD给大数据降维

大数据定义
数据被定义为过于巨大的数据集合,以至于变得难以使用传统技术来处理。大数据的大体现在三个方面:
使用如此之多的维度进行工作的复杂性驱动了各种各样的数据技术的需求来过滤信息,让数据看起来能更好的解决问题。过滤器通过移除高纬度数据集中的冗余信息来降低维度。
我们可以把将为理解为对数据的信息压缩,类似于压缩1000
1000的图像到64
64分辨率,同样也是能够理解图片的意思的。
在大数据降维的核心算法SVD,我们称之为奇异值分解。SVD的公式是:
这个公式的含义是,原始数据矩阵M被分解为三个矩阵的乘积。
最关键的是要理解s所代表的意思,比如s所有元素的和事100,s的第一个值是99,这就意味99%的信息储存在了U和Vh的第一列中。因此你可以愉快的抛弃第一列之后的所有剩余列,而又不会丢失数据的重要信息,只丢失了1%的信息,对数据来说并不太重要。
这个例子中需要降维的数据M,包含4个样例,每个样例包括3个特征值。下面我们就使用linalg模块的svd函数,进行分解矩阵:
通过s里的值可以看出第一列包含了大部分信息(超过80%)。第二列有些值(大约14%),第三列则包含了参与的信息。
当然svd公式是可逆的,就是分解出来的这三个矩阵还能通过点乘还原原始的矩阵。注意,矩阵s实际上是对角矩阵,还原的时候要使用对角矩阵参与运算。
可以看出还原之后的back_M和之前的M矩阵是一样的。
SVD输出的三个矩阵入手,想办法去除第三列的内容。U取U[:,:2],变成(4,2),s取s[:2],变成了(2,),Vh取Vh[:2,:],变成了(2,3)
可以看出即使丢失最后一列的数值,还原之后和过去相比有一些差别,但是并不是很大。也是就是说可以用更少的维度取保存过去的值。
看到这里你可能都有点疑惑,到底是哪里降维了呢?从过去的(4,3)矩阵,变成现在三个矩阵(4,3)(3,)(3,3),不但维度没有降,而且还增加一些数据。
假如说我们忽略最后一列的信息,变成三个矩阵(4,1),(1,),(1,3),从过去的4x3=12个数字,变成现在的4+1+3个数字,确实是降了。但是我们应该如何利用这三个矩阵参与机器学习中呢?
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注