SVD分解原理及基于SVD分解的图像压缩和去噪

article/2025/9/26 19:37:06

 

SVD分解是矩阵论中的一个知识点,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。SVD分解的公式如下,其中U和V都为正交矩阵,中间的为特征值构成的对角矩阵,相对于正交对角分解,SVD分解的适应性更强,应为A不必是方阵,下面是SVD分解的公式。

用SVD做图像压缩,就是用部分特征值以及左/右奇异矩阵部分列来近似矩阵A。对角矩阵的对角线元素都为非负的实数,且按照大小排列。大的特征值所对应的特征能够反映更多的矩阵信息。由于采用部分特征值及特征向量相对原始矩阵A而言,占用的空间更小,因此能够实现压缩。

%%-----------------------------------------------------
%%SVD分解,并且对图像进行压缩
%%-----------------------------------------------------
clc;clear all;close all;%清屏,关闭所有figure窗口,关闭所有工作空间变量

white=imread('white.jpg');%读入图片
[h w] = size(white(:,:,1));%h,w分别为图像的行数和列数
whiteDb = im2double(white);
imshow(whiteDb);

whiteNoise=imnoise(whiteDb);
figure;
imshow(whiteNoise);


[Sr,Vr,Dr] = svd(whiteDb(:,:,1));%对原始图像的R分量进行分解
[Sg,Vg,Dg] = svd(whiteDb(:,:,2));%对原始图像的G分量进行分解
[Sb,Vb,Db] = svd(whiteDb(:,:,3));%对原始图像的B分量进行分解
digVr = abs(diag(Vr));
figure;
plot([1:100],digVr(1:100),'-o');
xlabel('特征值的下标');ylabel('特征值的绝对值');title('拉伸强度随特征值数量的变换曲线');

%singularNumber = [1 10 30 50 100];%设置要取得奇异值的数量矩阵
%[numi,numj] = size(singularNumber);%取出来singularNumber的维数
%for j=1:numj
Rt = zeros(h,w);%生成SVD重构后的R分量矩阵
Gt = zeros(h,w);
Bt = zeros(h,w);
    for i=1:120%singularNumber(1,j)
        Rt = Rt+Vr(i,i)*Sr(:,i)*Dr(:,i)';%R分量求和
        Gt = Gt+Vg(i,i)*Sg(:,i)*Dg(:,i)';%G分量求和
        Bt = Bt+Vb(i,i)*Sb(:,i)*Db(:,i)';%B分量求和
    end

    ReImg(:,:,1) = Rt;ReImg(:,:,2) = Gt;ReImg(:,:,3) = Bt;
    ReImg = im2uint8(ReImg);
    figure;
    imshow(ReImg);
%end


原始的RGB图片一个分量,所占用的存储空间为m*n,而采用k个特征向量所重构的照片的存储空间为(m+n+1)*k,(m+n+1)<m*n,这就是它能够降低存储空间的原因。

下图是原始图片(像素数:780*1080)

以及采用120个特征值重构的图片(像素数:(780+120+1080)*120)。


http://chatgpt.dhexx.cn/article/VAMRnqKN.shtml

相关文章

矩阵分解SVD

《矩阵分解SVD》   本来是做了一个MobileNetV2中的关于ReLU的一个实验&#xff0c;大体用到的知识是对一个 n ∗ 2 n*2 n∗2 的矩阵通过 2 ∗ m 2*m 2∗m 的随机矩阵映射到 n ∗ m n*m n∗m &#xff0c;经过ReLU函数后再映射回 n ∗ 2 n*2 n∗2 &#xff0c;那么就需要…

t-svd张量分解算法详解

t-svd张量分解算法详解 讲解论文所需基础知识背景知识介绍什么是svd分解&#xff1f;定义1&#xff1a;svd分解 什么是张量&#xff1f; t-svd分解详解正式定义t-svd&#xff01;疑惑问题解惑前需要学习的定义&#xff1a;定义2.1&#xff1a;张量t积 疑惑解答&#xff1a; 讲解…

【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

学习总结 文章目录 学习总结一、三角分解&#xff08;LU分解&#xff09;1.1 高斯消元1.2 LU分解原理1.3 LU分解python代码1.4 LU分解算法 二、QR分解2.1 Schmid 正交化2.2 使用 Schmid 施密特正交化过程求 QR 分解2.3 QR分解的栗子 三、SVD分解3.1 SVD定义3.2 SVD基本理论&…

【六】SVD分解

SVD分解在很多经典应用中都有用到&#xff0c;比如数据压缩&#xff0c;降噪等&#xff0c;PCA也和SVD有着紧密联系&#xff0c;这里记录自己关于SVD分解求解最小二乘解的学习笔记&#xff0c;若有错误请指出&#xff0c;谢谢。 在实践中&#xff0c;由于存在测量误差和多次测…

SVD分解原理详解

在介绍SVD之前&#xff0c;先补充一些基础知识 1.酉矩阵&#xff1a; 2.正规&#xff08;正定&#xff09;矩阵 3.谱分解&#xff1a; 表示正规矩阵&#xff0c;可经由酉变换&#xff0c;分解为对角矩阵&#xff1b;这种矩阵分解的方式&#xff0c;称为谱分解&#xff08;spec…

矩阵分解(四)——SVD分解

目录 矩阵相关术语共轭矩阵&#xff08;Hermite阵&#xff09;特征值相似矩阵A^H^A^H^A酉矩阵酉相抵&#xff08;正交相抵&#xff09;奇异值奇异值分解式特征分解 奇异值分解python代码实现验证结果 np.linalg.svd 利用Python进行SVD分解对图像压缩 矩阵相关术语 共轭矩阵&am…

聊聊特征分解和SVD分解

矩阵分解 矩阵分解(decomposition,factorization)&#xff1a;将矩阵拆分为多个矩阵的乘积的运算。矩阵的分解包括以下几种&#xff1a; 特征分解SVD分解PCAQR分解LU分解极分解 矩阵分解在数据压缩、推荐系统以及NLP等都有着比较广泛的应用。 特征分解 特征分解(eigendeco…

SVD奇异值分解

SVD分解 SVD分解是LSA的数学基础&#xff0c;本文是我的LSA学习笔记的一部分&#xff0c;之所以单独拿出来&#xff0c;是因为SVD可以说是LSA的基础&#xff0c;要理解LSA必须了解SVD&#xff0c;因此将LSA笔记的SVD一节单独作为一篇文章。本节讨论SVD分解相关数学问题&#xf…

矩阵分解 SVD分解

在认识SVD之前&#xff0c;先来学习两个相关的概念&#xff1a;正交矩阵和酉矩阵。 如果&#xff0c;则阶实矩阵称为正交矩阵。而酉矩阵是正交矩阵往复数域上的推广。 判断正交矩阵和酉矩阵的充分必要条件是&#xff1a;。或者说正交矩阵和酉矩阵的共轭转置和它的 …

SVD分解的推导,理解SVD分解及矩阵奇异值的几何意义

文章目录 SVD分解的证明推导从本质上理解SVD分解矩阵奇异值的几何意义 SVD分解的证明推导 理解SVD分解要解决的问题是什么&#xff1f; 从本质上理解SVD分解 从线性映射的矩阵表示角度&#xff0c;即从“抽象”->“具体”的角度去理解SVD分解。 矩阵奇异值的几何意义…

矩阵分解SVD原理

常用的经典矩阵分解算法&#xff1a; 经典算法PCA、SVD主题模型算法LDA概率矩阵分解PMF&#xff0c;由深度学习大牛Ruslan Salakhutdinov所写&#xff0c;主要应用于推荐系统中&#xff0c;在大规模的稀疏不平衡性Netflix数据集上取得较好的效果&#xff1b;非负矩阵分解&#…

精简易懂,30 分钟学会 SVD 矩阵分解,很强!

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法。 它能够将一个任意形状的矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵…

矩阵(一):SVD分解

文章目录 0 参考链接&#xff08;尊重原著&#xff09;1 SVD分解原理2 SVD分解意义3 SVD分解的应用4 SVD数学举例5 为什么Ax0的解为最小奇异值对应的向量&#xff1f; 0 参考链接&#xff08;尊重原著&#xff09; 下面这个讲的很好很全面 视觉SLAM常见的QR分解SVD分解等矩阵分…

详解SVD分解过程

转 如何让奇异值分解(SVD)变得不“奇异”&#xff1f; 红色石头 发布于 2018-08-29 分类&#xff1a;机器学习 阅读(144) 评论(0) 如何让奇异值分解(SVD)变得不“奇异”&#xff1f;-红色石头的个人博客 http://redstonewill.com/1529/ 在之前的一篇文章&#xff1a;通俗解…

奇异值分解(SVD)原理详解及推导

转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的&#xff0c;讲的也都不错&#xff0c;但是感觉还是有需要补充的&#xff0c;特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章&#xff0c;叫A S…

奇异值分解(SVD)原理

奇异值分解(Singular Value Decomposition&#xff0c;以下简称SVD)是在机器学习领域广泛应用的算法&#xff0c;它不光可以用于降维算法中的特征分解&#xff0c;还可以用于推荐系统&#xff0c;以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总…

SVD(奇异值分解)

一、SVD&#xff08;奇异值分解 Singular Value Decomposition&#xff09; 1.1、基本概念&#xff1a; &#xff08;1&#xff09;定义&#xff1a;提取信息的方法&#xff1a;奇异值分解Singular Value Decomposition&#xff08;SVD&#xff09; &#xff08;2&#xff0…

SVD分解

一、SVD简介 Singular Value Decomposition&#xff08;奇异值分解&#xff0c;SVD&#xff09;是一种重要的矩阵分解技术&#xff0c;可以将一个矩阵分解为三个矩阵的乘积。SVD的应用广泛&#xff0c;包括数据降维、矩阵逆运算、推荐系统等领域。 给定一个矩阵A&#xff0c;SV…

如何快速搭建个人网站(服务器配置篇)

关于服务器的购买和域名注册可以参考我的这篇博客 在使用之前&#xff0c;建议小白用户先下载一个Vmware 安装一个Ubuntu的虚拟环境学习一下linux的基础命令。 一、远程服务器的连接 服务器购买好了以后我们需要进行远程连接我们的服务器&#xff0c; 我个人推荐windows用…

在废旧手机里搭建个人服务器

点击跳转微信公众号原文链接 欢迎关注公众号&#xff0c;会不定时发些有趣的干货文章&#xff0c;以及一些记录性的技术文章&#xff01; 正文开始&#xff1a; 一、目的&#xff1a;给手机装上Linux系统&#xff0c;充当服务器使用 二、流程&#xff1a; 1、手机装好相关软件…