📄 jpeg_wht.m
字号:
function jpeg_wht(I,z)
% I=imread('football.jpg');%读入原始图像,该图片在安装matlab的目录中找,原图为jpeg图象
Y=im2double(I);%图像存储类型转换
R=Y(:,:,1);%提取jpeg图像的三层,每层代表一种原色
G=Y(:,:,2);
B=Y(:,:,3);
T=hadamard(8);%WHT变换矩阵
Y2_R=blkproc(R,[8 8],'P1*x*P2/64',T,T');%对原图像每一层分别进行WHT变换
Y2_G=blkproc(G,[8 8],'P1*x*P2/64',T,T');
Y2_B=blkproc(B,[8 8],'P1*x*P2/64',T,T');
z=fix(z);
t(1:z)=1;
t(z+1:64)=0;
mask=jpeg_Dzz8(t);
Y3_R=blkproc(Y2_R,[8 8],'P1.*x',mask);%数据压缩,丢弃右下角高频数据
Y3_G=blkproc(Y2_G,[8 8],'P1.*x',mask);
Y3_B=blkproc(Y2_B,[8 8],'P1.*x',mask);
I2(:,:,1)=blkproc(Y3_R,[8 8],'P1*x*P2',T',T);%进行WHT反变换,得到压缩后的图像
I2(:,:,2)=blkproc(Y3_G,[8 8],'P1*x*P2',T',T);
I2(:,:,3)=blkproc(Y3_B,[8 8],'P1*x*P2',T',T);
figure;
set(gcf,'unit','normalized','position',[0.6,0.5,0.3,0.3]);%设置图形窗大小
set(gcf,'menubar','none'); %删除图形窗工具条
str='量化矩阵中1的个数为';
set(gcf,'name',[str sprintf('%1.4g\',z)],'numbertitle','off'); %书写图形窗名
imshow(I2) %显示压缩后的图像
title('WHT变换压缩后的图像')
imwrite(I2,'wht.jpg');%输出压缩后的图像,文件名为1.jpg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -