奇异值分解(SVD)和图像矩阵的分解测试

本文介绍了奇异值分解(SVD)的基本概念,强调了SVD在简化数据和优化数据表达形式中的作用。通过MATLAB和Python测试图像SVD,发现前50个奇异值即可保留原图大部分信息。SVD在图像压缩、降噪、音频滤波、矩阵伪逆计算以及模式识别等领域有广泛应用。

· SVD简单介绍

在很多情况下,数据的绝大部分信息往往集中在很小一部分数据上,我们知道线性代数中有很多矩阵的分解技术可以将矩阵表示成易于处理或是表达简化的形式。最常见的一就种是SVD(Singular Value Decomposition)算法。

SVD将数据分解成三个矩阵U,S,VT,这里得到的S是一个对角阵,其中对角元素为奇异值,它代表着矩阵的重要特征,从左上角到右下角重要程度递减。因为奇异值往往对应着矩阵中隐含的重要信息,而且奇异值大小与重要性正相关。

优点:简化数据,优化数据的表达形式。
缺点:难于计算。

关于奇异值分解的定义和相关推导,推荐参考这篇文章,介绍的非常清晰易懂:机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用

故公式什么的这里就不列出了,理解了理论后,我们来小小测试一下,以体会其强大之处。


· matlab测试图像SVD

这里使用的是matlab函数svd():[U,S,V]=svd(A);
SVD的matlab测试代码如下:

clear,clc;
close all;

img = double(imread('room1.tif')); %[256,256]

figure(1);
subplot(331);imshow(img,[]);title('original');
[m,n] = size(img);
%返回与img同大小的对角矩阵S,两个酉矩阵U和V,且满足img=U*S*V'
[U,S,V] = svd(img);
%若img大小为m×n,则U为m×m矩阵,V为n×n矩阵.S为m×n矩阵,奇异值在S的对角线上

decomp = U(:,:)*S(:,1)*V(:,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值