Perbandingan Algoritma Elias Delta Codes Dengan Levenstein Code Dalam Kompresi Citra .Gif Chapter III V
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem ialah proses identifikasi mengenai hal-hal yang dibutuhkan dan harus
ada pada sistem, agar sistem tersebut dapat berjalan sesuai dengan tujuan utama.
Analisis sistem dapat dilakukan dengan menentukan apa-apa saja yang menjadi input
dari sistem, proses apa yang dilakukan sistem dan apa yang menjadi output dari sistem
tersebut. Untuk menganalisis sebuah sistem ada beberapa hal yang biasa dilakukan,
yaitu sebagai berikut:
3.1.1. Analisis Masalah
Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya
sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana
mestinya sesuai dengan tujuan dari sistem itu. Permasalahan yang diangkat dari
penelitian ini adalah untuk mendapatkan algoritma kompresi yang lebih baik diantara
algoritma Elias Delta Code dan Levenstein yang akan digunakan untuk memampatkan
ukuran file. Kompresi citra menggunakan algoritma Elias Delta Code dengan
Levenstein dipengaruhi oleh jumlah karakter yang berada dalam file yang akan
dimampatkan. Pada penelitian ini file citra yang digunakan yaitu file citra .gif.
Diagram Ishikawa adalah diagram yang menunjukkan penyebab-penyebab dari
sebuah event yang spesifik. Diagram ini juga disebut dengan diagram tulang ikan atau
cause-and-effect diagram. Pemakaian diagram Ishikawa yang paling umum adalah
untuk mencegah efek serta mengembangkan kualitas produk. Analisa masalah lebih
jelas melalui diagram Ishikawa yang dapat dilihat pada Gambar 3.1.
Universitas Sumatera Utara
Universitas Sumatera Utara
Material
Metode
Sulit menemukan metode yang
tepat untuk kompresi file citra
File .gif yang memiliki
redundansi data
Metode kurang efesien
dalam melakukan kompresi
Mengurangi ukuran file
dengan teknik kompresi
Tidak ada software yang cocok
untuk kompresi file citra
Gemar mengumpulkan Data
tanpa memperdulikan ukuran
Software tidak bekerja
dengan baik
Mesin
Manusia
Gambar 3.1 Diagram Ishikawa Analisis Masalah
3.1.2 Analisis kebutuhan
Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan
sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu:
kebutuhan fungsional dan kebutuhan non-fungsional.
1. Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang
dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang
adalah sebagai berikut:
a. Sistem harus mampu membaca piksel yang berada dalam file citra.
b. Sistem harus mampu melakukan kompresi data terhadap file citra dengan
ekstensi file *.gif dengan metode Elias Delta Code dan Levenstein.
c. Sistem harus mampu melakukan dekompresi data terhadap hasil kompresi
dengan metode Elias Delta Code dan Levenstein ke file aslinya yaitu file citra
dengan ekstensi *.gif.
2. Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar aplikasi
yang dirancang mendapat umpan-balik yang baik dari pengguna aplikasi.
Kebutuhan non-fungsional yang harus dipenuhi aplikasi yang dirancang adalah
sebagai berikut:
a. Performa
Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang waktu
yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan.
Universitas Sumatera Utara
b. Informasi
Sistem harus mampu menyediakan informasi tentang data-data yang akan
digunakan pada sistem.
c. Ekonomi
Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya
tambahan dalam penggunaan perangkat keras maupun perangkat lunak.
d. Kontrol
Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang agar
fungsi dan kinerja sistem tetap terjaga dan dapat memberikan hasil yang sesuai
dengan keinginan pengguna.
e. Efisiensi
Sistem harus dirancang sesederhana mungkin agar memudahkan pengguna
dalam menggunakan atau menjalankan aplikasi tersebut.
f. Pelayanan
Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih kompleks
lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.
3.1.3. Analisis Proses
Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari sistem
yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan
sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh sistem
sehingga dengan mudah melakukan pemrograman pada sistem yang akan dibangun.
Dalam sistem ini terdapat dua proses utama yaitu proses kompresi dan dekompresi
dengan menggunakan metode Elias Delta Code dan Levenstein. Secara umum, proses
kompresi maupun dekompresi dari kedua metode ini serupa, hanya saja nilai dari
karakter yang akan digunakan yang akan berbeda menurut perhitungan masing masing
metode. Pada proses kompresi, sistem awalnya membaca piksel yang terdapat pada
file citra dan kemudian membuat tabel karakter dan frekuensi kemunculan karakter itu
yang telah diurutkan berdasarkan karakter yang memiliki frekuensi terbesar. Setelah
itu sistem membangkitkan kode Elias Delta atau Levenstein berdasarkan banyaknya
karakter pada tabel karakter yang telah dibuat. Kemudian sistem melakukan proses
kompresi berdasarkan tabel karakter dan tabel kode yang telah dibangkitkan itu. Pada
proses dekompresi, awalnya sistem membaca file hasil kompresi. Setelah
Universitas Sumatera Utara
mendapatkan bit-bit string hasil kompresi dan tabel karakter dan kodenya, kemudian
sistem melakukan proses dekompresi dengan mengubah bit-bit string itu ke dalam
bentuk karakter semula berdasarkan tabel karakter dan tabel kode yang telah dibuat
pada proses kompresi.
3.1.3.1. Analisis proses kompresi file citra dengan metode Elias Delta
Contoh penggunaan algoritma Elias Delta code pada citra adalah misalkan pada citra
grayscale dengan ukuran 5 x 5 piksel dapat dilihat pada gambar 3.2.
Gambar 3.2 Citra Grayscale 5x 5 Pixel
diproses dalam bentuk matriks:
67 163 214
93
72
47 176 166 107 133
32 210 102
17 136
88 194 156
32
124
98
61 156 215 129
Gambar 3.3 Matriks Citra Grayscale 5 x 5 Pixel
Universitas Sumatera Utara
Tabel 3.1. String yang Belum Dikompresi
NO
PIXEL
FREK
BIT
FREK * BIT
1
17
1
8
8
2
32
2
8
16
3
47
1
8
8
4
61
1
8
8
5
67
1
8
8
6
72
1
8
8
7
88
1
8
8
8
93
1
8
8
9
98
1
8
8
10
102
1
8
8
11
107
1
8
8
12
124
1
8
8
13
129
1
8
8
14
133
1
8
8
15
136
1
8
8
16
156
2
8
16
17
163
1
8
8
18
166
1
8
8
19
176
1
8
8
20
294
1
8
8
21
210
1
8
8
22
214
1
8
8
23
1
215
Total Bit
8
8
200
Sebelum melakukan proses kompresi, karakter tersebut diurutkan terlebih dahulu
berdasarkan dari karakter yang memiliki frekuensi terbesar ke terkecil. Proses
kompresi untuk Elias Delta Code dapat dilihat pada Tabel 3.2
Universitas Sumatera Utara
Tabel 3.2. String yang Sudah Dikompresi Dengan Elias Delta Code
NO PIXEL
ELIAS DELTA
FREK
BIT
FREK * BIT
CODES
1
156
1
2
1
2
2
32
0100
2
4
8
3
17
0101
1
4
4
4
47
01100
1
5
5
5
61
01110
1
5
5
6
67
01111
1
5
5
7
72
00100000
1
8
8
8
88
00100001
1
8
8
9
93
00100010
1
8
8
10
98
00100011
1
8
8
11
102
00100100
1
8
8
12
107
00100100
1
8
8
13
124
00100101
1
8
8
14
129
00100110
1
8
8
15
133
00100111
1
8
8
16
136
001010000
1
9
9
17
163
001010001
1
9
9
18
166
001010010
1
9
9
19
176
001010011
1
9
9
20
194
001010100
1
9
9
21
210
001010101
1
9
9
22
214
001010110
1
9
9
23
215
001010111
1
9
9
Total Bit
173
Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding
dan flagging diawal dan akhir string bit. Bit-bit itu dihasilkan dari panjang string bit
itu sendiri apakah habis dibagi delapan dan berapa sisanya jika dibagi delapan.
Universitas Sumatera Utara
Universitas Sumatera Utara
Karena jumlah string bit 173 tidak habis dibagi delapan dan sisanya adalah 5. Maka
dapat dibuat padding “000” dan flagnya adalah “00000011”. Sehingga total bit
seluruhnya setelah penambahan padding dan flagging adalah 184 bit.
Dari hasil kompresi dengan Elias Delta Code di atas dapat dihitung kinerja
kompresinya yaitu:
a.
Ratio of Compression (R c)
Rc =
Rc =
������ ���� ������� ����������
������ ���� ������ ℎ ����������
R
200
184
R c = 1.08
b.
Compression Ratio (CR)
CR =
CR =
������ ���� ������ℎ ����������
x 100 %
������ ���� ������� ����������
184
200
x 100 %
C R = 92 %
c. Space Savings
SS = 100 % – C R
SS = 100 % – 93 %
SS = 8 %
Universitas Sumatera Utara
3.1.3.2. Analisis proses kompresi file citra dengan metode Levenstein Code
Kompresi untuk kode Levenstein dapat dilihat pada Tabel 3.3.
Tabel 3.3. String yang Sudah Dikompresi Dengan Levenstein Code
NO PIXEL
LEVENSTEIN
FREK
BIT
FREK x BIT
CODE
1
156
0
2
1
2
2
32
10
2
2
4
3
17
1100
1
4
4
4
47
1101
1
4
4
5
61
1110000
1
7
7
6
67
1110001
1
7
7
7
72
1110010
1
7
7
8
88
1110011
1
7
7
9
93
11101000
1
8
8
10
98
11101001
1
8
8
11
102
11101010
1
8
8
12
107
11101011
1
8
8
13
124
11101100
1
8
8
14
129
11101101
1
8
8
15
133
11101110
1
8
8
16
136
11101111
1
8
8
17
163
111100000000
1
12
12
18
166
111100000001
1
12
12
19
176
111100000010
1
12
12
20
194
111100000011
1
12
12
21
210
111100000100
1
12
12
22
214
111100000101
1
12
12
23
215
111100000110
1
12
12
Total Bit
190
Universitas Sumatera Utara
Dari hasil kompresi dengan Levenstein Code di atas dapat dihitung kinerja
kompresinya yaitu:
a. Ratio of Compression (R c)
Rc =
Rc =
������ ���� ������� ����������
������ ���� ������ ℎ ����������
R
200
190
R c = 1. 05
b. Compression Ratio (CR)
CR =
CR =
CR =
c.
������ ���� ������ℎ ����������
x 100 %
������ ���� ������� ����������
190
200
x 100%
95 %
Space Savings
SS = 100 % – C R
SS = 100 % – 95 %
SS = 5 %
3.2 Perancangan Sistem
Untuk memudahkan pengoperasian aplikasi ini, maka perlu dibuatkan rancangan
perangkat lunak berupa rancangan Flowchart, Use Case, Activity, Sequence Diagram,
dan kode program Encode-Decode.
3.2.1 Flowchart
Flowchart adalah diagram alir proses kompresi dan dekompresi file citra yang
menggambarkan aliran data citra mulai dari pemasukan data citra, proses pengolahan,
Universitas Sumatera Utara
Universitas Sumatera Utara
proses kompresi sampai menampilkan hasil kompresi. Rancangan Flow Chart
kompresi dan dekompresi terdiri dari Algoritma Elias Delta codes dan Levenstein
code.
3.2.1.1 Flowchart Secara Umum pada Sistem
Rancangan Flowchart untuk proses kompresi sistem dapat dilihat pada gambar 3 di
bawah ini.
Mulai
Input citra .GIF
Kompresi
dengan Elias
delta codes
tidak
Kompresi dengan
Levenstein code
ya
Output : Waktu Kompresi
Rc, Cr, SS, String Bit
Selesai
Gambar 3.4 Flowchart Kompresi Pada Sistem
Universitas Sumatera Utara
Rancangan Flowchart untuk proses dekompresi sistem dapat dilihat pada gambar 3 di
bawah ini.
Start
Input citra .GIF
Dekompresi
dengan Elias
delta codes
tidak
Dekompresi dengan
Levenstein code
ya
Output : Waktu
dekompresi
Rc, Cr, SS, String Bit
End
Gambar 3.5 Flowchart Dekompresi Pada Sistem
3.2.2 Use case diagram
Use Case Diagram merupakan bentuk pemodelan dari sistem yang menggambarkan
functional requirements dari sebuah sistem. Functional requirements dibuat
berdasarkan informasi dari kebutuhan sistem dan aktor yang berperan di dalamnya.
Use Case Diagram untuk sistem dalam penelitian ini dapat dilihat pada Gambar 3.2.
Universitas Sumatera Utara
Gambar 3.6 Use Case Diagram Pada Sistem
Use Case pada Gambar 3.6 menjelaskan bahwa user dapat melakukan proses
kompresi dan dekompresi. Pada proses kompresi user membuka file teks, kemudian
menentukan direktori untuk menyimpan file hasil kompresi, user dapat memilih
metode yang digunakan yaitu Elias Delta Code dan Levenstein, dan user dapat
melakukan kompresi. Setelah user melakukan kompresi maka akan ditampilkan
informasi hasil kompresi dan user dapat menghapus informasi tersebut. Pada proses
dekompresi user membuka file hasil kompresi, kemudian menentukan direktori untuk
file hasil dekompresi, dan user dapat melakukan dekompresi. Spesifikasi setiap Use
Case dapat diuraikan sebagai berikut.
3.2.3 Activity diagram
Activity diagram adalah bentuk pemodelan dari sistem yang menggambarkan alur dari
proses yang terjadi pada sebuah use case dan untuk menggambarkan logika dari suatu
sistem. Activity diagram dibuat berdasarkan use case yang telah ditentukan
sebelumnya pada proses requirement analysis. Activity diagram yang terdapat pada
sistem ini adalah sebagai berikut.
Universitas Sumatera Utara
Universitas Sumatera Utara
3.2.3.1. Activity diagram pada proses kompresi
Pada proses kompresi, aktivitas yang berlangsung dapat digambarkan pada Activity
Diagram sebagai berikut.
Gambar 3.7 Activity Diagram proses Kompresi
3.2.3.2. Activity Diagram pada proses dekompresi
Pada proses dekompresi, aktivitas-aktivitas yang berlangsung dapat digambarkan
pada Activity Diagram sebagai berikut.
Universitas Sumatera Utara
Gambar 3.8 Activity Diagram proses Dekompresi
3.2.4. Sequence Diagram
Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan
antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi.
Diagram ini mengilustrasikan bagaimana pesan dikirim dan diterima diantara objek
dan diurutan yang mana. Sequence Diagram untuk sistem yang dirancang pada
penelitian ini adalah sebagai berikut.
Universitas Sumatera Utara
3.2.4.1. Sequence Diagram pada proses kompresi
Sequence Diagram untuk proses kompresi dapat dilihat pada Gambar 3.9
Gambar 3.9 Sequence Diagram Pada Proses Kompresi
3.2.4.2. Sequence Diagram pada proses dekompresi
Sequence Diagram untuk proses dekompresi dapat dilihat pada Gambar 3.10.
Gambar 3.10 Sequence Diagram Pada Proses Dekompresi
Universitas Sumatera Utara
Universitas Sumatera Utara
3.3. Alur Proses Sistem
3.3.1. Alur Proses Pembangkitan Elias Delta Code
Alur proses untuk Encode dengan Elias Delta Code dapat digambarkan dengan
pseudocode berikut.
private static String Encode(String stb)
{
StringBuilder code = new StringBuilder();
for (int i = 0; i < stb.Length; i+= 8) {
String x = stb.Substring(i, 8);
char y = (char)(BinToDec(x));
code.Append(y);
}
return code.ToString();
}
Untuk melakukan decode dengan Elias Delta Code, dapat digambarkan dengan
pseudocode sebagai berikut.
private static String Decode(String
code)
{
StringBuilder sb = new StringBuilder();
int t = code.Length;
for (int i = 0; i < t; i++) {
char x = code[i];
StringBuilder y = new
StringBuilder(DecToBin((int)x));
if (y.Length < 8) {
int z = 8 - y.Length % 8;
for (int j = 0; j < z; j++)
y.Insert(0, "0");
}
sb.Append(y);
}
return sb.ToString();
}
Universitas Sumatera Utara
3.3.2. Alur Proses Pembangkitan Levenstein Code
Alur proses untuk Encode dengan Levenstein Code dapat digambarkan dengan
pseudocode berikut.
void levenshteinEncode(char* source, char* dest)
{
IntReader intreader(source);
BitWriter bitwriter(dest);
while (intreader.hasLeft())
{
int num = intreader.getInt();
if (num == 0)
bitwriter.outputBit(0);
else
{
int c = 0;
BitStack bits;
do {
int m = 0;
for (int temp = num; temp > 1; temp>>=1)
calculate floor(log2(num))
++m;
for (int i=0; i < m; ++i)
bits.pushBit((num >> i) & 1);
num = m;
++c;
} while (num > 0);
for (int i=0; i < c; ++i)
bitwriter.outputBit(1);
bitwriter.outputBit(0);
while (bits.length() > 0)
bitwriter.outputBit(bits.popBit());
}
}
}
//
Untuk melakukan decode dengan Levenstein Code, dapat digambarkan dengan
pseudocode sebagai berikut.
void levenshteinDecode(char* source, char* dest)
{
BitReader bitreader(source);
IntWriter intwriter(dest);
while (bitreader.hasLeft())
{
int n = 0;
while (bitreader.inputBit()) // potentially dangerous
with malformed files.
++n;
int num;
if (n == 0)
Universitas Sumatera Utara
num = 0;
else
{
num = 1;
for (int i = 0; i < n-1; ++i)
{
int val = 1;
for (int j = 0; j < num; ++j)
val = (val
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem ialah proses identifikasi mengenai hal-hal yang dibutuhkan dan harus
ada pada sistem, agar sistem tersebut dapat berjalan sesuai dengan tujuan utama.
Analisis sistem dapat dilakukan dengan menentukan apa-apa saja yang menjadi input
dari sistem, proses apa yang dilakukan sistem dan apa yang menjadi output dari sistem
tersebut. Untuk menganalisis sebuah sistem ada beberapa hal yang biasa dilakukan,
yaitu sebagai berikut:
3.1.1. Analisis Masalah
Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya
sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana
mestinya sesuai dengan tujuan dari sistem itu. Permasalahan yang diangkat dari
penelitian ini adalah untuk mendapatkan algoritma kompresi yang lebih baik diantara
algoritma Elias Delta Code dan Levenstein yang akan digunakan untuk memampatkan
ukuran file. Kompresi citra menggunakan algoritma Elias Delta Code dengan
Levenstein dipengaruhi oleh jumlah karakter yang berada dalam file yang akan
dimampatkan. Pada penelitian ini file citra yang digunakan yaitu file citra .gif.
Diagram Ishikawa adalah diagram yang menunjukkan penyebab-penyebab dari
sebuah event yang spesifik. Diagram ini juga disebut dengan diagram tulang ikan atau
cause-and-effect diagram. Pemakaian diagram Ishikawa yang paling umum adalah
untuk mencegah efek serta mengembangkan kualitas produk. Analisa masalah lebih
jelas melalui diagram Ishikawa yang dapat dilihat pada Gambar 3.1.
Universitas Sumatera Utara
Universitas Sumatera Utara
Material
Metode
Sulit menemukan metode yang
tepat untuk kompresi file citra
File .gif yang memiliki
redundansi data
Metode kurang efesien
dalam melakukan kompresi
Mengurangi ukuran file
dengan teknik kompresi
Tidak ada software yang cocok
untuk kompresi file citra
Gemar mengumpulkan Data
tanpa memperdulikan ukuran
Software tidak bekerja
dengan baik
Mesin
Manusia
Gambar 3.1 Diagram Ishikawa Analisis Masalah
3.1.2 Analisis kebutuhan
Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan
sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu:
kebutuhan fungsional dan kebutuhan non-fungsional.
1. Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang
dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang
adalah sebagai berikut:
a. Sistem harus mampu membaca piksel yang berada dalam file citra.
b. Sistem harus mampu melakukan kompresi data terhadap file citra dengan
ekstensi file *.gif dengan metode Elias Delta Code dan Levenstein.
c. Sistem harus mampu melakukan dekompresi data terhadap hasil kompresi
dengan metode Elias Delta Code dan Levenstein ke file aslinya yaitu file citra
dengan ekstensi *.gif.
2. Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar aplikasi
yang dirancang mendapat umpan-balik yang baik dari pengguna aplikasi.
Kebutuhan non-fungsional yang harus dipenuhi aplikasi yang dirancang adalah
sebagai berikut:
a. Performa
Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang waktu
yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan.
Universitas Sumatera Utara
b. Informasi
Sistem harus mampu menyediakan informasi tentang data-data yang akan
digunakan pada sistem.
c. Ekonomi
Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya
tambahan dalam penggunaan perangkat keras maupun perangkat lunak.
d. Kontrol
Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang agar
fungsi dan kinerja sistem tetap terjaga dan dapat memberikan hasil yang sesuai
dengan keinginan pengguna.
e. Efisiensi
Sistem harus dirancang sesederhana mungkin agar memudahkan pengguna
dalam menggunakan atau menjalankan aplikasi tersebut.
f. Pelayanan
Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih kompleks
lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.
3.1.3. Analisis Proses
Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari sistem
yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan
sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh sistem
sehingga dengan mudah melakukan pemrograman pada sistem yang akan dibangun.
Dalam sistem ini terdapat dua proses utama yaitu proses kompresi dan dekompresi
dengan menggunakan metode Elias Delta Code dan Levenstein. Secara umum, proses
kompresi maupun dekompresi dari kedua metode ini serupa, hanya saja nilai dari
karakter yang akan digunakan yang akan berbeda menurut perhitungan masing masing
metode. Pada proses kompresi, sistem awalnya membaca piksel yang terdapat pada
file citra dan kemudian membuat tabel karakter dan frekuensi kemunculan karakter itu
yang telah diurutkan berdasarkan karakter yang memiliki frekuensi terbesar. Setelah
itu sistem membangkitkan kode Elias Delta atau Levenstein berdasarkan banyaknya
karakter pada tabel karakter yang telah dibuat. Kemudian sistem melakukan proses
kompresi berdasarkan tabel karakter dan tabel kode yang telah dibangkitkan itu. Pada
proses dekompresi, awalnya sistem membaca file hasil kompresi. Setelah
Universitas Sumatera Utara
mendapatkan bit-bit string hasil kompresi dan tabel karakter dan kodenya, kemudian
sistem melakukan proses dekompresi dengan mengubah bit-bit string itu ke dalam
bentuk karakter semula berdasarkan tabel karakter dan tabel kode yang telah dibuat
pada proses kompresi.
3.1.3.1. Analisis proses kompresi file citra dengan metode Elias Delta
Contoh penggunaan algoritma Elias Delta code pada citra adalah misalkan pada citra
grayscale dengan ukuran 5 x 5 piksel dapat dilihat pada gambar 3.2.
Gambar 3.2 Citra Grayscale 5x 5 Pixel
diproses dalam bentuk matriks:
67 163 214
93
72
47 176 166 107 133
32 210 102
17 136
88 194 156
32
124
98
61 156 215 129
Gambar 3.3 Matriks Citra Grayscale 5 x 5 Pixel
Universitas Sumatera Utara
Tabel 3.1. String yang Belum Dikompresi
NO
PIXEL
FREK
BIT
FREK * BIT
1
17
1
8
8
2
32
2
8
16
3
47
1
8
8
4
61
1
8
8
5
67
1
8
8
6
72
1
8
8
7
88
1
8
8
8
93
1
8
8
9
98
1
8
8
10
102
1
8
8
11
107
1
8
8
12
124
1
8
8
13
129
1
8
8
14
133
1
8
8
15
136
1
8
8
16
156
2
8
16
17
163
1
8
8
18
166
1
8
8
19
176
1
8
8
20
294
1
8
8
21
210
1
8
8
22
214
1
8
8
23
1
215
Total Bit
8
8
200
Sebelum melakukan proses kompresi, karakter tersebut diurutkan terlebih dahulu
berdasarkan dari karakter yang memiliki frekuensi terbesar ke terkecil. Proses
kompresi untuk Elias Delta Code dapat dilihat pada Tabel 3.2
Universitas Sumatera Utara
Tabel 3.2. String yang Sudah Dikompresi Dengan Elias Delta Code
NO PIXEL
ELIAS DELTA
FREK
BIT
FREK * BIT
CODES
1
156
1
2
1
2
2
32
0100
2
4
8
3
17
0101
1
4
4
4
47
01100
1
5
5
5
61
01110
1
5
5
6
67
01111
1
5
5
7
72
00100000
1
8
8
8
88
00100001
1
8
8
9
93
00100010
1
8
8
10
98
00100011
1
8
8
11
102
00100100
1
8
8
12
107
00100100
1
8
8
13
124
00100101
1
8
8
14
129
00100110
1
8
8
15
133
00100111
1
8
8
16
136
001010000
1
9
9
17
163
001010001
1
9
9
18
166
001010010
1
9
9
19
176
001010011
1
9
9
20
194
001010100
1
9
9
21
210
001010101
1
9
9
22
214
001010110
1
9
9
23
215
001010111
1
9
9
Total Bit
173
Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding
dan flagging diawal dan akhir string bit. Bit-bit itu dihasilkan dari panjang string bit
itu sendiri apakah habis dibagi delapan dan berapa sisanya jika dibagi delapan.
Universitas Sumatera Utara
Universitas Sumatera Utara
Karena jumlah string bit 173 tidak habis dibagi delapan dan sisanya adalah 5. Maka
dapat dibuat padding “000” dan flagnya adalah “00000011”. Sehingga total bit
seluruhnya setelah penambahan padding dan flagging adalah 184 bit.
Dari hasil kompresi dengan Elias Delta Code di atas dapat dihitung kinerja
kompresinya yaitu:
a.
Ratio of Compression (R c)
Rc =
Rc =
������ ���� ������� ����������
������ ���� ������ ℎ ����������
R
200
184
R c = 1.08
b.
Compression Ratio (CR)
CR =
CR =
������ ���� ������ℎ ����������
x 100 %
������ ���� ������� ����������
184
200
x 100 %
C R = 92 %
c. Space Savings
SS = 100 % – C R
SS = 100 % – 93 %
SS = 8 %
Universitas Sumatera Utara
3.1.3.2. Analisis proses kompresi file citra dengan metode Levenstein Code
Kompresi untuk kode Levenstein dapat dilihat pada Tabel 3.3.
Tabel 3.3. String yang Sudah Dikompresi Dengan Levenstein Code
NO PIXEL
LEVENSTEIN
FREK
BIT
FREK x BIT
CODE
1
156
0
2
1
2
2
32
10
2
2
4
3
17
1100
1
4
4
4
47
1101
1
4
4
5
61
1110000
1
7
7
6
67
1110001
1
7
7
7
72
1110010
1
7
7
8
88
1110011
1
7
7
9
93
11101000
1
8
8
10
98
11101001
1
8
8
11
102
11101010
1
8
8
12
107
11101011
1
8
8
13
124
11101100
1
8
8
14
129
11101101
1
8
8
15
133
11101110
1
8
8
16
136
11101111
1
8
8
17
163
111100000000
1
12
12
18
166
111100000001
1
12
12
19
176
111100000010
1
12
12
20
194
111100000011
1
12
12
21
210
111100000100
1
12
12
22
214
111100000101
1
12
12
23
215
111100000110
1
12
12
Total Bit
190
Universitas Sumatera Utara
Dari hasil kompresi dengan Levenstein Code di atas dapat dihitung kinerja
kompresinya yaitu:
a. Ratio of Compression (R c)
Rc =
Rc =
������ ���� ������� ����������
������ ���� ������ ℎ ����������
R
200
190
R c = 1. 05
b. Compression Ratio (CR)
CR =
CR =
CR =
c.
������ ���� ������ℎ ����������
x 100 %
������ ���� ������� ����������
190
200
x 100%
95 %
Space Savings
SS = 100 % – C R
SS = 100 % – 95 %
SS = 5 %
3.2 Perancangan Sistem
Untuk memudahkan pengoperasian aplikasi ini, maka perlu dibuatkan rancangan
perangkat lunak berupa rancangan Flowchart, Use Case, Activity, Sequence Diagram,
dan kode program Encode-Decode.
3.2.1 Flowchart
Flowchart adalah diagram alir proses kompresi dan dekompresi file citra yang
menggambarkan aliran data citra mulai dari pemasukan data citra, proses pengolahan,
Universitas Sumatera Utara
Universitas Sumatera Utara
proses kompresi sampai menampilkan hasil kompresi. Rancangan Flow Chart
kompresi dan dekompresi terdiri dari Algoritma Elias Delta codes dan Levenstein
code.
3.2.1.1 Flowchart Secara Umum pada Sistem
Rancangan Flowchart untuk proses kompresi sistem dapat dilihat pada gambar 3 di
bawah ini.
Mulai
Input citra .GIF
Kompresi
dengan Elias
delta codes
tidak
Kompresi dengan
Levenstein code
ya
Output : Waktu Kompresi
Rc, Cr, SS, String Bit
Selesai
Gambar 3.4 Flowchart Kompresi Pada Sistem
Universitas Sumatera Utara
Rancangan Flowchart untuk proses dekompresi sistem dapat dilihat pada gambar 3 di
bawah ini.
Start
Input citra .GIF
Dekompresi
dengan Elias
delta codes
tidak
Dekompresi dengan
Levenstein code
ya
Output : Waktu
dekompresi
Rc, Cr, SS, String Bit
End
Gambar 3.5 Flowchart Dekompresi Pada Sistem
3.2.2 Use case diagram
Use Case Diagram merupakan bentuk pemodelan dari sistem yang menggambarkan
functional requirements dari sebuah sistem. Functional requirements dibuat
berdasarkan informasi dari kebutuhan sistem dan aktor yang berperan di dalamnya.
Use Case Diagram untuk sistem dalam penelitian ini dapat dilihat pada Gambar 3.2.
Universitas Sumatera Utara
Gambar 3.6 Use Case Diagram Pada Sistem
Use Case pada Gambar 3.6 menjelaskan bahwa user dapat melakukan proses
kompresi dan dekompresi. Pada proses kompresi user membuka file teks, kemudian
menentukan direktori untuk menyimpan file hasil kompresi, user dapat memilih
metode yang digunakan yaitu Elias Delta Code dan Levenstein, dan user dapat
melakukan kompresi. Setelah user melakukan kompresi maka akan ditampilkan
informasi hasil kompresi dan user dapat menghapus informasi tersebut. Pada proses
dekompresi user membuka file hasil kompresi, kemudian menentukan direktori untuk
file hasil dekompresi, dan user dapat melakukan dekompresi. Spesifikasi setiap Use
Case dapat diuraikan sebagai berikut.
3.2.3 Activity diagram
Activity diagram adalah bentuk pemodelan dari sistem yang menggambarkan alur dari
proses yang terjadi pada sebuah use case dan untuk menggambarkan logika dari suatu
sistem. Activity diagram dibuat berdasarkan use case yang telah ditentukan
sebelumnya pada proses requirement analysis. Activity diagram yang terdapat pada
sistem ini adalah sebagai berikut.
Universitas Sumatera Utara
Universitas Sumatera Utara
3.2.3.1. Activity diagram pada proses kompresi
Pada proses kompresi, aktivitas yang berlangsung dapat digambarkan pada Activity
Diagram sebagai berikut.
Gambar 3.7 Activity Diagram proses Kompresi
3.2.3.2. Activity Diagram pada proses dekompresi
Pada proses dekompresi, aktivitas-aktivitas yang berlangsung dapat digambarkan
pada Activity Diagram sebagai berikut.
Universitas Sumatera Utara
Gambar 3.8 Activity Diagram proses Dekompresi
3.2.4. Sequence Diagram
Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan
antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi.
Diagram ini mengilustrasikan bagaimana pesan dikirim dan diterima diantara objek
dan diurutan yang mana. Sequence Diagram untuk sistem yang dirancang pada
penelitian ini adalah sebagai berikut.
Universitas Sumatera Utara
3.2.4.1. Sequence Diagram pada proses kompresi
Sequence Diagram untuk proses kompresi dapat dilihat pada Gambar 3.9
Gambar 3.9 Sequence Diagram Pada Proses Kompresi
3.2.4.2. Sequence Diagram pada proses dekompresi
Sequence Diagram untuk proses dekompresi dapat dilihat pada Gambar 3.10.
Gambar 3.10 Sequence Diagram Pada Proses Dekompresi
Universitas Sumatera Utara
Universitas Sumatera Utara
3.3. Alur Proses Sistem
3.3.1. Alur Proses Pembangkitan Elias Delta Code
Alur proses untuk Encode dengan Elias Delta Code dapat digambarkan dengan
pseudocode berikut.
private static String Encode(String stb)
{
StringBuilder code = new StringBuilder();
for (int i = 0; i < stb.Length; i+= 8) {
String x = stb.Substring(i, 8);
char y = (char)(BinToDec(x));
code.Append(y);
}
return code.ToString();
}
Untuk melakukan decode dengan Elias Delta Code, dapat digambarkan dengan
pseudocode sebagai berikut.
private static String Decode(String
code)
{
StringBuilder sb = new StringBuilder();
int t = code.Length;
for (int i = 0; i < t; i++) {
char x = code[i];
StringBuilder y = new
StringBuilder(DecToBin((int)x));
if (y.Length < 8) {
int z = 8 - y.Length % 8;
for (int j = 0; j < z; j++)
y.Insert(0, "0");
}
sb.Append(y);
}
return sb.ToString();
}
Universitas Sumatera Utara
3.3.2. Alur Proses Pembangkitan Levenstein Code
Alur proses untuk Encode dengan Levenstein Code dapat digambarkan dengan
pseudocode berikut.
void levenshteinEncode(char* source, char* dest)
{
IntReader intreader(source);
BitWriter bitwriter(dest);
while (intreader.hasLeft())
{
int num = intreader.getInt();
if (num == 0)
bitwriter.outputBit(0);
else
{
int c = 0;
BitStack bits;
do {
int m = 0;
for (int temp = num; temp > 1; temp>>=1)
calculate floor(log2(num))
++m;
for (int i=0; i < m; ++i)
bits.pushBit((num >> i) & 1);
num = m;
++c;
} while (num > 0);
for (int i=0; i < c; ++i)
bitwriter.outputBit(1);
bitwriter.outputBit(0);
while (bits.length() > 0)
bitwriter.outputBit(bits.popBit());
}
}
}
//
Untuk melakukan decode dengan Levenstein Code, dapat digambarkan dengan
pseudocode sebagai berikut.
void levenshteinDecode(char* source, char* dest)
{
BitReader bitreader(source);
IntWriter intwriter(dest);
while (bitreader.hasLeft())
{
int n = 0;
while (bitreader.inputBit()) // potentially dangerous
with malformed files.
++n;
int num;
if (n == 0)
Universitas Sumatera Utara
num = 0;
else
{
num = 1;
for (int i = 0; i < n-1; ++i)
{
int val = 1;
for (int j = 0; j < num; ++j)
val = (val