Implementasi Dan Analisis Kinerja Algoritma Arithmetic Coding Dan Shannon-Fano Pada Kompresi Citra BMP

(1)

ARITHMETIC CODING DAN SHANNON-FANO

PADA KOMPRESI CITRA BMP

SKRIPSI

SYAHFITRI KARTIKA LIDYA

081402070

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2012


(2)

PADA KOMPRESI CITRA BMP

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Teknologi Informasi

SYAHFITRI KARTIKA LIDYA 081402070

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARITHMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP

Kategori : SKRIPSI

Nama : SYAHFITRI KARTIKA LIDYA

Nomor Induk Mahasiswa : 081402070

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, 18 Juli 2012 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Romi Fadillah R, B.Comp.Sc.M.Sc. M. Andri Budiman, ST.M.Comp.Sc.M.E.M. NIP. 198603032010121004 NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

Prof. Opim Salim Sitompul, M.Sc NIP. 196108171987011001


(4)

PERNYATAAN

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARITHMETIC CODING DAN SHANNON-FANO

PADA KOMPRESI CITRA BMP

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 18 Juli 2012

Syahfitri Kartika Lidya 081402070


(5)

PENGHARGAAN

Puji syukur saya panjatkan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya serta segala sesuatunya dalam hidup, sehingga saya dapat menyelesaikan penyusunan Skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara. Dalam pengerjaan Skripsi ini penulis banyak sekali mendapatkan dukungan, saran, dan nasehat dari berbagai pihak.

Dalam kesempatan ini penulis mengucapkan terima kasih kepada: Bapak M. Andri Budiman, ST.M.Comp.Sc.M.E.M, selaku Dosen Pembimbing I, yang telah bersedia meluangkan waktu dan pikirannya dalam membimbing, memotivasi untuk menyelesaikan Skripsi ini. Bapak Romi Fadillah Rahmat, B.Comp.Sc.M.Sc, selaku Dosen Pembimbing II, yang telah bersedia meluangkan waktu dan pikirannya dalam menyelesaikan Skripsi ini, Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Jurusan Prof. Dr. Opim Salim Sitompul, M.Sc dan Drs. Sawaluddin, M.IT, serta kepada dosen-dosen Program Studi Teknologi dan pegawai di Program Studi Teknologi Informasi, khususnya bu Delima, kak Umi, kak Maya, bang Faisal, kak Wardah, bu Lia yang telah membantu kelancaran proses administrasi.

Segala hormat dan terima kasih secara khusus penulis ucapkan kepada ayahanda Yonnes Hasan dan Ibunda Nova Mustika atas motivasi, kasih sayang, dan dukungan baik secara materi maupun do’a yang tak pernah putus yang diberikan kepada penulis, tak lupa kepada adik-adik tersayang Vayon Rachmat Ramadhan dan Sabilla Afiya, serta tante tersayang Julia Reveny telah memberi motivasi dan nasehat. Tidak lupa kepada seluruh sahabat penulis Stambuk 2008 yang selalu berusaha menjadi sahabat terbaik dan tidak mudah putus asa khususnya Karina Ayesha, Cahya, Ishri, Mauza, Karina Andi.

Penulis berharap bahwa Skripsi ini bermanfaat terutama kepada penulis maupun para pembaca. Saya menyadari bahwa Skripsi ini perlu saran dan kritik yang bersifat membangun demi kesempurnaan Skripsi ini sehingga dapat bermanfaat bagi kita semua. Sekali lagi saya ucapkan terima kasih atas segalanya. Semoga segala kebaikan diberikan balasan yang setimpal oleh Allah SWT.


(6)

ABSTRAK

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga solusi untuk masalah tersebut adalah dengan melakukan kompresi. Pada skripsi ini akan mengimplementasi dan membandingkan kinerja algoritma Arithmetic Coding dan Shannon-Fano melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi. Berdasarkan seluruh hasil pengujian, bahwa algoritma Arithmetic Coding menghasilkan rata-rata rasio kompresi 62,88 % dan rasio kompresi Shannon-Fano 61,73 %, kemudian Arithmetic Coding rata-rata kecepatan dalam kompresi citra yaitu 0,072449 detik dan Shannon-Fano 0,077838 detik. Kemudian algoritma Shannon-Fano memiliki rata-rata kecepatan untuk dekompresi yaitu 0,028946 detik dan algoritma Arithmetic Coding 0,034169 detik. Citra hasil dekompresi pada algoritma Arithmetic Coding dan Shannon-Fano sesuai dengan citra asli. Dapat diambil kesimpulan dari hasil pengujian bahwa algoritma Arithmetic Coding lebih efisien dalam mengkompresi citra *.bmp dibandingkan algoritma Shannon-Fano, walaupun dalam hal dekompresi Shannon-Fano sedikit lebih cepat dibandingkan Arithmetic Coding.


(7)

ABSTRACT

Rapid technological developments, a very important role in the rapid exchange of information. On the transmission of information in the form of the image is still experiencing problems, such as the large size of the image so that the solution to that problem is to do the compression. In this thesis will implement and compare the performance of the algorithm Arithmetic Coding and Shannon-Fano through the calculation of compression ratio, the size of the compressed file, the speed of compression and decompression process. Based on all the test results, that Arithmetic Coding algorithm yielded an average compression ratio of 62.88% and a compression ratio Shannon-Fano of 61.73%, Arithmetic Coding the average speed in image compression is 0.072449 seconds and Shannon-Fano 0,077838 seconds. Then the Shannon-Fano algorithm has an average speed for the decompression algorithm is 0.028946 second and Arithmetic Coding 0.034169 seconds. Image decompression algorithm results Arithmetic Coding and Shannon-Fano line with the original image. Can be concluded from the results of testing that Arithmetic Coding algorithm is more efficient in image compression *.bmp than Shannon-Fano algorithm, although in terms of Shannon-Fano decompress a bit faster than Arithmetic Coding.


(8)

 

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Landasan Teori 7

2.1 Definisi Citra 7

2.2 Definisi Citra Digital 8

2.2.1 Citra BMP 11

2.3 Operasi-Operasi pada Pengolahan Citra 13

2.4 Kompresi Citra 14

2.4.1 Teknik Kompresi Citra 17 2.4.2 Algoritma Arithmetic Coding 20 2.4.3 Algoritma Shannon-Fano 22

2.5 Pengenalan Visual Basic 23

2.5.1 Microsoft Visual Basic 2008 Express Edition 24

Bab 3 Analisis dan Perancangan Sistem 26

3.1 Analisis Kinerja Algoritma Arithmetic Coding 26 3.1.1 Proses Kompresi Arithmetic Coding 28 3.1.2 Proses Dekompresi Arithmetic Coding 29 3.1.3 Kompresi Arithmetic Coding pada Citra 30 3.1.4 Dekompresi Arithmetic Coding pada Citra 35 3.2 Analisis Kinerja Algoritma Shannon-Fano 38 3.2.1 Proses Kompresi Shannon-Fano 40 3.2.2 Proses Dekompresi Shannon-Fano 41 3.2.3 Kompresi Shannon-Fano pada Citra 41 3.2.4 Dekompresi Shannon-Fano pada Citra 43


(9)

 

3.3 Perancangan Sistem 44

3.3.1 Arsitektur Sistem 44

3.3.2 Rancangan DFD Kompresi dan Dekompresi 46 3.3.2.1 Rancangan DFD Kompresi dan Dekompresi pada Algoritma Arithmetic Coding 47 3.3.2.2 Rancangan DFD Kompresi dan Dekompresi pada Algoritma

Shannon-Fano 50

3.3.3 Rancangan Prosedural 53

3.3.3.1 Proses Aplikasi Algoritma Arithmetic Coding dan Shannon-

Fano 55

3.3.4 Rancangan Antarmuka 56

3.3.4.1 Rancangan Menu Utama 56 3.3.4.2 Rancangan Menu “Algoritma Kompresi” 57 3.3.4.3 Rancangan Menu “Kompresi” Aritmetic Coding 58 3.3.4.4 Rancangan Menu “Dekompresi” Aritmetic Coding 59 3.3.4.5 Rancangan Menu “Kompresi” Shannon-Fano 60 3.3.4.6 Rancangan Menu “Dekompresi” Shannon-Fano 61 3.3.4.7 Rancangan Menu “Bantuan” 63

Bab 4 Implementasi dan Pengujian Sistem 64

4.1 Implementasi Sistem 64

4.1.1 Spesifikasi Perangkat Keras dan Perangkat Lunak yang Digunakan 64

4.1.2 Tampilan Menu Utama 65

4.1.3 Tampilan Menu “Algoritma Kompresi” 65 4.1.4 Tampilan Menu “Kompresi” Arithmetic Coding 66 4.1.5 Tampilan Menu “Dekompresi” Arithmetic Coding 69 4.1.6 Tampilan Menu “Kompresi” Shannon-Fano 71 4.1.7 Tampilan Menu “Dekompresi” Shannon-Fano 74 4.1.8 Tampilan Menu “Bantuan” 77

4.2 Pengujian 77

4.2.1 Skenario Pengujian 77 4.2.2 Analisis Data Hasil Pengujian Sistem 83

4.2.2.1 Analisis Rasio dan Ukuran File Kompresi antara Algoritma Arithmetic Coding dan Shannon-Fano 83 4.2.2.2 Analisis Ukuran File Citra Hasil Kompresi antara Algoritma

Arithmetic Coding dan Shannon-Fano 86 4.2.2.3 Analisis Kecepatan Proses Kompresi dan Dekompresi Citra

antara Algoritma Arithmetic Coding dan Shannon-Fano 87

Bab 5 Kesimpulan dan Saran 91

5.1 Kesimpulan 91

5.2 Saran 92


(10)

 

DAFTAR TABEL

Halaman

Tabel 2.1 Contoh Warna 24 bit 13

Tabel 2.2 Keterangan Gambar 2.11 25

Tabel 3.1Tabel Probabilitas dan Range untuk Gambar 3.4 31

Tabel 3.2Proses Encoding untuk Gambar 3.4 34

Tabel 3.3Tabel Range Probabilitas 35

Tabel 3.4Proses Decoding untuk Gambar 3.4 38

Tabel 3.5Frekuensi Kemunculan Simbol 42

Tabel 3.6Proses Pengkodean 43

Tabel 3.7Kode dan Panjang Kode Shannon-Fano 43

Tabel 4.1 Citra Uji 77

Tabel 4.2 Rasio dan Ukuran File Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 83

Tabel 4.3 Kecepatan Proses Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 86

Tabel 4.4Kecepatan Proses Dekompresi Algoritma Arithmetic Coding


(11)

 

DAFTAR GAMBAR

Halaman Gambar 2.1 Langkah-Langkah Pengolahan Citra Digital 8

Gambar 2.2 Koordinat Citra Digital 10

Gambar 2.3 Matriks Citra Digital N x M 10

Gambar 2.4 Ilustrasi Sistem Matriks Citra Digital 8 x 8 Piksel 11

Gambar 2.5 Komposisi Warna RGB 13

Gambar 2.6 Alur Kompresi dan Dekompresi 16

Gambar 2.7 Rumus Rasio Kompresi 17

Gambar 2.8 Ilustrasi Kompresi Lossless 18

Gambar 2.9 Ilustrasi Kompresi Lossy 19

Gambar 2.10 Antarmuka pada Aplikasi Visual Basic 2008 Express Edition 25 Gambar 3.1 Flowchart Proses Kompresi Algoritma Arithmetic Coding 28 Gambar 3.2 Flowchart Proses Dekompresi Algoritma Arithmetic Coding 29

Gambar 3.3 Citra Berwarna 2 x 2 Piksel 30

Gambar 3.4 Matriks Citra Berwarna 2 x 2 Piksel 30 Gambar 3.5 Flowchart Proses Kompresi Algoritma Shannon-Fano 40 Gambar 3.6 Flowchart Proses Dekompresi Algoritma Shannon-Fano 41

Gambar 3.7 Citra Berwarna 2 x 2 Piksel 42

Gambar 3.8 Matriks Citra Berwarna 2 x 2 Piksel 42 Gambar 3.9 Matriks Citra Berwarna 2 x 2 Piksel setelah di Subtitusi ke SF 43 Gambar 3.10Proses Subtitusi SF Code ke Simbol Warna 44 Gambar 3.11Arsitektur Sistem Algoritma Arithmetic Coding 45 Gambar 3.12Arsitektur Sistem Algoritma Shannon-Fano Coding 46 Gambar 3.13 Komponen DFD Menurut Yourdan dan DeMarco 46 Gambar 3.14Rancangan DFD Level 0 Proses Kompresi / Dekompresi Algoritma

Arithmetic Coding 47

Gambar 3.15Rancangan DFD Level 1 P.0.1 untuk Proses Kompresi dan Dekompresi

Algoritma Arithmetic Coding 48

Gambar 3.16Rancangan DFD Level 2 P.1.1 untuk Proses Kompresi Algoritma

Arithmetic Coding 49

Gambar 3.17Rancangan DFD Level 2 P.1.2 untuk Proses Dekompresi Algoritma

Arithmetic Coding 50

Gambar 3.18Rancangan DFD Level 0 Proses Kompresi / Dekompresi Algoritma

Shannon-Fano 51

Gambar 3.19Rancangan DFD Level 1 P.0.1 untuk Proses Kompresi dan Dekompresi

Algoritma Shannon-Fano 51

Gambar 3.20Rancangan DFD Level 2 P.1.1 untuk Proses Kompresi Algoritma

Shannon-Fano 52


(12)

 

Shannon-Fano 53

Gambar 3.22 Flowchart Sistem Kompresi dan Dekompresi Secara Umum 54 Gambar 3.23Flowchart Aplikasi Algoritma Arithmetic Coding

dan Shannon-Fano 55

Gambar 3.24Rancangan Menu Utama 56

Gambar 3.25Rancangan Menu “Algoritma Kompresi” 57 Gambar 3.26Rancangan Menu “Kompresi” Arithmetic Coding 58 Gambar 3.27Rancangan Menu “Dekompresi” Arithmetic Coding 59 Gambar 3.28Rancangan Menu “Kompresi” Shannon-Fano 60 Gambar 3.29Rancangan Menu “Dekompresi” Shannon-Fano 62

Gambar 3.30Rancangan Menu “Bantuan” 63

Gambar 4.1 Tampilan Menu Utama 64

Gambar 4.2 Tampilan Menu “Algoritma Kompresi” 65 Gambar 4.3 Tampilan Menu “Kompresi” Arithmetic Coding 65 Gambar 4.4 Tampilan Menu “Buka” File citra bmp pada Arithmetic Coding 66 Gambar 4.5 Tampilan Menentukan Lokasi Penyimpanan Hasil Kompresi File Citra

Arithmetic Coding 67

Gambar 4.6 Tampilan Hasil Kompresi File Citra pada Arithmetic Coding 67 Gambar 4.7 Tampilan Menu “Dekompresi” Arithmetic Coding 68

Gambar 4.8 Tampilan Menu “Buka” File .acf 69

Gambar 4.9 Tampilan Menentukan Lokasi Penyimpanan Hasil

Dekompresi File .acf 69 Gambar 4.10 Tampilan Hasil Dekompresi File .acf 70 Gambar 4.11Tampilan Menu “Kompresi” Shannon-Fano 70 Gambar 4.12Tampilan Menu “Buka” File citra bmp pada Shannon-Fano 71 Gambar 4.13Tampilan Menentukan Lokasi Penyimpanan Hasil Kompresi File Citra

Shannon-Fano 72

Gambar 4.14Tampilan Hasil Kompresi File Citra pada Shannon-Fano 72 Gambar 4.15Tampilan Menu “Dekompresi” Shannon-Fano 73

Gambar 4.16Tampilan menu “Buka” File .sf 74

Gambar 4.17Tampilan Menentukan Lokasi Penyimpanan Hasil

Dekompresi File .sf 74

Gambar 4.18Tampilan Hasil Dekompresi File .sf 75

Gambar 4.19Tampilan Menu “Bantuan” 76

Gambar 4.20Perbandingan Rasio Kompresi Algoritma Arithmetic Coding dan

Shannon-Fano 84

Gambar 4.21Perbandingan Hasil Kompresi Algoritma Arithmetic Coding dan

Shannon-Fano 85

Gambar 4.22Perbandingan Kecepatan Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 87

Gambar 4.23Perbandingan Kecepatan Dekompresi Algoritma Arithmetic Coding


(13)

 


(14)

(15)

ABSTRAK

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga solusi untuk masalah tersebut adalah dengan melakukan kompresi. Pada skripsi ini akan mengimplementasi dan membandingkan kinerja algoritma Arithmetic Coding dan Shannon-Fano melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi. Berdasarkan seluruh hasil pengujian, bahwa algoritma Arithmetic Coding menghasilkan rata-rata rasio kompresi 62,88 % dan rasio kompresi Shannon-Fano 61,73 %, kemudian Arithmetic Coding rata-rata kecepatan dalam kompresi citra yaitu 0,072449 detik dan Shannon-Fano 0,077838 detik. Kemudian algoritma Shannon-Fano memiliki rata-rata kecepatan untuk dekompresi yaitu 0,028946 detik dan algoritma Arithmetic Coding 0,034169 detik. Citra hasil dekompresi pada algoritma Arithmetic Coding dan Shannon-Fano sesuai dengan citra asli. Dapat diambil kesimpulan dari hasil pengujian bahwa algoritma Arithmetic Coding lebih efisien dalam mengkompresi citra *.bmp dibandingkan algoritma Shannon-Fano, walaupun dalam hal dekompresi Shannon-Fano sedikit lebih cepat dibandingkan Arithmetic Coding.


(16)

ABSTRACT

Rapid technological developments, a very important role in the rapid exchange of information. On the transmission of information in the form of the image is still experiencing problems, such as the large size of the image so that the solution to that problem is to do the compression. In this thesis will implement and compare the performance of the algorithm Arithmetic Coding and Shannon-Fano through the calculation of compression ratio, the size of the compressed file, the speed of compression and decompression process. Based on all the test results, that Arithmetic Coding algorithm yielded an average compression ratio of 62.88% and a compression ratio Shannon-Fano of 61.73%, Arithmetic Coding the average speed in image compression is 0.072449 seconds and Shannon-Fano 0,077838 seconds. Then the Shannon-Fano algorithm has an average speed for the decompression algorithm is 0.028946 second and Arithmetic Coding 0.034169 seconds. Image decompression algorithm results Arithmetic Coding and Shannon-Fano line with the original image. Can be concluded from the results of testing that Arithmetic Coding algorithm is more efficient in image compression *.bmp than Shannon-Fano algorithm, although in terms of Shannon-Fano decompress a bit faster than Arithmetic Coding.


(17)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga sulit untuk memindahkan dan mengirim citra tersebut pada suatu perangkat keras yang ada, jadi masih terdapat kendala yang relatif besar. Untuk menghindari kendala tersebut perlu dilakukan kompresi citra sebelum dikirim dan dipindahkan.

Kompresi adalah proses pengubahan sekumpulan data menjadi suatu bentuk kode atau simbol untuk menghemat tempat penyimpanan dan waktu. Algoritma kompresi yang diharapkan dari kompresi citra adalah proses kompresi dan dekompresinya cepat, meminimalkan pemakaian memory, kualitas citra yang baik dan proses transfer yang mudah.

Pada umumnya representasi citra membutuhkan memori yang besar, semakin besar ukuran citra tentu semakin besar memori yang dibutuhkan. Pada sisi lain, kebanyakan citra terdapat duplikasi data. Duplikasi data pada citra yaitu ada 2 hal. Pertama, besar kemungkinan suatu piksel dengan piksel tetangganya memiliki intensitas yang sama, sehingga penyimpanan piksel memboroskan tempat. Kedua, citra banyak mengandung bagian yang sama, sehingga bagian yang sama ini tidak dikodekan berulang kali.

Teknik untuk mengkompresi citra ada dua macam, yaitu Lossless dan Lossy. Teknik lossless adalah suatu teknik kompresi data tanpa menghilangkan satupun informasi saat sebelum dikompresi. Kompresi citra pada teknik lossless, yaitu Run Length Encoding, Huffman Encoding, Shannon-Fano, Arithmetic Coding, Entropy


(18)

   

Coding (Lempel/Ziv). Berbeda dengan teknik lossless, teknik lossy adalah data hasil kompresi menghilangkan beberapa informasi sehingga tidak seperti data aslinya. Algoritma untuk kompresi citra pada teknik lossy, yaitu Transform Coding, Vector Quantisation, Fractal Coding, JPEG, GIF, PNG, Discrete Cosine Transform, Discrete Wavelet Transfrom. (Pu, 2006)

Algoritma yang telah digunakan sebelumnya untuk kompresi citra yaitu algoritma Discrete Wavelet Transform dan Embedded Zerotree Wevelet (Anwar et al, 2008), Approximate Matching and Run Length Encoding (Kumar et al, 2011), Algoritma Huffman dan Shannon-Fano (Adhitama, 2010). Berdasarkan hal yang telah diuraikan di atas, peneliti akan menggunakan algoritma Arithmetic Coding dengan Shannon-Fano untuk mengkompresi citra karena menurut penelitian sebelumnya dengan menggunakan kedua algoritma tersebut diharapkan akan memiliki kelebihan yaitu mengkompresi citra menjadi ukuran yang lebih kecil dan citra yang dihasilkan setelah dekompresi memiliki kualitas yang sama dengan citra sebelum dikompresi, setelah itu peneliti akan membandingkan dan menganalisis kinerja kedua algoritma dalam hal rasio kompresi serta lama waktu kompresi dan dekompresi. Melalui penelitian ini peneliti mengharapkan dapat menemukan kelebihan dan kekurangan dari masing-masing algoritma tersebut dalam hal rasio kompresi serta lama waktu kompresi dan dekompresi citra beresktensi *.bmp.

1.2Rumusan Masalah

Pengiriman informasi dalam bentuk citra masih mengalami kendala dalam hal ukuran yaitu citra yang memiliki ukuran yang besar sehingga sulit untuk melakukan pengiriman dan pemindahan oleh karena itu peneliti akan melakukan penelitian tentang bagaimana mengkompresi ukuran citra, agar mempermudah pengiriman dan pemindahan pada perangkat keras yang ada?


(19)

   

1.3Batasan Masalah

Dalam mengimplementasi dan menganalisis kinerja algoritma Arithmetic Coding dan Shannon-Fano dilakukan beberapa batasan sebagai berikut :

1. Citra yang diproses adalah 256 color Bitmap (*.bmp)

2. Analisis yang dilakukan adalah dalam hal rasio kompresi, ukuran file, kecepatan pada saat kompresi dan dekompresi.

3. File citra yang sudah dikompresi harus didekompresi terdahulu agar file citra bisa ditampilkan.

4. Bahasa pemograman yang digunakan untuk membuat sistem ini adalah Visual Basic menggunakan software VB 2008 Express Edition.

1.4Tujuan Penelitian

Adapun tujuan Tugas Akhir ini adalah sebagai berikut:

1. Mengimplementasikan algoritma Arithmetic Coding dan Shannon-Fano ke dalam bahasa pemograman komputer untuk kompresi citra.

2. Menganalisis kinerja algoritma Arithmetic Coding dan Shannon-Fano dalam hal rasio kompresi, kecepatannya pada saat kompresi dan dekompresi.

1.5Manfaat Penelitian

Manfaat dari Tugas Akhir ini adalah sebagai berikut:

1. Mengetahui bagaimana mengimplementasikan algoritma Arithmetic Coding dan Shannon-Fano ke dalam bahasa pemograman komputer untuk kompresi citra berekstensi *.bmp.

2. Mengetahui algoritma yang efisien dalam hal kompresi citra dan hasil citra yang telah terkompresi yang dapat meminimalkan pemakaian memory serta waktu pada algoritma Arithmetic Coding dan Shannon-Fano.


(20)

   

1.6Metode Penelitian

Tahapan yang akan dilakukan pada pelaksanaan Tugas Akhir ini adalah sebagai berikut:

1. Studi Literatur

Studi literatur yang dilakukan dalam penelitian ini adalah mengumpulkan bahan referensi mengenai Kompresi Citra dengan menggunakan algoritma Arithmetic Coding dan Shannon-Fano dari berbagai buku, jurnal, artikel dan beberapa referensi lainnya untuk pencapaian tujuan Tugas Akhir.

2. Analisis Algoritma

Pada tahap ini dilakukan analisis terhadap hasil studi literatur untuk mengetahui dan mendapatkan pemahaman mengenai algoritma Arithmetic Coding dan Shannon-Fano untuk menyelesaikan masalah kompresi citra. 3. Perancangan Sistem

Pada tahap perancangan sistem dilakukan perancangan arsitektur, pengumpulan data pelatihan, merancang antarmuka. Proses perancangan dilakukan berdasarkan hasil analisis studi literatur yang telah didapatkan. 4. Implementasi Sistem

Pada tahap implementasi sistem ini akan dilakukan pengkodean program menggunakan bahasa pemrograman VB 2008 Express Edition.

5. Pengujian Sistem

Pada tahap ini memastikan aplikasi kompresi citra yang telah dibuat sudah berjalan sesuai diharapkan, dan kemudian dianalisis kinerja kedua algoritma tersebut.

6. Dokumentasi dan Penyusunan Laporan

Pada tahap ini dilakukan dokumentasi dan penyusunan laporan hasil implementasi dan analisis algoritma Arithmetic Coding dan Shannon-Fano untuk menyelesaikan masalah kompresi citra.


(21)

   

1.7Sistematika Penulisan

Sistematika penulisan dari Tugas Akhir ini terdiri dari beberapa bagian utama sebagai berikut:

BAB 1: PENDAHULUAN

Bab ini akan menjelaskan tentang latar belakang pemilihan judul Tugas Akhir “Implementasi dan Analisis Kinerja Algoritma Arithmetic Coding dan Shannon-Fano dalam Kompresi Citra BMP”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, sistematika penulisan.

BAB 2: LANDASAN TEORI

Bab ini akan membahas teori-teori mengenai kompresi data yaitu citra serta beberapa prinsip yang melandasi pembuatan Tugas Akhir ini.

BAB 3: ANALISIS DAN PERANCANGAN SISTEM.

Bab ini berisi tentang uraian kinerja algoritma Arithmetic Coding dan Shannon-Fano dalam hal rasio kompresi serta lama waktu kompresi dan dekompresi citra dan kemudian membahas rancangan sistem yang akan dibuat.

BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisikan penjelasan tentang implementasi algoritma Arithmetic Coding dan Shannon-Fano ke dalam bahasa pemograman Visual Basic dan tentang spesifikasi kebutuhan perangkat keras (hardware) serta melakukan pengujian program beserta analisis yang didapatkan dari hasil pengujian yang telah dilakukan.


(22)

   

BAB 5: KESIMPULAN DAN SARAN

Pada bab terakhir ini akan berisi kesimpulan isi dari keseluruhan uraian dari bab-bab sebelumnya dan saran-saran dari hasil diperoleh akan bermanfaat untuk pengembangan selanjutnya.


(23)

(24)

LANDASAN TEORI

2.1 Definisi Citra

Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpan. (Sutoyo et al, 2009)

Menurut arti secara harfiah, citra (image) adalah gambar pada bidang dua dimensi. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dua dimensi. Sumber cahaya menerangi objek, objek memantulkan kembali sebagian dari berkasi cahaya. Pantulan cahaya ini ditangkap oleh alat-alat optik, seperti mata pada manusia, kamera, pemindai (scanner), dan lain-lain sehingga bayangan objek dalam bentuk citra dapat terekam. Citra sebagai output dari suatu sistem perekaman data dapat bersifat:

1. Optik, berupa foto,

2. Analog berupa sinyal video, seperti gambar pada monitor televisi, 3. Digital yang dapat langsung disimpan pada suatu pita magnetic.

Citra dapat dikelompokkan menjadi dua bagian yaitu citra diam (still image) dan citra bergerak (moving image). Citra diam adalah citra tunggal yang tidak bergerak. Sedangkan citra bergerak adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial) sehingga memberi kesan pada mata sebagai gambar yang bergerak. Setiap citra didalam rangkaian itu disebut frame. Gambar-gambar yang tampak pada film layar lebar atau televisi pada hakikatnya terdiri dari ratusan sampai ribuan frame. (Sawaluddin et al, 2006)


(25)

2.2 Definisi Citra Digital

Citra digital dihasilkan dengan proses digitalisasi terhadap citra kontinu. Sama halnya Proses digitalisasi dalam bentuk data lain, proses digitalisasi pada citra juga merupakan proses pengubahan suatu bentuk data citra dari yang bersifat analog ke digital. Yang mana proses ini dihasilkan dari peralatan digital yang langsung bisa diproses oleh komputer. Proses ini dapat dijelaskan sebagai berikut. Ada sebuah objek yang akan diambil gambarnya untuk dijadikan citra digital. Sumber cahaya diperlukan untuk menerangi objek, yang berarti ada intensitas cahaya (brightness) yang diterima oleh objek. Oleh objek, intensitas cahaya ini sebagian diserap dan sebagian lagi dipantulkan ke lingkungan sekitar objek secara radikal. Sistem pencitraan (imaging) menerima sebagian dari intensitas cahaya yang dipantul oleh objek tadi. Di dalam sistem pencitraan terdapat sensor optik yang digunakan untuk mendeteksi intensitas cahaya yang masuk ke dalam sistem. Keluaran dari sistem ini berupa arus yang besarnya sebanding dengan intensitas cahaya yang mengenainya. Arus tersebut kemudian dikonversi menjadi data digital yang kemudian dikirimkan ke unit penampil atau unit pengolah lainnya. Secara keseluruhan hasil keluaran sistem pencitraan berupa citra digital. Berikut ini gambar langkah-langkah pengolahan citra digital.

Gambar 2.1 Langkah-Langkah Pengolahan Citra Digital Domain

masalah

Akuisisi Preprocessing

Segmentasi Representasi dan Deskripsi

Hasil Pengenalan

dan Interpretasi  

   


(26)

Pada gambar terdapat akuisisi citra yaitu tahap awal untuk mendapatkan citra digital. Tujuan akuisisi citra adalah untuk menentukan data yang diperlukan dan memilih metode perekaman citra digital. Tahap ini dimulai dari objek yang akan diambil gambarnya, persiapan alat-alat, sampai pada pencitraan. Pencitraan adalah kegiatan transformasi dari citra tampak (foto, gambar, lukisan, patung, pemandangan, dan lain-lain) menjadi citra digital. Beberapa alat yang dapat digunakan untuk pencitraan, yaitu video kamera, kamera digital, kamera konvensional, scanner, sinar infra merah. Hasil akuisisi citra ini ditentukan oleh kemampuan sensor untuk mendigitalisasi sinyal yang terkumpul pada sensor tersebut.

Kemudian masuk tahap preprocessing, tahapan ini diperlukan untuk menjamin kelancaran pada proses berikutnya. Hal-hal penting yang dilakukan pada tingkatan ini antaranya adalah peningkatan kualitas citra, menghilangkan noise, perbaikan citra, transformasi, menentukan bagian citra yang akan diobservasi. Selanjutnya masuk pada tahap segmentasi ini bertujuan untuk mempartisi citra menjadi bagian-bagian pokok yang mengandung informasi penting. Misalnya, memisahkan objek dan latar belakang. Kemudian tahap representasi dan deskripsi dalam hal ini representasi merupakan suatu proses untuk merepresentasikan suatu wilayah sebagai suatu daftar titik-titik koordinat dalam kura yang tertutup, dengan deskripsi luasan atau parameternya.

Tahap pengenalan dan interpretasi, pengenalan bertujuan untuk memberi label pada sebuah objek yang informasinya disediakan oleh descriptor, sedangkan tahap interpretasi untuk memberi arti atau makna kepada kelompok objek-objek yang dikenali. Basis pengetahuan sebagai basis data pengetahuan berguna untuk memandu operasi dari masing-masing modul proses dan mengkontrol interaksi antara modul-modul tersebut. Selain itu, basis pengetahuan juga digunakan sebagai referensi pada proses template matching atau pada pengenalan pola.

Citra digital yang tersusun dalam bentuk grid. Setiap kotak yang terbentuk disebut piksel dan memiliki koordinat (x,y) adalah f(x,y). Sumbu x yaitu baris, sedangkan sumbu y yaitu kolom. Setiap piksel memiliki nilai yang menunjukkan


(27)

intensitas warna pada piksel tersebut. Gambar 2.2 menunjukkan posisi koordinat citra digital.

Gambar 2.2 Koordinat Citra Digital

Citra digital dinyatakan dengan matriks berukuran N x M (kolom / tinggi = N, baris / lebar = M). Piksel mempunyai dua parameter, yaitu koordinat dan intensitas warna. Nilai yang terdapat pada koordinat (x,y), yaitu besar intensitas warna dari piksel di titik itu (Putra, 2010). Sehingga citra digital dapat ditulis dalam bentuk matriks sebagai berikut :

f(x,y) =

Gambar 2.3 Matriks Citra Digital N x M

Berdasarkan gambaran tersebut, citra digital dapat dituliskan sebagai fungsi intensitas f(x,y), di mana harga x (baris) dan y (kolom) merupakan koordinat posisi dan f(x,y) adalah nilai fungsi pada setiap titik (x,y) yang menyatakan besar intensitas citra atau tingkat keabuan atau warna dari piksel di titik tersebut. Merepresentasikan sebuah citra ukuran 8 x 8 piksel dengan mengambil derajat keabuan pada tiap piksel serta matriks yang terdiri dari 8 baris dan 8 kolom.

Koordinat

asal N-1

M-1

Y

X


(28)

Gambar 2.4 Ilustrasi Sistem Matriks Citra Digital 8 x 8 Piksel

Dapat dilihat dari gambar 2.4 bahwa pada piksel pertama pada koordinat (1,1) mempunyai derajat keabuan 47 yang mewakili dari beberapa gradasi warna, selanjutnya piksel kedua pada koordinat (2,1) memiliki derajat keabuan 52 yang mewakili dari beberapa gradasi warna dan seterusnya.

Ada beberapa format citra digital, antara lain: BMP, PNG, JPG, GIF dan sebagainya. Masing-masing format mempunyai perbedaan satu dengan yang lain terutama pada header file. Namun ada beberapa yang mempunyai kesamaan, yaitu penggunaan palette untuk penentuan warna piksel. Sebagai studi kasus dalam tugas akhir ini akan digunakan format citra *.bmp yang dikeluarkan oleh Microsoft.

2.2.1 Citra BMP

Format BMP, disebut dengan bitmap atau format DIB (Device Independent Bitmap) adalah sebuah format citra yang digunakan untuk menyimpan citra bitmap digital terutama pada sistem operasi Microsoft Windows atau OS/2. Pada citra berformat *.bmp (bitmap) yang tidak terkompresi, piksel citra disimpan dengan kedalaman warna 1, 4, 8, 16 atau 24 bit per piksel. (Ahmad, 2005)

Pada umumnya citra bitmap teridir dari 4 blok data yaitu: BMP header, Bit Information (DIB header), Color Pallete, dan Bitmap Data. BMP header berisi informasi umum dari citra bitmap. Blok ini berada pada bagian awal file citra dan


(29)

digunakan untuk mengidentifikasi citra. Beberapa aplikasi pengolah citra akan membaca blok ini untuk memastikan bahwa citra tersebut berformat bitmap dan tidak dalam kondisi rusak. Bit information berisi informasi detail dari citra bitmap, yang akan digunakan untuk menampilkan citra pada layar. Color pallete berisi informasi warna yang digunakan untuk indeks warna bitmap, dan bitmap data berisi data citra yang sebenarnya, piksel per piksel.

Model ruang warna yang digunakan pada citra bitmap adalah RGB (red, green, dan blue). Sebuah ruang RGB dapat diartikan sebagai semua kemungkinan warna yang dapa dibuat dari tiga warna dasar red, green, dan blue. RGB sering digunakan di dalam sebagian besar aplikasi komputer karena dengan ruang warna ini tidak diperlukan transformasi untuk menampilkan informasi di layar monitor.

Pada citra 256 warna setiap piksel panjangnya 8 bit, tetapi komponen warna RGBnya disimpan di dalam tabel RGB yang disebut pallete. Setiap komponen panjangnya 8 bit, jadi ada 256 nilai keabuan untuk warna merah, 256 nilai keabuan untuk warna hijau, 256 nilai keabuan untuk warna biru. Nilai setiap piksel tidak menyatakan derajat keabuan secara langsung, tetapi nilai piksel menyatakan indeks tabel RGB yang memuat nilai keabuan merah (R), nilai keabuan hijau (G), nilai keabuan biru (B) untuk masing-masing piksel yang bersangkutan. Namun pada citra hitam-putih, nilai R = G = B untuk menyatakan bahwa citra hitam putih hanya mempunya satu kanal warna. Citra hitam putih umumnya adalh citra 8 bit.

Citra yang lebih kaya warna adalah citra 24 bit. Setiap piksel panjangnya 24 bit, karena setiap piksel langsung menyatakan komponen warna merah, komponen warna hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8 bit. Citra 24 bit disebut juga citra 16 juta warna, karena citra ini mampu menghasilkan


(30)

Tabel 2.1 Contoh Warna 24 bit

Gambar 2.5 Komposisi Warna RGB

2.3Operasi-Operasi pada Pengolahan Citra

Operasi-operasi yang dilakukan pada pengolahan citra secara umum dapat dikelompokkan dalam beberapa jenis, yaitu: (Sigit, 2005)

1. Perbaikan Kualitas (Image Enchancement)

Operasi perbaikan kualitas citra bertujuan untuk memperbaiki kualitas citra dengan cara memanipulasi parameter-parameter citra. Melalui operasi ini, ciri-ciri khusus yang terdapat di dalam citra dapat lebih ditonjolkan. Beberapa operasi perbaikan citra antara lain: perbaikan kontras gelap / terang, perbaikan tepian objek, penajaman, pemberian warna semu.


(31)

2. Kompresi Citra (Image Compression)

operasi kompresi citra bertujuan untuk dapat merepresentasikan citra dalam bentuk yang lebih kompak sehingga memerlukan memori yang lebih sedikit. Yang menjadi perhatian penting dalam kompresi citra adalah mempertahankan kualitas citra agar tetap baik.

3. Segmentasi Citra (Image Segmentation)

Operasi segmentasi citra bertujuan untuk memecah suatu citra ke dalam beberapa segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat dengan pengenalan pola.

4. Analisis Citra (Image Analysis)

Operasi analisis citra bertujuan untuk menghitung besaran kuantitatif dari citra untuk menghasilkan deskripsinya. Teknik analisis citra adalah mengekstraksi ciri-ciri tertentu yang sangat membantu dalam identifikasi objek. Proses segmentasi juga diperlukan untuk melokalisasi objek dari sekelilingnya. Contoh dari operasi analisis citra yaitu pendeteksian tepi objek, ekstraksi batas, dan representasi daerah.

5. Rekonstruksi Citra (Image Reconstruction)

Operasi rekonstruksi citra bertujuan untuk membentuk ulang objek dari beberapa citra hasi proyeksi. Operasi rekonstruksi citra banyak digunakan di dalam bidang medis.

2.4 Kompresi Citra

Kompresi citra yaitu aplikasi kompresi data yang dilakukan terhadap citra digital dengan tujuan untuk mengurangi redudansi dari data yang terdapat dalam citra sehingga dapat disimpan atau ditransmisikan secara efisien (Sayood, 2005).


(32)

Kompresi citra merupakan proses untuk mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili kuantitas informasi yang terkandung pada data tersebut (Putra, 2010).

Pada dasarnya teknik kompresi citra digunakan pada proses penyimpanan data dan proses transmisi data. Data dan informasi adalah dua hal berbeda. Pada data terkandung suatu informasi. Namun tidak semua bagian data terkait dengan informasi tesebut atau pada suatu data terdapat bagian-bagian data yang berulang untuk mewakili informasi yang sama (Putra, 2010).

Semakin besar ukuran citra, semakin besar memori yang dibutuhkan, namun kebanyakan citra mengandung duplikasi data, yaitu:

1. Suatu piksel memiliki intensitas yang sama dengan piksel tetangganya, sehingga penyimpanan piksel membutuhkan memori (space) yang lebih besar sehingga sangat memboroskan tempat.

2. Citra banyak mengandung bagian (region) yang sama sehingga bagian yang sama ini tidak perlu dikodekan berulang kali karena tidak berguna.

Contohnya citra langit biru dengan beberapa awan putih yang memiliki banyak intensitas dan region yang sama.

Kompresi citra bertujuan untuk meminimalkan jumlah bit yang diperlukan untuk merepresentasikan citra. Apabila sebuah foto bewarna berukuran 3 inci x 4 inci dengan tingkat resolusi sebesar 500 dot per inch (dpi), maka diperlukan 3 x 4 x 500 x 500 = 3.000.000 dot (piksel). Setiap piksel terdiri dari 3 byte dimana masing masing byte merepresentasikan warna merah, hijau, dan biru. Sehingga citra digital tersebut memerlukan volume penyimpanan sebesar 3.000.000 x 3 byte + 1080 = 9.001.080 byte setelah ditambahkan jumlah byte yang diperlukan untuk menyimpan format (Header) citra. Oleh karena itu diperlukan kompresi citra sehingga ukuran citra tersebut menjadi lebih kecil dan waktu pengiriman citra menjadi lebih cepat. Citra yang belum dikompresi disebut citra mentah (raw image). Sementara citra hasil kompresi disebut


(33)

citra terkompresi (compressed image). Secara umum proses kompresi dan dekompresi dapat dilihat pada gambar di bawah ini:

Gambar 2.6 Alur Kompresi dan Dekompresi

Proses kompresi didasarkan pada kenyataan bahwa hampir semua jenis data selalu terdapat pengulangan pada komponen data yang dimilikinya, misalnya di dalam suatu citra akan terdapat pengulangan warna dari 0 hingga 255. Melalui proses kompresi berusaha untuk menghilangkan unsur pengulangan ini dengan mengubahnya sedemikian rupa sehingga ukuran data menjadi lebih kecil.

Kompresi data sangat populer sekarang ini karena dua alasan yaitu (Salomon, 2007):

1. Orang-orang lebih suka mengumpulkan data. Tidak peduli seberapa besar media penyimpanan yang dimilikinya. Akan tetapi cepat atau lambat akan terjadi overflow.

2. Orang-orang tidak suka menunggu waktu yang lama untuk memindahkan data. Misalnya ketika duduk di depan komputer untuk menunggu halaman Web terbuka atau men-download sebuah file.

Alasan mengapa kompresi data sangat dibutuhkan karena semakin banyak informasi saat ini yang digunakan dalam bentuk digital dan semakin lama ukuran yang dibutuhkan untuk menyajikan data tersebut semakin besar. (Sayood, 2005)


(34)

2.4.1 Teknik Kompresi Citra

Kompresi data dapat dibagi ke dalam dua teknik yaitu lossless compression dan lossy compression. (Pu, 2006)

1. Lossless Compression

Pada teknik ini tidak ada kehilangan informasi. Jika data dikompresi secara lossless, data asli dapat direkontruksi kembali sama persis dari data yang telah dikompresi, dengan kata lain data asli tetap sama sebelum dan sesudah kompresi, secara umum teknik lossless digunakan untuk penerapan yang tidak bisa mentoleransi setiap perbedaan antara data asli dan data yang telah direkonstruksi. Data berbentuk citra untuk medis misalnya harus dikompresikan menggunakan teknik lossless, karena kehilanggan sebuah piksel atau warna saja dapat mengakibatkan kesalahpahaman. Lossless compression disebut juga dengan reversible compression karena data asli bisa dikembalikan dengan sempurna. Akan tetapi rasio kompresi pada teknik ini rendah. Contoh metode ini adalah Shannon-Fano, Huffman Coding, Arithmetic Coding dan lain sebagainya.

Rasio kompresi citra adalah ukuran presentasi citra yang telah berhasil dikompresi. Secara umum matematis rasio kompresi citra dituliskan sebagai berikut. (Pu, 2006)

Rasio Kompresi = x 100%

Gambar 2.7 Rumus Rasio Kompresi

Misalkan rasio kompresi adalah 40%, artinya 40% dari citra semula telah berhasil dikompresi.


(35)

Gambar 2.8 Ilustrasi Kompresi Lossless

2. Lossy Compression

Pada teknik ini akan terjadi kehilangan sebagian informasi. Data yang telah dikompresi dengan teknik ini secara umum tidak bisa direkonstruksi sama persis dari data aslinya. Di dalam banyak penerapan, rekonstruksi yang tepat bukan suatu masalah, tergantung data yang diperlukan.

Biasanya teknik ini membuang bagian-bagian data yang sebenarnya tidak begitu berguna, tidak begitu dirasakan, tidak begitu dilihat sehingga manusia masih beranggapan bahwa data tersebut masih bisa digunakan walaupun sudah dikompresi. Lossy compression disebut juga irreversible compression karena data asli tidak dapat dikembalikan seperti semula. Kelebihan teknik ini adalah rasio kompresi yang tinggi dibanding metode lossless. Contoh metode ini adalah Transform Coding, Wavelet, dan lain-lain.

BAAABBA 000011100101011

000011100101011

BAAABBA Algoritma

Coding

Algoritma Decoding


(36)

Gambar 2.9 Ilustrasi Kompresi Lossy

Ada beberapa parameter yang digunakan untuk menilai kehandalan suatu kompresi. Diantara masing-masing parameter tersebut terdapat hubungan yang erat dan saling mempengaruhi.

1. Faktor kompresi

Faktor kompresi adalah perbandingan jumlah data yang belum dikompresi terhadap jumlah data hasil kompresi. Semakin bagus suatu kompresi maka faktor kompresinya semakin tinggi. Akan tetapi faktor kompresi yang tinggi akan mengakibatkan kualitas yang menurun. Faktor penting kompresi data, terdapat empat faktor penting yang perlu diperhatikan, yaitu: Time Process (waktu yang dibutuhkan dalam menjalankan proses), Completeness (kelengkapan data setelah file-file tersebut dikompres), Ratio Compress (ukuran data setelah dilakukan kompresi), Optimaly (perbandingan apakah ukuran file sebelum dikompres sama atau tidak sama dengan file yang telah dikompres). Tidak ada metode kompresi yang paling efektif untuk semua jenis file.

2. Kualitas

Suatu teknik kompresi dikatakan baik apabila kualitas data hasil decoding sangatlah mirip bila dibandingkan dengan aslinya. Faktor kualitas ini sangat erat dengan faktor kompresi.

5.26 000110001010110

000110001010110

3.26 Algoritma

Coding

Algoritma Decoding


(37)

3. Kompleksitas

Kompleksitas dari suatu teknik kompresi menentukan sulit atau tidaknya implementasi teknik kompresi tersebut.

4. Interaktif

Pengguna dapat bebas untuk berinteraksi dengan informasi multimedia untuk mengubah, mencari informasi yang diinginkan atau membuang informasi yang tidak diinginkan.

2.4.2 Algoritma Arithmetic Coding

Prinsip Arithmetic Coding diperkenalkan pertama kali oleh Peter Elias sekitar tahun 1960-an. Algoritma ini melakukan proses pengkodean dengan menggantikan setiap simbol masukan dengan suatu codeword (Pu, 2006). Arithmetic Coding memiliki kelebihan terutama ketika memproses kumpulan abjad yang relatif sedikit. Awalnya Arithmetic Coding diperkenalkan oleh Shannon, Fano dan Elias. Tujuannya memberikan ide alternatif yang pada saat itu setiap proses pengkodean dilakukan dengan menggantikan setiap simbol masukan digantikan dengan sebuah angka single floating point. Sehingga semakin panjang dan kompleks pesan yang dikodekan maka semakin banyak bit yang diperlukan untuk keperluan tersebut. Sejak tahun 1960-an hingga sekarang Algoritma Arithmetic Coding mulai berkembang para peneliti mulai mengembangkan Algoritma Arithmetic Coding untuk melakukan kompresi pada multimedia yaitu: citra, audio, video dll.

Pada umumnya, algoritma kompresi data didasarkan pada pemilihan cara melakukan penggantian satu atau lebih elemen-elemen yang sama dengan kode tertentu. Berbeda dengan cara tersebut, Arithmetic Coding menggantikan sautu deret simbol input dalam suatu file data dengan sebuah bilangan menggunakan proses aritmatika. Semakin panjang dan semakin kompleks pesan dikodekan, semakin banyak bit yang diperlukan untuk proses kompresi dan dekompresi data.


(38)

Output dari Arithmetic Coding ini adalah satu angka yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat didekompresikan sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut.

Implementasi Arithmetic Coding harus memperhatikan kemampuan encoder dan decoder. Hal ini dapat menyebabkan kesalahan atau error apabila suatu Arithmetic Coding mempunyai kode dengan floating point yang sangat panjang. Sehingga diberikan solusi berupa modifikai algoritma Arithmetic Coding dengan menggunakan bilangan integer. Modifikasi ini mampu mengatasi keterbatasan pengolahan floating point dalam melakukan kompresi dan dekompresi data. Modifikasi dengan bilangan integer juga dipakai karena jumlah bit kodenya lebih sedikit dan mempercepat proses kompresi dan dekompresi data karena perhitungan integer jauh lebih cepat dari perhitungan floating point serta dapat diimplementasikan dalam program.

Berikut ini algoritma encoding dan decoding pada Arithmetic Coding. Akan digunakan dua variabel low dan high untuk mendefinisikan interval (low, high). (Pu, 2006)

Proses encoding, algoritma Arithmetic Coding:

Langkah 1: Set low = 0.0 (kondisi awal) Langkah 2: Set high = 1.0 (kondisi awal) Langkah 3: While (simbol input masih ada) do

Langkah 4: Ambil simbol input

Langkah 5: Code-Range = high – low

Langkah 6: High = low + Code-Range*high_range (simbol) Langkah 7: Low = low + Code-Range*low_range (simbol) Langkah 8: End While

Langkah 9: Output Low

Proses decoding, algoritma Arithmetic Coding:

Langkah 1: Ambil Encoded-Symbol (ES) Langkah 2: Do

Langkah 3: Cari range dari simbol yang melingkupi Encoded-Symbo(ES) Langkah 4: Cetak simbol

Langkah 5: Code-Range = high_range – low_range

Langkah 6: Encoded-Symbol = Encoded-Symbol – low_range

Langkah 7: Encoded-Symbol = Encoded-Symbol / Code-Range


(39)

2.4.3 Algoritma Shannon-Fano

Algoritma Shannon-Fano merupakan algoritma pertama yang diperkenalkan untuk kompresi sinyal digital pada bukunya yang berjudul “A Mathematical Theory of Communication”. Algoritma ini dikembangkan secara mandiri oleh Claude Shannon dan Robert Fano dalam dua publikasi terpisah pada tahun yang sama yaitu pada tahun 1949. Algoritma Shannon-Fano adalah salah satu banyak yang dikembangkan oleh Claude Shannon dianggap sebagai “Father of Information Theory” yaitu membuat kemajuan dalam kaitannya dengan transfer data dan komunikasi pada umumnya. Pada tahun 1976 Robert Fano menerima Claude Shannon Award untuk karyanya dalam Information Theory. Hingga sekarang para peneliti mulai mengembangkan Algoritma Shannon-Fano untuk melakukan kompresi pada multimedia yaitu: citra, audio, video dll.

Algoritma Shannon-Fano didasarkan pada variable-length code yang berarti karakter pada data yang akan dikodekan direpresentasikan dengan kode (codeword) yang lebih pendek dari karakter yang ada pada data. Jika frekuensi kemunculan karakter semakin tinggi, maka kode semakin pendek, dengan demikian kode yang dihasilkan tidak sama panjang, sehingga kode tersebut bersifat unik. Berikut langkah-langkah kompresi dan dekompresi pada algoritma Shannon-Fano. (Pu, 2006)

Langkah-langkah kompresi menggunakan algoritma Shannon-Fano.

1. Buatlah daftar peluang atau frekuensi kehadiran setiap simbol dari data yang akan dikodekan.

2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara menurun (dari simbol yang frekuensi kemunculan paling banyak sampai simbol dengan frekuensi kemunculan paling sedikit).

3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat mungkin dengan jumlah total frekuensi dengan bagian yang lain (disebut bagian bawah).

4. Daftar bagian atas dinyatakan dengan digit 0 dan bagian bawah dinyatakan dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian


(40)

atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian bawah akan dimulai dengan 1.

5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan bawah. Bagilah menjadi kelompok-kelompok dan tambahkan bit-bit pada kode sampai setiap simbol mempunyai kode yang bersesuaian pada pohon tersebut.

Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano. 1. Baca bit pertama dari serangkaian kode yang dihasilkan

2. Jika bit tersebut ada dalam SF Code, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.

3. Jika bit tersebut tidak ada dalam SF Code, gabungkan bit tersebut dengan bit selanjutya dalam rangkaian kode, cocokkan dengan tabel hasil pengkodean.

4. Lakukan langkah 3 sampai ada rangkaian bit yang cocok dengan SF Code, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai.

5. Baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 sampai rangkaian kode habis.

2.5 Pengenalan Visual Basic

Visual Basic berawal dari bahasa BASIC yang dikembangkan mulai dari tahun 1963. BASIC adalah singkatan dari Beginner’s All Purpose Symbolic Instruction Code. Sesuai namanya bahasa BASIC dibuat untuk tujuan memudahkan pengguna agar dapat dengan mudah mempelajari, membuat, dan mengembangkan program komputer.

Visual Basic merupakan pengembangan lebih lanjut dari bahasa BASIC yang dilakukan oleh Microsoft Visual Basic ditujukan sebagai perangkat untuk membuat dan mengembangkan program secara cepat (Rapid Application Development: RAD). Terutama jika menggunakan antarmuka berbasis windows (Graphical User Interface: GUI).


(41)

Visual Basic 1.0 merupakan versi pertama Visual Basic dan dirilis pada tahun 1991. Visual Basic 1.0 ditujukan untuk sistem operasi Microsoft DOS. Selanjutnya diteruskan dengan Visual Basic 2.0 di tahun 1992, versi 3.0 tahun 1993, versi 4.0 tahun 1995, versi 5.0 tahun 1997, dan versi 6.0 tahun 1998.

Visual Basic 6.0 sangat populer dan masih banyak dipakai hingga saat ini. Sayangnya, dukungan terhadapa Visual Basic 6.0 telah dihentikan oleh Microsoft mulai bulan maret 2008. Namun, program yang dibuat dengan Visual Basic 6.0 masih dapat dijalankan pada sistem operasi terbaru seperti Windows Server 2008 maupun Windows Vista. Visual Basic .Net diluncurkan Februari 2002, merupakan penerus dari Visual Basic 6.0 dan menggunakan platform .Net yang berbeda dengan Visual Basic sebelumnya.

2.5.1 Microsoft Visual Basic 2008 Express Edition

Visual Basic 2008 Express Edition yang lebih lengkap dan mudah digunakan untuk mencari komponen atau objek yang diinginkan. Perhatikan antar muka yang dapat dilihat pada gambar 2.11.


(42)

Gambar 2.10 Antarmuka pada Aplikasi Visual Basic 2008 Express Edition

Keterangan:

Tabel 2.2 Keterangan Gambar 2.11

Antarmuka Keterangan Menu bar Menu standar pada Visual Basic

Toolbar Daftar tool (perangkat) untuk menjalankan perintah yang sering digunakan

Toolbox Daftar kontrol yang dapat ditambahkan ke dalam program sebagai antarmuka (interface) Form Designer Digunakan untuk mengedit tampilan form

serta mengatur posisi kontrol pada form

Solution Explorer Digunakan untuk mengolah file dan projek berhubungan dengan solution

Properties Digunakan untuk mengedit properties dari form dan kontrol yang sedang diedit

Error list Menampilkan pesan error jika ada kesalahan Toolbox Push

Form Page tab

Menu bar

Solution Explorer

Properties

Main Status

Error list

Sizing


(43)

(44)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Kinerja Algoritma Arithmetic Coding

Penelitian ini akan dilakukan analisis dan perancangan perangkat lunak pengkompresian citra yang berkeskstensi *.bmp dengan menggunakan algoritma

Arithmetic Coding. Proses kompresi citra didasarkan pada kenyataan bahwa pada semua citra selalu terdapat pengulangan pada komponen citra yang dimilikinya, misalnya di dalam suatu data citra akan terdapat pengulangan penggunaan intensitas warna dari angka 0 – 255 sesuai warna di tiap piksel. Kompresi citra melalui proses

encoding berusaha untuk menghilangkan unsur pengulangan ini dengan mengubahnya sehingga ukuran citra menjadi kecil.

Proses pengurangan unsur pengulangan ini dapat dilakukan dengan memakai beberapa teknik kompresi. Misalnya jika suatu komponen muncul berulang kali dalam suatu data, maka komponen tersebut tidak harus dikodekan berulang kali pula tetapi dapat dikodekan dengan menulis frekuensi munculnya komponen dan di mana komponen tersebut muncul. Teknik kompresi data lainnya, berusaha untuk mencari suatu bentuk kode yang lebih pendek untuk suatu komponen yang sering muncul. Dalam proses kompresi, terdapat konsep probabilitas yang menunjukkan suatu ukuran berapa banyak informasi yang terdapat dalam suatu rangkaian citra atau yang disebut

entropy yang dapat direpresentasikan secara matematis.

Pada kinerja algoritma Arithmetic Coding yang sudah dijelaskan pada bab 2, bahwa Arithmetic Coding menggantikan suatu deret simbol input dalam suatu file data dengan sebuah bilangan menggunakan proses aritmatika. Semakin panjang dan semakin kompleks pesan yang dikodekan, semakin banyak bit yang diperlukan untuk proses kompresi dan dekompresi data. Output dari Arithmetic Coding ini adalah satu angka yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara


(45)

acak unik dapat di-decode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut. Untuk menghasilkan angka output tersebut, tiap simbol yang akan di-encode diberi satu set nilai probabilitas.

Proses encoding, algoritma Arithmetic Coding:

Langkah 1: Set low = 0.0 (kondisi awal) Langkah 2: Set high = 1.0 (kondisi awal) Langkah 3: While (simbol input masih ada) do

Langkah 4: Ambil simbol input

Langkah 5: Code-Range = high – low

Langkah 6: High = low + Code-Range*high_range (simbol) Langkah 7: Low = low + Code-Range*low_range (simbol) Langkah 8: End While

Langkah 9: Output Low

Proses decoding, algoritma Arithmetic Coding:

Langkah 1: Ambil Encoded-Symbol (ES) Langkah 2: Do

Langkah 3: Cari range dari simbol yang melingkupi Encoded-Symbol(ES) Langkah 4: Cetak simbol

Langkah 5: Code-Range = high_range – low_range

Langkah 6: Encoded-Symbol = Encoded-Symbol - low_range

Langkah 7: Encoded-Symbol = Encoded-Symbol / Code-Range


(46)

3.1.1 Proses Kompresi Arithmetic Coding

   


(47)

3.1.2 Proses Dekompresi Arithmetic Coding


(48)

3.1.3 Kompresi Arithmetic Coding pada Citra

Contoh penggunaan algoritma Arithmetic Coding pada citra adalah misalkan pada citra berwarna dengan ukuran 2 x 2 piksel dapat dilihat pada gambar 3.3 akan

di-encode maka diperoleh probabilitas untuk setiap piksel. Setelah probabilitas tiap piksel telah diketahui, tiap piksel akan diberikan range tertentu yang nilainya antara 0 dan 1, sesuai dengan probabilitas yang ada. Dalam hal ini tidak ada ketentuan pengurutan nilai frekuensi, asalkan antara encoder dan decoder melakukan hal yang sama.

Gambar 3.3 Citra Berwarna 2 x 2 Piksel

diproses dalam bentuk matriks:

0 255 0 255 255 255 255 239 239 255 239 213

Gambar 3.4 Matriks Citra Berwarna 2 x 2 Piksel

Matriks di atas akan mewakili sebuah citra berwarna yang berukuran 2 x 2 piksel, di mana nilai setiap RGB menyatakan tiap warna pada piksel, kemudian hitung jumlah frekuensi kemunculan pada setiap simbol warna pada citra. Setelah itu akan diperoleh probabilitas untuk setiap simbol, kemudian tiap simbol akan diberikan

range tertentu yang nilainya 0 dan 1, sesuai dengan probabilitas yang ada. Hal ini dapat dilihat pada tabel 3.1 seperti berikut.

Warna Hijau


(49)

Tabel 3.1 Tabel Probabilitas dan Range untuk Gambar 3.4

No Simbol Frekuensi Probabilitas Range

1 0 2 2/12=0,17 0,0≤0<0,17

2 255 6 6/12=0,5 0,17≤255<0,67

3 239 3 3/12=0,25 0,67≤239<0,92

4 213 1 1/12=0,08 0,92≤213<1,00

Total 12

Keterangan:

0,0≤0<0,17 : Nilai “0” memiliki range dari 0,0 sampai dengan 0,17 0,17≤255<0,67 : Nilai “255” memiliki range dari 0,17 sampai dengan 0,67 0,67≤239<0,92 : Nilai “239” memiliki range dari 0,67 sampai dengan 0,92 0,92≤213<1,00 : Nilai “213” memiliki range dari 0,92 sampai dengan 1

Selanjutnya dilakukan proses Arithmetic encoding pada gambar 3.2 yaitu sebagai berikut.

1. Perhitungan Simbol 0 Low = 0,0

High = 1,0 CR = HighLow = 1,0 – 0,0

= 1,0

High_range (0) = 0,17 Low_range (0) = 0,0

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (0)

= 0 + 1*0,17 = 0,17 Low = low + CR*low_range (0)

= 0 + 1*0,0 = 0,0

2. Perhitungan Simbol 255 Low = 0,0

High = 0,17 CR = HighLow

= 0,17 – 0,0 = 0,17

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

= 0,0 + 0,17*0,67 = 0,1139 Low = low + CR*low_range (255)

= 0,0 + 0,17*0,17 = 0,0289

3. Perhitungan Simbol 0

Low = 0,0289 High = 0,1139 CR = HighLow


(50)

= 0,085 High_range (0) = 0,17 Low_range (0) = 0,0

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (0)

= 0,0289 + 0,085*0,17

= 0,04335

Low = low + CR*low_range (0) = 0,0289 + 0,085*0,0

= 0,0289

4. Perhitungan Simbol 255

Low = 0,0289 High = 0,04335 CR = HighLow

= 0,04335 – 0,0289 = 0,01445

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

= 0,0289 + 0,01445*0,67

= 0,0385815

Low = low + CR*low_range (255) = 0,0289 + 0,01445*0,17

= 0,0313565

5. Perhitungan Simbol 255

Low = 0,0313565 High = 0,0385815 CR = HighLow

= 0,0385815 – 0,0313565 = 0,007225

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

= 0,0313565 + 0,007225*0,67

= 0,03619725

Low = low + CR*low_range (255) = 0,0313565 + 0,007225*0,17

= 0,03258475

6. Perhitungan Simbol 255

Low = 0,03258475 High = 0,03619725 CR = HighLow

= 0,03619725 – 0,03258475 = 0,0036125

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

=0,03258475 + 0,0036125*0,67

= 0,035005125

Low = low + CR*low_range (255)

=0,03258475 + 0,0036125*0,17

= 0,033198875

7. Perhitungan Simbol 255

Low = 0,033198875 High = 0,035005125 CR = HighLow

= 0,035005125 – 0,033198875 = 0,00180625

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

=0,033198875+0,0018062*0,67


(51)

Low = low + CR*low_range (255)

=0,033198875+0,0018062*0,17

= 0,0335059375

8. Perhitungan Simbol 239

Low = 0,0335059375 High = 0,0344090625 CR = HighLow

=0,0344090625– 0,0335059375 = 0,000903125

High_range (239) = 0,92 Low_range (239) = 0,67

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (239)

=0,0335059375+ 0,000903*0,92

= 0,0343368125

Low = low + CR*low_range (239)

=0,0335059375+ 0,000903125*0,67

= 0,03411103125

9. Perhitungan Simbol 239

Low = 0,03411103125 High = 0,0343368125 CR = HighLow

=0,0343368125–0,03411103125 = 0,00022578125

High_range (239) = 0,92 Low_range (239) = 0,67

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (239)

=0,03411103125+ 0,00022578125*0,92

= 0,03431875

Low = low + CR*low_range (239) =0,03411103125+

0,00022578125*0,67

= 0,0342623046875

10. Perhitungan Simbol 255 Low = 0,0342623046875 High = 0,03431875 CR = HighLow

=0,03431875– 0,0342623046875 = 0,0000564453125

High_range (255) = 0,67 Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (255)

=0,0342623046875+ 0,0000564453125*0,67

= 0,034300123046875

Low = low + CR*low_range (255) =0,0342623046875+ 0,0000564453125*0,17

= 0,034271900390625

11. Perhitungan Simbol 239

Low = 0,034271900390625 High = 0,034300123046875 CR = HighLow

=0,034300123046875– 0,034271900390625 = 0,00002822265625 High_range (239) = 0,92 Low_range (239) = 0,67

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (239)

=0,034271900390625+ 0,00002822265625*0,92

= 0,034297865234375

Low = low + CR*low_range (239) =0,034271900390625+ 0,00002822265625*0,67


(52)

= 0,0342908095703125 12. Perhitungan Simbol 213

Low = 0,0342908095703125 High = 0,034297865234375 CR = HighLow

=0,034297865234375– 0,0342908095703125 = 0,0000070556640625 High_range (239) = 1

Low_range (239) = 0,92

Kemudian, didapatkan nilai-nilai berikut: High = low + CR*high_range (239)

=0,0342908095703125+ 0,0000070556640625*1

= 0,034297865234375

Low = low + CR*low_range (239) =0,0342908095703125+ 0,0000070556640625*0,92 =0,03429730078125

Dalam bentuk tabel maka data hasil encoding dapat dilihat seperti tabel 3.2

Tabel 3.2 Proses Encoding untuk Gambar 3.4

No Simbol Low High CR

Awal 0,0 1,0 1,0

1 0 0,0 0,17 1,0

2 255 0,0289 0,1139 0,17

3 0 0,0289 0,04335 0,085

4 255 0,0313565 0,0385815 0,01445

5 255 0,03258475 0,03619725 0,007225

6 255 0,033198875 0,035005125 0,0036125

7 255 0,0335059375 0,0344090625 0,00180625

8 239 0,03411103125 0,0343368125 0,000903125

9 239 0,0342623046875 0,03431875 0,00022578125

10 255 0,034271900390625 0,034300123046875 0,0000564453125

11 239 0,0342908095703125 0,034297865234375 0,00002822265625

12 213 0,03429730078125 0,034297865234375 0,0000070556640625

Dari proses tersebut didapat nilai low = 0,03429730078125. Nilai inilah yang direpresentasikan untuk mewakili citra pada gambar 3.4. dalam hal ini simbol akhir sebuah pesan dapat menggunakan simbol khusus misalnya EOM (End Of Message) atau dengan menyertakan panjang pesan pada waktu encoding.


(53)

3.1.4 Dekompresi Arithmetic Coding pada Citra

Selanjutnya akan dilakukan proses Arithmetic decoding, dalam hal ini untuk data yang telah di-encode, proses decoding berikut dilakukan.

ES = 0,03429730078125

Dibandingkan nilai ini dengan range simbol berikut.

Tabel 3.3 Tabel Range Probabilitas

No Nilai Frekuensi Probabilitas Range

1 0 2 2/12=0,17 0,0≤0<0,17

2 255 6 6/12=0,5 0,17≤255<0,67

3 239 3 3/12=0,25 0,67≤239<0,92

4 213 1 1/12=0,08 0,92≤213<1,00

1. Perhitungan Simbol 0 dengan nilai ES =0,03429730078125

Low_range (0) = 0,0 High_range (0) = 0,17

CR =high_range (0)–low_range (0) = 0,17 – 0,0

= 0,17

ES = ES – low_range (0) = 0,03429730078125 - 0,0

= 0,03429730078125

ES = ES / CR

= 0,03429730078125 / 0,17

= 0,201748828125

2. Perhitungan Simbol 255 dengan nilai ES = 0,201748828125

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)–low_range (255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255)  = 0,201748828125 - 0,17

= 0,031748828125

ES = ES / CR

= 0,031748828125 / 0,5

= 0,06349765625

3. Perhitungan Simbol 0dengan nilai ES = 0,06349765625

Low_range (0) = 0,0 High_range (0) = 0,17

CR = high_range(0)–low_range (0)  = 0,17 – 0,0

= 0,17

ES = ES – low_range (0) = 0,06349765625- 0,0

= 0,06349765625

ES = ES / CR

= 0,06349765625 / 0,17


(54)

4. Perhitungan Simbol 255 dengan nilai ES = 0,373515625

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)–low_range (255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255)  = 0,373515625 - 0,17

= 0,203515625

ES = ES / CR

= 0,203515625 / 0,5

= 0,40703125

5. Perhitungan Simbol 255 dengan nilai ES = 0,40703125

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)–low_range (255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255)  = 0,40703125 - 0,17

= 0,23703125

ES = ES / CR = 0,23703125 / 0,5

= 0,4740625

6. Perhitungan Simbol 255 dengan nilai ES = 0,4740625

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)– low_range(255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255) 

= 0,4740625 - 0,17

= 0,3040625

ES = ES / CR = 0,3040625 / 0,5

= 0,608125

7. Perhitungan Simbol 255 dengan nilai ES = 0,608125

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)–low_range (255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255)  = 0,608125 - 0,17

= 0,438125

ES = ES / CR = 0,438125 / 0,5

= 0,87625

8. Perhitungan Simbol 239 dengan nilai ES = 0,87625

Low_range (239) = 0,67 High_range (239) = 0,92

CR=high_range(239)–low_range (239) = 0,92 - 0,67

= 0,25

ES = ES – low_range (239)  = 0,87625 - 0,67

= 0,20625

ES = ES / CR = 0,20625 / 0,25

= 0,825

9. Perhitungan Simbol 239 dengan nilai ES = 0,825


(55)

High_range (239) = 0,92

CR=high_range(239)–low_range (239) = 0,92 - 0,67

= 0,25

ES = ES – low_range (239)  = 0,825 - 0,67

= 0,155

ES = ES / CR = 0,155 / 0,25

= 0,62

10. Perhitungan Simbol 255 dengan nilai ES = 0,62

Low_range (255) = 0,17 High_range (255) = 0,67

CR=high_range(255)–low_range (255) = 0,67 - 0,17

= 0,5

ES = ES – low_range (255)  = 0,62 - 0,17

= 0,45

ES = ES / CR = 0,45 / 0,5

= 0,9

11. Perhitungan Simbol 239 dengan nilai ES = 0,9

Low_range (239) = 0,67 High_range (239) = 0,92

CR=high_range(239)–low_range (239) = 0,92 - 0,67

= 0,25

ES = ES – low_range (239)  = 0,9 - 0,67

= 0,23

ES = ES / CR = 0,23 / 0,25

= 0,92

12. Perhitungan Simbol 213 dengan nilai ES = 0,92

Low_range (213) = 0,92 High_range (213) = 1

CR=high_range(213)–low_range (213) = 1 - 0,92

= 0,08

ES = ES – low_range (213)  = 0,92 - 0,92

= 0,0

ES = ES / CR = 0,0 / 0,08

= 0,0

Sampai di sini perhitungan dihentikan karena diperoleh nilai ES = 0. Hasil perhitungan di atas dapat dilihat pada tabel 3.4.


(56)

Tabel 3.4 Proses Decoding untuk Gambar 3.4

No ES Simbol Low High CR

1 0,03429730078125 0 0,0 0,17 0,17

2 0,201748828125 255 0,17 0,67 0,5

3 0,06349765625 0 0,0 0,17 0,17

4 0,373515625 255 0,17 0,67 0,5

5 0,40703125 255 0,17 0,67 0,5

6 0,4740625 255 0,17 0,67 0,5

7 0,608125 255 0,17 0,67 0,5

8 0,87625 239 0,67 0,92 0,25

9 0,825 239 0,67 0,92 0,25

10 0,62 255 0,17 0,67 0,5

11 0,9 239 0,67 0,92 0,25

12 0,92 213 0,92 1,00 0,08

13 0,0 (Selesai) - - - -

Maka, diperoleh ES = 0,03429730078125 bersesuaian dengan citra pada gambar 3.4

3.2 Analisis Kinerja Algoritma Shannon-Fano

Model pertama yang muncul untuk kompresi sinyal digital adalah Shannon Fano. Ditemukan Shannon dan Fano pada tahun 1948, kemudian mengembangkan algoritma ini yang menghasilkan codeword biner untuk setiap simbol unik yang terdapat pada data file.

Teknik coding Shannon-Fano merupakan salah satu algoritma pertama yang

tujuannya adalah membuat codeword dengan redudansi minimum. Algoritma

Shannon-Fano tergantung pada probabilitas dari setiap simbol yang hadir pada suatu data. Berdasarkan probabilitas tersebut kemungkinan dibentuk daftar kode untuk setiap simbol dengan ketentuan sebagai berikut.

1. Setiap simbol berbeda memiliki kode berbeda.

2. Simbol dengan probabilitas kehadiran yang lebih rendah memiliki kode jumlah bit yang lebih panjang dan simbol dengan probabilitas yang lebih tinggi memiliki jumlah bit yang lebih pendek.

3. Meskipun memiliki panjang kode yang berbeda, simbol tetap dapat


(57)

Langkah-langkah kompresi menggunakan algoritma Shannon-Fano.

1. Buatlah daftar peluang atau frekuensi kehadiran setiap simbol dari data yang akan dikodekan.

2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara menurun (dari simbol yang frekuensi kemunculan paling banyak sampai simbol dengan frekuensi kemunculan paling sedikit).

3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat mungkin dengan jumlah total frekuensi dengan bagian yang lain (disebut bagian bawah).

4. Daftar bagian atas dinyatakan dengan digit 0 dan bagian bawah dinyatakan dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian bawah akan dimulai dengan 1.

5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan bawah. Bagilah menjadi kelompok-kelompok dan tambahkan bit-bit pada kode sampai setiap simbol mempunyai kode yang bersesuaian pada proses tersebut.

Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano. 1. Baca bit pertama dari serangkaian kode yang dihasilkan

2. Jika bit tersebut ada dalam SF Code, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.

3. Jika bit tersebut tidak ada dalam SFCode, gabungkan bit tersebut dengan bit selanjutya dalam rangkaian kode, cocokkan dengan tabel hasil pengkodean.

4. Lakukan langkah 3 sampai ada rangkaian bit yang cocok dengan SFCode, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai.

5. Baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 sampai rangkaian kode habis.


(58)

3.2.1 Proses Kompresi Shannon-Fano

   


(59)

3.2.2 Proses Dekompresi Shannon-Fano

   

Gambar 3.6 Flowchart Proses Dekompresi Algoritma Shannon-Fano

3.2.3 Kompresi Shannon-Fano pada Citra

Contoh penggunaan algoritma Shannon-Fano pada citra adalah misalkan pada citra berwarna dengan ukuran 2 x 2 piksel dapat dilihat pada gambar 3.7.


(60)

Gambar 3.7 Citra Berwarna 2 x 2 Piksel

diproses dalam bentuk matriks:

0 255 0 255 255 255 255 239 239 255 239 213

Gambar 3. 8 Matriks Citra Berwarna 2 x 2 Piksel

Matriks di atas akan mewakili sebuah citra berwarna yang berukuran 2 x 2 piksel, di mana nilai setiap RGB menyatakan tiap warna pada piksel, kemudian hitung jumlah frekuensi kemunculan pada setiap simbol warna pada citra. Setelah itu akan dilakukan pengurutan pada nilai frekuensi secara menurun (descending order). Hal ini dapat dilihat pada tabel 3.5 seperti berikut.

Tabel 3.5Frekuensi Kemunculan Simbol

Simbol Frekuensi 255 6 239 3 0 2 213 1

Selanjutnya tabel 3.5 di atas kemudian dibagi menjadi 2 didasari pada total frekuensi bagian atas sedekat mungkin dengan total frekuensi bagian bawah. Pembagian tersebut menghasilkan simbol 255 menjadi bagian atas dengan total 6. Sedangkan 239, 0, dan 213 menjadi bagian bawah dengan total 17, sehingga simbol 255 akan dimulai dengan kode 0, sedangkan 239, 0, dan 213 dimulai dengan kode 1.

Warna Hijau


(61)

Proses di atas dilakukan secara rekursif terhadap bagian atas dan bagian bawah sehingga diperoleh pembagian sebagai berikut.

Tabel 3.6 Proses Pengkodean

Simbol Frekuensi SF Code

255 6 0(Pembagian pertama)

239 3 10(Pembagian kedua)

0 2 110(Pembagian ketiga)

213 1 111

Total 12

Tabel 3.7 Kode dan Panjang Kode Shannon-Fano

Simbol Frekuensi SF Code Panjang Code

255 6 0 1 bit

239 3 10 2 bit

0 2 110 3 bit

213 1 111 3 bit

Total 12 6 bit

Selanjutnya gantikan tiap simbol pada gambar 3.8 dengan kode Shannon-Fano

direpresentasikan dalam bentuk matriks sebagai berikut:

110 0 110 0 0 0 0 10 10 0 10 111

Gambar 3.9 Matriks Citra Berwarna 2 x 2 Piksel setelah di Subtitusi ke SF Code

3.2.4 Dekompresi Shannon-Fano pada Citra

Untuk mengembalikan citra terkompresi menjadi data citra aslinya, maka diperlukan proses dekompresi. Selanjutnya untuk melakukan dekompresi yaitu dengan membaca bit pertama di gambar 3.10 yaitu 1 kemudian akan dilakukan penelusuran pada SF Code, jika 1 tidak mewakili simbol warna maka akan baca bit berikutnya sehingga bit

0

G


(1)

Private Sub sortsample() Dim awal As Integer = 0 Dim akhir As Integer = 255 Dim nilai As Integer = 0 Dim frek As Long = 0 Dim pos As Integer = 0 Dim temp As color

Do Until awal = akhir pos = awal

nilai = warnaawal(awal).nilai frek = warnaawal(awal).frek

For i As Integer = awal To akhir If warnaawal(i).frek > frek Then pos = i

nilai = warnaawal(pos).nilai frek = warnaawal(pos).frek End If

Next

temp.nilai = nilai temp.frek = frek

warnaawal(pos).nilai = warnaawal(awal).nilai warnaawal(pos).frek = warnaawal(awal).frek warnaawal(awal).nilai = temp.nilai

warnaawal(awal).frek = temp.frek awal += 1

Loop End Sub #End Region

#Region "Langkah 4"

Private Sub HitungJlhsmpl() For i As Integer = 0 To 255

If warnaawal(i).frek = 0 Then JlhSmpl = i - 1

Exit For End If

Next

lblSampel.Text = JlhSmpl + 1 End Sub

#End Region

#Region "Langkah 5"

Private Sub registersf() ReDim Preserve sf(0)

sf(0).sampel = JlhSmpl + 1 sf(0).start = 0


(2)

End Sub #End Region

#Region "Langkah 6"

Private Sub nilaicabang(ByVal start As Integer, ByVal jumlah As Integer, ByVal nilai As Byte)

For i As Integer = start To start + jumlah - 1 warnaawal(i).cabang &= nilai

Next End Sub

Private Function hitungselisih(ByVal jumlah As Integer, ByVal start As Integer) As Integer

hitungselisih = 0 Dim nilaiatas As Long Dim nilaibawah As Long

Dim akhir As Integer = start + jumlah - 1 ReDim selisih(jumlah - 2)

For i As Integer = 0 To jumlah - 2 nilaiatas = 0

nilaibawah = 0

For j As Integer = start To start + i nilaiatas += warnaawal(j).frek

Next

For j As Integer = start + i + 1 To akhir nilaibawah += warnaawal(j).frek

Next

selisih(i) = Math.Abs(nilaiatas - nilaibawah) + start

Next

For i As Integer = selisih.GetUpperBound(0) To 1 Step -1

If selisih(i - 1) = selisih(i) Then hitungselisih = i

ElseIf selisih(i - 1) > selisih(i) Then hitungselisih = i

Exit For End If

Next

Return hitungselisih + start End Function

Private Sub ceksf()

Dim pos As Integer = 0


(3)

Dim maxnow As Integer = 0

Do Until sf.GetUpperBound(0) = JlhSmpl 'jika jumlah sample sama dengan jumlah kelompok sf berarti sudah selesai

If sf(pos).sampel > 1 Then Call pecahsf(pos)

pos = 0

ulang = True Else

ulang = False End If

If Not ulang Then pos += 1

End If

If pos > sf.GetUpperBound(0) Then Exit Do

End If

If pos > maxnow Then prog.Value = pos maxnow = pos End If

Loop

prog.Value = maxnow lblP.Text = maxnow End Sub

#End Region

#Region "Langkah 8"

Public Function bin_to_hex(ByVal bin As String) As String

Dim dec As Integer = 0 Dim str As String = ""

Dim strb, strd, strh As String Dim length As Integer = Len(bin) Dim temp As Integer = Nothing Dim bins As String

Dim temps As String = "" Dim awal As Integer = 0 Dim x As Integer = Nothing Dim ch As Integer = length / 4

Dim sisa As Integer = length - (ch * 4) For klmpk As Integer = 0 To ch - 1 dec = 0

awal = (klmpk * 4) + 1

temps = New String(Mid(bin, awal, 4)) bins = ""

For x = 1 To 4


(4)

If temp <> "0" Then

dec += (2 ^ (4 - x)) End If

bins &= temp Next

imgHexa &= Hex(dec) Next

dec = 0 bins = ""

For x = 1 To sisa

awal = (ch * 4) + 1

temps = New String(Mid(String.Concat(bin, "0000"), awal, 4))

temp = Val(Mid(temps, x, 1)) If temp <> "0" Then

dec += (2 ^ (4 - x)) End If

bins &= temp Next

imgHexa &= Hex(dec) Return str End Function

#End Region

Private Sub saveFile()

Dim sw As New StreamWriter(lblFile.Text, False) sw.WriteLine(imgHexa)

sw.WriteLine(w) sw.WriteLine(h)

For i As Integer = 0 To JlhSmpl

sw.WriteLine(warnaawal(i).nilai) sw.WriteLine(warnaawal(i).cabang) Next

sw.Close()

MessageBox.Show("Data Berhasil Disimpan") End Sub

End Class

Form Dekompresi Shannon-Fano Imports System.IO

Public Class frmDkompresiSF Structure warna_


(5)

Dim G As Integer Dim B As Integer End Structure

Structure tabelSF

Dim warna As Integer Dim cabang As String End Structure

Private w, h As Integer Private imgHexa As String Private imgBiner As String Private sfFile As String Private img(1, 1) As warna_ Private sf() As tabelSF

Private jlhSmpl As Integer = 0

Private Function binertosf(ByVal bin As String, ByRef status As Boolean, ByRef status2 As Boolean) As Integer Dim hasil As Integer

Dim ketemu As Boolean = False

For i As Integer = 0 To jlhSmpl - 1 If bin = sf(i).cabang Then

hasil = sf(i).warna status = True

Return hasil End If

Next

status2 = True Return Nothing End Function

Private Sub readData()

Dim sr As New StreamReader(sfFile) imgHexa = sr.ReadLine

w = sr.ReadLine h = sr.ReadLine ReDim img(w, h)

While Not sr.EndOfStream jlhSmpl += 1

ReDim Preserve sf(jlhSmpl - 1)

sf(jlhSmpl - 1).warna = sr.ReadLine sf(jlhSmpl - 1).cabang = sr.ReadLine rtbTabel.Text &= sf(jlhSmpl - 1).warna & vbCrLf & sf(jlhSmpl - 1).cabang & vbCrLf

End While

rtbHexa.Text = imgHexa End Sub


(6)

Private Sub Initialize() sfFile = lblFile.Text OFD.Multiselect = False

OFD.Filter = "Shannon-Fano-Files|*.sf" OFD.FileName = Nothing

SFD.Filter = "bitmap file|*.bmp" btnDkprs.Enabled = True

End Sub

Private Sub frmDkompresi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Call Initialize() End Sub

Private Sub btnOpen_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click

If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

lblFile.Text = OFD.FileName sfFile = lblFile.Text

Call readData() End If

End Sub

Private Sub saveFile()

MessageBox.Show("Data Berhasil Disimpan") End Sub

Private Sub btnFile_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles btnFile.Click

If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then

lblFile.Text = SFD.FileName btnDkprs.Enabled = True End If

End Sub End Class