You are on page 1of 4

Faculty of Computer Science & IT

Assignment 2
Student Name Student ID Program Contact Number Email Address
Arslan Ahmed BSEM-F16- BS(SE) +92 3454175704 Bsem-F16-104@superior.edu.pk
104

SUPERIOR UNIVERSITY LAHORE


Assignment 2

Implement using MATLAB: Encoding JPEG

Code#

function x = JPEG_Decoder(X, HuffmanCodes)

characters = HuffmanCodes{1};
code = HuffmanCodes{2};
x_Huffman_de = HuffmanDecoder(characters, code, X);

x_decoded = RunlengthDecode(x_Huffman_de);

QuantHeader = x_decoded(1);
m_org = x_decoded(2);
n_org = x_decoded(3);
x_decoded = x_decoded(4:end);

if n_org > m_org


larger = n_org;
else
larger = m_org;
end
n = 8 * ceil(larger/8);

x = zeros(n,n);
for i = 1:n/8
for j = 1:n/8
x_1D = x_decoded((i-1)*8*n+(j-1)*64+1 : (i-1)*8*n+j*64);
x_block = InverseZigzag(x_1D);
x_dequantized = InverseQuantize(x_block, QuantHeader);
x_IDCT = IDCT_8by8(x_dequantized);
x((i-1)*8+1 : i*8, (j-1)*8+1 : j*8) = x_IDCT;
end
end

x = uint8(x(1:m_org,1:n_org));

imshow(x)
end
Implement using MATLAB:  Decoding of JPEG

Code#
function [X, HuffmanCodes] = JPEG_Encoder(x, compression)

if strcmp(compression, "high")
QuantHeader = 1;
elseif strcmp(compression, "low")
QuantHeader = 2;
elseif strcmp(compression, "standard")
QuantHeader = 3;
else
disp("Compression parameter can either be 'high', 'low' or 'standard'.");
return;
end
if length(size(x)) > 2
x = rgb2gray(x);
end

imshow(x)

[m_org, n_org] = size(x);

x = ZeroPad(double(x), 8);

n = size(x,1);
x_1D = [];

for i = 1:n/8
for j = 1:n/8
x_8by8 = x((i-1)*8+1 : i*8, (j-1)*8+1 : j*8);
x_DCT = DCT_8by8(x_8by8);
x_Quantized = Quantize(x_DCT, QuantHeader);
x_Zigzaged = Zigzag(x_Quantized);
x_1D = [x_1D x_Zigzaged];
end
end

headers = [QuantHeader m_org n_org];


x_1D = [headers x_1D];

x_runlength_en = RunlengthEncode(x_1D);

characters = unique(x_runlength_en);
probs = GetProbabilities(x_runlength_en, characters);
code = HuffmanCreator(characters, probs);
X = HuffmanEncoder(characters, code, x_runlength_en);
HuffmanCodes = cell(1,2);
HuffmanCodes{1} = characters;
HuffmanCodes{2} = code;
end

You might also like