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