📄 svd_cprs1.m
字号:
% 该程序是用矩阵的起奇异值分解实现对图像的压缩编码
% m,n为读入图像矩阵的维数
% X1为经过变换后的图像数据,t为特征向量图像,二者均是变换后应存数据
clear
close all
rdimg=imread('1','jpg');
%----读入灰度图像----------------
gryimg=double(rdimg);
[m,n]=size(gryimg);
X=zeros(m,n);
avimg=0;
for i=1:m
for j=1:n
avimg=avimg+gryimg(i,j);
end
end
avimg=avimg/(m*n);
%-----------求图像像素均值---------
X=gryimg-avimg;
A=X*X';
%-----------求协方差矩阵-------------
[u,s,v]=svd(A);
%--------奇异值分解-----------
for i=1:m
if i<=32
%-----------设定压缩比---------
t(:,i)=u(:,i);
else
break;
end
end
X1=t'*X;
%---------压缩数据------------------
X2=t*X1;
%-----恢复数据---------
X2=X2+avimg;
X2=uint8(X2);
%---------画出解压前后图像比较效果----------------
subplot(1,2,1),imshow(uint8(gryimg));
subplot(1,2,2),imshow(X2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -