⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpgcompress.m

📁 matlab实现jpeg编解码
💻 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 + -