Professional Documents
Culture Documents
Superior University Lahore: Assignment 2
Superior University Lahore: Assignment 2
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
Code#
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);
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)
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
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