Studi Perbandingan Kinerja Algoritma Kompresi Shannon-Fano Dan Huffman Pada Citra Digital .

(1)

STUDI PERBANDINGAN KINERJA ALGORITMA KOMPRESI

SHANNON-FANO DAN HUFFMAN PADA CITRA DIGITAL

SKRIPSI

ADE ADRIANI

051401086

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009


(2)

STUDI PERBANDINGAN KINERJA ALGORITMA KOMPRESI SHANNON-FANO DAN HUFFMAN PADA CITRA DIGITAL

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

ADE ADRIANI 051401086

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2009


(3)

PERSETUJUAN

Judul : STUDI PERBANDINGAN KINERJA ALGORITMA

KOMPRESI SHANNON-FANO DAN HUFFMAN PADA CITRA DIGITAL

Kategori : SKRIPSI

Nama : ADE ADRIANI

Nomor Induk Mahasiswa : 051401086

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, 28 September 2009 Komisi Pembimbing :

Pembimbing 2, Pembimbing 1,

Drs. James Piter Marbun, M.Kom Syahriol Sitorus, S.Si, MIT

NIP. 195806111986031002 NIP. 197103101997031004

Diketahui/ Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Prof. Dr. Muhammad Zarlis NIP 195707011986011003


(4)

PERNYATAAN

STUDI PERBANDINGAN KINERJA ALGORITMA KOMPRESI SHANNON-FANO DAN HUFFMAN PADA CITRA DIGITAL

SKRIPSI

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

Medan, 28 September 2009

Ade Adriani 051401086


(5)

PENGHARGAAN

Alhamdulillah, segala puji syukur penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat meyelesaikan Tugas Akhir ini. Dalam pengerjaan Tugas Akhir ini penulis banyak sekali mendapatkan dukungan, masukan, dan nasehat dari berbagai pihak.

Dalam kesempatan ini penulis mengucapkan terima kasih kepada: Bapak Syahriol Sitorus S.Si. MIT, selaku Dosen Pembimbing I, yang telah bersedia meluangkan waktu dan pikirannya dalam membimbing, memotivasi dan memberikan ilmunya kepada penulis dalam menyelesaikan Tugas Akhir ini. Bapak Drs. James Piter Marbun, M.Kom, selaku Dosen Pembimbing II, yang telah bersedia meluangkan waktu dan pikirannya dalam membimbing, memotivasi dan membantu penulis dalam menyempurnakan Tugas Akhir ini. Bapak Prof. Dr. Muhammad Zarlis selaku ketua jurusan Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara. Seluruh Dosen Departemen Ilmu Komputer, Program Studi S-1 Ilmu Komputer USU atas ilmu yang telah diberikan. Seluruh pegawai di Program Studi Ilmu Komputer, khususnya kak Ai, kak Eka, kak Dinda, Bang Manaf dan Pak Sugi yang telah membantu kelancaran proses administrasi. Rekan-rekan mahasiswa stambuk 2005 Program Studi Ilmu Komput er USU, Nita, Novi, Pipit, Vera, Mika, Dwi dan rekan-rekan lain yang tidak dapat disebutkan satu persatu. Buat sahabat-sahabat terbaik yang terus memberikan do’a dan dukungan yang tiada henti sehingga penulis tetap semangat dan tidak menyerah untuk menyelesaikan kuliah, Wina, Rini, Rudi, Mul, Aulia, Dinda, Rio, Iqbal, Azmi, dan Kahar, terima kasih untuk perjalanan hidup yang indah dan luar biasa, tanpa kalian hidup ini tak sempurna. Segala hormat dan terima kasih secara khusus penulis ucapkan kepada ayahanda Faisal dan mama Khairani atas motivasi, kasih sayang, dan dukungan baik secara materi maupun do’a yang tak pernah putus yang diberikan kepada penulis selama menjalani kuliah, tak lupa kepada kakak dan adik ku tersayang, kak Sari dan Adi. Sekali lagi saya ucapkan terima kasih atas segalanya. Semoga segala kebaikan diberikan balasan yang setimpal oleh Allah SWT.


(6)

ABSTRAK

Dalam dunia telekomunikasi, bandwidth dan kapasitas merupakan hal yang sangat penting saat sejumlah data ditransmisikan atau disimpan. Agar efisiensi bandwidth dan kapasitas semakin tinggi maka dikembangkan teknik kompresi citra digital, yaitu meminimalkan jumlah bit citra dengan merepresentasikan data citra yang mengandung informasi sesuai dengan data sebelum terkompres. Studi perbandingan kinerja algoritma kompresi ini bertujuan untuk mengetahui performansi masing-masing algoritma terhadap citra digital. Untuk mengetahui performansi hasil proses kompresi dilakukan melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi dan nilai PSNR. Berdasarkan seluruh hasil pengujian, sistem kompresi menggunakan Huffman coding memiliki performansi yang baik berdasarkan rasio kompresi serta ukuran file hasil kompresi, sedangkan dari segi kecepatan proses kompresi dan dekompresi algoritma Shannon-Fano lebih baik daripada algoritma Huffman.


(7)

STUDY OF COMPARISON OF COMPRESSION ALGORITHM SHANNON-FANNO AND HUFFMAN PERFORMANCE

FOR DIGITAL IMAGE

ABSTRACT

In telecommuniaction area, bandwidth and capacity are the most important thing when amount of data transmitted or stored. If the efficiency of bandwidth and capacity getting higher so digital image compression developed. It minimize the number of image bit by representating image data which contain of information in accordance with the data before it compressed. The objective of the comparison of compression algorithm is to know the performance of each algorithm toward digital image. To know the result of compression process, it is done through the compression ratio calculation, the size of compression result, the speed of compression process and decompression and PSNR value. Based on all the testing result, the compression system using Huffman coding has a better according to the result of compression and the size of compression result file, while from the speed side, the compression and decompression process are Shannon-Fano algorithm is better from Huffman’s algorithm.


(8)

DAFTAR ISI

LEMBAR PERSETUJUAN ... ..i

LEMBAR PERNYATAAN ... .ii

PENGHARGAAN ... iii

ABSTRAK ... iv

ABSTRACT ... v

DAFTAR ISI ... vi

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... .xi

DAFTAR ISTILAH ... xii

BAB 1 PENDAHULUAN 1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 3

1.3 Batasan Masalah ... 3

1.4 Tujuan Penelitian ... 3

1.5 Manfaat Penelitian ... 4

1.6 Metode Penelitian... 4

1.7 Tinjauan Pustaka ... 5

1.8 Skema Penelitian ... 6

1.9 Sistematika Penulisan ... 9

BAB 2 LANDASAN TEORI 2.1 Pengolahan Citra Digital ... 11

2.2 Format Citra Bitmap (BMP) ... 13

2.3 Model Citra RGB ... 14

2.4 Pohon ... 15

2.5 Pohon Biner (Binary Tree) ... 15

2.6 Teori Informasi dan Entropi ... 16

2.7 Kompresi Citra ... 18

2.8 Algoritma Huffman ... 23


(9)

2.10 Kompleksitas Algoritma ... 32

2.10.1 Kompleksitas Waktu ... 32

2.10.2 Kompleksitas Waktu Asimptotik ... 33

BAB 3 ANALISIS KOMPLEKSITAS ALGORITMA 3.1 Kompleksitas Waktu Huffman ... 42

3.2 Kompleksitas Waktu Shannon-Fano ... 50

BAB 4 IMPLEMENTASI SISTEM 4.1 Flowchart Proses Kompresi Citra ... 55

4.1.1 Flowchart Algoritma Kompresi Huffman ... 56

4.1.2 Flowchart Algoritma Dekompresi Huffman... 57

4.1.3 Flowchart Algoritma Kompresi Shannon-Fano ... 59

4.1.4 Flowchart Algoritma Dekompresi Shannon-Fano ... 60

4.2 Perhitungan Performansi ... 61

4.2.1 Rasio Kompresi ... 62

4.2.2 Ukuran File Citra Kompresi ... 62

4.2.3 Kecepatan Kompresi dan Dekompresi Citra ... 62

4.2.4 PSNR (Peak Signal to Noise Ratio) ... 62

4.3 Desain Antarmuka Aplikasi Kompresi... 63

4.4 Alur Kerja Aplikasi Kompresi Citra ... 66

BAB 5 PENGUJIAN DAN ANALISIS SISTEM 5.1 Pengujian Sistem ... 71

5.1.1 Skenario Pengujian ... 71

5.1.2 Analisis Data Hasil Pengujian Sistem ... 74

5.1.2.1 Analisis Rasio Kompresi yang Dihasilkan Oleh Kedua Algoritma...74

5.1.2.2 Analisis Ukuran File Citra Hasil Kompresi...78

5.1.2.3 Analisis Kecepatan Proses Kompresi dan Dekompresi..79

5.1.2.4 Analisis Kualitas Citra Hasil Kompresi Berdasarkan Nilai PSNR Menggunakan Algoritma Shannon-Fano dan Huffman...86


(10)

5.1.2.5Analisis Panjang Rata-Rata Kode yang Digunakan setelah Dikompresi... 88

5.1.2.6 Analisis Nilai Entropi Citra... 89

BAB 6 KESIMPULAN DAN SARAN

6.1 Kesimpulan ... 92 6.2 Saran ... 93 DAFTAR PUSTAKA ... ...94


(11)

DAFTAR GAMBAR

Gambar 1.1 Skema penelitian ... 6

Gambar 1.2 Diagram Algoritma Shannon-Fano ... 7

Gambar 1.3 Diagram Algoritma Huffman ... 8

Gambar 2.1 Matriks citra digital N x M ... 12

Gambar 2.2 Ilustrasi sistem koordinat piksel ... 12

Gambar 2.3 Pohon biner ... 16

Gambar 2.4 Entropy ... 17

Gambar 2.5 Metode kompresi berdasarkan hasilnya... 19

Gambar 2.6 Ilustrasi tipe per piksel ... 20

Gambar 2.7 Metode kompresi berdasarkan hasilnya...23

Gambar 2.8 Potongan Data Citra Digital... 25

Gambar 2.9 Data biner hasil substitusi kode Huffman ... 28

Gambar 2.10 Data biner hasil substitusi kode Shannon-Fano...31

Gambar 3.1 Potongan Data Citra Digital ... 42

Gambar 3.2 Data biner hasil substitusi kode Huffman...46

Gambar 3.3 Heap Graph O(n log n)...50

Gambar 3.4 Data biner hasil substitusi kode Shannon-Fano ... 53

Gambar 3.5 Heap Graph O(n log n) ... 54

Gambar 4.1 Flowchart Sistem Kompresi-Dekompresi Citra...56

Gambar 4.2 Flowchart Algoritma Kompresi Huffman... 56

Gambar 4.3 Flowchart Algoritma Dekompresi Huffman... 58

Gambar 4.4 Flowchart Algoritma Kompresi Shannon-Fano...59

Gambar 4.5 Flowchart Algoritma Dekompresi Shannon-Fano…... 61

Gambar 4.6 Tampilan antarmuka aplikasi kompresi citra... 63

Gambar 4.7 Tampilan open file citra... 66

Gambar 4.8 Tampilan proses kompresi citra... 67

Gambar 4.9 Tampilan pemilihan file citra yang akan di dekompresi... 68

Gambar 4.10 Tampilan open citra terkompresi...68

Gambar 4.11 Tampilan citra hasil rekonstruksi... 69


(12)

Gambar 5.1 Grafik perbandingan rasio kompresi Huffman terhadap tipe per plane ... 75 Gambar 5.2 Grafik perbandingan rasio kompresi Shannon-Fano tipe per

plane...76 Gambar 5.3 Perbandingan kecepatan kompresi algoritma Huffman dan

Shannon-Fano tipe per plane ... 81 Gambar 5.4 Perbandingan kecepatan kompresi algoritma Huffman dan

Shannon-Fano tipe per piksel ... 82 Gambar 5.5 Perbandingan kecepatan dekompresi algoritma Huffman dan

Shannon-Fano tipe per plane ... 84 Gambar 5.6 Perbandingan kecepatan dekompresi algoritma Huffman dan


(13)

DAFTAR TABEL

Tabel 2.1 Contoh warna 24-bit ... 14

Tabel 2.2 Tabel distribusi frekuensi Huffman ... 25

Tabel 2.3 Codebook Huffman ... 28

Tabel 2.4 Tabel distribusi frekuensi Shannon-Fano ... 29

Tabel 2.5 Codebook Shannon-Fano ... 31

Tabel 2.6 Perbandingan pertumbuhan T(n) dengan n2 Tabel 2.7 Pengelompokan Algoritma Berdasarkan Notasi O-Besar ... 39

... 33

Tabel 2.8 Nilai masing-masing fungsi untuk setiap nilai n ... 37

Tabel 3.1 Tabel distribusi frekuensi Huffman ... 43

Tabel 3.2 Codebook Huffman ... 46

Tabel 3.3 Tabel distribusi frekuensi Shannon-Fano ... 51

Tabel 3.4 Codebook Shannon-Fano ... 52

Tabel 5.1 Citra uji ... 72

Tabel 5.2 Rasio Kompresi algoritma Shannon-Fano dan Huffman tipe per plane...75

Tabel 5.3 Rasio Kompresi algoritma Shannon-Fano dan Huffman tipe per piksel... 77

Tabel 5.4 Kecepatan proses kompresi algoritma Shannon-fano dan Huffman tipe per plane...80

Tabel 5.5 Kecepatan proses kompresi algoritma Shannon-fano dan Huffman tipe per piksel...82

Tabel 5.6 Kecepatan proses dekompresi algoritma Shannon-fano dan Huffman tipe per plane... 83

Tabel 5.7 Kecepatan proses dekompresi algoritma Shannon-fano dan Huffman tipe per piksel...85

Tabel 5.8 Nilai PSNR citra algoritma Shannon-Fano dan Huffman dengan tipe kompresi per plane dan per piksel... ...86

Tabel 5.9 Panjang rata-rata kode kompresi Shannon-fano dan Huffman tipe per plane... 88

Tabel 5.10 Panjang rata-rata kode kompresi Shannon-fano dan Huffman tipe per piksel...89

Tabel 5.11 Nilai entropi citra, tipe kompresi per plane... 90


(14)

DAFTAR ISTILAH

Bitmap Reperesentasi dari citra grafis yang terdiri dari susunan titik yang tersimpan di memori komputer.

Codebook Kumpulan simbol dan kode biner yang dihasilkan setelah pembuatan pohon Huffman atau Shannon-Fano.

Citra terkompresi Citra yang diperoleh dari hasil kompresi. Citra rekonstruksi Citra yang diperoleh dari proses dekompresi.

Decibel Satuan logaritmik yang digunakan untuk menggambarkan perbandingan antara matriks asli dengan matriks rekonstruksi. Decoder Suatu proses yang merupakan kebalikan dari proses encoder

yang melibatkan citra hasil kompresi sebagai masukan dan citra hasil dekompresi sebagai keluaran atau dengan kata lain proses dekompresi pada bagian penerima.

Encoder Proses yang melibatkan citra asli sebagai masukan dan citra hasil kompresi sebagai keluaran atau dengan kata lain proses kompresi pada bagian pengirim.

MSE Sigma dari jumlah error antara citra hasil kompresi dan citra asli.

Pixel Elemen citra digital yang menunjukkan intensitas citra di suatu titik.

PSNR Peak Signal to Noise Ratio yang merupakan nilai logaritma basis 10 dari hasil pembagian nilai piksel tertinggi terhadap MSE dalam satuan dB (decibel).

Rasio kompresi Suatu nilai yang menyatakan suatu nilai perbandingan ukuran file citra asli dibandingkan dengan file citra hasil kompresi. Resolusi Kerapatan titik-titik pada bitmap yang menunjukkan seberapa

tajam gambar ditampilkan, pemetaan tersebut akan menghasilkan matriks dua dimensi.


(15)

ABSTRAK

Dalam dunia telekomunikasi, bandwidth dan kapasitas merupakan hal yang sangat penting saat sejumlah data ditransmisikan atau disimpan. Agar efisiensi bandwidth dan kapasitas semakin tinggi maka dikembangkan teknik kompresi citra digital, yaitu meminimalkan jumlah bit citra dengan merepresentasikan data citra yang mengandung informasi sesuai dengan data sebelum terkompres. Studi perbandingan kinerja algoritma kompresi ini bertujuan untuk mengetahui performansi masing-masing algoritma terhadap citra digital. Untuk mengetahui performansi hasil proses kompresi dilakukan melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi dan nilai PSNR. Berdasarkan seluruh hasil pengujian, sistem kompresi menggunakan Huffman coding memiliki performansi yang baik berdasarkan rasio kompresi serta ukuran file hasil kompresi, sedangkan dari segi kecepatan proses kompresi dan dekompresi algoritma Shannon-Fano lebih baik daripada algoritma Huffman.


(16)

STUDY OF COMPARISON OF COMPRESSION ALGORITHM SHANNON-FANNO AND HUFFMAN PERFORMANCE

FOR DIGITAL IMAGE

ABSTRACT

In telecommuniaction area, bandwidth and capacity are the most important thing when amount of data transmitted or stored. If the efficiency of bandwidth and capacity getting higher so digital image compression developed. It minimize the number of image bit by representating image data which contain of information in accordance with the data before it compressed. The objective of the comparison of compression algorithm is to know the performance of each algorithm toward digital image. To know the result of compression process, it is done through the compression ratio calculation, the size of compression result, the speed of compression process and decompression and PSNR value. Based on all the testing result, the compression system using Huffman coding has a better according to the result of compression and the size of compression result file, while from the speed side, the compression and decompression process are Shannon-Fano algorithm is better from Huffman’s algorithm.


(17)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Peningkatan teknologi komputer memberikan banyak manfaat bagi manusia di berbagai aspek kehidupan, salah satu manfaatnya yaitu untuk menyimpan data, baik data berupa teks ataupun data digital lain seperti gambar, suara dan video. Kecepatan pengiriman informasi secara real-time akan menjadi bagian utama dalam proses pertukaran informasi di masa yang akan datang. Hingga saat ini pengiriman informasi secara real-time masih mengalami kendala, diantaranya adalah besarnya jumlah data yang harus dikirim melampaui kecepatan transmisi yang dimiliki oleh perangkat keras, sehingga masih terdapat delay time yang relatif besar (Madenda et al, 2004: 1).

Pada umumnya, representasi citra digital membutuhkan kapasitas ruang penyimpanan yang besar. Citra RGB merupakan citra true color yang mendefinisikan warna merah, hijau dan biru untuk setiap pikselnya, walaupun belum ada standar yang ditetapkan secara universal untuk citra RGB, tetapi TV dan industri video memiliki versi standar warna RGB yang mengikuti rekomendasi ITU-R BT.709 untuk High Definition TV (HDTV), monitor juga dibangun dengan mengikuti rekomendasi tersebut. Dalam model RGB, warna pada setiap piksel ditentukan dari kombinasi warna primer merah, hijau dan biru. Format file citra menyimpan citra RGB menggunakan 1 byte (8 bit) untuk menampilkan warna primer, yang memiliki rentang [0, 255] atau [1, 256], jadi warna RGB memiliki 3 byte (24 bit) untuk tiap-tiap piksel, dengan demikian terdapat 2563 = 16.777.216 warna berbeda yang bisa direpresentasikan pada citra RGB. Semakin besar ukuran citra RGB maka akan semakin besar kapasitas yang dibutuhkan untuk menyimpan citra tersebut, dan semakin meningkat biaya dan waktu yang dibutuhkan untuk proses pengiriman citra pada saluran komunikasi (Mengyi Pu, 2006: 217).


(18)

Salah satu solusi untuk mengatasi masalah di atas adalah dengan melakukan kompresi citra. Kompresi citra terdiri dari dua proses utama yaitu kompresi dan dekompresi citra. Jika file citra dikompresi, maka file tersebut harus dapat dibaca kembali setelah file tersebut dikompresi. Ide kompresi citra adalah apabila frekuensi kemunculan warna pada tiap piksel diketahui, terdapat suatu cara untuk mengodekan warna tersebut sehingga dibutuhkan ruang yang lebih kecil untuk menyimpan citra. Metode kompresi yang diharapkan dari kompresi citra adalah proses kompresi dan dekompresinya cepat, meminimalkan pemakaian memori, kualitas citra bagus dan proses transfer yang mudah (Hestiningsih, 2008: 33).

Metode yang pertama muncul untuk proses kompresi diperkenalkan oleh Shannon-Fano, yang dikenal dengan Shannon-Fano coding. Shannon dan Fano (1948) mengembangkan algoritma yang didasarkan pada variable-length code yang berarti beberapa karakter pada data yang akan dikodekan direpresentasikan dengan kode yang lebih pendek dari karakter yang ada pada data. Jika frekuensi kemunculan karakter semakin tinggi, maka kode semakin pendek, sebaliknya jika frekuensi kemunculan karakter rendah, maka kode semakin panjang, dengan demikian kode yang dihasilkan tidak sama panjang, sehingga kode tersebut bersifat unik. Pada prinsipnya algoritma ini menggunakan pendekatan top-down dalam penyusunan binary tree. Pada tahun 1952 David Huffman memperkenalkan algoritma kompresi yang dinamakan Huffman coding. Metode ini memakai hampir semua karakteristik dari Shannon-Fano coding. Pada prinsipnya Huffman coding menggunakan pendekatan buttom-up dalam penyusunan binary tree. Thomas H. Cormen et al (dalam Hasibuan, 2008: 5).

Saat ini terdapat banyak algoritma kompresi citra, antara lain Dynamic Markov Compression (DMC), Run Length Encoding (RLE), Lempel Ziv Welch (LZW), Arithmetic coding dan lain-lain. Menurut Linawati et al (2004: 1) “Algoritma Huffman menghasilkan rasio kompresi yang rendah dibandingkan dengan algoritma DMC dan LZW dan kecepatan kompresinya berada diantara DMC dan LZW”. Dalam Tugas Akhir ini digunakan algoritma Shannon-Fano dan Huffman, karena kedua algoritma ini memiliki beberapa kemiripan karakteristik dan termasuk dalam metode kompresi yang sejenis yaitu metode lossless.


(19)

1.2Rumusan Masalah

Permasalahan yang akan diteliti dan diuraikan dalam Tugas Akhir ini adalah:

1. Menentukan rasio kompresi yang dihasilkan oleh algoritma Shannon-Fano dan Huffman.

2. Apakah algoritma Shannon-Fano dan Huffman dapat merekonstruksikan kembali (dekompresi) data citra sesuai dengan data aslinya.

3. Algoritma mana yang lebih baik digunakan untuk kompresi citra ditinjau dari rasio kompresi yang dihasilkan, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi, dan kualitas citra hasil dekompresi (PSNR).

1.3Batasan Masalah

Ruang lingkup penelitian ini dibatasi pada:

1.File citra yang dikompresi merupakan file citra warna RGB format BMP ukuran 256 x 256 piksel.

2.Studi perbandingan ini akan ditinjau dari rasio kompresi yang dihasilkan kedua algoritma.

3.Studi perbandingan ini akan ditinjau dari ukuran file citra dan kebutuhan memori citra terkompresi yang dihasilkan.

4.Studi perbandingan ini akan ditinjau dari kecepatan proses kompresi dan dekompresi dari masing-masing algoritma yang digunakan.

5.Studi perbandingan ini akan mengukur kualitas citra hasil dekompresi dengan menggunakan metode PSNR (Peak Signal to Noise Ratio).

6.Menggunakan aplikasi kompresi Shannon-Fano dan Huffman yang telah ada untuk proses analisis dan perbandingan kinerja algoritma kompresi.

1.4Tujuan Penelitian

Tujuan dari penulisan Tugas Akhir ini adalah melakukan analisis statistik untuk mengukur kinerja masing-masing algoritma ditinjau dari kecepatan proses kompresi dan dekompresinya, memori yang dibutuhkan (rasio/ ukuran file hasil kompresi terhadap file asli) dan kualitas citra hasil kompresi yang dihasilkan, sehingga dapat


(20)

diambil kesimpulan algoritma mana yang tepat digunakan dalam proses kompresi citra digital.

1.5Manfaat Penelitian

Manfaat penelitian ini adalah memutuskan algoritma yang tepat dalam proses kompresi citra digital sehingga dihasilkan citra mampat yang dapat meminimalkan pemakaian memori (storage device) serta dapat meminimalkan waktu pengiriman data pada saluran komunikasi.

1.6Metode Penelitian

Tahapan yang diambil dalam penelitian ini yaitu: 1. Studi literatur

Penulisan ini dimulai dengan studi kepustakaan yaitu mengumpulkan bahan-bahan referensi baik dari buku, artikel, paper, jurnal, makalah, maupun situs internet mengenai proses kompresi data digital terutama kompresi citra, algoritma Shannon-Fano dan Huffman serta beberapa referensi lainnya untuk menunjang pencapaian tujuan Tugas Akhir.

2. Analisis algoritma

Pada tahap ini akan dilakukan proses analisis algoritma kompresi Huffman dan Shannon-Fano meliputi karakteristik masing-masing algoritma.

3. Implementasi sistem

Sistem diimplementasikan dalam bentuk perangkat lunak yang siap pakai menggunakan bahasa pemrograman Borland Delphi 7.0.

4. Pengujian dan analisis sistem

Pada tahap ini akan dilakukan analisis terhadap fokus permasalahan penelitian, yaitu apakah proses kompresi berhasil atau tidak serta perbaikan bila terdapat kesalahan.

5. Dokumentasi sistem


(21)

1.7Tinjauan Pustaka

Rinaldi Munir dalam buku yang berjudul Pengolahan Citra Digital dengan Pendekatan Algoritmik, memberikan penjelasan mengenai klasifikasi dan metode kompresi. Kompresi bertujuan untuk meminimalkan kebutuhan memori. Prinsip umum yang digunakan pada proses kompresi, misalnya kompresi citra adalah mengurangi duplikasi data di dalam citra digital sehingga memori yang dibutuhkan untuk merepresentasikan citra menjadi lebih sedikit daripada representasi citra semula.

Ida Mengyi Pu dalam bukunya yang berjudul Fundamental Data Compression, menjelaskan tentang kompresi data. Buku ini mengedepankan materi yang dapat dipelajari dengan mudah, dengan topik-topik yang sangat berguna dalam teknik kompresi teks, suara, gambar, video, dan standar internasional. Buku ini juga dilengkapi dengan berbagai contoh dan ilustrasi yang dapat meningkatkan proses belajar.

Sarifuddin Madenda, Hayet L. dan I. Bayu dalam makalahnya yang berjudul

Kompresi Citra Berwarna Menggunakan Metode Pohon Biner Huffman menjelaskan tentang algoritma kompresi citra dengan menggunakan metode pohon biner Huffman. Metode ini biasanya digunakan untuk mengkompres file teks dikembangkan menjadi algoritma untuk mengkompres citra berwarna. Hasil yang diperoleh menunjukan bahwa algoritma ini memiliki nilai rasio kompresi di atas satu jika jumlah warna yang terdapat dalam citra tidak lebih dari 100 warna. Sedang kualitas citra hasil dekompresinya memiliki kualitas yang sama dengan citra aslinya.

David Salomon dalam bukunya yang berjudul Variable-Length Codes for Data Compression menjelaskan tentang penggunaan variable-length code dalam kompresi data digital. Buku ini memberikan pemahaman kepada pembaca yang memiliki pengetahuan dasar tentang kompresi data, dan penggunaan kode spesifik yang diimplementasikan dengan berbagai macam algoritma, salah satunya yaitu Algoritma Huffman.


(22)

1.8Skema Penelitian

Skema/ alur proses kerja dari studi perbandingan kinerja kedua algoritma kompresi secara umum adalah sebagai berikut:

Gambar 1.1 Skema Penelitian File citra

Algoritma Kompresi

Shannon-Fano Huffman

Pengurutan frekuensi kemunculan simbol secara

menurun (top-down)

Pengurutan frekuensi kemunculan simbol secara

menaik (buttom-up)

Pembentukan pohon biner dengan penggabungan frekuensi kemunculan simbol terkecil

Pembentukan Kode Shannon-Fano

Pembentukan kode Huffman

Kompresi dan Dekompresi citra dengan kedua algoritma

File hasil kompresi dan dekompresi beserta informasinya

Analisis dan bandingkan informasi hasil kompresi dan dekompresi Pembentukan pohon biner dengan

pembagian frekuensi kemunculan simbol secara rekursif


(23)

Hitung frekuensi kemunculan simbol pada tiap-tiap piksel citra

Start

Input file citra

Pembentukan pohon Shannon-Fano dengan membagi dua dengan frekuensi mendekati/sama

secara rekursif

Pembentukan kode Shannon-Fano, sisi pohon biner kiri dilabeli 0 dan sisi kanan =1

Kode Shannon-Fano  output

Stop

Urutkan warna secara menurun (descending order)

1.8.1 Diagram Algoritma Shannon-Fano

Alur kerja pada algoritma Shannon-Fano secara umum dapat dilihat pada Gambar 1.2 di bawah ini.


(24)

Hitung frekuensi kemunculan simbol pada tiap-tiap piksel citra

Start

Input file citra

Pembentukan pohon Huffman dengan menggabung dua frekuensi terkecil, hingga

tersisa 1 pohon biner

Pembentukan kode Huffman, sisi pohon biner kiri dilabeli 0 dan sisi kanan =1

Kode Huffman  output

Stop

Urutkan simbol secara menaik (ascending order)

1.8.2 Diagram Algoritma Huffman

Alur kerja pada algoritma Huffman secara umum dapat dilihat pada Gambar 1.3 di bawah ini.


(25)

1.9Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut:

BAB 1: PENDAHULUAN

Bab ini akan menjelaskan mengenai latar belakang pemilihan judul skripsi “Studi Perbandingan Kinerja Algoritma Kompresi Shannon-Fano dan Huffman pada Citra Digital”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, tinjauan pustaka, sistematika penulisan dan skema penelitian.

BAB 2: LANDASAN TEORI

Bab ini akan membahas teori-teori yang berkaitan dengan kompresi data dalam hal ini citra digital serta beberapa prinsip yang melandasi pembuatan Tugas Akhir ini.

BAB 3: ANALISIS KOMPLEKSITAS ALGORITMA

Bab ini berisi tentang uraian kompleksitas algoritma Huffman dan Shannon-Fano. Nilai kompleksitas dinyatakan dengan notasi Big-O notation.

BAB 4: IMPLEMENTASI SISTEM

Bab ini berisikan penjelasan tentang aplikasi yang digunakan untuk menguji performansi algoritma Shannon-Fano dan Huffman dalam proses kompresi file citra.

BAB 5: PENGUJIAN DAN ANALISIS SISTEM

Bab ini berisikan pengujian terhadap algoritma Shannon-Fano dan Huffman dengan menggunakan aplikasi kompresi yang sudah ada beserta analisis yang didapatkan dari hasil pengujian yang telah dilakukan.


(26)

BAB 6: KESIMPULAN DAN SARAN

Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian dari bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam pengembangan selanjutnya.


(27)

BAB 2

LANDASAN TEORI

2.1 Pengolahan Citra Digital

Citra digital dapat didefinisikan sebagai fungsi dua variabel yaitu f(x,y), dimana x dan y adalah koordinat spasial dan nilai f(x,y) adalah intensitas citra pada koordinat tersebut. Teknologi dasar untuk menciptakan dan menampilkan warna pada citra digital berdasarkan pada penelitian bahwa sebuah warna merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru atau RGB (Suhendra, 2008: 1).

Pengolahan citra adalah kegiatan untuk memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia/ mesin (komputer). Inputannya adalah citra dan keluarannya juga citra tapi dengan kualitas lebih baik daripada citra masukan sesuai dengan kebutuhan terhadap citra itu sendiri, misalnya citra warnanya kurang tajam, kabur (blurring), mengandung noise (misal bintik-bintik putih) dan lain-lain, sehingga perlu ada pemrosesan untuk memperbaiki citra karena citra tersebut menjadi sulit diinterpretasikan karena informasi yang disampaikan menjadi berkurang.

Tingkat ketajaman/ resolusi warna pada citra digital tergantung pada jumlah bit yang digunakan oleh komputer untuk merepresentasikan setiap piksel tersebut. Tipe yang sering digunakan untuk merepresentasikan citra adalah 8-bit citra yang terdiri dari 256 warna (0 untuk hitam-255 untuk putih), tetapi dengan kemajuan teknologi perangkat keras grafik, kemampuan tampilan citra di komputer meningkat hingga 32 bit (232 warna).

Citra digital merupakan suatu matriks dimana indeks baris dan kolomnya menyatakan suatu titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai elemen gambar/piksel/pixel/picture element/pels) menyatakan tingkat keabuan/ warna pada titik tersebut. Citra digital dinyatakan dengan matriks berukuran N x M (baris/ tinggi = N, kolom/ lebar = M).


(28)

Gambar 2.1 Matriks citra digital N x M

Gambar 2.2 Ilustrasi sistem koordinat piksel

Menurut Wijaya dan Prijono (2007: 30), pengolahan citra digital dapat dilakukan dengan berbagai cara, adapun beberapa operasi dalam pengolahan citra antara lain:

1. Perbaikan citra (image restoration)

2. Peningkatan kualitas citra (image enhancement) 3. Registrasi citra (image registration)

4. Pemampatan data citra (image data compression) 5. Pemilahan citra (image segmentation)

Dalam Tugas Akhir ini, pengolahan citra digital difokuskan pada teknik kompresi citra, yaitu citra berwarna RGB format BMP.


(29)

2.2 Format Citra Bitmap (BMP)

Citra disimpan di dalam file dengan format tertentu. Format citra yang baku di lingkungan sistem operasi Microsoft Windows dan IBM OS/2 adalah file bitmap (BMP). Saat ini format BMP memang kalah populer dibandingkan format JPG atau GIF. Hal ini karena file citra BMP pada umumnya tidak dikompresi, sehingga ukuran filenya relatif lebih besar daripada file JPG maupun GIF. Hal ini juga menyebabkan format BMP sudah jarang digunakan.

Meskipun format BMP tidak mangkus dari segi ukuran berkas, namun format BMP memiliki kelebihan dari segi kualitas gambar. Citra dalam format BMP lebih bagus daripada citra dalam format yang lainnya, karena citra dalam format BMP umumnya tidak dimampatkan sehingga tidak ada informasi yang hilang. Terjemahan bebas bitmap adalah pemetaan bit, artinya nilai intensitas piksel di dalam citra dipetakan kesejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap piksel panjangnya 8 bit. Delapan bit ini merepresentasikan nilai intensitas piksel. Dengan demikian ada sebanyak 28 = 256 derajat keabuan, mulai dari 0-255.

Citra dalam format BMP ada tiga macam: citra biner, citra berwarna, dan citra hitam-putih (grayscale). Citra biner hanya mempunyai dua nilai keabuan, yaitu nilai 0 dan 1. Oleh karena itu, 1 bit sudah cukup merepresentasikan nilai piksel. Citra berwarna adalah citra yang lebih umum. Warna yang terlihat pada citra bitmap merupakan kombinasi dari tiga warna dasar, yaitu mereh, hijau, dan biru. Setiap piksel disusun oleh tiga komponen warna: R (red), G (green), dan B (blue). Kombinasi dari ketiga warna RGB tersebut menghasilkan warna yang khas untuk piksel yang bersangkutan.

Pada citra 256 warna setiap piksel panjangnya 8 bit, tetapi komponen warna RGBnya disimpan di dalam tabel RGB yang disebut palet. 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


(30)

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 mempunyai satu kanal warna. Citra hitam putih umumnya adalah 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 224 = 16.777.216 kombinasi warna.

2.3 Model Citra RGB

Pada umumnya, representasi citra digital membutuhkan kapasitas ruang penyimpanan yang besar. Citra RGB merupakan citra true color yang mendefinisikan warna merah, hijau dan biru untuk setiap pikselnya (RGB), walaupun belum ada standar yang ditetapkan secara umum untuk citra RGB, tetapi TV dan industri video memiliki standar data warna RGB yang mengikuti rekomendasi ITU-R BT.709 untuk High Definition TV (HDTV), monitor juga dibangun dengan mengikuti rekomendasi tersebut. Dalam model RGB, warna pada setiap piksel ditentukan dari kombinasi warna merah, hijau dan biru. Format file citra menyimpan citra RGB menggunakan 1 byte (8 bit) untuk menampilkan masing-masing warna primer, yang memiliki rentang [0, 255] atau [1, 256], jadi warna RGB memiliki 3 byte (3 x 8 bit = 24 bit) untuk menggambarkan tiap-tiap piksel, dengan demikian terdapat 2563 = 16.777.216 warna berbeda yang bisa direpresentasikan pada citra RGB.

Tabel 2.1 Contoh warna 24 bit

R G B Warna

255 255 255 white

0 0 128 navy blue

0 0 255 blue1

0 255 0 green

255 250 250 snow

248 248 255 ghost white 255 239 213 papaya whip 255 228 225 misty rose


(31)

2.4 Pohon

Pohon (tree) membentuk salah satu subklas dari graf yang paling banyak digunakan. Dalam ilmu komputer, pohon berguna dalam mengatur dan mengaitkan data dalam suatu basis data.

Definisi 2.1 Sebuah pohon T (tree T) adalah sebuah graf sederhana yang memenuhi: jika v dan w adalah verteks atau node di T, maka terdapat sebuah lintasan sederhana tunggal dari v ke w (Johnsonbaught, Richard, 1998: 75).

Definisi 2.2 Sebuah pohon berakar adalah pohon dimana sebuah node tertentu dirancang seperti akar (Johnsonbaught, Richard, 1998: 75).

2.5 Pohon Biner (Binary Tree)

Definisi 2.3 Pohon biner (binary tree) adalah pohon berakar yang setiap nodenya mempunyai paling banyak dua anak dan masing-masing anak dari sebuah node disebut sebagai anak kiri (left child) dan anak kanan (right child) (Jong, Jek Siang, 2002: 283).

Definisi 2.4 Pohon biner penuh (full binary tree) adalah pohon biner yang setiap nodenya (kecuali daun) mempunyai tepat dua anak (Jong, Jek Siang, 2002: 283).

Pohon biner dapat digunakan untuk menyatakan ekspresi aljabar maupun pencarian dan pengurutan data.

Definisi 2.5 Misalkan T adalah pohon biner dan v є V(T) adalah suatu titik cabang dalam T. Sub pohon kiri (left sub tree) v adalah pohon biner yang:

1. Titik-titiknya adalah anak kiri v dan semua turunannya.

2. Garis-garisnya adalah garis-garis dalam E(T) yang menghubungkan titik-titik subpohon kiri v.

3. Anaknya adalah anak kiri v. (Jong, Jek Siang, 2002: 284).


(32)

Gambar 2.3 Pohon Biner

Gambar diatas merupakan pohon biner dengan dua subpohon, yaitu subpohon kiri v dengan w sebagai akar dan subpohon kanan v dengan x sebagai akar.

2.6 Teori Informasi dan Entropi

Kompresi data citra memanfaatkan teori informasi karena kompresi menitikberatkan pada masalah redudansi. informasi yang redundan pada kumpulan data citra menimbulkan bit-bit tambahan pada pengkodean, jika informasi tambahan itu bisa diambil maka data yang diperlukan tersebut bisa direduksi.

Teori informasi memanfaatkan terminologi entropi sebagai tolak ukur seberapa besar informasi yang dikodekan pada sebuah citra. Entropi merupakan suatu ukuran informasi yang dikandung oleh suatu citra dan digunakan sebagai ukuran untuk mengukur kemampuan kompresi dari citra. Entropi memiliki persamaan matematis sebagai berikut:

m

H (X) = - ∑ pi log2 pi i=1

m = jumlah simbol

pi = probabilitas simbol ke-i

w

v x


(33)

Contoh:

Untuk sumber biner, set probabilitasnya adalah: P = {p1, p2} = {p1, 1-p1}

H(p1,p2) = -p1lgp1 – p2lgp2

= -p1lgp1 – (1 – p1)lg(1 – p1) = H(p1)

Gambar 2.4 Entropy

Contoh konsep entropy pada Shannon-Fano Coding: S = {A, B, C, D, E}

P = {0.35, 0.17, 0.17, 0.16, 0.15}

Pengkodean Shannon-Fano:

1. Bagi S kedalam s1 dan s2 (pilih yang memberikan perbedaan p(s1) dan p(s2

2. s

) terkecil

1 = (A,B)  p(s1

3. s

) = p(A) + p(B) = 0,52

2 = (C,D,E)  p(s2

4. Panggil ShannonFano()

) = p(C) + p(D) + p(E) = 0,48

Panjang code rata-rata:


(34)

Semakin kecil nilai entropi yang dihasilkan maka kemampuan kompresi lebih baik. entropi juga didefinisikan sebagai limit kemampuan kompresi citra yang tidak dapat dilampau oleh algoritma manapun. jika nilai entropi dan jumlah simbol diketahui maka sebuah citra dapat diprediksi berapa besar ukuran terkompresinya, sehingga dapat diprediksi pula rasio kompresinya dengan menggunakan persamaan matematis berikut ini:

ukuran terkompresi = w x h x t x m x entropi : 8 + (m x j) w: lebar citra digital

h: tinggi citra digital

t: menyatakan jumlah plane yang digunakan pada saat kompresi, bernilai 3 jika menggunakan tipe per plane, karena plane R, G, B digunakan secara terpisah dan bernilai 1 jika menggunakan tipe kompresi per piksel karena plane R, G, B digunakan secara satu kesatuan menjadi sebuah plane.

m: jumlah simbol

j: menyatakan ukuran codebook setiap barisnya, jumlah baris sama dengan jumlah simbol.

2.7 Kompresi Citra

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 mubazir atau redudan.

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

Kompresi citra bertujuan meminimalkan kebutuhan memori untuk merepresentasikan citra digital dengan mengurangi duplikasi data di dalam citra


(35)

sehingga memori yang dibutuhkan menjadi lebih sedikit daripada representasi citra semula (Munir, 2004: 160).

Tipe kompresi citra, yaitu bagaimana data digital di proses sebelum digunakan untuk proses kompresi, tipe kompresi yang digunakan untuk proses kompresi ini adalah:

1. Tipe per plane

Tipe per plane memperlakukan data citra digital yang terdiri dari tiga plane yaitu Red, Green dan Blue dijadikan sebuah matrik satu dimensi dengan panjang matrik sepanjang hasil perkalian dari panjang dan lebar citra digital. Sehingga masing-masing data digital di setiap plane nya akan dipetakan satu per satu ke dalam matriks tersebut. Setiap matriks diisi nilai antara 0-255, diilustrasikan sbb:

Gambar 2.5 Ilustrasi tipe per plane

2. Tipe per piksel

Tipe per piksel memperlakukan data citra digital yang terdiri atas tiga buah plane, yaitu red, green dan blue dijadikan sebuah matriks satu dimensi dengan panjang matriks sepanjang hasil perkalian dari tinggi dan lebar citra. Sehingga masing-masing data citra digital di setiap plane nya akan dijadikan sebuah nilai dengan persamaan matematis sebagai berikut:

RGB = (B x 65536) + (G x 256) + R B

G

R

w

h R G B … R

w x h


(36)

Kemudian nilai RGB yang dihasilkan dimasukkan kedalam matriks tersebut. Setiap matriks diisi nilai antara 0-16777215, ilustrasinya sebagai berikut:

Gambar 2.6 Ilustrasi tipe per piksel

Manfaat kompresi citra adalah:

1. Waktu pengiriman data pada saluran komunikasi data lebih singkat.

Contoh: pengiriman gambar dari fax, videoconferencing, handphone, download dari internet, pengiriman data medis, pengiriman dari satelit, dan sebagainya. 2. Membutuhkan ruang memori dalam storage lebih sedikit daripada representasi

citra yang tidak dikompresi.

Metode kompresi yang diharapkan dari sebuah kompresi citra adalah: 1. Proses kompresi dan dekompresinya cepat.

Proses kompresi adalah citra dalam representasi tidak mampat dikodekan dengan representsi yang meminimumkan kebutuhan memori. Citra terkompresi disimpan dalam file dengan format tertentu misalnya JPEG (Joint Photographic Expert Group). Proses dekompresi adalah citra yang sudah dikompresi dikembalikan lagi (decoding) menjadi representasi yang tidak mampat. Diperlukan jika citra tersebut dikembalikan ke layar/ disimpan dalam format tidak mampat yaitu format bitmap (BMP).

2. Memori yang dibutuhkan seminimal mungkin

Ada metode yang berhasil melakukan kompresi dengan persentase besar, ada yang kecil. Ukuran memori hasil kompresi juga bergantung pada citra itu sendiri, yaitu citra yang mengandung banyak elemen duplikasi biasanya berhasil dikompresi

B G

R

w

h

RGB RGB … RGB RGB


(37)

dengan memori yang lebih sedikit. Contoh: citra langit biru tanpa awan dibandingkan dengan citra pemandangan alam (mengandung banyak objek).

3. Kualitas citra hasil kompresi harus bagus (fidelity)

Informasi yang hilang akibat kompresi seharusnya seminimal mungkin sehingga kualitas hasil kompresi bagus. Tetapi biasanya kualitas kompresi bagus bila proses kompresi menghasilkan pengurangan memori yang tidak begitu besar, demikian sebaliknya.

Dalam kompresi citra terdapat standar pengukuran error (galat) kompresi yaitu: 1. MSE (Mean Square Error), yaitu sigma dari jumlah error antara citra hasil

kompresi dan citra asli.

M N

MSE = 1 ∑ ∑ [I(x, y) – I’(x, y)]2

MN y=1 x=1

Dimana: I(x,y) adalah nilai pixel di citra asli.

I’(x,y) adalah nilai pixel pada citra hasil kompresi. M, N adalah dimensi citra.

2. PSNR (Peak Signal to Noise Ratio), yaitu untuk mengukur kualitas hasil kompresi.

PSNR = 20 * log10 (b/sqrt (MSE))

Nilai b merupakan nilai maksimum dari piksel citra yang digunakan, karena Tugas Akhir ini menggunakan citra bitmap 24 bit maka nilai b adalah 224-1 atau 16777215. Nilai MSE yang semakin rendah akan semakin baik, sedangkan semakin besar nilai PSNR, semakin bagus kualitas kompresi. PSNR memiliki satuan decibel (dB).

Contoh: Pada kompresi jenis lossless citra di rekonstruksi seperti citra aslinya tanpa kehilangan informasi, misalnya terdapat potongan citra 3 x 3 sebagai berikut:


(38)

M N

MSE = 1 ∑ ∑ [I(x, y) – I’(x, y)]2 MN y=1 x=1

MSE = 1/6( 2-2 + 8-8 + 3-3 + 2-2 + 1-1 + 1-1 + 2-2 + 2-2 + 2-2 ) = 0

2

PSNR = 20 * log10 (b/sqrt (MSE)) = 20 log 10 / √ 0 = infinite

4. Proses transfer dan penyimpanannya mudah.

Kompresi citra sebaiknya dapat meminimalkan waktu pengiriman citra pada saluran komunikasi.

Metode kompresi diklasifikasikan ke dalam dua metode, yaitu (Munir, 2004: 169): 1. Metode Lossless

Metode lossless merupakan teknik kompresi yang menghasilkan hasil dekompresi tepat sama seperti data semula. Tidak ada informasi yang hilang akibat kompresi. Tetapi rasio kompresinya sangat rendah, misalnya pada data teks, gambar seperti GIF dan PNG. Contoh metode ini adalah Shannon-Fano coding, Huffman coding, Arithmetic coding dan lain sebagainya.

Rasio kompresi = ( ukuran citra asli – ukuran citra terkompresi ukuran citra asli

x 100 % )

2. Metode Lossy

Metode lossy merupakan teknik kompresi yang menghasilkan hasil dekompresi yang hampir sama dengan data semula. Ada informasi yang hilang akibat kompresi,

2 8

2 1 1

3 3

2

2 2

1 1

2 2 2 2

8 2


(39)

tetapi dapat ditolerir oleh persepsi mata. Misalnya pada gambar dan MP3. Kelebihan teknik ini adalah rasio kompresi yang tinggi dibanding metode lossless.

Ada beberapa pendekatan yang digunakan untuk kompresi citra: 1. Pendekatan statistik (statistical compression)

2. Pendekatan ruang (spatial compression)

3. Pendekatan kuantisasi (quantizing compression) 4. Pendekatan fraktal (fractal compression)

5. Pendekatan transformasi wavelet (wavelet compression)

Gambar 2.7 Metode kompresi berdasarkan hasilnya

Pada Tugas Akhir ini kompresi citra akan menggunakan pendekatan statistik dengan membandingkan kinerja dua algoritma kompresi yaitu algoritma kompresi Shannon-Fano dan algoritma Huffman.

2.8 Algoritma Huffman

Pada tahun 1951, David A. Huffman dalam kelas Informasi Teori di MIT diberikan pilihan untuk membuat sebuah term paper atau mengikuti ujian akhir. Pada saat itu pilihan term paper yang diberikan profesor Robert M. Fano adalah tentang menemukan kode biner yang paling efisien. Tidak dapat membuktikan kode apapun yang paling efisien, Huffman hampir menyerah dan mulai belajar untuk mengikut i ujian akhir saja, ketika ia menemukan ide untuk menggunakan pohon biner dengan pengurutan berdasarkan frekuensi kemunculan dan berhasil membuktikan bahwa cara


(40)

ini adalah yang paling efisien. Apa yang dilakukan Huffman melampaui profesornya sendiri, yang bekerja sama dengan pencipta bidang teori informasi Claude Shannon mengembangkan kode yang mirip. Huffman menghindari kesalahan besar dari kode Shannon-Fano yang kurang optimal dengan membangun pohon binernya dari bawah ke atas dan bukan dari atas ke bawah. Makalah berjudul “A Method for the Construction of Minimum Redundancy Codes” tersebut lalu dipublikasikan oleh Huffman pada tahun 1952 dalam sebuah jurnal profesional untuk Institute of Radio Engineers.

Algoritma Huffman adalah salah satu algoritma kompresi teks tertua yang disusun oleh David Huffman pada tahun 1952. Algoritma tersebut digunakan untuk membuat kompresi jenis lossless compression, yaitu kompresi data dimana tidak satu byte pun hilang sehingga data tersebut utuh dan disimpan sesuai dengan aslinya. Prinsip kerja algoritma Huffman adalah mengkodekan setiap karakter kedalam representasi bit. Representasi bit untuk setiap karakter berbeda satu sama lain berdasarkan frekuensi kemunculan karakter. Semakin sering karakter tersebut muncul, maka semakin pendek panjang representasi bitnya. Sebaliknya bila semakin jarang frekuensi suatu karakter untuk muncul, maka semakin panjang representasi bit untuk karakter tersebut.

Algoritma Huffman pada citra adalah sebagai berikut:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

2. Urutkan frekuensi kemunculan simbol citra dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

3. Gabungkan dua node yang mempunyai frekuensi kemunculan simbol terkecil, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

4. Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

5. Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.


(41)

7. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

8. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian.

Misalnya terdapat data citra digital dalam bentuk matriks seperti gambar dibawah ini: 255 0 50 255 25 25

25 50 50 180 180 180 50 50 120 255 255 25 120 120 50 255 255 50 255 255 180 25 255 255 255 255 180 25 255 255

Gambar 2.8 Potongan data citra digital

Langkah-langkah pembentukan pohon Huffman:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

Dari potongan data citra tersebut diperoleh tabel distribusi frekuensi sebagai berikut:

Tabel 2.2 Tabel distribusi frekuensi Huffman Simbol Frekuensi Total bit

120 3 3 x 1 byte = 3

50 6 6 x 1 byte = 6

180 6 6 x 1 byte = 6

25 7 7 x 1 byte = 7

255 14 14 x 1 byte = 14

Total 36 byte

2. Urutkan frekuensi kemunculan simbol dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.


(42)

3. Gabungkan dua node yang mempunyai frekuensi kemunculan simbol terkecil, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

4. Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

5. Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.

Langkah 4 dan 5 adalah sebagai berikut:

6. Ulangi lagkah 1-5 sampai semua simbol habis dibangkitkan.

13 9

3

14

6 6 7

7 14

9

3 6

6

7 9

3

14

6 6


(43)

7. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

8. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian

14

13 9

3 6 6 7

22

36

255

25 180

50 120

0 1

0

1

0 1 0 1

13 9

3

14

6 6 7


(44)

Maka dari pohon Huffman di atas diperoleh kode Huffman sebagai berikut:

Tabel 2.3 Codebook Huffman

simbol frekuensi Kode

120 3 000

50 6 001

180 6 010

25 7 011

255 14 1

Dari tabel di atas dapat dilihat bahwa simbol yang sering muncul dikodekan dengan kode yang lebih pendek, demikian juga sebaliknya. Setelah itu dilakukan substitusi dari simbol-simbol potongan citra digital pada Gambar 2.5 dengan kode Huffman yang terdapat pada Tabel 2.3, sehingga diperoleh data biner sebagai berikut:

101000110110110110010010100100100010010001 1011000000001110111101001111110111101001111 Gambar 2.9 Data biner hasil substitusi kode Huffman

Data biner hasil substitusi kode Huffman memiliki ukuran 85 bit setara 10,625 byte, sedangkan tanpa kompresi dibutuhkan 36 bytes, diperoleh dari total frekuensi kemunculan simbol dikalikan dengan 1 byte. Sehingga Algoritma Huffman dapat mereduksi penggunaan memori sebanyak 25,375 bytes. Dengan rasio kompresinya yaitu (100 – 10,625/36 x 100%) = 70,486 %.

2.9 Algoritma Shannon-Fano

Algoritma Shannon-Fano merupakan algoritma pertama yang diperkenalkan untuk kompresi sinyal digital pada papernya yang berjudul “A Mathematical Theory of Communication” pada tahun 1948. Shannon dan Fano terus menerus mengembangkan algoritma ini yang menghasilkan kode biner (binary codeword) untuk setiap karakter yang terdapat pada data dengan redudansi minimum.


(45)

Algoritma Shannon-Fano didasarkan pada variable-length code yang berarti beberapa 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.

Algoritma Shannon-Fano merupakan salah satu algoritma kompresi yang sangat baik dalam pengkompresian teks. Pada prinsipnya algoritma ini menggunakan pendekatan top down dalam penyusunan binary tree. Metode ini sangat efisien untuk mengkompresi file text yang berukuran besar.

Algoritma Kompresi Shannon-Fano pada citra adalah sebagai berikut: 1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

2. Urutkan frekuensi kemunculan simbol dari simbol yang terbesar ke yang terkecil, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

3. Bagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir sama. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

4. Lakukan langkah 3 sampai node tidak dapat dibagi lagi.

5. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian. Langkah-langkah pembentukan pohon Shannon-Fano:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra. Tabel 2.4 Tabel distribusi frekuensi Shannon-Fano

Simbol Frekuensi Total bit

255 14 14 x 1 byte = 14

25 7 7 x 1 byte = 7

180 6 6 x 1 byte = 6

50 6 6 x 1 byte = 6

120 3 3x 1 byte = 3


(46)

2. Urutkan frekuensi kemunculan simbol dari simbol yang terbesar ke yang terkecil.

3. Jumlahkan seluruh frekuensi kemunculan simbol dan masukkan dalam sebuah node.

4. Bagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama besar atau hampir sama. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

5. Lakukan langkah 3 sampai node tidak dapat dibagi lagi.

21 15

36

0

1

14 7 6 6 3


(47)

6. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian Dari pohon Shannon-Fano di atas diperoleh kode Shannon-Fano sebagai berikut:

Tabel 2.5 Codebook Shannon-Fano

simbol frekuensi kode

255 14 00

25 7 01

180 6 10

50 6 110

120 3 111

Dari tabel di atas dapat dilihat bahwa simbol yang sering muncul dikodekan dengan kode yang lebih pendek, demikian juga sebaliknya. Setelah itu dilakukan substitusi dari simbol-simbol potongan citra digital pada Gambar 2.5 dengan kode Shannon-Fano yang terdapat pada Tabel 2.5, sehingga diperoleh data biner sebagai berikut:

0010110000101011101101010110110111000001 111111110000001000010010000000010010000

Gambar 2.10 Data biner hasil substitusi kode Shannon-Fano

14

21

7

15

6 36

9

6 3

0

0 1

0 1

1

1 0


(48)

Data biner hasil substitusi kode Shannon-Fano memiliki ukuran 79 bit setara 9,875 byte, sedangkan tanpa kompresi dibutuhkan 36 bytes, sehingga Algoritma Shannon-Fano dapat mereduksi penggunaan memori sebanyak 26,125 byte. Sehingga rasio kompresinya adalah (100 – 9,875/36 x 100 % ) = 72,569 %.

2.10 Kompleksitas Algoritma

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang terbaik.

Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n. Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n. Dengan menggunakan besaran kompleksitas waktu/ ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n.

2.10.1 Kompleksitas Waktu

Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisanya dari implementasi.

Kompleksitas waktu dibedakan atas tiga macam:

1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst case),yaitu berdasarkan


(49)

2. Tmin

3. T

(n) : kompleksitas waktu untuk kasus terbaik (best case), yaitu berdasarkan kebutuhan waktu minimum.

avg(n): kompleksitas waktu untuk kasus rata-rata (average case), yaitu

berdasarkan kebutuhan waktu secara rata-rata

2.10.2 Kompleksitas Waktu Asimptotik

Tinjau T(n) = 2n2 + 6n + 1

Tabel 2.6 Perbandingan pertumbuhan T(n) dengan n2 N T(n) = 2n2 + 6n + 1 n2

10 100 1000 10.000

261 2061 2.006.001 1.000.060.001

100 1000 1.000.000 1.000.000.000

1. Untuk n yang besar, pertumbuhan T(n) sebanding dengan n2. Pada kasus ini, T(n) tumbuh seperti n2 tumbuh.

2. T(n) tumbuh seperti n2 tumbuh saat n bertambah. Kita katakan bahwa T(n) berorde n2 dan kita tuliskan

T(n) = O(n2)

3. Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi kompleksitas waktu asimptotik.

DEFINISI. T(n) = O(f(n)) (dibaca “T(n) adalah O(f(n)” yang artinya T(n) berorde paling besar f(n) ) bila terdapat konstanta C dan n0 sedemikian sehingga

T(n) C(f (n)) untuk n n0.


(50)

f(n) adalah batas atas (upper bound) dari T(n) untuk n yang besar.

TEOREMA. Bila T(n) = am nm + am-1 nm-1 + ... + a1n+ a0 adalah polinom derajat m maka T(n) = O(nm

TEOREMA. Misalkan T ).

1(n) = O(f(n)) dan T2 (a) T

(n) = O(g(n)), maka 1(n) + T2

(b) T

(n) = O(f(n)) + O(g(n)) = O(max(f(n), g(n)) 1(n)T2

(c) O(cf(n)) = O(f(n)), c adalah konstanta (n) = O(f(n))O(g(n)) = O(f(n)g(n))

(d) f(n) = O(f(n))

Contoh: Misalkan T1(n) = O(n) dan T2(n) = O(n2 (a) T

), maka 1(n) + T2(n) = O(max(n, n2)) = O(n2

(b) T

) 1(n)T2(n) = O(n.n2) = O(n3)

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik 1. Jika kompleksitas waktu T(n) dari algoritma diketahui, Contoh: a. pada algoritma cari_maksimum

T(n) = n – 1 = O(n)

b. pada algoritma pencarian_beruntun Tmin

T

(n) = 1 = O(1) max

T

(n) = n = O(n)

avg(n) = (n + 1)/2 = O(n), c. pada algoritma pencarian_biner,

Tmin T

(n) = 1 = O(1)


(51)

d. pada algoritma selection_sort ) ( 2 ) 1 ( ) ( 2 n O n n n

T = − =

e. T(n) = (n + 2) log(n2 + 1) + 5n2 = O(n2)

Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n2 + 1) + 5n

= f(n)g(n) + h(n),

2

Kita rinci satu per satu:

f(n) = (n + 2) = O(n)

g(n) = log(n2 log(n

+ 1) = O(log n), karena 2

+ 1) ≤ log(2n2) = log 2 + log n2

= log 2 + 2 log n 3 log n untuk n > 2

h(n) = 5n2 = O(n2 maka:

)

T(n) = (n + 2) log(n2 + 1) + 5n2 = O(n)O(log n) + O(n

2 = O(n log n) + O(n

) 2

) = O(max(n log n, n2)) = O(n2)

2. Menghitung O-Besar untuk setiap instruksi di dalam algoritma dengan panduan di bawah ini, kemudian menerapkan teorema O-Besar.

a. Pengisian nilai (assignment), perbandingan, operasi aritmetik, read, write membutuhkan waktu O(1).

b. Pengaksesan elemen larik atau memilih field tertentu dari sebuah record membutuhkan waktu O(1).

Contoh:

read(x); O(1)

x:=x + a[k]; O(1) + O(1) + O(1) = O(1) writeln(x); O(1)


(52)

Kompleksitas waktu asimptotik = O(1) + O(1) + O(1) = O(1)

Penjelasan: O(1) + O(1) + O(1) = O(max(1,1)) + O(1)

= O(1) + O(1) = O(max(1,1)) = O(1) c. if C then S1 else S2; membutuhkan waktu

TC + max(TS1,TS2) Contoh:

read(x); O(1)

if x mod 2 = 0 then O(1) begin

x:=x+1; O(1) writeln(x); O(1) end

else

writeln(x); O(1)

Kompleksitas waktu asimptotik:

= O(1) + O(1) + max(O(1)+O(1), O(1)) = O(1) + max(O(1),O(1))

= O(1) + O(1) = O(1)

d. Kalang for. Kompleksitas waktu kalang for adalah jumlah pengulangan dikali dengan kompleksitas waktu badan (body) kalang.

Contoh:

for i:=1 to n do

jumlah:=jumlah + a[i]; O(1)

Kompleksitas waktu asimptotik = n . O(1) = O(n .1) = O(n)


(53)

Contoh: kalang bersarang

for i:=1 to n do for j:=1 to n do

a[i,j]:=0; O(1) Kompleksitas waktu asimptotik:

nO(n) = O(n.n) = O(n2)

Contoh: kalang bersarang dengan dua buah instruksi

for i:=1 to n do for j:=1 to i do

begin

a:=a+1; O(1)

b:=b-2 O(1) end;

waktu untuk a:=a+1 : O(1) waktu untuk b:=b-2 : O(1)

total waktu untuk badan kalang = O(1) + O(1) = O(1) kalang terluar dieksekusi sebanyak n kali

kalang terdalam dieksekusi sebanyak i kali, i = 1, 2, …, n jumlah pengulangan seluruhnya = 1 + 2 + … + n = n(n + 1)/2

kompleksitas waktu asimptotik = n(n + 1)/2 .O(1)

= O(n(n + 1)/2) = O(n2)

e. while C do S; dan repeat S until C; Untuk kedua buah kalang, kompleksitas waktunya adalah jumlah pengulangan dikali dengan kompleksitas waktu badan C dan S.


(54)

Contoh: kalang tunggal sebanyak n-1 putaran

i:=2; O(1)

while i <= n do O(1)

begin

jumlah:=jumlah + a[i]; O(1)

i:=i+1; O(1)

end;

Kompleksitas waktu asimptotiknya adalah = O(1) + (n-1) { O(1) + O(1) + O(1) } = O(1) + (n-1) O(1)

= O(1) + O(n-1) = O(1) + O(n) = O(n)

Contoh: kalang yang tidak dapat ditentukan panjangnya: ketemu:=false;

while (p <> Nil) and (not ketemu) do if p^.kunci = x then

ketemu:=true else

p:=p^.lalu { p = Nil or ketemu }

Di sini, pengulangan akan berhenti bila x yang dicari ditemukan di dalam senarai. Jika jumlah elemen senarai adalah n, maka kompleksitas waktu terburuknya adalah O(n) -yaitu kasus x tidak ditemukan.

f. Prosedur dan fungsi. Waktu yang dibutuhkan untuk memindahkan kendali ke rutin yang dipanggil adalah O(1).


(55)

Tabel 2.7 Pengelompokan Algoritma Berdasarkan Notasi O-Besar Kelompok Algoritma Nama

O(1)

O(log n) O(n)

O(n log n) O(n2 O(n ) 3 O(2 ) n O(n!) ) konstan logaritmik lanjar n log n kuadratik kubik

eksponensial faktorial

Urutan spektrum kompleksitas waktu algoritma adalah :

                       

(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<...<

O O( 2n)< O(n!)

algoritma polinomial algoritma eksponensial

Penjelasan masing-masing kelompok algoritma adalah sebagai berikut : 1. O(1)

Kompleksitas O(1) berarti waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran masukan. Contohnya prosedur tukar di bawah ini:

procedure tukar(var a:integer; var b:integer); var temp:integer; begin temp:=a; a:=b; b:=temp; end;

Di sini jumlah operasi penugasan (assignment) ada tiga buah dan tiap operasi dilakukan satu kali. Jadi, T(n) = 3 = O(1).


(56)

2. O(log n)

Kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n. Algoritma yang termasuk kelompok ini adalah algoritma yang memecahkan persoalan besar dengan mentransformasikannya menjadi beberapa persoalan yang lebih kecil yang berukuran sama (misalnya algoritma pencarian_biner). Di sini basis algoritma tidak terlalu penting sebab bila n dinaikkan dua kali semula, misalnya, log n meningkat sebesar sejumlah tetapan.

3. O(n)

Algoritma yang waktu pelaksanaannya lanjar umumnya terdapat pada kasus yang setiap elemen masukannya dikenai proses yang sama, misalnya algoritma pencarian_beruntun. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula.

4. O(n log n)

Waktu pelaksanaan yang n log n terdapat pada algoritma yang memecahkan persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan tiap persoalan secara independen, dan menggabung solusi masing-masing persoalan. Algoritma yang diselesaikan dengan teknik bagi dan gabung mempunyai kompleksitas asimptotik jenis ini. Bila n = 1000, maka n log n mungkin 20.000. Bila n dijadikan dua kali semual, maka n log n menjadi dua kali semula (tetapi tidak terlalu banyak).

5. O(n2

Algoritma yang waktu pelaksanaannya kuadratik hanya praktis digunakan untuk persoalana yang berukuran kecil. Umumnya algoritma yang termasuk kelompok ini memproses setiap masukan dalam dua buah kalang bersarang, misalnya pada algoritma urut_maks. Bila n = 1000, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula.


(57)

6. O(n3

Seperti halnya algoritma kuadratik, algoritma kubik memproses setiap masukan dalam tiga buah kalang bersarang, misalnya algoritma perkalian matriks. Bila n = 100, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula.

)

7. O(2n

Algoritma yang tergolong kelompok ini mencari solusi persoalan secara "brute force". Bila n = 20, waktu pelaksanaan algoritma adalah 1.000.000. Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula.

)

8. O(n!)

Seperti halnya pada algoritma eksponensial, algoritma jenis ini memproses setiap masukan dan menghubungkannya dengan n-1 masukan lainnya, misalnya algoritma Persoalan Pedagang Keliling (Travelling Salesperson Problem). Bila n = 5, maka waktu pelaksanaan algoritma adalah 120. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.


(58)

BAB III

ANALISIS KOMPLEKSITAS ALGORITMA

3.1Kompleksitas Waktu Huffman

Algoritma Huffman adalah sebagai berikut:

9. Hitung frekuensi kemunculan masing-masing simbol pada citra.

10.Urutkan frekuensi kemunculan simbol citra dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

11.Gabungkan dua node yang mempunyai frekuensi kemunculan simbol, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

12.Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

13.Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.

14.Ulangi lagkah 1-5 sampai semua simbol habis dibangkitkan.

15.Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

16.Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian.

Misalnya terdapat data citra digital dalam bentuk matriks seperti gambar dibawah ini: 256 0 50 255 25 25

26 50 50 180 180 180 51 50 120 255 255 25 121 120 50 255 255 50 255 255 180 25 255 255 255 255 180 25 255 255

Gambar 3.1 Potongan data citra digital

Langkah-langkah pembentukan pohon Huffman:


(59)

Dari potongan data citra tersebut diperoleh tabel distribusi frekuensi sebagai berikut:

Tabel 3.1 Tabel distribusi frekuensi Huffman Simbol Frekuensi Total bit

120 3 3 x 1 byte = 3

50 6 6 x 1 byte = 6

180 6 6 x 1 byte = 6

25 7 7 x 1 byte = 7

255 14 14 x 1 byte = 14

Total 36 byte

10.Urutkan frekuensi kemunculan simbol dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

11.Gabungkan dua node yang mempunyai frekuensi kemunculan simbol terkecil, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

12.Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

13.Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.

3 6 6 7 14

7 14

9

3 6


(60)

Langkah 4 dan 5 adalah sebagai berikut:

14.Ulangi lagkah 1-5 sampai semua simbol habis dibangkitkan.

15.Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

7 9

3

14

6 6

13 9

3

14

6 6 7

22

13 9

3

14


(61)

16.Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian

Maka dari pohon Huffman di atas diperoleh kode Huffman sebagai berikut:

Tabel 3.2 Codebook Huffman

Simbol frekuensi Kode

120 3 000

50 6 001

180 6 010

25 7 011

255 14 1

Dari tabel di atas dapat dilihat bahwa simbol yang sering muncul dikodekan dengan kode yang lebih pendek, demikian juga sebaliknya. Setelah itu dilakukan

14

13 9

3 6 6 7

22

36

255

25 180

50 120

0 1

0

1


(62)

substitusi dari simbol-simbol potongan citra digital pada Gambar 3.1 dengan kode Huffman yang terdapat pada Tabel 3.2, sehingga diperoleh data biner sebagai berikut:

101000110110110110010010100100100010010001 1011000000001110111101001111110111101001111

Gambar 3.2 Data biner hasil substitusi kode Huffman

Data biner hasil substitusi kode Huffman memiliki ukuran 85 bit setara 10,625 byte, sedangkan tanpa kompresi dibutuhkan 36 bytes, diperoleh dari total frekuensi kemunculan simbol dikalikan dengan 1 byte. Sehingga Algoritma Huffman dapat mereduksi penggunaan memori sebanyak 25,375 bytes. Dengan rasio kompresinya yaitu (100 – 10,625/36 x 100%) = 70,486 %.


(63)

Kompleksitas waktu Huffman tergantung pada dua bagian utama, yaitu proses sorting dan proses pembentukan pohon Huffman. Proses sorting data dapat mempengaruhi kompleksitas algoritma total, apabila kita mengambil pengurutan data dengan kompleksitas algoritma O(n2) atau mengambil pengurutan data dengan kompleksitas algoritma O(log n) tentu akan menghasilkan kompleksitas algoritma yang berbeda. Untuk algoritma pengurutan data, kompleksitas waktu yang paling ideal adalah O(n), yaitu algoritma pengurutan hanya dengan 1 kali pass saja. Namun sampai saat ini belum ada algoritma yang mampu untuk mencapai keadaan ini. Algoritma sorting yang dipilih adalah algoritma Heap Sort dimana proses pengurutan didasarkan pada prioritas.

Algoritma utamanya:

Procedure Huffman (L: list of tree)

{membangun pohon Huffman code dari list of tree yang berisikan karakter-karakter yang ada pada data}

Deklarasi

A, B, T : tree

Algoritma

Sort(L) {mengurutkan elemen list of tree L}

While member (L) ≠ 1 do

Deletefirst(L, A) { mendelete elemen pertama dari

list of tree L,dan menyimpan nilai dari yang di

delete di variable A}

DeleteFirst(L, B) { mendelete elemen pertama dari


(64)

heapify();

for (i = 0; i < n; i++) { remove();

reheapify();

Algoritma Metoda Heapify()

Ide secara intuitif mungkin adalah melakukan operasi heapify ini dari root ke arah leaf. Namun ide ini tidak efisien dalam kenyataannya karena akan terjadi operasi rutun-naik mirip algoritma bubble-sort. Ide yang efisien adalah membentuk heaptree-heaptree mulai dari subtree-subtree yang paling bawah. Jika subtree-subtree suatu node sudah membentuk heap maka tree dari node tersebut mudah dijadikan heaptree dengan mengalirkannya ke bawah.

Jadi algoritma utamanya beriterasi mulai dari internal node paling kanan-bawah (atau berindeks array paling besar) hingga root lalu ke kiri dan naik ke level di atasnya, dan seterusnya hingga root (sebagai array [0..N-1] maka iterasi dilakukan mulai j = N/2, berkurang satu-satu hingga j = 0.

1. Pada internal node itu pemeriksaan hanya dilakukan pada node anaknya langsung. 2. Pada saat berada di level yang lebih tinggi, subtree-subtreenya selalu sudah

membentuk heap. Jadi paling buruk restrukturisasi hanya mengalirkan node tersebut ke arah bawah.

3. Algoritma ini melakukan sebanyak N/2 kali iterasi, dan pada setiap interasi paling buruk akan melakukan pertukaran sebanyak log2(N) kali.


(65)

Algoritma hanya menukarkan elemen array[0] dengan elemen array terakhir dalam heaptree. Secara logik node paling bawah-kanan dipindahkan ke root menggantikan node root yang akan diambil. Setelah reheapify panjang array yang menjadi bagian heaptree berkurang satu node dan elemen array tersebut digunakan untuk menyimpan hasil pengurutan hingga saat itu.

Algoritma Metoda reheapify()

Melakukan restrukturisasi dari atas ke bawah seperti halnya iterasi terakhir dari

heapify() (karena baik subtree kiri maupun kanannya merupakan heap, jadi tidak perlu dilakukan seperti heapify).

Kompleksitas waktu dari algoritma ini adalah O(n log n) yang diperoleh dari n-1 kali iterasi dikalikan dengan proses reheapify yang merupakan proses logaritmis. Inisialisasi dengan heapify hanya memerlukan O(n), worse case adalah O(n log n), sehingga kompleksitas waktu total masih merupakan O(n log n). Algoritma ini termasuk stabil dimana perbedaan antara worse case dengan best case tidak besar. Kompleksitas waktu Huffman adalah sebagai berikut:

1. Heap Sort : O(n log n) 2. Repeat n times

a. Form new sub-tree : O(1) b. Move sub-tree : O(log n)

(binary search)

Total : O(1) + O( log n) = O(max(1, log n)) : O(log n).

3. Total keseluruhan waktu yang dibutuhkan untuk mengerjakan algoritma Huffman ini adalah = O(n log n) + O(log n) = O(max(n log n, log n)) = O(n log n).

Kompleksitas waktu untuk kasus terbaik (best case) sama dengan untuk kasus terburuk (worst case) yaitu O(n log n). Berdasarkan hasil analisis diperoleh bahwa Algoritma Huffman membutuhkan waktu sebesar O(n log n), dimana waktu pelaksanaan yang n log n terdapat pada algoritma yang memecahkan persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan tiap persoalan secara


(66)

independen, dan menggabung solusi masing-masing persoalan. Algoritma yang diselesaikan dengan teknik bagi dan gabung mempunyai kompleksitas asimptotik jenis ini.

Gambar 3.3 Heap Graph O(n log n)

3.2Kompleksitas Waktu Shannon-Fano

Keterangan Analisa Kompleksitas Algoritma Shannon-Fano: 6. Hitung frekuensi kemunculan masing-masing simbol pada citra.

7. Urutkan frekuensi kemunculan simbol dari simbol yang terbesar ke yang terkecil, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

8. Bagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir sama. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

9. Lakukan langkah 3 sampai node tidak dapat dibagi lagi.

10.Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian.

Langkah-langkah pembentukan pohon Shannon-Fano:


(1)

Tabel 5.10 Panjang rata-rata kode kompresi Shannon-fano dan Huffman tipe per piksel

Nama File Citra Asli

Panjang rata-rata

kode

Shannon-fano (bit/piksel)

Rasio kompresi

Shpx

Panjang rata-rata kode Huffman

(bit/piksel)

Rasio kompresi

Hfpx

lena256.bmp 15,331 -138,26 15,328 -138,25

baboon256.bmp 15,807 -179,39 15,807 -179,79

peppers256.bmp 15,461 -153,77 15,459 -153,76 sailboat256.bmp 15,414 -149,14 15,412 -149,09

flowers256.bmp 15,39 -146,18 15,387 -146,17

tulip256.bmp 15,33 -138,15 15,327 -138,14

clustermass256_bmp 6,229 72,88 6,215 72,94

shear256_bmp 3,941 82,4 3,94 82,4

Rata-rata 12,862 12,859

Berdasarkan Tabel 5.9 dan Tabel 5.10 di atas dapat dilihat bahwa untuk algoritma Huffman menggunakan panjang rata-rata kode yang yang lebih sedikit dibandingkan algoritma Shannon-Fano, yaitu untuk tipe kompresi per plane panjang rata-rata kode yang dihasilkan algoritma Huffman (6,448 bit/ simbol) sedangkan untuk algoritma Shannon-Fano (6,467 bit/ simbol), sedamgkan pada tipe per piksel panjang rata-rata kode yang digunakan algoritma Huffman (12,862 bit/ simbol) sedangkan untuk algoritma Shannon-Fano (12,859 bit/ simbol), oleh karena itu algoritma Huffman menghasilkan rasio kompresi yang lebih baik dibandingkan dengan algoritma Shannon-Fano.

5.1.2.6 Analisis nilai entropi citra

Untuk tahap ini kita akan melihat pengaruh nilai entropi terhadap rasio kompresi dan tipe kompresi yang digunakan, berdasarkan hasil pengujian diperoleh nilai entropi untuk masing-masing citra sebagai berikut:


(2)

Tabel 5.11 Nilai entropi citra, tipe kompresi per plane Nama File Citra Asli Jumlah

simbol Entropi (bit/simbol) Rasio kompresi Hfpn Rasio kompresi Shpn

lena256.bmp 256 7,792 1,59 1,3

baboon256.bmp 256 7,722 2,42 2,11

peppers256.bmp 256 7,76 2,03 1,78

sailboat256.bmp 256 7,775 1,84 1,54

flowers256.bmp 256 7,651 3,38 3,08

tulip256.bmp 256 7,478 5,64 5,32

clustermass256.bmp 256 2,679 63,64 63,58

shear256.bmp 256 2,309 69,73 69,63

Tabel 5.12 Nilai entropi citra, tipe kompresi per piksel Nama File Citra

Asli Jumlah simbol Entropi (bit/simbol) Rasio kompresi Hfpx Rasio kompresi Shpx

lena256.bmp 48995 15,319 -138,25 -138,26 baboon256.bmp 59994 15,805 -179,79 -179,39 peppers256.bmp 53201 15,452 -153,76 -153,77 sailboat256.bmp 51954 15,405 -149,09 -149,14 flowers256.bmp 51150 15,379 -146,17 -146,18 tulip256.bmp 48965 15,318 -138,14 -138,15 clustermass256.bmp 327 6,198 72,94 72,88

shear256.bmp 331 3,919 82,4 82,4

Rasio kompresi dipengaruhi oleh nilai entropi, semakin rendah nilai entropi maka akan menghasilkan rasio kompresi yang lebih tinggi, demikian sebaliknya apabila nilai entropi lebih besar, maka akan menghasilkan rasio kompresi yang rendah. Seperti yang terdapat pada Tabel 5.11 di atas, citra shear256.bmp memiliki nilai entropi yang paling rendah dibandingkan dengan citra lainnya, dengan nilai entropi 3,919 bit/ simbol, namun citra ini menghasilkan rasio kompresi yang paling


(3)

Untuk tipe kompresi citra, berdasarkan hasil pengujian yang telah dilakukan dapat diambil kesimpulan bahwa tipe kompresi per plane lebih baik digunakan untuk kompresi citra daripada tipe kompresi per piksel, karena pada tipe kompresi per plane jumlah simbol maksimum yang dihasilkan adalah 256 simbol, sedangkan pada tipe kompresi per piksel jumlah simbol maksimum yang dihasilkan mencapai 59994 simbol. Semakin banyak simbol yang terkandung pada data citra, maka akan semakin membebani ukuran file citra terkompresi, karena akan memperbesar ukuran kode Huffman atau Shannon-Fano, sehingga ukuran file citra akan semakin meningkat. Hal ini dapat dilihat pada Tabel 5.12 di atas, dimana nilai kompresi citra untuk kedua jenis algoritma bernilai negatif, nilai negatif ini disebabkan oleh ukuran kode yang dibentuk melebihi ukuran citra yang terkompresi.


(4)

BAB 6

KESIMPULAN DAN SARAN

6.1 Kesimpulan

Setelah melakukan analisis terhadap kedua algoritma kompresi yaitu algoritma kompresi Huffman dan Shannon-Fano, maka dapat ditarik kesimpulan bahwa:

1. Rasio kompresi yang dihasilkan oleh Algoritma Huffman lebih baik daripada Algoritma Shannon-Fano. contohnya untuk tipe per plane, rasio rata-rata Huffman (18,78 %) dan Shannon-Fano (18,54 %).

2. Algoritma kompresi Huffman dapat mengurangi pemakaian memori lebih banyak dari pada algoritma kompresi Shannon-Fano. Ukuran file rata-rata hasil kompresi Huffman (159722,75 byte) dan kompresi Shannon-Fano (160194,87 byte).

3. Tipe kompresi per piksel tidak cocok digunakan untuk proses kompresi pada file citra yang banyak menggunakan komposisi warna, baik dengan algoritma Shannon-Fano dan Huffman karena tidak dapat mengurangi ukuran file citra yang dikompresi bahkan memperbesar ukuran file citra. Misalnya pada citra lena256.bmp, ukuran file citra asli adalah 19662 byte sedangkan file citra yang dihasilkan dengan algoritma kompresi Huffman adalah 468544 byte dan dengan algoritma Shannon-Fano adalah 468568 byte.

4. Kualitas citra yang dihasilkan oleh kedua algoritma dapat dilihat dari nilai PSNR yang dihasilkan oleh kedua algoritma, berdasarkan nilai PSNR yang dihasilkan dapat dilihat bahwa kedua algoritma baik algoritma Huffman maupun algoritma Shannon-Fano menghasilkan nilai infinite yang artinya dapat merekonstruksikan kembali citra seperti citra aslinya tanpa ada informasi yang hilang.

5. Algoritma Shannon-Fano memiliki waktu kompresi yang lebih cepat dibandingkan algoritma Huffman. Kecepatan rata-rata proses kompresi


(5)

algoritma Shannon-Fano (0,285 s) dan kecepatan proses kompresi Huffman (0,322 s).

6. Kecepatan rata-rata proses dekompresi algoritma Shannon-Fano dan Huffman tidak jauh berbeda, contohnya pada tipe per plane, kecepatan dekompresi Shannon-Fano (0,144 s) dan kecepatan proses dekompresi Huffman (0,142 s).

6.2 Saran

Berikut adalah saran-saran untuk pengembangan lebih lanjut terhadap Tugas Akhir ini.

1. Dapat dikembangkan dengan mengganti jenis tipe citra yang digunakan untuk analisis proses kompresi misalnya PNG atau GIF.

2. Analisis algoritma Shannon-Fano dan Huffman dapat dikembangkan untuk proses kompresi file jenis lain seperti audio dan video.

3. Algoritma kompresi citra dapat diganti dengan menggunakan algoritma yang lain seperti Arithmatic coding, LZW dan lain-lain.


(6)

DAFTAR PUSTAKA

Hasibuan, N. S. 2008. Studi Perbandingan Algoritma Huffman dan Shannon-Fano dalam Pemampatan File Teks. Program Studi S-1 Matematika USU: Skripsi tidak diterbitkan.

Hestiningsih, Idhawati. 2008. Pengolahan Citra.

Ida, Mengyi Pu. 2006. Fundamental Data Compression. Diakses tanggal 12 Februari 2009.

Johnsonbough, Richard. 1998. Matematika Diskrit. Jilid 2. Jakarta: Prenhallindo.

Jong, Jek Siang. 2002. Matematika Diskrit dan Aplikasinya pada Ilmu Komputer. Yogyakarta: Andi.

Linawati dan Panggabean, Henry. P. 2004. ”Perbandingan Kinerja Algoritma Kompresi Huffman, LZW, dan DMC pada Berbagai Tipe File”.

Diakses tanggal 8 Februari 2009.

Madenda, Sarifuddin, et al. 2004. ”Kompresi Citra Berwarna Menggunakan Metode Pohon Biner Huffman”.

Munir, Rinaldi. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Bandung: Informatika.

Salomon, David. 2007. Variable-length Codes for Data Compression.

Suhendra, Adang. 2004. “Catatan Kuliah Pengantar Pengolahan Citra”.

Diakses tanggal 6 Desember 2008.

Wijaya, Marvin.Ch dan Prijono, A. 2007. Pengolahan Citra Digital menggunakan Matlab. Bandung: Informatika.