现在时间是:
当前位置:首 页 >> Matlab>> 教学区>> 文章列表

彩色图片压缩

作者:陈瑞、程越、林子强、鲁鹏飞   发布时间:2019-05-24 18:13:32   浏览次数:84
I=imread('C:UsersAdministratorDesktoptets.jpg');
imshow(I);
[m,n]=size(I(:,:,1));
A0=zeros(m,n);
A1=double(I(:,:,1));
A2=double(I(:,:,2));
A3=double(I(:,:,3));
A=[A0 A2 A1 A3];
%svd
[U S V]=svdQ(A);
k=1;
Sx=S(1:k,1:k);
A0=zeros(m,n);
A1=double(I(:,:,1));
A2=double(I(:,:,2));
A3=double(I(:,:,3));
A=[A0 A2 A1 A3];
%svd
[U S V]=svdQ(A);
k=1;
Sx=S(1:k,1:k);
while(sum(sum(Sx))/sum(sum(S))<0.95)
        J=timesQ(U(:,[1:k,m+1:m+k,2*m+1:2*m+k,3*m+1:3*m+k]),[Sx,zeros(k,3*k)]);
        J=timesQ(J,transQ(V(:,[1:k,n+1:n+k,2*n+1:2*n+k,3*n+1:3*n+k])));
        [jm,jn]=size(J);
        jn=jn/4;
        X(:,:,2)=J(:,jn+1:2*jn);
        X(:,:,1)=J(:,2*jn+1:3*jn);
        X(:,:,3)=J(:,3*jn+1:4*jn);
figure;
imshow(uint8(X));
k=k+1;
Sx=S(1:k,1:k);
end

结果

原图

 

压缩1

 

 

压缩15

 

压缩43

 


解释while(sum(sum(Sx))/sum(sum(S))<0.95)

0.95表示与原图相比的压缩比,数值(0<x<1)越大,压缩图片张数越多,且清晰度(即还原度)越高,压缩比例越低,反之亦然。

 







上一篇:没有了    下一篇:没有了

Copyright ©2019    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2019 lingw.net.粤ICP备16125321号 -5