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

📄 jpeg_ek.m

📁 用离散余弦变换实现JPEG编码
💻 M
字号:
%jpeg_ek

%装载图像
load lena.mat
f=x;
imshow(mat2gray(f))
clear x;

f=f-128;
drawnow;

[mf,nf]=size(f); mb=mf/8; nb=nf/8;  

%8*8的小块进行DCT变换
Ff=blkproc(f,[8 8],'dct');  
Ff=blkproc(Ff',[8 8],'dct');
Ff=round(Ff');

%量化矩阵
Q =[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];

Fq=round(blkproc(Ff,[8 8],'divq',Q));

fdc=reshape(Fq(1:8:mf,1:8:nf)',mb*nb,1);   
fdpcm=dpcm_ek(fdc,1);

%直流分量编码
dccof=[];
for i=1:mb*nb,
   dccof=[dccof jdcenc_ek(fdpcm(i))];
end


%交流分量编码
z=[1   2   6   7  15  16  28  29
   3   5   8  14  17  27  30  43
   4   9  13  18  26  31  42  44
  10  12  19  25  32  41  45  54
  11  20  24  33  40  46  53  55
  21  23  34  39  47  52  56  61
  22  35  38  48  51  57  60  62
  36  37  49  50  58  59  63  64];
%pause
%
acseq=[];
for i=1:mb
  for j=1:nb
    tmp(z)=Fq(8*(i-1)+1:8*i,8*(j-1)+1:8*j); 
    % 
    eobi=max(find(tmp~=0)); %
    acseq=[acseq tmp(2:eobi) 999];
  end
end
accof=jacenc_ek(acseq);

disp(['DC coefficient after Huffman coding has ' int2str(length(dccof)) ...
' bits']);
disp(['AC coefficient after Huffman coding has ' int2str(length(accof)) ...
' bits']);

disp(['Compression Rate   ' num2str((length(dccof)+length(accof))/(mb*nb*64)) '   Bits / pixel '])
disp(['Compression Ratio   ' num2str(8/((length(dccof)+length(accof))/(mb*nb*64))) ' : 1'])
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -