Perbandingan Kompresi Citra Menggunakan Algoritma Run- Length Encoding Dengan Algoritma Elias Delta Code

(1)

LISTING PROGRAM

void RLECode() {

sss = 0;

int cur = -1,k = 0,m; bool first;

StringBuilder sb = new StringBuilder(); for(int i=0; i<width; i++)

{

first = true; m=0;

sb.Clear();

for(int j=0; j<height; j++) {

p = bmp.GetPixel(i,j); int r = p.R;

int g = p.G; int b = p.B;

int h = (r+g+b)/3; if(first)

{

cur = h;

first = false; k = 1;

} else { if(cur==h) { k++; } else {

sss += cur.ToString().Length; sss += k.ToString().Length; m+=2;


(2)

sb.Append(cur.ToString()+" "+k.ToString()+" ");

cur = h; k = 1; }

} }

sss += cur.ToString().Length; sss += k.ToString().Length;

sb.Append(cur.ToString()+" "+k.ToString()+" "); ch2.Add(sb.ToString()); hs2.Add(m+2); } } void EDCode() {

edc = new string[ch.Count]; edc[0] = "0";

int c = 0;

StringBuilder v;

for (int n = 1; n < ch.Count + 1; n++)

{

String b = DecToBin(n); int M = b.Length;

String Mb = DecToBin(M); v = new StringBuilder();

for (int k = 0; k < Mb.Length - 1; k++) v.Append("0");

v.Append(Mb);

String b1 = b.Substring(1, M - 1); v.Append(b1);

edc[c++] = v.ToString(); }


(3)

CURRICULUM VITAE DATA PRIBADI:

Nama: Sayed Hafitz

Tempat/Tanggal Lahir: Medan, 03 September 1992 Jenis Kelamin: Laki-Laki

Warga Negara: Indonesia Agama: Islam

Alamat: Jl. Deposito No. 17 Komplek Wartawan Medan – 20239 Email: sayed.hafetz@gmail.com

Nomor Handphone: 082161323400 / 087868674661 PENDIDIKAN FORMAL:

Tahun Pendidikan Kota

2014-Sekarang Ekstensi S1 Ilmu Komputer Universitas Sumatera Utara

Medan 2011-2014 D3 Teknik Informatika Universitas

Sumatera Utara

Medan 2008-2011 SMA PLUS Shafiyyatul Amaliyyah Medan 2005-2008 SMP PLUS Shafiyyatul Amaliyyah Medan

1999-2005 SD Negeri No. 064967 Medan

PENDIDIKAN NON FORMAL:

Tahun Pendidikan Kota

2003-2005 Twinkleland English School Medan

Kursus yang diikuti:


(4)

DAFTAR PUSTAKA

Alkhudri, M. S., 2015, Implementasi Kombinasi Metode Huffman Dan Run-Length Encoding Untuk Kompresi Citra Digital, Ilmu Komputer, Universitas Sumatera Utara.

Andika, R., 2014, Implementasi Metode Punctured Elias Codes Pada Kompresi File Text, Ilmu Komputer, Universitas Sumatera Utara.

Boolos & Jeffrey, 1974. Computability and Logic(4th ed.). Cambridge University Press, London.

Erdiansyah, Umri, 2014, Perbandingan Algoritma Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks, Ilmu Komputer, Universitas Sumatera Utara.

Faradisa, I. S. & Budiono, B. F., 2011, Implementasi Metode Huffman Sebagai Kompresi Citra, Teknik Elektro, Institut Teknologi Nasional Malang.

Gacs, P. & Lovasz, L. 1999. Complexity of Algorithms. Spring: London.

Figueiredo, M.A.T. 2009. Elias Coding. Instituto Superior Tecnico, Lisboa, Portugal.

Knuth, D., 1968. The Art of Computer Programming, United States of

America.

Lubis, E. R., 2014, Analisis Perbandingan Kompresi Citra Menggunakan Lempel-Ziv-Markov Chain Algorithm (LZMA) Dan Run Length Encoding, Ilmu Komputer, Universitas Sumatera Utara.


(5)

Paryono, P., 2010. Citra Digital.

Pramitarini, Y., 2011, Analisa Pengiriman Citra Terkompresi JPEG Dengan Teknik Spread Spektrum Direct Sequence (DS-SS), Teknik Telekomunikasi, Institut Teknologi Sepuluh November.

Putra, D., 2010. Pengolahan Citra Digital. Yogyakarta: Penerbit Andi.

Salomon, D. & Motta, G. 2010. Handbook of Data Compression. Fifth Edition. Springer.

Salomon, D., 2007, Data Compression The Complete Reference 4th Ed, London: Springer.

Santi, R. 2010. Perancangan Perangkat Lunak Kompresi File Citra Dengan Menggunakan Algoritma Run Length Encoding (RLE), Ilmu Komputer, Universitas Sumatera Utara.

Sutoyo, T., 2009. Teori Pengolahan Citra Digital. Yogyakarta: Penerbit ANDI.


(6)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini penulis memaparkan analisis permasalahan yang diangkat yang disajikan dengan diagram dan flowchart serta dipaparkan juga perancangan sistem yang akan dibangun, baik yang berupa perangkat keras ataupun perangkat lunak, cara melakukan pengujian dan bentuk topologi.

3.1 Analisis

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 yang akan dilakukan adalah bagaimana mengkompresi citra dengan format *.bmp dengan menggunakan metode Run-Length Encoding dan Elias Delta Code. Kemudian citra didekompresi kembali dengan metode yang sama. Masalah pada penelitian secara umum ditunjukkan dengan menggunakan diagram Ishikawa pada gambar 3.1.


(7)

Gambar 3.1 Diagram Ishikawa Pada 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 sistem merupakan segala sesuatu yang dibutuhkan sistem. Dalam pengimplementasian sistem kompresi dan dekompresi citra dengan menggunakan metode Run-Length Encoding dan Elias Delta Code ini memiliki kebutuhan fungsional yang harus dipenuhi, antara lain:

a. Citra digital yang akan dikompresi berformat *.bmp.

b. Proses implementasi pada sistem ini dilakukan dengan melakukan kompresi dan dekompresi menggunakan metode Run-Length Encoding dan Elias Delta Code. c. Sistem akan menampilkan citra yang telah berhasil dikompresi dan berusaha

mengembalikan citra kembali dengan proses dekompresi. 2. Kebutuhan non-fungsional sistem, antara lain :

a. Performa

Sistem dapat melaksanakan setiap tugas secara utuh dalam selang waktu yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan.


(8)

b. Informasi

Sistem dapat menyediakan informasi tentang citra yang digunakan pada sistem.

c. Dokumentasi

Software yang dibangun dapat menyimpan hasil citra baik yang telah dikompresi, maupun yang telah didekompresi.

d. Efisiensi

Sistem dirancang sesederhana mungkin agar memudahkan pengguna dalam menggunakan atau menjalankan aplikasi tersebut.

e. Ekonomi

Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak.

3.1.3 Analisis Proses

Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari system yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh system 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 Run-Length Encoding dan Elias Delta Code. Secara umum, proses kompresi maupun dekompresi dari kedua metode ini serupa, hanya saja nilai dari pixel yang akan digunakan yang akan berbeda menurut perhitungan masing-masing metode. Pada proses kompresi, sistem awalnya membaca gambar yang terdapat pada file. Setelah itu sistem membangkitkan kode Run-Length Encoding atau Elias Delta Code berdasarkan banyaknya pixel pada tabel pixel yang telah dibuat. Kemudian sistem melakukan proses kompresi berdasarkan tabel pixel dan tabel kode yang telah dibangkitkan itu. Pada proses dekompresi, awalnya sistem membaca file hasil kompresi. Setelah mendapatkan bit-bit string hasil kompresi dan tabel pixel dan kodenya.


(9)

3.2 Perancangan Sistem

Untuk memudahkan pengoperasian aplikasi ini, maka perlu dibuatkan rancangan perangkat lunak berupa rancangan Flowchart, Use Case, Activity, Sequence Diagram, dan pseudocode.

3.2.1 Diagram Flowchart Pada Kompresi Dan Dekompresi Citra

Rancangan diagram Flowchart diagram yang menggambarkan aliran data citra dari User (eksternal entiti) ke sistem kompresi dan dekompresi Run-Length Encoding dan Elias Delta Code secara global. Pada sistem kompresi terdapat proses-proses pengolahan citra dan proses kompresi dan dekompresi dengan algoritma Run-Length Encoding dan Elias Delta Code. Selanjutnya citra hasil kompresi akan kembali ke User. Rancangan diagram aliran data kompresi Run-Length Encoding dan Elias Delta Code dapat dilihat pada gambar 3.2. Untuk dekompresi dapat dilihat pada gambar 3.3.


(10)

3.2.1.1Flowchart Sistem Secara Umum

Perancangan sistem secara umum digambarkan dengan flowchart seperti pada gambar 3.2 dan 3.3


(11)

(12)

3.2.1.2Flowchart Algoritma Run-Length Encoding

Flowchart algoritma Run-Length Encoding digambarkan pada gambar 3.4


(13)

3.2.1.3Flowchart Algoritma Elias Delta Code

Flowchart algoritma Elias Delta Code digambarkan pada gambar 3.5


(14)

3.2.2 Diagram Use Case

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.6.

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.


(15)

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.

Tabel 3.1 Spesifikasi Use Case Kompresi

Name Kompresi

Actors Pengguna

Trigger Pengguna memilih Button Kompresi Preconditions -

Post Conditions Sistem menampilkan form untuk proses kompresi Success Scenario Pengguna mengeksekusi Button Kompresi

Alternative Flows -

Tabel 3.2 Spesifikasi Use Case Dekompresi

Name Dekompresi

Actors Pengguna

Trigger Pengguna memilih Button Dekompresi Preconditions -

Post Conditions Sistem menampilkan form untuk proses dekompresi Success Scenario Pengguna mengeksekusi Button Dekompresi

Alternative Flows -

Tabel 3.3 Spesifikasi Use Case Buka File Gambar

Name Buka File Gambar

Actors Pengguna

Preconditions Pengguna mengakses Button Buka File Gambar Post Conditions Sistem membaca File Input dari File gambar (*.bmp). Success Scenario 1. Pengguna mengeksekusi tombol Buka File Gambar.

2. Sistem menampilkan window untuk mencari File Input. 3. Pengguna memilih File Input (*.bmp).


(16)

Alternative Flows -

Tabel 3.4 Spesifikasi Use Case Kompres

Name Kompres

Actors Pengguna

Trigger Pengguna mengakses Button Kompres.

Preconditions 1. Pengguna memilih Button Kompresi dan menuju form Kompresi.

2. Pengguna mengeksekusi Button Open File Gambar. 3. Pengguna mengeksekusi Button Pilih Algoritma. 4. Pengguna mengeksekusi Button Save File Gambar. Post Conditions Sistem melakukan proses kompresi file gambar (*.bmp) Success Scenario 1. Pengguna mengeksekusi tombol Kompresi.

2. Sistem melakukan proses kompresi.

3. Sistem menghasilkan File Output hasil kompresi (*.rle atau *.eld).

Alternative Flows -

Tabel 3.5 Spesifikasi Use Case Pilih Algoritma

Name Pilih Algoritma

Actors Pengguna

Trigger Pengguna mengakses Button Pilih Algoritma. Preconditions Pengguna memilih Button Kompresi.

Post Conditions Sistem memilih kode Run-Length Encoding atau Elias Delta sebagai metode kompresi.

Success Scenario 1. Pengguna memilih kode melalui radio button kode Run-Length Encoding atau Elias Delta

Alternative Flows -

Tabel 3.6 Spesifikasi Use Case Simpan File Terkompresi

Name Save File Terkompresi

Actors Pengguna


(17)

Preconditions Pengguna memilih Button Kompresi.

Post Conditions Sistem menentukan direktori untuk menyimpan File hasil kompresi.

Success Scenario 1. Pengguna mengeksekusi tombol Save File Terkompresi. 2. Sistem menampilkan window untuk mencari direktori penyimpanan File.

3. Pengguna memilih direktori penyimpanan. 4. Pengguna mengeksekusi tombol Simpan. Alternative Flows -

Tabel 3.7 Spesifikasi Use Case Buka File Terkompresi

Name Buka File Terkompresi

Actors Pengguna

Preconditions Pengguna mengakses Button Buka File Terkompresi

Post Conditions Sistem membaca File Input dari File gambar (*.rle atau *.eld). Success Scenario 1. Pengguna mengeksekusi tombol Open File Terkompresi.

2. Sistem menampilkan window untuk mencari File Input hasil kompresi (*.rle atau *.eld).

3. Pengguna memilih File Input (*.rle atau *.eld). 4. Pengguna mengeksekusi tombol Ambil.

Alternative Flows -

Tabel 3.8 Spesifikasi Use Case Dekompres

Name Dekompres

Actors Pengguna

Trigger Pengguna mengakses Button Dekompres.

Preconditions 1. Pengguna memilih Button Dekompresi dan menuju form Dekompresi.

2. Pengguna mengeksekusi Button Open File Terkompresi. 3. Pengguna mengeksekusi Button Pilih Algoritma.

4. Pengguna mengeksekusi Button Save File Gambar. Post Conditions Sistem melakukan proses kompresi file gambar (*.bmp). Success Scenario 1. Pengguna mengeksekusi tombol Decompress.

2. Sistem melakukan proses dekompresi.


(18)

Tabel 3.9 Spesifikasi Use Case Simpan File Gambar

Name Simpan File Gambar

Actors Pengguna

Trigger Pengguna mengakses Button Simpan File Gambar. Preconditions Pengguna memilih Button Dekompresi.

Post Conditions Sistem menentukan direktori untuk menyimpan File hasil dekompresi.

Success Scenario 1. Pengguna mengeksekusi tombol Save File Gambar. 2. Sistem menampilkan window untuk mencari direktori penyimpanan File.

3. Pengguna memilih direktori penyimpanan. 4. Pengguna mengeksekusi tombol Simpan. Alternative Flows -

3.2.3 Diagram Activity

Diagram Activity 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. Diagram Activity yang terdapat pada sistem ini ada pada gambar 3.6. untuk kompresi, dan gambar 3.7. untuk dekompresi.


(19)

(20)

(21)

3.2.4 Diagram Sequence

Diagram Sequence 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. Diagram Sequence untuk sistem yang dirancang pada penelitian ini ada pada gambar 3.8. untuk proses kompresi dan pada gambar 3.9. untuk proses dekompresi.

Gambar 3.9 Sequence Diagram Pada Proses Kompresi


(22)

3.2.5 Alur Proses Sistem

3.2.5.1 Alur Proses Pembangkitan Run-Length Encoding

Alur proses untuk Encode dengan Run-Length Encoding dapat digambarkan dengan pseudocode berikut.

function RLECode() 0 <- sss

0,m <- -1,k <- cur for i to width do

true <- first m <- 0

for j to height do bmp.GetPixel(i,j) <- p p.R <- r

p.G <- g p.B <- b

(r+g+b)/3 <- h if(first)

h <- cur

false <- first 1 <- k

else

if(cur==h) k++ else

cur().Length <- sss + k().Length <- sss +

2 <- m+

sb + cur() + " " + k ()+" " <- sb h <- cur

k <- 1

sb + cur () + " " + k () + " " <- sb ch2.Add(sb ())


(23)

3.2.5.2 Alur Proses Pembangkitan Elias Delta Code

Alur proses untuk Encode dengan Elias Delta Code dapat digambarkan dengan pseudocode berikut.

function EDCode() ch.Count <- edc "0" <- edc

0 <- c

for n to ch.Count do DecToBin(n) <- b b.Length <- M DecToBin(M) <- Mb () <- v

for k to Mb.Length do v.Append("0") v.Append(Mb)

b (1, M - 1) <- b1 v.Append(b1)

v <- edc[c++]

3.3 Rancangan User

Rancangan User berfungsi sebagai perantara antara pengguna dengan perangkat lunak. Agar perangkat lunak dapat digunakan dengan baik oleh pengguna perlu dibuatkan rancangan menu.

3.3.1 Rancangan Menu Utama

Rancangan menu utama terdapat pada 3 button, yaitu Button Compress untuk menuju form Kompresi, Button Decompress untuk menuju form Dekompresi, dan Button About Me untuk menuju form Biodata penelitian.


(24)

Gambar 3.11 Rancangan Menu Utama

Keterangan:

1. Label tempat menampilkan judul skripsi.

2. Button Compression untuk menuju ke form Kompresi. 3. Button Decompression untuk menuju ke form Dekompresi. 4. Button About Me untuk menuju ke form About Me.

3.3.2 Rancangan Form Kompresi

Rancangan kompresi terdapat beberapa button dan juga text box yang akan digunakan dalam melakukan kompresi.

2 3

4 1


(25)

Gambar 3.12 Rancangan Form Kompresi

Keterangan:

1. PictureBox berguna untuk gambar sebelum terkompres.

2. TextBox berguna untuk melihat nilai bit gambar yang terkompres.

3. Button berguna untuk pengambilan gambar. 4. Button berguna untuk mengkompres citra.

5. Button berguna untuk penyimpanan gambar setelah terkompres.

6. GroupBox berguna untuk mengelompokkan 2 Radio Button untuk pemilihan algoritma.

7. TextBox berguna untuk melihat Compressed Bits ketika mengklik Button Compress.

3 4

11

5

6

13 12 1

2

9 10

14

15 16

7 8


(26)

8. TextBox berguna untuk melihat Compression Ratio ketika mengklik Button Compress.

9. TextBox berguna untuk melihat Ratio of Compression ketika mengklik Button Compress.

10. TextBox berguna untuk melihat Redundancy Data ketika mengklik Button Compress.

11. TextBox berguna untuk melihat waktu kompresi ketika mengklik Button Compress.

12. RadioButton berguna untuk memilih algoritma Run-Length Encoding. 13. RadioButton berguna untuk memilih algoritma Elias Delta Code. 14. TextBox berguna untuk melihat browse folder.

15. TextBox berguna untuk melihat resolusi gambar. 16. TextBox berguna untuk melihat nilai bit.

17. Button berguna untuk Zoom In Citra. 18. Button berguna untuk Zoom Out Citra. 3.3.3 Rancangan Form Dekompresi

Rancangan dekompresi terdapat beberapa button dan juga text box yang akan digunakan dalam melakukan dekompresi.

Gambar 3.13 Rancangan Form Dekompresi

Gambar 3.13 Rancangan Form Dekompresi 3

2 1

4 5

6 7

9

8


(27)

Keterangan:

1. PictureBox berguna untuk gambar setelah string bit terdekompres. 2. TextBox berguna untuk melihat browse folder.

3. GroupBox berguna untuk mengelompokkan 2 Radio Button untuk pemilihan algoritma.

4. RadioButton berguna untuk memilih algoritma Run-Length Encoding. 5. RadioButton berguna untuk memilih algoritma Elias Delta Code. 6. Button berguna untuk pengambilan gambar.

7. Button berguna untuk mendekompres citra.

8. Button berguna untuk menyimpan gambar yang kembali ke asalnya. 9. Textbox berguna untuk melihat waktu dekompresi.

10. Button berguna untuk Zoom In Citra. 11. Button berguna untuk Zoom Out Citra.

3.3.4Rancangan Form About Me

Rancangan About Me terdapat pada biodata pembuatan di dalam sistem yang dibangun.

Gambar 3.14 Rancangan Form About Me

Gambar 3.14 Rancangan Form About Me

Keterangan:

1. Label berisi keterangan mengenai biodata penulis. 2. PictureBox berisi foto penulis.

3. PictureBox berisi gambar logo. 1

1


(28)

BAB IV

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab ini penulis memaparkan bagaimana implementasi dari sistem dan juga hasil pengujian aplikasi yang dilakukan pada algoritma Run-Length Encoding dan Elias Delta Code yang sudah dibangun menggunakan C#.

4.1 Implementasi Algoritma

4.1.1 Implementasi Algoritma Run-Length Encooding

Berikut ini adalah contoh proses kompresi citra dengan algoritma Run-Length Encoding. Terdapat citra yang ber-resolusi 5 X 5 pixel dengan ukuran 1120 byte.

Gambar 4.1 Citra Grayscale 5 X 5 pixel

Tabel 4.1 Proses Pengkodean Algoritma Run-Length Encoding 53 64 121 73 30

65 149 193 173 72 115 208 104 197 107

74 198 222 177 42 39 621 111 54 32


(29)

Hasil kompresi yaitu:

53 1 64 1 121 1 73 1 30 1 65 1 149 1 193 1 173 1 72 1 115 1 208 1 104 1 197 1 107 1 74 1 198 1 222 1 177 1 42 1 39 1 62 1 111 1 54 1 32 1

Dari hasil kompresi algoritma Run-Length Encoding di atas dapat dihitung dengan parameter perbandingan, yaitu:

Ukuran citra sebelum dikompres = 1120 bit. Ukuran citra setelah dikompres = 88 bit Compression Ratio = 88

1120 X 100% = 7.866 % Ratio of Compression = 1120

88 = 12.73

Redundancy Data = 100% - 7.59 % = 6.86 %

4.1.2 Implementasi Algoritma Elias Delta Code

Berikut ini adalah contoh proses kompresi citra dengan algoritma Elias Delta Code pada gambar 4.1

Tabel 4.2 Proses Pengkodean Algoritma Elias Delta Code

PIXEL KETERANGAN KODE DELTA

53 1 1

64 2 = 102 (2 bit), Hapus angka 1 paling kiri dan

tambahkan 2 = 10 (2 bit), sehingga menjadi 10 | 0. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 0100.

0100

121 3 = 112 (2 bit), Hapus angka 1 paling kiri dan

tambahkan 2 = 10 (2 bit), sehingga menjadi 10 | 1. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 0101.

0101

73 4 = 1002 (3 bit), Hapus angka 1 paling kiri dan

tambahkan 3 = 11 (2 bit), sehingga menjadi 11


(30)

| 00. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 01100. 30 5 = 1012 (3 bit), Hapus angka 1 paling kiri dan

tambahkan 3 = 11 (2 bit), sehingga menjadi 11 | 01. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 01101.

01101

65 6 = 1102 (3 bit), Hapus angka 1 paling kiri dan

tambahkan 3 = 11 (2 bit), sehingga menjadi 11 | 10. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 01110.

01110

149 7 = 1112 (3 bit), Hapus angka 1 paling kiri dan

tambahkan 3 = 11 (2 bit), sehingga menjadi 11 | 11. 2 bit dikurang dengan 1 sama dengan 1. Tambahkan 1 nol paling kiri menjadi 01111.

01111

193 8 = 10003 (4 bit), hapus angka 1 paling kiri dan

tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 000. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100000.

00100000

173 9 = 10013 (4 bit), hapus angka 1 paling kiri dan

tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 001. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100001.

00100001

72 10 = 10103 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 010. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100010.


(31)

115 11 = 10113 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 011. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100011.

00100011

208 12 = 11003 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 100. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100100.

00100100

104 13 = 11013 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 101. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100101.

00100101

197 14 = 11103 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 110. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100110.

00100110

107 15 = 11113 (4 bit), hapus angka 1 paling kiri

dan tambahkan 4 = 100 (3 bit), sehingga menjadi 100 | 111. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 00100111.

00100011

74 16 = 100003 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0000. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010000.


(32)

198 17 = 100013 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0001. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010001.

001010001

222 18 = 100103 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0010. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010010.

001010010

177 19 = 100113 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0011. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010011.

001010011

42 20 = 101003 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0100. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010100.

001010100

39 21 = 101013 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0101. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010101.

001010101

62 22 = 101103 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0110. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010110.


(33)

111 23 = 101113 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 0111. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001010111.

001010111

54 24 = 110003 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 1000. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001011000.

001011000

32 25 = 110013 (5 bit), hapus angka 1 paling kiri

dan tambahkan 5 = 101 (3 bit), sehingga menjadi 101 | 1001. 3 bit dikurang dengan 1 sama dengan 2. Tambahkan 2 nol paling kiri menjadi 001011001.

001011001

Proses kompresi untuk algoritma Elias Delta Code dapat dilihat pada tabel 4.3.

Tabel 4.3 Citra Yang Terkompresi Dengan Algoritma Elias Delta Code

PIXEL FREKUENSI KODE DELTA BIT FREQ X BIT

53 1 1 1 1

64 1 0100 4 4

121 1 0101 4 4

73 1 01100 5 5

30 1 01101 5 5

65 1 01110 5 5

149 1 01111 5 5

193 1 00100000 8 8

173 1 00100001 8 8

72 1 00100010 8 8

155 1 00100011 8 8


(34)

104 1 00100101 8 8

197 1 00100110 8 8

107 1 00100111 8 8

74 1 001010000 9 9

198 1 001010001 9 9

222 1 001010010 9 9

177 1 001010011 9 9

42 1 001010100 9 9

39 1 001010101 9 9

62 1 001010110 9 9

111 1 001010111 9 9

54 1 001011000 9 9

32 1 001011001 9 9

JUMLAH BIT 183

Sebelum ditulis ke file hasil kompresi, maka dilakukan penambahan padding bit dan flag bit di akhir string bit. Bit tersebut dihasilkan dari panjang string bit itu sendiri apakah habis dibagi 8 dan berapa sisanya jika dibagi 8. Karena jumlah string bit 192 tidak habis dibagi 8 dan sisanya adalah 1. Maka dibuatlah padding bit-nya adalah “0”

dan flag bit-nya adalah “00000001” menjadi

“10100010101100011010111001111001000000010000100100010001000110010010 000100101001001100010011100101000000101000100101001000101001100101010 0001010101001010110001010111001011000001011001000000001”, sehingga total bit keseluruhannya adalah 50 bit.

Dengan uraian hasil kompresi sebagai berikut:

10100010 10110001 10101110 01111001 00000001 00001001 00010001 00011001 162 177 174 121 1 9 17 25 00100001 00101001 00110001 00111001 01000000 10100010 01010010 00101001 33 41 49 57 64 162 82 41


(35)

10010101 00001010 10100101 01100010 10111001 01100000 10110010 00000001 149 10 165 98 185 96 178 1

Hasil kompresi yaitu:

162, 177, 174 ,121, 1, 9, 17, 25, 33, 41, 49, 57, 64, 162, 82, 41, 149, 10, 165, 98, 185, 132, 96, 178, 1

Dari hasil kompresi algoritma Elias Delta Code di atas dapat dihitung dengan parameter perbandingan, yaitu:

Ukuran citra sebelum dikompres = 1120 bit. Ukuran citra setelah dikompres = 54 bit. Compression Ratio = 54

1120 X 100% = 4.82 % Ratio of Compression = 1120

54 = 20.74

Redundancy Data = 100% - 4.82 % = 3.82 %

Dari hasil perhitungan antara kedua algoritma tersebut, dapat diketahui bahwa algoritma Elias Delta Code lebih baik dibandingkan dengan Run-Length Encoding. Dilihat dari hasil Rc dan Rd dari Elias Delta Code lebih kecil dibandingkan dengan

Run-Length Encoding.

4.2 Implementasi Sistem

Implementasi sistem merupakan proses menerjemahkan hasil analisis dan perancangan sistem ke dalam sebuah bahasa pemrograman. Implementasi sistem pada penelitian ini dibangun menggunakan bahasa pemrogaman. Bahasa pemrograman bahasa pemrograman C#. Proses dari sistem atau modul kendali (controller) dan untuk tampilan antarmuka akan ditangani menggunakan bahasa C#. Proses dari sistem atau modul kendali (controller) dan untuk tampilan antarmuka akan ditangani menggunakan bahasa C#. Perangkat lunak yang digunakan sebagai Integrated Development Environment (IDE) untuk C# adalah SharpDevelop versi 4.4.1.9729-7196a277.


(36)

Proses implementasi yang dirancang pada sistem ini dibagi menjadi 4 form dalam bahasa C#, di antaranya yaitu form home untuk halaman utama, form Kompresi untuk menu kompresi, form Dekompresi untuk menu dekompresi, dan form About Me untuk profil penulis dan tentang aplikasi.

4.2.1 Form Home

Form Home merupakan form yang pertama kali muncul pada saat aplikasi dijalankan. Form ini terdiri dari 3 Button, yaitu Button Compress, Button Decompress, dan Button About Me. Halaman utama pada aplikasi dapat dilihat pada Gambar 4.2.

Gambar 4.2 Tampilan Form Home

4.2.2 Form Kompresi

Form Kompresi merupakan form yang digunakan untuk melakukan proses kompresi. Pada Form ini disediakan interface untuk input file gambar. PictureBox untuk menampilkan file gambar, TextBox untuk menampilkan bit pada gambar, dan perhitungan Compression Ratio, Ratio of Compression, Redundancy Data, dan waktu kompresi, serta GroupBox berisi 2 RadioButton untuk pemilihan algoritma. Tampilan untuk Form Kompresi dapat dilihat pada gambar 4.3.


(37)

Gambar 4.3 Tampilan Form Kompresi

4.2.3 Form Dekompresi

Form Dekompresi merupakan form yang digunakan untuk melakukan proses dekompresi. Pada Form ini disediakan interface untuk input file gambar. PictureBox untuk menampilkan file gambar, TextBox untuk menampilkan browse file, dan perhitungan waktu dekompresi, serta GroupBox berisi 2 RadioButton untuk pemilihan algoritma. Tampilan untuk Form Dekompresi dapat dilihat pada gambar 4.4.


(38)

Gambar 4.4 Tampilan Form Dekompresi

4.2.4 Form About Me

Form About Me merupakan form yang digunakan hanya untuk menampilkan informasi tentang sistem atau aplikasi yang dibuat dan informasi tentang penulis. Tampilan untuk Form About Me dapat dilihat pada gambar 4.5.


(39)

Gambar 4.5 Tampilan Form About Me

4.3 Pengujian Sistem

Pengujian sistem merupakan tahap mengidentifikasi hasil dari implementasi sistem apakah sistem telah berjalan sesuai dengan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. Pengujian sistem ini dilakukan pada File gambar yang berekstensi *.bmp. Pengujian sistem yang dilakukan pada penelitian ini dibagi dalam 2 proses utama yaitu pengujian proses kompresi dan pengujian proses dekompresi.

4.3.1 Pengujian Proses Kompresi

Untuk melakukan proses kompresi tahap awal yang dilakukan adalah mengklik Button Compress. Setelah tampilan form Compress muncul maka lakukan langkah-langkah berikut ini untuk melakukan proses kompresi.

1. Menekan tombol Ambil untuk membuka Open File Dialog, dan pilih File gambar (*.bmp) sebagai Input File.


(40)

3. Menekan radioButton untuk memilih satu algoritma antara Run-Length Encoding atau Elias Delta Code.

Gambar 4.6 Aplikasi Setelah Gambar, Resolution, dan Size Ditentukan

Gambar 4.7 Gambar Membesar Setelah Mengklik Zoom In


(41)

4. Menekan tombol Kompres untuk mengkompres citra yang diambil.

5. Menekan tombol Simpan untuk membuka Save File Dialog dan menentukan direktori untuk menyimpan file hasil kompresi (*.rle atau *.eld).

Gambar 4.9 Informasi Hasil Kompresi Run-Length Encoding

Gambar 4.10 Informasi Hasil Kompresi Elias Delta Code

Proses kompresi menghasilkan sebuah File Output yaitu file dengan ekstensi *.rle (Run Length Encoding) atau *.eld (Elias Delta Code) sebagai file yang menyimpan informasi pixel dan string hasil kompresi. File-file hasil kompresi Run-Length Encoding dapat dilihat pada gambar 4.8.


(42)

Gambar 4.11 Hasil Kompresi Run-Length Encoding

Untuk File-file hasil kompresi Elias Delta Code dapat dilihat pada gambar 4.9 dan.


(43)

4.3.2 Pengujian Proses Dekompresi

Untuk melakukan proses dekompresi tahap awal yang dilakukan adalah menekan tombol Decompress untuk menuju ke Form Decompress. Setelah tampilan Form Decompress muncul maka lakukan langkah-langkah berikut ini untuk melakukan proses dekompresi.

1. Menekan tombol Ambil untuk membuka Open File Dialog, dan pilih file hasil kompresi (*.rle atau *.eld) sebagai Input File.

2. Menekan tombol Decompress untuk melakukan proses dekompresi. Setelah proses dekompresi berhasil sistem akan menampilkan informasi hasil dekompresi dan waktu dekompresi pada citra.

3. Menekan tombol Simpan untuk membuka Save File Dialog dan menentukan direktori untuk menyimpan file hasil dekompresi (*.bmp).

Gambar 4.13 Informasi Hasil Dekompresi Run-Length Encoding


(44)

4.4 Hasil Perhitungan Kompleksitas Big Theta (�)

Untuk mengetahui algoritma mana yang lebih efektif pada kompresi maka dibutuhkan perhitungan kompleksitas waktu. Dapat dilihat pada tabel 4.4 untuk algoritma Run-Length Encoding dan tabel 4.5 untuk algoritma Elias Delta Code.

Tabel 4.4 Perhitungan Big Theta Pada Run-Length Encoding

Step Pseudocode T(n)

1 function RLECode() C # C*#

2 0 <- sss C1 1 C1

3 0,m <- -1,k <- cur C1 1 C1

4 for i to width do C3 n C3n

5 true <- first C1 n C1n

6 0 <- m C1 n C1n

7 for j to height do C3 n2 C3n2

8 bmp.GetPixel(i,j) <- p C2 n2 C2n2

9 p.R <- r C2 n2 C2n2

10 p.G <- g C2 n2 C2n2

11 p.B <- b C2 n2 C2n2

12 (r+g+b)/3 <- h C2 n2 C2n2

13 if(first) C4 n2 C4n2

14 h <- cur C2 n2 C2n2

15 false <- first C1 n2 C1n2

16 1 <- k C1 n2 C1n2

17 else C4 n2 C4n2

18 if(cur==h) C4 n2 C4n2

19 k++ C2 n2 C2n2

20 else C4 n2 C4n2

21 cur().Length + <- sss C2 n2 C2n2

22 k().Length + -> sss C2 n2 C2n2


(45)

24 sb + cur() + " " + k ()+" " <- sb

C2 n2 C2n2

25 h <- cur C2 n2 C2n2

26 1 <- k C1 n2 C1n2

27 sb + cur () + " " + k () + " " <- sb

C2 n2 C2n2

28 ch2.Add(sb ()) C2 n2 C2n2

29 hs2.Add(m + 2) C2 n2 C2n2

Dari perhitungan running time pada tabel maka didapat:

T(n)=C1+C1+C3n+C1n+C1n+C3n2+C2n2+C2n2+C2n2+C2n2+C2n2+C4n2+C2n2+C1n2+C1

n2+C4n2+C4n2+C2n2+C4n2+C2n2+C2n2+C2n2+C2n2+C2n2+C1n2+C2n2+C2n2+C2n2

=2C1+C3n+2C1n+C3n2+14C2n2+4C4n2+3C1n2

=2C1+n(C3+2C1)+n2(C3+14C2+4C4+3C1)

T(n) =θ(n2)

Tabel 4.5 Perhitungan Big Theta Pada Elias Delta Code

Step Pseudocode T(n)

1 function EDCode() C # C*#

2 ch.Count <- edc C1 1 C1

3 "0" -> edc C2 1 C2

4 0 -> c C2 1 C2

5 for n to ch.Count do C3 n C3n

6 DecToBin(n) <- b C1 n C1n

7 b.Length <- M C1 n C1n

8 DecToBin(M) <- Mb C1 n C1n

9 for k to Mb.Length do C3 n2 C3n2

10 v.Append("0") C4 n2 C4n2

11 v.Append(Mb) C4 n C4n

12 b (1, M - 1) <- b1 C1 n C1n

13 v.Append(b1) C4 n C4n


(46)

Dari perhitungan running time pada tabel maka didapat:

T(n) = C1+C2+ C2+ C3+C1n+C1n+C1n+C3n2+C4n2+C4n+C1n+C4n+C1n

= C1+2C2+C3+5C1n+ C3n2+C4n2+2C4n

= C1+2C2+C3+ n(2C4 + 5C1) + n2(C3 + C4)

T(n) =θ(n2)

Kedua tabel tersebut menunjukkan bahwa tabel kompleksitas algoritma Run-Length Encoding dan Elias Delta Code, C1, C2, C3, dan C4 merupakan barisan kode.

Dimana juga terdapat pseudocode, C sebagai konstanta, dan # sebagai ukuran masukan dan C dikali #. Selain itu, diambil pangkat terbesar dari nilai ukuran masukan (#), karena pangkat n yang terbesar adalah n2, maka T(n) = θ(n2). Dari kedua tabel diatas dapat dilihat bahwa algoritma Run-Length Encoding dan Elias Delta Code memiliki running time yang sama.

4.5 Hasil Pengujian

Untuk melihat algoritma apa yang terbaik dalam mengkompres citra dilakukan beberapa kali percobaan. Untuk lebih jelasnya hasil percobaan tersebut dapat dilihat pada tabel 4.6.


(47)

Tabel 4.6 Perbandingan Hasil Kompresi Menggunakan Algoritma Run-Length Encoding dan Elias Delta Code

Tabel di atas merupakan tabel hasil percobaan yang digunakan pada algoritma Run-Length Encoding dan Elias Delta Code. Dari tabel yang diperoleh dapat disimpulkan bahwa algoritma Run-Length Encoding dan Elias Delta Code merupakan algoritma yang memiliki waktu kompresi dan dekompresi yang sama. Cr dan Rd yang lebih kecil dan Rc yang lebih besar adalah algoritma Elias Delta Code.

Gambar 4.15 Grafik Cr (Compression Ratio) Pada Gambar 0.00% 1.00% 2.00% 3.00% 4.00% 5.00% 6.00% 7.00% 8.00% 9.00% Run-Length Encoding

Elias Delta Code

Bit Bit Setelah Dikompres

Cr

(Compression Ratio)

Rc (Ratio of

Compression)

Rd

(Redundancy Data)

Waktu Kompresi Waktu Dekompresi

RLE EDC RLE EDC RLE EDC RLE EDC RLE EDC RLE EDC

1120 bit 88 bit 54 bit 7.86 % 4.82 % 12.73 20.74 6.86 % 3.82 % 0.013 ms


(48)

Gambar grafik di atas menunjukkan bahwa algoritma Elias Delta Code memiliki CR yang lebih kecil dibandingkan dengan Run-Length Encoding. Pada file „barbara.bmp‟, algoritma Elias Delta Code memiliki CR sebesar 4.82%, sedangkan Run-Length Encoding memiliki CR sebesar 7.86%.

Gambar 4.16 Grafik Rc (Ratio of Compression) Pada Gambar

Gambar grafik di atas menunjukkan bahwa algoritma Elias Delta Code memiliki Rc sebesar 20.74, sedangkan Run-Length Encoding memiliki Rc sebesar 12.73.

0 5 10 15 20 25

Run-Length Encoding


(49)

Gambar 4.17 Grafik Rd (Redundancy Data) Pada Gambar

Gambar grafik di atas menunjukkan bahwa algoritma Elias Delta Code memiliki CR yang lebih kecil dibandingkan dengan Run-Length Encoding. algoritma Elias Delta Code memiliki CR sebesar 3.82%, sedangkan Run-Length Encoding memiliki CR sebesar 6.86%.

0.00% 1.00% 2.00% 3.00% 4.00% 5.00% 6.00% 7.00% 8.00%

Run-Length Encoding


(50)

Gambar 4.18 Grafik Waktu KompresiPada Gambar

Gambar grafik di atas menunjukkan bahwa algoritma Run-Length Encoding memiliki waktu kompresi yang lebih cepat dibandingkan dengan Elias Delta Code. algoritma Run-Length Encoding memiliki waktu kompresi 0.013 m/s, sedangkan algoritma Elias Delta Code memiliki waktu kompresi 0.039 m/s.

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045

Run-Length Encoding


(51)

Gambar 4.19 Grafik Waktu DekompresiPada Gambar

Gambar grafik di atas menunjukkan bahwa algoritma Elias Delta Code memiliki waktu dekompresi yang sama dengan Run-Length Encoding, yaitu 0.001 m/s.

0 0.0002 0.0004 0.0006 0.0008 0.001 0.0012

Run-Length Encoding


(52)

BAB V

KESIMPULAN DAN SARAN

Pada bab ini akan disimpulkan, aplikasi yang telah dirancang telah dapat melakukan fungsi kompresi dan dekompresi. Pada bab ini juga disajikan saran-saran yang bermanfaat sebagai masukan bagi pengembangan aplikasi Kompresi Citra Menggunakan algoritma Run-Length Encoding dan Elias Delta Code yang lebih baik.

5.1 Kesimpulan

Dari penelitian yang dilakukan, maka kesimpulan yang dapat diambil adalah:

1. Aplikasi yang dirancang dalam penelitian ini telah mampu melakukan proses dekompresi file citra hasil kompresi menjadi file citra semula sebelum dikompresi.

2. Algoritma Run-Length Encoding memiliki waktu kompresi dan dekompresi yang sama dengan Elias Delta Code.

3. Algoritma Elias Delta Code memiliki Cr (Compression Ratio) yang lebih kecil dibandingkan dengan Run-Length Encoding, Algoritma Run-Length Encoding memiliki Cr (Compression Ratio) sebesar 7.86 %, sedangkan algoritma Elias Delta Code memiliki Cr (Compression Ratio) sebesar 4.82 %.

4. Algoritma Elias Delta Code memiliki Rc (Ratio of Compression) yang lebih besar dibandingkan dengan Run-Length Encoding. Algoritma Elias Delta Code memiliki Rc sebesar 20.74, sedangkan Run-Length Encoding memiliki RC sebesar 12.73.

5. Algoritma Elias Delta Code memiliki Rd (Redundancy Data) yang lebih kecil


(53)

algoritma Run-Length Encoding memiliki Rd sebesar 6.86 %, sedangkan Elias Delta Code memiliki Rd sebesar 3.82 %.

6. Ukuran citra hanya berresolusi maksimal 20x20 8 bit.

5.2 Saran

Saran yang dapat diberikan pada penelitian berikutnya untuk pengembangan dan perbaikan system lebih lanjut adalah:

1. Untuk penelitian berikutnya diharapkan menggunakan ukuran file citra baik yang lebih besar maupun yang lebih kecil.

2. Untuk penelitian berikutnya diharapkan mengkompres warna citra yang lain, seperti True Color, ataupun Indexed Color.

3. Untuk penelitian berikutnya diharapkan menggunakan Interpolation Mode Nearest Neighbor pada picturebox.


(54)

BAB II

TINJAUAN PUSTAKA

Pada bab ini akan membahas landasan atas teori-teori ilmiah untuk mendukung penelitian ini. Teori-teori yang dibahas mengenai pengertian citra, kompresi citra, algoritma dan jenisnya, serta beberapa sub pokok pembahasan lainnya yang menjadi landasan dalam penelitian ini.

2.1. Citra Digital

Citra digital adalah citra yang dapat diolah oleh komputer. Citra digital disebut juga citra diskrit di mana citra tersebut dihasilkan melalui proses digitalisasi terhadap citra kontinu. (Sutoyo, 2009)


(55)

Pada gambar 2.1. terdapat sebuah ilustrasi citra grayscale berukuran 200x200 pixel diambil sebagian (kotak kecil) berukuran 8x9. Setelah itu monitor akan menampilkan sebuah kotak kecil, namun yang disimpan dalam memori komputer hanyalah angka-angka yang menunjukkan besar intensitas pada masing-masing pixel tersebut (Sutoyo, 2009). Citra digital merupakan sebuah matriks di mana indeks baris dan kolomnya menyatakan suatu titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai pixel) menyatakan tingkat keabuan pada titik tersebut. Sebuah citra mungkin dapat didefinisikan sebagai fungsi f(x,y) berukuran M baris dan N kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat (x,y) disebut intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila nilai x, y dan nilai amplitudo f secara keseluruhan berhingga (finite) dan bernilai diskrit maka dapat dikatakan bahwa citra tersebut adalah citra digital.

Gambar 2.2. Pixel Matriks (Pramitarini, 2011)

Pada gambar 2.2. terdapat nilai Digital dan banyak bit: M = banyak pixel per baris (panjang)

N = banyak pixel per kolom (lebar) b = banyak/besar bit pada suatu citra


(56)

Citra digital memiliki 4 jenis, yaitu Citra Biner, Grayscale, True Color, dan Indexed Color.

2.1.1. Citra Biner

Citra biner (monochrome) atau disebut juga binary image, merupakan citra digital yang setiap pixel-nya hanya memiliki 2 kemungkinan derajat keabuan, yaitu 0 dan 1. Nilai 0 mewakili warna hitam, dan nilai 1 mewakili warna putih, di mana setiap pixel-nya membutuhkan media penyimpanan sebesar 1 bit.” (Paryono, 2010) Citra biner diperoleh melalui proses pemisahan pixel berdasarkan derajat keabuan yang dimilikinya. Pada citra biner, setiap titik bernilai 0 dan 1, masing-masing merepresentasikan warna tertentu. Nilai 0 diberikan untuk pixel yang memiliki derajat keabuan lebih kecil dari nilai batas yang ditentukan, sementara pixel yang memiliki derajat keabuan yang lebih besar dari batas akan di ubah menjadi nilai 1. Pada standard citra untuk ditampilkan di layer komputer, nilai biner ini berhubungan dengan ada tidaknya cahaya yang ditembakkan oleh electron gun yang terdapat di dalam monitor komputer. Angka 0 menyatakan tidak ada cahaya, dengan demikian warna yang direpresentasikan adalah hitam. Untuk angka 1, terdapat cahaya, sehingga warna yang direpresentasikan adalah putih. Standar tersebut disebut sebagai standar citra cahaya, sedangkan standar citra tinta/cat adalah berkebalikan, karena biner tersebut menyatakan ada tidaknya tinta. Setiap titik pada citra hanya membutuhkan 1 bit, sehingga setiap byte dapat menampung informasi 8 bit. (Pramitarini, 2011)


(57)

2.1.2. Citra Grayscale

Citra skala keabuan atau disebut juga dengan citra aras keabuan memberikan kemungkinan warna yang lebih banyak. Format citra ini disebut dengan aras keabuan karena ada warna abu-abu diantara warna minimum (hitam) dan warna maksimum (putih). Jumlah maksimum warna sesuai dengan bit penyimpanan yang digunakan, apakah 4 bit atau 8 bit. Citra dengan skala keabuan 4-bit memiliki 24 = 16 kemungkinan warna, yaitu 0 (minimal) hingga 15 (maksimal). Sementara citra digital dengan skala keabuan 8-bit memliki 28 = 256 kemungkinan warna, yaitu 0 (minimal) hingga 255 (maksimal). (Novitasari, 2011)

Gambar 2.4. Ilustrasi Citra Grayscale (Pramitarini, 2011)

2.1.3. Citra True Color

Pada citra warna (true color) setiap pixel-nya merupakan kombinasi dari tiga warna dasar merah, hijau, dan biru, sehingga citra warna ini disebut juga citra RGB (Red Green Blue). Setiap komponen warna memiliki intensitas sendiri dengan nilai minimum 0 dan nilai maksimum 255 (8-bit). Hal ini menyebabkan setiap pixel pada citra RGB membutuhkan media penyimpanan 3 byte. Jumlah kemungkinan kombinasi warna citra RGB adalah 224 = lebih dari 16 juta warna. (Novitasari, 2011)


(58)

Gambar 2.5. Ilustrasi Citra True Color (Pramitarini, 2011)

2.1.4. Citra Indexed Color

Setiap pixel pada citra warna berindeks memiliki indeks dari suatu tabel warna yang tersedia (biasanya disebut Palette Color). Keuntungan yang diperoleh dengan menggunakan palet warna ini adalah kita dapat dengan cepat memanipulasi warna tanpa harus mengubah informasi dari setiap pixel pada citra. (Novitasari, 2011)

2.2 Kompresi Citra

Kompresi citra adalah proses yang bertujuan untuk mengurangi duplikasi data pada citra sehingga memory yang digunakan untuk merepresentasikan citra menjadi lebih sedikit daripada representasi citra semula. (Sutoyo, 2009)

Rasio citra kompresi adalah ukuran persentase citra yang telah berhasil dimampatkan. Secara matematis rasio pemampatan data ditulis sebagai berikut:

R = 100% - (K1/Ko) x 100 %…(1) Dimana:

R adalah rasio kompresi. Ko adalah Ukuran file asli.


(59)

Compressed

Compressed

Secara garis besar metode pemampatan citra atau kompresi citra dapat dikelompokkan dalam dua kelompok besar yaitu metode lossless dan metode lossy yaitu:

2.2.1 Metode Lossless

Metode Lossless merupakan kompresi citra dimana hasil dekompresi dari citra yang terkompresi sama dengan citra aslinya, tidak ada informasi yang hilang. Sayangnya, untuk ratio kompresi citra metode ini sangat rendah. (Sutoyo, 2009)

Compressed

Gambar 2.6. Kompresi Lossless

2.2.2 Metode Lossy

Metode Lossy merupakan kompresi citra dimana hasil dekompresi dari citra yang terkompresi tidak sama dengan citra aslinya, artinya bahwa ada informasi yang hilang, tetapi masih bisa ditolerir oleh persepsi mata. Metode ini menghasilkan ratio kompresi yang lebih tinggi dari pada metode lossless. Contohnya adalah color reduction, chroma subsampling, dan transform coding, seperti transformasi Fourier, Wavelet dll. (Sutoyo, 2009)

Gambar 2.7. Kompresi Lossy

Original Restored

Original


(60)

2.2.3 Padding Dan Flag Bits

Khusus algoritma Elias Delta Code diperlukan padding dan flag bits untuk penambahan bit 0 sebanyak kekurangan jumlah bit, dan penambahan bilangan biner sepanjang 8 bit.

1. Padding

Padding bits adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit pada proses kompresi sehingga jumlah keseluruhan bit data pada hasil kompresi merupakan kelipatan delapan (habis dibagi delapan) (Andika, 2014)

2. Flag

Flag bits adalah penambahan bilangan biner sepanjang 8 bit setelah padding bits dimana flag bits ini merupakan sejumlah bilangan yang memberikan tanda bahwa terdapat n buah padding di dalam bit-bit data hasil kompresi. Penambahan flag bits ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi pada saat proses kompresi. (Andika, 2014)

2.2.4 Parameter Perbandingan

1. Compression Ratio (Cr)

Compression Ratio (Cr) adalah persentase besar data terkompresi, hasil

perbandingan antara data yang sudah dikompresi dengan data yang belum dikompresi (Salomon, 2007).

Cr = ���� �� ��� � ℎ���� � �� � X 100%…(2)

2. Ratio of Compression (Rc)

Ratio of Compression (Rc) adalah hasil perbandingan antara data yang belum

dikompresi dengan data yang sudah dikompresi (Salomon, 2007). Rc = ����� �� ��� � ℎ���� � �� � X 100%…(3)


(61)

3. Redundancy Data (Rd)

Redundancy Data adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi setelah data dikompresi dapat dihitung Redundancy data yaitu persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi. (Salomon & Motta, 2010).

Rd= 100% – Cr…(4)

4. Waktu Kompresi

Waktu kompresi adalah waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses kompresi dari mulai pembacaan data hingga proses encoding pada data tersebut. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu.

2.3 Format File Citra Bitmap

Citra bitmap sering disebut juga dengan citra raster. Citra bitmap menyimpan data kode citra secara digital dan lengkap (cara penyimpanannya adalah per pixel). Citra bitmap dipresentasikan dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain. Citra ini memiliki kelebihan untuk memanipulasi warna, tetapi untuk mengubah objek lebih sulit. Tampilan bitmap mampu menunjukkan kehalusan gradasi bayangan dan warna dari sebuah gambar. Oleh karena itu, bitmap merupakan media elektronik yang paling tepat untuk gambar-gambar dengan perpaduan gradasi warna yang rumit, seperti foto dan lukisan digital (Sutoyo, 2009).

Format bitmap ini cocok digunakan untuk menyimpan citra digital yang memiliki banyak variasi dalam bentuknya maupun warnanya, seperti foto, lukisan, dan frame video. Format file yang menggunakan format bitmap ini antara lain adalah BMP, DIB, PCX, GIF, dan JPG. Format yang menjadi standar dalam sistem operasi Microsoft Windows adalah format bitmap BMP atau DIB (Santi, 2010).


(62)

2.4 Pixel

Pixel (Picture Elements) adalah nilai tiap-tiap entri matriks pada bitmap. Rentang nilai-nilai pixel ini dipengaruhi oleh banyaknya warna yang dapat ditampilkan. Jika suatu bitmap dapat menampilkan 256 warna maka nilai-nilai pixelnya dibatasi dari 0 hingga 255. Suatu bitmap dianggap mempunyai ketepatan yang tinggi jika dapat menampilkan lebih banyak warna (Putra, 2010).

2.5 Dekompresi Citra

Sebuah citra yang sudah terkompresi tentunya harus dapat dikembalikan lagi kebentuk aslinya, prinsip ini dinamakan dekompresi. Untuk dapat merubah citra yang terkompresi diperlukan cara yang berbeda seperti pada waktu proses kompresi dilaksanakan. Jadi pada saat dekompresi catatan header yang berupa byte-byte tersebut terdapat catatan isi mengenai isi dari file tersebut. (Alkhudri, 2015)

Catatan header akan menuliskan kembali mengenai isi dari file tersebut, jadi isi dari file sudah tertulis oleh catatan header sehingga hanya tinggal menuliskan kembali pada saat proses dekompresi. Proses dekompresi sempurna dan kembali ke bentuk aslinya.

Parameter perbandingan dalam dekompresi adalah waktu dekompresi. Waktu dekompresi adalah waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses dekompresi dari mulai pembacaan data hingga proses decoding pada data tersebut. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu.

Kompresi Dekompresi

Gambar 2.8 Alur Kompresi-Dekompresi Citra (Alkhudri, 2015)

Citra Asli Citra

Hasil Kompresi


(63)

2.6 Algoritma

Makna informal dari kata algoritma ada dalam persamaan berikut: “Tidak ada manusia yang dapat menulis begitu cepat, atau begitu lama, atau begitu kecil ("kecil, dan lebih kecil tanpa batas ... anda mungkin mencoba menulis di atas molekul, atom, elektron") untuk mencatat semua anggota dari kumpulan bilangan tak terbatas dengan menuliskan namanya, bergantian, dalam suatu notasi. Tapi manusia bisa melakukan sesuatu yang sama bergunanya, pada kasus kumpulan bilangan tak terbatas: Mereka dapat memberikan instruksi jelas untuk menentukan anggota ke-n dari set, untuk n terbatas acak. Instruksi tersebut diberikan secara eksplisit, dalam bentuk yang dapat diikuti oleh mesin penghitung, atau oleh manusia yang mampu melakukan hanya operasi-operasi dasar dengan simbol-simbol.” (Boolos & Jeffrey, 1974).

Algoritma adalah teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis. Langkah-langkah pemecahan masalah bisa dilakukan dengan berbagai cara yang berbeda (Wahyudi, 2004).

Ciri-ciri algoritma yaitu:

1. Algoritma harus berhenti setelah melakukan sejumlah langkah terbatas.

2. Aksi-aksi dalam algoritma terjadi dalam waktu terbatas, tiap langkah harus didefinisikan dengan tepat dan tidak bermakna ganda (non-ambiguous).

3. Algoritma memiliki nol atau lebih masukan (input). Input adalah besaran yang diberikan kepada algoritma sebelum algoritma mulai bekerja.

4. Algoritma memiliki salah satu atau beberapa keluaran (output). Output adalah besaran yang mrmiliki hubungan dengan input.

5. Algoritma harus efektif, tiap langkah harus sederhana, dapat dikerjakan dalam sejumlah waktu yang logis (Knuth, 1968).

2.7 Algoritma Run-Length Encoding (RLE)

Algoritma Run Length Encoding adalah melakukan kompresi dengan memindahkan pengulangan bit yang sama berturut-turut atau secara terus menerus. Algoritma ini digunakan untuk mengompresi citra yang memiliki kelompok-kelompok pixel yang berderajat keabuan yang sama. Pada metode ini dilakukan pembuatan rangkaian pasangan nilai (P,Q) untuk setiap baris pixel, dimana nilai P menyatakan nilai derajat


(64)

keabuan, sedangkan nilai Q menyatakan jumlah pixel berurutan yang memiliki derajat keabuan tersebut. (Lubis, 2014)

Berbeda dengan teknik-teknik sebelumnya yang bekerja berdasarkan karakter per karakter, teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan. Run Length Encoding adalah suatu algoritma kompresi data yang bersifat Lossless. Algoritma ini mungkin merupakan algoritma yang paling mudah untuk dipahami dan diterapkan.

Algoritma RLE ini cocok digunakan untuk mengkompres citra yang memiliki kelompok-kelompok pixel berderajat keabuan yang sama. Kompresi citra dengan algoritma RLE dilakukan dengan membuat rangkaian pasangan nilai (p,q) untuk setiap baris pixel, nilai pertama (p) menyatakan derajat keabuan, sedangkan nilai kedua (q) menyatakan jumlah pixel berurutan yang memiliki derajat kabuan tersebut (dinamakan Run-Length Encoding).

Langkah-langkah yang dibutuhkan untuk melakukan kompresi Run-Length Encoding adalah sebagai berikut:

1. Periksa nilai saat ini dengan nilai tetangga, apabila nilai saat ini sama dengan nilai tetangga maka gabungkan nilai tersebut menjadi satu dan tambahkan nilai counter untuk nilai tersebut.

2. Apabila nilai saat ini dengan nilai tetangganya tidak sama maka simpan nilai saat ini dan lanjut pemeriksaan seperti pada nomor 1.

3. Setelah proses 1 dan 2 telah dilakukan kemudian simpan hasil proses kompresi tersebut.

Untuk melakukan proses dekompresi terhadap file yang telah mengalami proses kompresi Run Length Encoding (RLE) dapat dilihat pada langkah-langkah berikut ini.

1. Baca nilai yang terdapat pada citra kemudian periksa apakah nilai saat ini berulang atau tidak, apabila nilai saat ini berulang maka ulang nilai sebanyak perulangan yang ada.

2. Apabila nilai tidak berulang maka nilai saat ini simpan dan lanjutkan ke nilai selanjutnya.


(65)

2.8 Algoritma Elias Delta Code

Algoritma Elias Delta Code adalah sebuah algoritma kompresi yang dibuat oleh Peter Elias menggunakan kode yang telah dia buat sebelumnya, yaitu Elias Gamma Code, sebagai building block (Figueiredo, 2009).

Dalam kode Gamma, Elias menambah panjang kode dalam unary (α). Dalam kode berikutnya, δ (delta), ditambahkan pada panjang kode dalam biner (β). Dengan

demikian, Elias Delta Code, yang juga untuk bilangan bulat positif, sedikit lebih kompleks untuk dibangun (Salomon, 2007).

Untuk melakukan encode dengan Elias Delta Code dalam bilangan bulat positif n dilakukan dalam langkah-langkah berikut: (Salomon, 2007).

1. Tulis n dalam biner. Bit yang paling kiri (paling signifikan) akan menjadi 1.

2. Hitung bit, hapus bit paling kiri dari n, dan tambahkan hitungan, di dalam biner, apa yang tersisa dari bit n yang paling kiri setelah telah dihapus.

3. Kurangi 1 dari hitungan di langkah 2 ,dan tambahkan jumlah nol sebanyak hasil hitungan tersebut ke awal kode.

Contoh kasus pada bilangan integer 5, hasilnya: 5 = 1012 (3 bit). Hapus angka

1 paling kiri dan tambahkan 3 = 11, sehingga menjadi 11 | 01. 2 bit telah ditambahkan, jadi kita tambahkan 1 nol untuk mendapatkan kode delta 0 hasilnya 11|01. 2 bit sudah ditambahkan, kemudian tambahkan 1 nol untuk mendapatkan kode delta 0|11|01.

Untuk melakukan decode dengan Elias Delta Code, berikut adalah langkah-langkahnya:

1. Baca bit dari kode sampai proses decode dengan Elias Gamma Code dapat dilakukan. Proses ini dapat dilakukan dengan beberapa langkah berikut ini:

a. Hitung jumlah nol terdepan dari kode tersebut lalu gantikan perhitungan tersebut dengan C.

b. Periksa bit bagian kiri 2C + 1 (C nol, diikuti dengan 1, lalu diikuti dengan bit C selebihnya). Ini merupakan decode Elias Gamma Code M + 1.

2. Baca bit M berikutnya. Sebut ini sebagai L. 3. Bilangan bulat yang di decode adalah 2M + L.

Pada kasus dimana n = 5, kode deltanya adalah 01101. Lewati satu nol, sehingga C = 2. Nilai bit paling kiri dari 2C + 1 = 3 adalah 00101 = 3, jadi M + 1 = 3. Pembacaan akan dilakukan berikutnya pada M = 1 bit 1, dan diakhirnya dengan nilai


(66)

Tabel 2.1 Kode Elias Gamma

1 = 20 + 0 = 1 10 = 23 + 2 = 0001010 2 = 21 + 0 = 010 11 = 23 + 3 = 0001011 3 = 21 + 0 = 011 12 = 23 + 4 = 0001010 4 = 22 + 0 = 00100 13 = 23 + 5 = 0001101 5 = 22 + 1 = 00101 14 = 23 + 6 = 0001010 6 = 22 + 2 = 00110 15 = 23 + 7 = 0001111 7 = 22 + 3 = 00111 16 = 24 + 0 = 00001000 8 = 23 + 0 = 0001000 17 = 24 + 1 = 00001001 9 = 23 + 1 = 0001001 18 = 24 + 2 = 00001010

Sebagai contoh, jika n = 5, kode deltanya adalah 01101. Hitung dua angka nol, sehingga C = 2. Nilai dari 2C paling kiri + 1 = 3 bit adalah 011 = 5, sehingga M + 1 = 5. Berikutnya baca M = 1 bit 1, dan berakhir dengan nilai 2M + L = 24 + 1 = 5.

Tabel 2.2 Kode Elias Delta

1 = 20 + 0 -> |L| = 0 -> 1 10 = 23 + 2 -> |L| = 0 -> 00100010 2 = 21 + 0 -> |L| = 1 -> 0100 11 = 23 + 3 -> |L| = 0 -> 00100011 3 = 21 + 1 -> |L| = 0 -> 0101 12 = 23 + 4 -> |L| = 0 -> 00100100 4 = 22 + 0 -> |L| = 0 -> 01100 13 = 23 + 5 -> |L| = 0 -> 00100101 5 = 22 + 1 -> |L| = 0 -> 01101 14 = 23 + 6 -> |L| = 0 -> 00100110 6 = 22 + 2 -> |L| = 0 -> 01110 15 = 23 + 7 -> |L| = 0 -> 00100111 7 = 22 + 3 -> |L| = 0 -> 01111 16 = 24 + 0 -> |L| = 0 -> 001010000 8 = 23 + 0 -> |L| = 0 -> 00100000 17 = 24 + 1 -> |L| = 0 -> 001010001 9 = 23 + 1 -> |L| = 0 -> 00100001 18 = 24 + 2 -> |L| = 0 -> 001010010

2.9 Kompleksitas Algoritma

Kebutuhan untuk dapat mengukur masalah kompleksitas, algoritma dan struktur data memperoleh batas serta hubungan kuantitatif untuk kuantitas muncul di beberapa bidang ilmu disamping Ilmu Komputer, yaitu cabang Matematika, Fisika, Statistika, Biologi, dan Kedokteran dihadapi lebih banyak dan lebih sering dengan masalah


(67)

daya komputasi yang digunakan oleh tugas tertentu. Teori komputasi pada dasarnya dibagi menjadi tiga bagian karakter yang berbeda. (Gács & Lovász, 1999).

1. Pengertian yang tepat dari algoritma, waktu, kapasitas, penyimpanan, dan lain-lain harus diperkenalkan. Perbedaan model mesin matematika harus digambarkan, waktu dan penyimpanan kebutuhan perhitungan dilakukan pada kebutuhan ini harus diperjelas (umumnya diukur sebagai fungsi dari ukuran input). Yang paling dasar pada kompleksitas adalah memberikan klasifikasi penting dari masalah yang timbul dalam praktek, bahkan timbul di daerah matematika klasik.

2. Menentukan kebutuhan sumber daya dari algoritma yang paling penting dalam berbagai bidang matematika, dan memberikan algoritma yang efisien untuk membuktikan bahwa masalah tertentu memiliki kompleksitas tertentu

3. Menemukan metode yang membuktikan “Hasil Negatif” yaitu untuk bukti

beberapa masalah sebenarnya terpecahkan di bawah pembatasan sumber daya tertentu.

2.10 Penelitian Yang Relevan

Berikut ini beberapa penelitian yang terkait dengan algoritma Run-Length Encoding dan Elias Delta Code:

1. Umri Erdiansyah (2014) dalam skripsi yang berjudul Perbandingan Algoritma Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks. Dalam skripsi ini, dapat disimpulkan bahwa, hasil akhir dari kompresi adalah file berekstensi *.lev atau *eld yang berisi informasi karakter dan string bit hasil kompresi yang dapat didekompresi. Keluaran dari hasil dekompresi adalah sebuah file asli yang disimpan dengan ekstensi file *.txt atau *.doc. Sampel yang digunakan pada proses pengujian yaitu string yang terdiri dari satu jenis karakter (String Homogen) dan string yang terdiri dari beberapa jenis karakter (String Heterogen) yang tersimpan pada file teks yang berekstensi *.txt atau *.doc. Hasil penelitian menunjukkan bahwa dalam kinerja metode Elias Delta Code lebih baik dibandingkan dengan metode Levenstein dengan rasio kompresi rata-rata sebesar 114.69% pada kompresi String Homogen, dan rasio kompresi rata-rata sebesar 252.03% pada kompresi String Heterogen.


(68)

2. Ririani Santi (2010) dalam skripsi yang berjudul Perancangan Perangkat Lunak Kompresi File Citra Dengan Menggunakan Algoritma Run Length Encoding. Dalam skripsi ini, dapat disimpulkan bahwa, Perangkat lunak kompresi/dekompresi citra dengan Algoritma Run Length Encoding (RLE) dapat melakukan kompresi file citra dengan format *.bmp maupun *.jpg. Kompresi citra dengan metode Run Length Encoding (RLE) dapat memperkecil ukuran file, sehingga dapat menghemat ruang tempat penyimpanan (Storage). Perangkat lunak kompresi citra RLE ini dapat berjalan dengan baik untuk citra yang memiliki derajat keabu-abuan (grayscale) yang sama.


(69)

BAB I

PENDAHULUAN

Pada bab ini penulis akan menguraikan tentang latar belakang, rumusan masalah, batasan masalah dari penelitian, tujuan dan manfaat dari penelitian, metodologi yang dipakai dalam melakukan penelitian ini serta sistematika penulisannya.

1.1 Latar Belakang

Data atau informasi tidak hanya disajikan dalam bentuk teks, tetapi juga dapat berupa gambar, audio (bunyi, suara, musik), dan video. Keempat macam data atau informasi ini sering disebut multimedia. Saat ini orang tidak hanya dapat mengirim pesan dalam bentuk teks, tetapi juga dapat mengirim pesan berupa gambar maupun video, yang dikenal dengan layanan MMS (Multimedia Message Service).

Citra (image) sebagai salah satu komponen multimedia memegang peranan penting sebagai bentuk informasi visual. Citra mempunyai karakteristik yang tidak dimiliki oleh data teks, yaitu citra kaya akan informasi. (Faradisa, et al, 2011)

Pada umumnya representasi citra digital membutuhkan memori yang besar. Semakin besar ukuran citra tentu semakin besar pula memori yang dibutuhkannya. Pada sisi lain, kebanyakan citra mengandung duplikasi data. Duplikasi data pada citra dapat berarti dua hal. Pertama, besar kemungkinan suatu pixel dengan pixel tetangganya memiliki intensitas yang sama, sehingga penyimpanan setiap pixel memboroskan tempat. Kedua, citra banyak mengandung bagian (region) yang sama, sehingga bagian yang sama ini tidak perlu dikodekan berulang kali karena redundan.


(70)

Saat ini, kebanyakan aplikasi menginginkan representasi citra dengan kebutuhan memori yang sesedikit mungkin. Kompresi citra (image compression) bertujuan meminimalkan kebutuhan memori untuk merepresentasikan citra digital.

Kompresi citra memberikan manfaat yang sangat besar dalam industri multimedia saat ini. Salah satunya adalah pada proses pengiriman data (data transmission) pada saluran komunikasi data. Citra yang telah dikompresi membutuhkan waktu pengiriman yang lebih singkat dibandingkan dengan citra yang tidak dikompresi.

Hal inilah yang mendasari perlunya suatu usaha untuk mengkompresi citra sehingga citra dapat disimpan dengan ukuran yang berbeda dengan yang asli.

Maka itu dirancanglah algoritma kompresi citra yang berfungsi untuk mengkompresi gambar sebelum nantinya akan disebarluaskan atau dikirimkan kepada seseorang. Algoritma kompresi citra yang digunakan di antaranya adalah Algoritma Run-Length Encoding dan Algoritma Elias Delta Code.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, maka permasalahan dalam skripsi ini dapat dirumuskan menjadi bagaimana mengambil file citra sebagai input citra yang akan dikompresi dan didekompresi, sehingga dapat menampilkan citra serta ukurannya sebelum dan sesudah kompresi.

1.3 Batasan Masalah

Batasan masalah dalam penelitian ini adalah: 1. Citra yang dikompresi adalah Grayscale.

2. File yang digunakan berupa file dalam bentuk *.bmp dan berresolusi maksimal 20x20 8 bit.


(71)

4. Parameter yang digunakan adalah Cr (Compression Ratio), Rc (Ratio of Compression), dan Rd (Redudancy Data), waktu kompresi, dan waktu dekompresi.

1.4 Tujuan Penelitian

Tujuan penelitian dalam tugas akhir ini adalah menunjukkan hasil perbandingan algoritma Run-Length Encoding dan Elias Delta Code dengan menggunakan parameter Cr (Compression Ratio), Rc (Ratio of Compression), dan Rd (Redudancy Data), waktu kompresi, dan waktu dekompresi.

1.5 Manfaat Penelitian

Manfaat yang diharapkan dari penelitian ini antara lain:

1. Untuk mengetahui algoritma kompresi yang lebih baik di antara algoritma Run-Length Encoding dan Elias Delta Code.

2. Memperluas kapasitas penyimpanan file yang digunakan dengan mengurangi ukuran citra yang akan disimpan.

1.6 Metodologi Penelitian

Metodologi yang digunakan dalam tugas akhir ini adalah: 1. Metode Studi Pustaka

Mempelajari buku-buku, jurnal ilmiah, jurnal penelitian, paper, yang berkaitan tentang Algoritma Run-Length Encoding dan Elias Delta Code.

2. Metode Analisis sistem

Pada tahap ini akan dianalisis sistem yang akan dibuat, batasan sistem, kinerja sistem dan cara kerja sistem. Sehingga sistem dapat mengimplementasikan Algoritma Run-Length Encoding dan Elias Delta Code.

3. Metode Perancangan Sistem

Pada tahap ini dilakukan perancangan user interface, Unified Modeling Language (UML), dan struktur program sistem kompresi file.


(1)

COMPARISON OF IMAGE COMPRESSION USING RUN-LENGTH ENCODING AND ELIAS DELTA CODE ALGORITHMS

ABSTRACT

Digital image is an image that can be processed by computers. Digital image is also called a discrete image in which the image is generated through the process of digitization of the continuous image. In the digital image storage, image size will affect the size of the memory. Image compression is a process that aims to reduce duplication of data in memory so that the image used to represent the image becomes less than the original image representation. Run-Length Encoding algorithms and algorithms Elias Delta Code is a method that can be used in the process of digital image compression. Run-Length Encoding algorithm is compression by moving the repetition of the same bit successively or continuously. Elias Delta Code algorithm is a compression algorithm created by Peter Elias used the code he had made previously, namely Elias Gamma Code, as a building block. Run-Length Encoding algorithms and algorithms Elias Delta Code is a method that can be used in the process of digital image compression. In this study, the algorithms will be compared to determine the quality of image compression based on the compression time, Rc (Ratio Compression), Cr (Compression of

Ratio) and Rd (Redundancy Data). Digital imagery used is a grayscale image * .bmp format.

Image compression results can be returned to its original size with image decompression process. In experiments conducted found that both of these algorithms give different results and algorithms where Elias Delta Code provides better compression results in the compression process. While the algorithm Run-Length Encoding provide results that are sometimes good but sometimes this method does not compress the image at all because of the absence of repetitive data in the image, but this method has a time much faster when performing the compression process.

Keywords: Image Processing, Image Compression, Run-Length Encoding, Elias Delta


(2)

DAFTAR ISI

Halaman

Persetujuan iii

Pernyataan iv

Penghargaan v

Abstrak vii

Abstract viii

Daftar Isi ix

Daftar Tabel xi

Daftar Gambar xii

BAB I Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

BAB II Tinjauan Pustaka 6

2.1 Citra Digital 6

2.1.1 Citra Biner 8

2.1.2 Citra Grayscale 9

2.1.3 Citra True Color 9

2.1.4 Citra Indexed Color 10

2.2 Kompresi Citra 10

2.2.1 Metode Lossless 11

2.2.2 Metode Lossy 11

2.2.3 Padding Dan Flag Bits 12

2.2.4 Parameter Perbandingan 12

2.3 Format File Citra Bitmap 13

2.4 Pixel 14

2.5 Dekompresi Citra 14

2.6 Algoritma 15

2.7 Algoritma Run-Length Encoding (RLE) 15

2.8 Algoritma Elias Delta Code 17

2.9 Kompleksitas Algoritma 19

2.10 Penelitian Yang Relevan 19

BAB III Analisis Dan Perancangan Sistem 21

3.1 Analisis 21

3.1.1 Analisis Masalah 21


(3)

3.1.3 Analisis Proses 23

3.2 Perancangan Sistem 24

3.2.1 Diagram Flowchart Pada Kompresi Dan Dekompresi Citra 24

3.2.1.1 Flowchart Sistem Secara Umum 25

3.2.1.2 Flowchart Algoritma Run-Length Encoding 27

3.2.1.3 Flowchart Algoritma Elias Delta Code 28

3.2.2 Diagram Use Case 29

3.2.3 Diagram Activity 33

3.2.4 Diagram Sequence 36

3.2.5 Alur Proses Sistem 37

3.2.5.1 Alur Proses Pembangkitan Run-Length Encoding 37

3.2.5.2 Alur Proses Pembangkitan Elias Delta Code 38

3.3 Rancangan User 38

3.3.1 Rancangan Menu Utama 38

3.3.2 Rancangan Form Kompresi 39

3.3.3 Rancangan Form Dekompresi 41

3.3.4 Rancangan Form About Me 42

BAB IV Implementasi Dan Pengujian Sistem 43

4.1 Implementasi Algoritma 43

4.1.1 Implementasi Algoritma Run-Length Encoding 43

4.1.2 Implementasi Algoritma Elias Delta Code 44

4.2 Implementasi Sistem 50

4.2.1 Form Home 51

4.2.2 Form Kompresi 51

4.2.3 Form Dekompresi 52

4.2.4 Form About Me 53

4.3 Pengujian Sistem 54

4.2.1 Pengujian Proses Kompresi 54

4.2.2 Pengujian Proses Dekompresi 58

4.4 Hasil Perhitungan Kompleksitas Big Theta (θ) 59

4.5 Hasil Pengujian 61

BAB V Kesimpulan Dan Saran 67

5.1 Kesimpulan 67

5.2 Saran 68 Daftar Pustaka


(4)

DAFTAR TABEL

Nomor Tabel Nama Tabel Halaman

2.1 2.2 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.1 4.2 4.3 4.4

4.5 4.6

Kode Elias Gamma Kode Elias Delta

Spesifikasi Use Case Kompresi Spesifikasi Use Case Dekompresi Spesifikasi Use Case Buka File Gambar Spesifikasi Use Case Kompres

Spesifikasi Use Case Pilih Algoritma

Spesifikasi Use Case Simpan File Terkompresi Spesifikasi Use Case Buka File Terkompresi Spesifikasi Use Case Dekompres

Spesifikasi Use Case Simpan File Gambar

Proses Pengkodean Algoritma Run-Length Encoding Proses Pengkodean Algoritma Elias Delta Code

Citra Yang Terkompresi Dengan Algoritma Elias Delta

Code

Perhitungan Big Theta Pada Run-Length Encoding

Perhitungan Big Theta Pada Elias Delta Code Perbandingan Hasil Kompresi Menggunakan Algoritma Run-Length Encoding dan Elias Delta

Code

18 18 30 30 30 31 31 31 32 32 33 43 44 48 59 60 62


(5)

DAFTAR GAMBAR

Nomor Gambar

Nama Gambar Halaman

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19

Ilustrasi Citra dengan Matriks 200 x 200 Pixel Matriks

Ilustrasi Citra Biner Ilustrasi Citra Grayscale Ilustrasi Citra True Color Kompresi Lossless Kompresi Lossy

Alur Kompresi-Dekompresi Citra

Diagram Ishikawa Pada Analisis Masalah

Flowchart Proses Kompresi Flowchart Proses Dekompresi

Flowchart algoritma Run-Length Encoding Flowchart algoritma Elias Delta Code Use Case Diagram Pada Sistem Activity Diagram Proses Kompresi Activity Diagram Proses Dekompresi Sequence Diagram Pada Proses Kompresi Sequence Diagram Pada Proses Dekompresi

Rancangan Menu Utama Rancangan Form Kompresi Rancangan Form Dekompresi Rancangan Form About Me Citra Grayscale 5 X 5 pixel Tampilan Form Home Tampilan Form Kompresi Tampilan Form Dekompresi Tampilan Form About Me

Aplikasi Setelah Gambar, Resolution, dan Size Ditentukan

Gambar Membesar Setelah Mengklik Zoom In Gambar Membesar Setelah Mengklik Zoom Out Informasi Hasil Kompresi Run-Length Encoding Informasi Hasil Kompresi Elias Delta Code Hasil Kompresi Run-Length Encoding Hasil Kompresi Elias Delta Code

Informasi Hasil Dekompresi Run-Length Encoding Informasi Hasil Dekompresi Elias Delta Code Grafik CR (Compression Ratio) Pada Gambar Grafik RC (Ratio of Compression) Pada Gambar Grafik RD (Redundancy Data) Pada Gambar Grafik Waktu Kompresi Pada Gambar

Grafik Waktu Dekompresi Pada Gambar

6 7 8 9 10 11 11 15 22 25 26 27 28 29 34 35 36 36 39 40 41 42 43 51 52 53 54 55 55 55 56 56 57 57 58 58 62 63 64 65 66


(6)

DAFTAR LAMPIRAN

Listing Program A-1