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

📄 jacenc_ek.m

📁 用离散余弦变换实现JPEG编码
💻 M
字号:
function b=jacenc_ek(x)
%AC系数的编码

b=[];

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];

ix = find(x~=0); % index of next non-zero entry
Nx = length(ix);  % # of non-zero entries

% 

if ix(1)==1,  
   run=0;   % no leading zero
   tmp=int2bin(x(1));  % tmp is 1 by (c+1)
   cat=length(tmp)-1;  % first bit is sign bit
   row=run*10+cat;
   prefix=table(row,5:table(row,4)+4);
   if tmp(1)==1,  %if current x is negative 
      tmp=ones(1,cat+1)-tmp; % 1's complement
   end
   b=[prefix tmp(2:cat+1)];
end

for n=2:Nx, 
   prefix=[];
   % 
   run=ix(n)-ix(n-1)-1;
   % 
   while run > 15, 
      b=[b 1 1 1 1 1 1 1 1 0 1 1 1];
      run=run-15;
   end
   
   if x(ix(n))==999, 
       b = [b 1 0 1 0];  
   else
      tmp=int2bin(x(ix(n)));  
      cat=length(tmp)-1;  
      row=run*10+cat;     
      prefix=table(row,5:table(row,4)+4);
      if tmp(1)==1,     
         tmp=ones(1,cat+1)-tmp; 
      end
      b=[b prefix tmp(2:cat+1)];
   end
end

⌨️ 快捷键说明

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