✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
图像压缩是图像处理中一项重要的技术,它可以减少图像文件的大小,便于存储和传输。目前,图像压缩算法主要分为有损压缩和无损压缩两大类。有损压缩算法可以获得更高的压缩比,但会损失部分图像信息;而无损压缩算法则可以保证图像信息不丢失,但压缩比相对较低。
本文将介绍一种基于奇异值分解(SVD)的图像有损压缩算法。SVD是一种矩阵分解技术,可以将一个矩阵分解为三个矩阵的乘积,即 U、Σ 和 V。对于图像压缩,我们将图像矩阵分解为 U、Σ 和 V 三个矩阵,其中 Σ 矩阵包含了图像的主要信息,而 U 和 V 矩阵则包含了图像的细节信息。通过对 Σ 矩阵进行压缩,我们可以有效地减少图像文件的大小。
奇异值分解(SVD)
奇异值分解(SVD)是一种矩阵分解技术,可以将一个矩阵分解为三个矩阵的乘积,即 U、Σ 和 V。对于一个 m × n 的矩阵 A,其 SVD 分解形式为:
A = UΣV^T
其中:
-
U 是一个 m × m 的酉矩阵,其列向量为 A 的左奇异向量。
-
Σ 是一个 m × n 的对角矩阵,其对角线元素为 A 的奇异值。
-
V 是一个 n × n 的酉矩阵,其列向量为 A 的右奇异向量。
奇异值分解具有以下性质:
-
正交性: U 和 V 都是酉矩阵,即 U^TU = I 和 V^TV = I。
-
对角化: Σ 是一个对角矩阵,其对角线元素为 A 的奇异值。
-
秩: A 的秩等于 Σ 中非零奇异值的个数。
基于 SVD 的图像压缩算法
基于 SVD 的图像压缩算法主要分为以下几个步骤:
-
将图像转换为灰度图像。
-
将灰度图像转换为矩阵 A。
-
对矩阵 A 进行 SVD 分解,得到 U、Σ 和 V 三个矩阵。
-
对 Σ 矩阵进行压缩,保留前 k 个奇异值。
-
根据压缩后的 Σ 矩阵重建图像。
其中,压缩 Σ 矩阵的具体方法可以根据不同的需求而定。例如,我们可以使用阈值截断法、奇异值软阈值法或奇异值硬阈值法等方法。
压缩效果分析
基于 SVD 的图像压缩算法的压缩效果主要取决于压缩 Σ 矩阵的程度。奇异值越少,压缩比越高,但图像质量也会下降。因此,在实际应用中,需要根据具体需求权衡压缩比和图像质量之间的关系。
下图展示了基于 SVD 的图像压缩算法在不同压缩比下的压缩效果。可以看出,随着压缩比的增加,图像质量逐渐下降。
[图片:基于 SVD 的图像压缩算法在不同压缩比下的压缩效果]
总结
基于奇异值分解(SVD)的图像压缩算法是一种有效的图像有损压缩算法。该算法通过对图像矩阵进行 SVD 分解,并压缩 Σ 矩阵来实现图像压缩。压缩效果主要取决于压缩 Σ 矩阵的程度,需要根据具体需求权衡压缩比和图像质量之间的关系。
📣 部分代码
%clear all;
imagefile = 'nature.jpg';
insert = @(a, x, n)cat(2, x(1:n), a, x(n+1:end));
showImages = 0;
res = 1;
start = 1;
step = 5;
ending = 300;
count =2;
plotcount =2;
a = 1;
xq = 1:res:ending;
N=linspace(start,ending,ending/step);
C=linspace(start,ending,ending);
y=linspace(start,ending,ending/step);
')
C = insert(0,C,0);
subplot(2,3,6) , imshow(imagefile) , title('Original Image');
%z = insert(100,z,0);
%xq = insert(0,xq,0);
vq = interp1(C,z,xq,'PCHIP');
movegui(500,'west');
figure(ending+1);
syms b;
l = vpasolve(vq(1)/b==100,b);
vq = double(vq/l);
plot(xq,vq);
title('Error in compression');
grid on
xlabel('Number of Singular Values used');
ylabel('PercentErrorbetween compressed and original image');
set(gca,'xtick',[0:25:300]);
movegui(ending+1,'east');
p = polyfit(xq,vq,2);
legend([num2str(p(1)) 'x^2 + ' num2str(p(2)) 'x + 100']);
sprintf('Stage 4Complete \n\n')
⛳️ 运行结果
🔗 参考文献
[1]胡乡峰,卫金茂.基于奇异值分解(SVD)的图像压缩[J].东北师大学报:自然科学版, 2006, 38(3):4.DOI:10.3321/j.issn:1000-1832.2006.03.008.
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类