1. Nama : Anis Maghfirotul Habibah
NPM : 1610501035
Mata Kuliah : Pengolahan Citra Digital
PEMAMPATAN CITRA
Citra yang akan digunakan dalam pemampatan citra ini yaitu citra foto dengan nama file
NikenAnis.jpg memiliki ukuran 608 KB dan dimensi 690x694, di tunjkan pada gambar 1.
Gambar 1. Citra asli
1. Program matlab yang digunakan
1.1 Metode Pemampatan Huffman
%clearing all variableas and screen
clc;
clear all;
close all;
%Reading image
a=imread('NikenAnis.jpg');
figure(1);
imshow(a),title('Original Image');
pause (0.1);
%converting an image to grayscale
I=rgb2gray(a);
imwrite(I,'citra_gray.jpg');
figure(2);
2. imshow(I),title('Grayscale Image');
pause (0.1);
%size of the image
[m,n]=size(I);
Totalcount=m*n;
%variables using to find the probability
cnt=1;
sigma=0;
%computing the cumulative probability.
for i=0:255
k=I==i;
count(cnt)=sum(k(:))
%pro array is having the probabilities
pro(cnt)=count(cnt)/Totalcount;
sigma=sigma+pro(cnt);
cumpro(cnt)=sigma;
cnt=cnt+1;
end;
%Symbols for an image
symbols = [0:255];
%Huffman code Dictionary
dict = huffmandict(symbols,pro);
%function which converts array to vector
vec_size = 1;
for p = 1:m
for q = 1:n
newvec(vec_size) = I(p,q);
vec_size = vec_size+1;
end
end
%Huffman Encodig
hcode = huffmanenco(newvec,dict);
%Huffman Decoding
dhsig1 = huffmandeco(hcode,dict);
%convertign dhsig1 double to dhsig uint8
dhsig = uint8(dhsig1);
%vector to array conversion
dec_row=sqrt(length(dhsig));
dec_col=dec_row;
%variables using to convert vector 2 array
arr_row = 1;
arr_col = 1;
vec_si = 1;
for x = 1:m
for y = 1:n
back(x,y)=dhsig(vec_si);
arr_col = arr_col+1;
vec_si = vec_si + 1;
end
arr_row = arr_row+1;
3. end
%converting image from grayscale to rgb
[deco, map] = gray2ind(back,256);
RGB = ind2rgb(deco,map);
imwrite(RGB,'hasil_rgb.jpg');
figure(3);
imshow (RGB),title('Huffman Image');
pause (0.1);
1.2 Metode Pemampatan Run Length Encoding
image = imread('NikenAnis.jpg');
height = size(image,1);
width = size(image,2);
n_channel = size(image,3);
%variable container for compressed image
compressed = zeros(1,1,1);
%start count time
tic
%RLE Algorithm
for channel = 1:n_channel
for y = 1:height
compressed_y = y;
compressed_x = 1;
last_pixel = image(y,1,channel);
match = 1;
for x = 2:width
current_pixel = image(y,x,channel);
if(last_pixel == current_pixel)
match = match + 1;
if(match == 256)
compressed(compressed_y, compressed_x, channel) = match;
compressed(compressed_y, compressed_x + 1, channel) = last_pixel;
compressed_x = compressed_x + 2;
match = 1;
last_pixel = current_pixel;
end
else
compressed(compressed_y, compressed_x, channel) = match;
compressed(compressed_y, compressed_x + 1, channel) = last_pixel;
compressed_x = compressed_x + 2;
match = 1;
last_pixel = current_pixel;
end
end
compressed(compressed_y, compressed_x, channel) = match;
compressed(compressed_y, compressed_x + 1, channel) = current_pixel;
end
end
%Convert compressed data to 8 bit integer
4. compressed = uint8(compressed);
%Save compressed result
imwrite(compressed,'encode_result.bmp');
%end count time
time = toc;
2. Hasil
2.1 Metode Pemampatan Huffman
Dari eksekusi program pemampatan citra dengan metode Huffman menghasilkan dua
citra yaitu gambar 2.1 citra abu-abu yang dengan nama file citra_gray.jpg memiliki
ukuran 47,0 KB dan dimensi 690x694 dan gambar 2.2 merupakan hasil dari proses
pemampatan yang tersimpan dengan nama file hasil_rgb.jpg memiliki ukuran 49,4 KB
dan dimensi 690x694.
Gambar 2.1 citra abu-abu
5. Gambar 2.2 citra hasil proses pemampatan metode Huffman
2.2 Metode Pemampatan Run Length Encoding
Dari eksekusi program pemampatan citra dengan metode Run Length Encoding
menghasilkan citra gambar 2.3 yang tersimpan dengan nama file encode_result.bmp
memiliki ukuran 2,42MB dan dimensi 690x694.
Gambar 2.3 citra hasil proses pemampatan metode Run Length Encoding
6. 3. Analisis
Pemampatan citra dengan metode Huffman, pada mulanya adalah dengan membuat
progam citra asli yang diubah terlebih dahulu menjadi citra abu-abu, setelah mengubahnya
menjadi citra abu-abu proses selanjutnya dari pemampatan citra metode Huffman adalah
mengkompresi citra abu-abu tersebut. Hasil eksekusi program yang dihasilkan adalah
kualitasnya sama seperti citra asli. Karena gambar yang diolah ini memiliki variasi warna
yang banyak. Selain itu setelah proses pemampatan citra dengan metode Huffman
menghasilkan ukuran file yang lebih kecil yaitu dari yang semula ukuran 608 KB dimensi
690x694 menjadi 47,0 KB dimensi 690x694 (citra abu-abu) dan 49,4 KB dimensi 690x694
(citra hasil kompresi).
Sedangkan pemampatan citra dengan metode Run Length Encoding , berbeda dengan
pemampatan citra metode Huffman . Pada metode ini tanpa harus mengubah citra asli
menjadi citra abu-abu karena dengan metode ini kita langsung bisa mengkompresi gambar
citra asli. Namun hasil eksekusi yang dihasilkan metode ini memiliki ukuran file yang jauh
lebih besar dibandingkan file aslinya yaitu dari ukuran 608 KB dimensi 690x694 menjadi
2,42MB dimensi 690x694. Juga memiki kualitas yang buruk dibanding dengan citra aslinya.
Sehingga dapat diambil kesimpulan bahwa hasil kompresi yang diperoleh bergantung
pada metode yang digunakan, variasi dan kombinasi warna, kemunculan warna yang sama
pada suatu citra.