x=reshape(x,m,n);
function x=jpeg2im(y)
m=[16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99];%亮度分量标准化矩阵 order=[1 9 2 3 10 17 25 18 11 4 5 12 19 26 33 ... 41 34 27 20 13 6 7 14 21 28 35 42 49 57 50 ... 43 36 29 22 15 8 16 23 30 37 44 51 58 59 52 ... 45 38 31 24 32 39 46 53 60 61 54 47 40 48 55 ... 62 63 56 64];%zigzag扫描顺序
rev=order;
for k=1:length(order)
rev(k)=find(order==k); end;
m=(100/double(y.quality))*m; xb=double(y.numblocks); sz=double(y.size); xn=sz(2); xm=sz(1);
x=huff2mat(y.huffman); eob=max(x(:));
z=zeros(64,xb); k=1;
for j=1:xb for i=1:64
if x(k)==eob k=k+1; break; else
z(i,j)=x(k); k=k+1; end; end; end;
z=z(rev,:);
x=col2im(z,[8 8],[xm,xn],'distinct'); x=blkproc(x,[8 8],'x.*P1',m); t=dctmtx(8);
x=blkproc(x,[8 8],'P1*x*P2',t',t); x=uint8(x+128);
%计算图像压缩比
function cr=imratio(f1,f2) error(nargchk(2,2,nargin)); cr=bytes(f1)/bytes(f2);
function b=bytes(f) if ischar(f)
info=dir(f); b=info.bytes; elseif isstrct(f) b=0;
fields=fieldnames(f); for k=1:length(fields)
b=b+bytes(f.(fields{k})); end; else
info=whos('f'); b=info.bytes; end;
相关推荐: