from
JPEG Baseline Encoder
by Jorgenhoc
This baseline uses an encoding scheme based on the Discrete Cosine Transform (DCT).
|
| huffman_ac(vector_zz)
|
%% Transform Compression JPEG
% AC Huffman Coefficients Of Luminance
% Jorge Calderon <calderonjorge9@gmail.com>
% University Of Antioquia
% Created: November 2012
% Modified: January 2013
% Copyright 2012
% All rights reserved
function value = huffman_ac(vector_zz)
C=[];
empty=0;
EOB = '1010';
ac_huffman={
'00' '01' '100' '1011' '11010' '1111000' '11111000' '1111110110' '1111111110000010' '1111111110000011';...
'1100' '11011' '1111001' '111110110' '11111110110' '1111111110000100' '1111111110000101' '1111111110000110' '1111111110000111' '11111111100001000';...
'11100' '11111001' '1111110111' '111111110100' '1111111110001001' '1111111110001010' '1111111110001011' '1111111110001100' '1111111110001101' '1111111110001110';...
'111010' '111110111' '111111110101' '1111111110001111' '1111111110010000' '1111111110010001' '1111111110010010' '1111111110010011' '1111111110010100' '1111111110010101';...
'111011' '1111111000' '1111111110010110' '1111111110010111' '1111111110011000' '1111111110011001' '1111111110011010' '1111111110011011' '1111111110011100' '1111111110011101';...
'1111010' '11111110111' '1111111110011110' '1111111110011111' '1111111110100000' '1111111110100001' '1111111110100010' '1111111110100011' '1111111110100100' '1111111110100101';...
'1111011' '111111110110' '1111111110100110' '1111111110100111' '1111111110101000' '1111111110101001' '1111111110101010' '1111111110101011' '1111111110101100' '1111111110101101';...
'11111010' '111111110111' '1111111110101110' '1111111110101111' '1111111110110000' '1111111110110001' '1111111110110010' '1111111110110011' '1111111110110100' '1111111110110101';...
'111111000' '111111111000000' '1111111110110110' '1111111110110111' '1111111110111000' '1111111110111001' '1111111110111010' '1111111110111011' '1111111110111100' '1111111110111101';...
'111111001' '1111111110111110' '1111111110111111' '1111111111000000' '1111111111000000' '1111111111000010' '1111111111000011' '1111111111000100' '1111111111000101' '1111111111000110';...
'111111010' '1111111111000111' '1111111111001000' '1111111111001001' '1111111111001010' '1111111111001011' '1111111111001100' '1111111111001101' '1111111111001110' '1111111111001111';...
'1111111001' '1111111111010000' '1111111111010001' '1111111111010010' '1111111111010011' '1111111111010100' '1111111111010101' '1111111111010110' '1111111111010111' '1111111111011000';...
'1111111010' '1111111111011001' '1111111111011010' '1111111111011011' '1111111111011100' '1111111111011101' '1111111111011110' '1111111111011111' '1111111111100000' '1111111111100001';...
'11111111000' '1111111111100010' '1111111111100011' '1111111111100100' '1111111111100101' '1111111111100110' '1111111111100111' '1111111111101000' '1111111111101001' '1111111111101010';...
'1111111111101011' '1111111111101100' '1111111111101101' '1111111111101110' '1111111111101111' '1111111111110000' '1111111111110001' '1111111111110010' '1111111111110011' '1111111111110100';...
'1111111111110101' '1111111111110110' '1111111111110111' '1111111111111000' '1111111111111001' '1111111111111010' '1111111111111011' '1111111111111100' '1111111111111101' '1111111111111110'
};
for i=1:length(vector_zz);
if vector_zz(i)>=0
if vector_zz(i) == 0
if(empty == 15)
break;
end
empty=empty+1;
else
temp = [ac_huffman{empty+1, max(size(dec2bin(abs(vector_zz(i)))))} dec2bin(vector_zz(i))];
C=[C temp];
empty=0;
end
else
C1=dec2bin(abs(vector_zz(i)));
for j=1:max(size(C1))
if C1(:,j)=='0'
C1(:,j)='1';
else
C1(:,j)='0';
end
end
temp = [ac_huffman{empty+1, max(size(dec2bin(abs(vector_zz(i)))))} C1];
C=[C temp];
empty=0;
end
end
value = [C EOB];
end
|
|
Contact us