MAKALAH
MULTIMEDIA
"KOMPRESI DATA"
Disusun untuk Memenuhi Mata Kuliah Multimedia
Yang Dibimbing oleh Bapak I Made Wirawan
Disusun Oleh :
Katya Lindi Chandrika
140535605307
TI B - 2014
JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS NEGERI MALANG
September 2016
Kompresi Data: Huffman Code
Pada era digital saat ini informasi—berupa teks, gambar, audio bahkan video—ditransmisikan melalui internet. Dalam aplikasinya, suatu file informasi berupa media yang memiliki ukuran yang cukup besar ditransmisikan dengan waktu yang cukup lama pula. Hal ini terjadi karena bandwidth yang disediakan tidak mencukupi.
Pada awal tahun 1980-an, komputer personal memiliki hard disk yang tidak lebih dari 10 MB. Saat ini, ukuran sebuah hard disk dapat mencapai ratusan gigabyte. Meskipun ukuran hard disk semakin lama semakin besar, file yang ada saat ini juga berukuran besar sehingga dengan pertumbuhan tersebut, kapasitas hard disk yang besar masih dirasa terlalu kecil untuk menyimpan segala sesuatunya.
Dari dua permasalahan yang telah dijabarkan di atas, timbul suatu solusi yang dapat menangani hal tersebut yaitu kompresi. Menurut Ida (2006), kompresi adalah seni menyajikan informasi dalam bentuk yang ringkas daripada yang asli atau bentuk yang belum dikompresi. Dalam kata lain, dengan menggunakan kompresi data, ukuran suatu file dapat dikurangi. Teknik ini sangatlah berguna untuk memampatkan atau mengecilkan raw data, terlebih lagi untuk mengkompresi multimedia mengingat ukuran raw data media sangat besar. Tujuan dari kompresi data dalam proses transmisi data adalah mempercepat waktu proses, sedangkan dalam penyimpanan data adalah memampatkan data sehingga masih tersisa ruang kosong pada suatu tempat penyimpanan.
Kompresi data diklasifikasikan menjadi dua yaitu: lossless (non-lossy) dan lossy. Teknik kompresi lossless akan menghasilkan data yang sama dari pengkompresian tanpa adanya loss data. Sehingga dapat dikatakan bahwa informasi yang didapat tidak hilang selama proses kompresi dan dekompresi. Teknik kompresi ini digunakan untuk mengkompresi gambar medis, tulisan dan gambar yang disimpan karena alasan hukum, dan lain sebagainya. Lossy adalah teknik kompresi yang akan kehilangan beberapa informasi dari proses kompresi. Teknik ini juga disebut sebagai irreversible compression karena tidak dapat merekonstruksi pesan asli menggunakan proses dekoding. Meskipun hasil dekompres dari data yang terkompresi tidak sama persis, namun persepsi terhadap sematik data tetap sama.
Dalam teknik kompresi lossless terdapat beberapa algoritma yang digunakan, salah satunya adalah Huffman coding. Huffman coding dibuat pada awal tahun 1950-an ketika David Huffman mempublikasikan algoritma kompresi binary yang dikembangkan di Massachusetts Institute of Technology. Sebagai seorang mahasiswa yang berkecimpung dalam ilmu matematika. Huffman diberi pilihan antara menulis paper penelitian tentang kode kompresi binary yang paling efisien atau melakukan ujian akhir. Huffman memutuskan untuk melakukan penelitian tentang algoritma binary, ia hampir menyerah dan mulai belajar untuk mempersiapkan ujian akhir sebelum ia menemukan bahwa metode binary-tree-frequency-sorting sangat efisien dalam mengkompresi deret pesan, sehingga akhirnya Huffman menemukan binary compression, yaitu sebuah metode pengemasan ulang pesan yang sebelumnya panjang menjadi pesan yang lebih pendek dan dapat dikembalikan ke dalam data asli tanpa kehilangan suatu informasi.
Algoritma Huffman code ini sangat sederhana dan sangat mudah. Algoritma ini bekerja didasari dengan frekuensi kemunculan suatu data item. Algoritma Huffman code akan membangun kamus dalam bentuk binary tree. Agar dapat mengkompres pesan secara efisien, data item dengan frekuensi kemunculan terbanyak akan menjadi kode biner terpendek karena data item tersebut paling sering muncul.
Berikut ini adalah algoritma Huffman code untuk mengkodekan pesan:
Buat list data item, urutkan berdasar frekuensi kemunculan terbanyak hingga terkecil.
Kombinasikan dua data item dengan frekuensi terkecil
Sorting ulang list data item. Ulangi langkah 1, 2 dan 3 hingga semua nilai frekuensi ditambahkan
Tabel 1. Algoritma Huffman Code
Nilai pada root Huffman tree harus bernilai jumlah semua frekuensi. Cara membaca nilai binary dari binary tree adalah dari atas ke bawah. Seperti yang telah dipelajari, sisi kiri binary tree akan bernilai 0, sedangkan sisi kanan binary tree akan bernilai 1.
Dalam multimedia, teknik kompresi ini juga dapat diaplikasikan pada gambar. Huffman code akan bekerja berdasarkan frekuensi kemunculan data item, dalam hal ini pixel pada gambar. Sebagai contoh, sebuah gambar diumpakan dalam bentuk matriks 3 x 5 seperti berikut ini:
100100100100200200250100200 100200100 100100250
Gambar 1. Gambaran citra dua dimensi ke dalam matrik
Kemudian, nilai-nilai tersebut diurutkan berdasarkan frekuensi kemunculannya. Sehingga didapatkan binary tree berdasarkan nilai pixel atau nilai warna seperti berikut ini.
*
/ \
(0) (1)
/ \ \
(00)(01) \
/ \ \
250 200 100
Gambar 2. Binary tree dari nilai di dalam matrik
Nilai 100 di dalam matrik muncul sebanyak 9 kali, nilai 200 sebanyak 4 kali, sedangkan nilai 250 sebanyak 2 kali. Nilai yang muncul paling banyak digambarkan pada leaf 1, setelah itu leaf 0 akan dibagi lagi. Nilai pada leaf 0 akan diisi oleh nilai yang tidak terpilih. Leaf tersebut akan dicabangkan kembali dan diisi dengan leaf 0-1 yang merepresentasikan nilai yang muncul terbanyak kedua dan leaf 0-0
Sehingga dapat didapatkan bahwa nilai dari 100 = 1, 200 = 01 dan 250 = 00. Sehingga data citra yang telah dikompresi, kode bitnya menjadi: 111111010101100101100. (Dibaca menurut urutan baris atas ke baris bawah dari kanan ke kiri, begitu selanjutnya.)
Data citra yang telah dikompresi akan lebih mampat daripada data citra yang belum dikompresi. Bayangkan saja, mengubah nilai 100 menjadi bilangan biner kemudian ditulis sebanyak 9 kali, setelah itu mengubah nilai-nilai selanjutnya.
Algoritma Huffman code sekarang digunakan sebagai komponen algoritma kompresi atau dapat disebut sebaga back end dari beberapa utility sebagai contoh: GZIP dan JPEG.
Menurut Mamta (2010), ada beberapa kelebihan dari algoritma huffman coding, yaitu: mudah diimplementasikan, teknik kompresi bersifat lossless, dan menghasilkan kode yang optimal dan ringkas. Kekurangan dari algorima ini adalah: relatif lambat, bergantung pada model data, proses decoding sulit karena perbedaan panjang kode dan overhead karena Huffman tree.
Daftar rujukan
Blelloch, Guy. 2002. "Introduction to Data Compression". Computer Science Departement, Carnegie Mellon University.
Kodituwakku, S.R., Amarasinghe, U.S., "Comparison of Lossless Data Compression Algorithms for Text Data". Indian Journal of Computer Science and Engineering. Vol 1, No 4, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.300.9031&rep=rep1&type=pdf. Diakses pada tanggal 20 September 2016.
Lee, Joseph. 2007. "Huffman Data Compression". http://web.mit.edu/jsslee/Public/revised%20(5-20).pdf. Diakses pada tanggal 22 September 2016.
Mathur, Mridul Kumar., et al. "Lossless Huffman Coding Technique for Image Compression and Reconstruction using Binary Trees". IJCTA, Volume 3 (1). http://www.ijcta.com/documents/volumes/vol3issue1/ijcta2012030114.pdf. Diakses pada tanggal 22 September 2016.
Sharma, Mamta. "Compression Using Huffman Coding". International Journal of Computer Science and Network Security, Volume 10, No. 5. http://paper.ijcsns.org/07_book/201005/20100520.pdf. Diakses pada tanggal 22 September 2016.
Zelenski, Julie. 2012. "Huffman Encoding and Data Compression". http://web.stanford.edu/class/archive/cs/cs106b/cs106b.1126/handouts/220%20Huffman%20Encoding.pdf. Diakses pada tanggal 18 September 2016.