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

📄 jacdec.m

📁 该程序是一个用matlab语言编写的jepg压缩解压程序
💻 M
字号:
function x=jacdec(y)

%    run - category - length - bsae code length -  base code
table=[...
 0  1   3  2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0  2   4  2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0  3   6  3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 0  4   8  4 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
 0  5  10  5 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
 0  6  12  6 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
 0  7  14  7 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
 0  8  18 10 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0
 0  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0
 0 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1
 1  1   5  4 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 1  2   8  6 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 
 1  3  10  7 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0
 1  4  13  9 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0
 1  5  16 11 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
 1  6  22 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0
 1  7  23 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1
 1  8  24 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0
 1  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1
 1 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0
 2  1   6  5 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 
 2  2  10  8 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
 2  3  13 10 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 
 2  4  20 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1
 2  5  21 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0
 2  6  22 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1
 2  7  23 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0
 2  8  24 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1
 2  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0
 2 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1
 3  1   7  6 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
 3  2  11  9 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0
 3  3  14 11 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 
 3  4  20 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0
 3  5  21 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
 3  6  22 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0
 3  7  23 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1
 3  8  24 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0
 3  9  25 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1
 3 10  26 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0
 4  1   7  6 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
 4  2  12 10 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 
 4  3  19 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1
 4  4  20 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0
 4  5  21 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1
 4  6  22 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0
 4  7  23 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1
 4  8  24 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0
 4  9  25 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1
 4 10  26 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0
 5  1   8  7 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0
 5  2  12 10 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 
 5  3  19 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1
 5  4  20 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0
 5  5  21 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1
 5  6  22 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0
 5  7  23 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1
 5  8  24 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0
 5  9  25 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1
 5 10  26 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0
 6  1   8  7 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0
 6  2  13 11 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
 6  3  19 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1
 6  4  20 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0
 6  5  21 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1
 6  6  22 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0
 6  7  23 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1
 6  8  24 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0
 6  9  25 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1
 6 10  26 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0
 7  1   9  8 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0
 7  2  13 11 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 
 7  3  19 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1
 7  4  20 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0
 7  5  21 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1
 7  6  22 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0
 7  7  23 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1
 7  8  24 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0
 7  9  25 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1
 7 10  26 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0
 8  1   9  8 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0
 8  2  17 15 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
 8  3  19 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1
 8  4  20 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0
 8  5  21 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1
 8  6  22 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0
 8  7  23 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1
 8  8  24 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0
 8  9  25 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1
 8 10  26 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0
 9  1  10  9 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 
 9  2  18 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
 9  3  19 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
 9  4  20 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1
 9  5  21 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0
 9  6  22 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1
 9  7  23 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0
 9  8  24 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1
 9  9  25 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0
 9 10  26 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1
10  1  10  9 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 
10  2  18 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0
10  3  19 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1
10  4  20 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0
10  5  21 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1
10  6  22 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0
10  7  23 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1
10  8  24 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0
10  9  25 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1
10 10  26 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0
11  1  10  9 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 
11  2  18 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1
11  3  19 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0
11  4  20 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1
11  5  21 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0
11  6  22 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1
11  7  23 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0
11  8  24 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1
11  9  25 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0
11 10  26 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1
12  1  11 10 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 
12  2  18 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0
12  3  19 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1
12  4  20 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0
12  5  21 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1
12  6  22 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0
12  7  23 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
12  8  24 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
12  9  25 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1
12 10  26 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0
13  1  12 11 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 
13  2  18 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1
13  3  19 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0
13  4  20 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1
13  5  21 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0
13  6  22 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1
13  7  23 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0
13  8  24 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1
13  9  25 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0
13 10  26 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
14  1  13 12 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0
14  2  18 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0
14  3  19 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1
14  4  20 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0
14  5  21 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
14  6  22 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
14  7  23 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1
14  8  24 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0
14  9  25 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
14 10  26 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0
15  1  17 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
15  2  18 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
15  3  19 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
15  4  20 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
15  5  21 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
15  6  22 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0
15  7  23 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
15  8  24 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
15  9  25 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
15 10  26 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
 0  0   4  4 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
15  0  12 12 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0];

%y=[0 -122 -253 -1 zeros(1,18) 0 0 0 -1 9 ]
%%y=tobdel(y);
% Start decoding, first decode the prefix then from that get run,cat,code etc..
% Use the same LOGIC as that of dc decoding
N=length(y);
[p,dm1]=size(table);
x=[];
i=1; d=5;tmp=ones(p,1);
tep=i;
while i<=N,
   % match y(i) to that of the d-th bit in the table
   tmp=tmp.*[table(:,d)==y(i)]; % tmp is a vector of 0 and 1 with 1 indicate a match
   if sum(tmp)==1,  % narrow down to one symbol, find it
      d=5;          % reset pointer to columns of table.
      row=find(tmp); % Index of non zero i.e 1
      run=table(row,1);
      cat=table(row,2);
      i=tep+table(row,4)-1;
      tmp=ones(p,1);  % Preset temp vector
      if row==161,num=999;
      else
          num=bin2int(y(i+1:i+cat));
          if(~(num>=2^(cat-1) & num<2^cat)),num=-1*bin2int(ones(1,cat)-y(i+1:i+cat));end
      end      
      i=i+cat;       % Increment to next prefix
      x=[x zeros(1,run) num];
      tep=i+1;
   else 
      d=d+1; 
   end
   i=i+1; 
end
%x

⌨️ 快捷键说明

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