📄 7.m
字号:
clear all;
clc;
[I,map]=imread('1.jpg');%imread是读取图片的命令
%I=imread('5.jpg');
I1=double(I); %因为I的格式是uint8 的格式,要转换成double格式
R=I1(:,:,1); % 提取RGB矩阵
G=I1(:,:,2);
B=I1(:,:,3);
[m,n] = size(R); %计算R矩阵的行列数
%将RGB矩阵转换为3*N行的矩阵形式
r=[];g=[];b=[];
for i=1:m
r=[r R(i,:)];
g=[g G(i,:)];
b=[b B(i,:)];
end
A=[r;g;b];
%对矩阵进行svd变换
[u,s,v]=svd(A,0);
%选择压缩的K值
k = input('請輸入 k 值:');
L=[];
for i= 1: k
L=[L i];
end
%选择前K个值进行压缩
U=u(:,L); %选取前k行
S=s(L,L);
V=v(:,L);
A1=uint8(U*S*V'); %得到压缩后的3*N的矩阵
%将矩阵还原成RGB图像矩阵
a1=A1(1,:);
a2=A1(2,:);
a3=A1(3,:);
for i= 1: m
R1(i,:)= a1(1,1+(i-1)*n:n+(i-1)*n)
G1(i,:)= a2(1,1+(i-1)*n:n+(i-1)*n)
B1(i,:)= a3(1,1+(i-1)*n:n+(i-1)*n)
end
I2(:,:,1)=R1;
I2(:,:,2)=G1;
I2(:,:,3)=B1;
%输出前后图像对比
imshow(I),title('原图像' );
figure,imshow(I2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -