📄 jpgcompress.m
字号:
function JPGCompress(s)
%对制定图片进行jpeg压缩编码
A=imread(s);
fun=@DCT_Measure;
B=blkproc(A,[8,8],fun);%得到量化后的系数矩阵,与原始图像尺寸相同,需要进一步处理
%将B分成8×8矩阵重新排列,并对直流系数做差分
n=length(B)/8; %对每个维度分成的块数
%创建一个8×(8×n^2)的二维数组存放待编码数据
C=zeros(8);%初始化为8×8的全0矩阵
for y=0:n-1
for x=0:n-1
T1=C(:,[end-7:end]);%取出上一组数据做差分
T2=B(1+8*x:8+8*x,1+8*y:8+8*y);
T2(1)=T2(1)-T1(1);% 直流系数做差分
C=[C,T2];
end
end
C=C(:,[9:end]);
%依次对每一块编码
JPGCode={''};%存储编码的元胞初始化为空的字符串
for a=0:n^2-1
T=Code_Huffman(C(:,[1+a*8:8+a*8]));
JPGCode=strcat(JPGCode,T);
end
%J=JPGCode;
sCode=cell2mat(JPGCode);%将元胞转化为数组
Fid=fopen('JPGCode.txt','w');% 将压缩码保存到文本文件中
fprintf(Fid,'%s',sCode);
fclose(Fid);
%计算压缩比和压缩效率
[x y]=size(A);
b=x*y*8/length(sCode);
v=8/b;
disp('JPEG压缩数据已保存至JPGCode.txt中!');
disp(['压缩比为:',num2str(b),';压缩效率:',num2str(v)]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -