【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

在MATLAB中使用奇异值分解(Singular Value Decomposition,SVD)进行图像压缩是一种常见的技术。这种方法利用SVD将原始图像矩阵分解为三个矩阵的乘积,然后通过保留较大的奇异值来近似重构原始图像,从而实现图像的压缩。 对于一幅图像,将其表示为一个矩阵,其中每个元素表示图像的像素值。 使用SVD将图像矩阵分解为三个矩阵的乘积,然后通过截断奇异值来近似重构原始图像。 保留较大的奇异值,减少较小的奇异值,从而减少存储空间并实现图像压缩。 压缩比例是指压缩后图像的大小与原始图像大小之间的比率。 可以根据应用需求和图像质量要求选择不同的压缩比例。

📚2 运行结果

主函数部分代码:

    % return error
    error(...
    'Incorrect input arg: compr must satisfy 0 <= compr <= number of Singular Values');

% Size of the image
m = size(Lena,1);
n = size(Lena,2);
storage = m*n;
fprintf('Size of image: %d px by %d px, i.e. uses %d px of storage.\n',m,n,storage);

% SVs and reduced storage
r = min([m,n]); % original number of SVs
r_red = length(indices); % to be saved number of SVs
r_max = floor(m*n/(m+n+1)); % maximum to be saved number of SVs for compression
storage_red = m*r_red + n*r_red + r_red;
if compr >= 0 && compr < 1
    % only SVs bigger than compr times biggest SV
    fprintf('The smallest SV chosen to be smaller than %d of the biggest SV.\n',compr);
elseif compr >= 1 && compr <= length(singvals)
    % only the biggest compr SVs
else
    % return error
    fprintf('There was some error before. Analysis cannot continue.\n')
end
fprintf('Out of %d SVs, only %d SVs saved ',r,r_red);
fprintf('(Maximum number of SVs for compression: %d SVs).\n',r_max);
fprintf('Reduced storage: %d px.\n',storage_red);

% Determine made error
error = 1 - sum(singvals(indices))/sum(singvals);
fprintf('Made error: %d.\n',error);
errorImage = Lena_org - Lena_red;

% Entropy

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]朱路,邬雷,王定坤,等.基于零值域分解的深度图像压缩感知重建[J/OL].工程科学与技术:1-12[2024-06-06].http://kns.cnki.net/kcms/detail/51.1773.TB.20240604.1700.011.html.

[2]黄梅娟,王永梅.基于尺度特征融合的极低比特率三维复杂图像无损压缩[J/OL].海南热带海洋学院学报:1-9[2024-06-06].http://kns.cnki.net/kcms/detail/46.1085.g4.20240515.1851.004.html.

🌈4 Matlab代码实现

图片

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值