IMPLEMENTASI METODE HUFFMAN UNTUK KOMPRESI CITRA DIGITAL
BERBASIS ANDROIDPrasetyo Wildan AuliaTeknik Informatika S-1
Fakultas Komputer Universitas KuninganABSTRACTCompression aims
to reduce the number of data which is used to represent a file or
picture without reducing the quality of original data. Compression
is done by reducing the number of bit data which is needed to save
the digital image. In this research the author uses Huffman method
to compress the image. Huffman method is one of the compression
methods which is lossless, it means that the decompression file
result from the compressed file is same as the original file.
Huffman method uses the principle of arranging frequency of
occurrence of each color symbols which often occurs in the image
and will be decoded in less number of bit.
In this research, Huffman method for compressing digital image
is implemented for file type such as png and jpg. The result of the
research shows that the size of file which is compressed is smaller
than the size of the original file where the perimeter used to
measure the work of this method is the ratio of the compression
result.
Based on the experiment, the result of image compression using
Huffman method can reach 80% file that can be used if the image
which is decompressed has various colors duplication.
Keywords: File Compression, Digital Image, Huffman Method.1.
PENDAHULUANTeknologi gadget atau lebih dikenal dengan nama
smartphone kini semakin canggih. Smartphone ini merupakan telepon
genggam yang mempunyai kemampuan tingkat tinggi, dengan fungsi yang
menyerupai komputer. Sebuah smartphone akan sukses jika mampu
menyajikan kemudahan akses fitur yang paling sering dimanfaatkan
pengguna. Selain jejaring sosial, pengguna smartphone juga perlu IM
(instant messaging), internet, dan multimedia. Internet memberikan
peran yang sangat penting untuk menjalin pertukaran informasi yang
cepat. Pertukaran informasi ini dapat berupa perpaduan teks, suara,
dan citra.
Dalam dunia internet, citra merupakan salah satu komponen yang
banyak digunakan karena citra dapat membuat informasi yang
disajikan menjadi lebih menarik dan lebih mudah dipahami. Namun
jika dibandingkan dengan teks, citra digital membutuhkan ruang
penyimpanan yang besar serta waktu pengiriman yang lama. Oleh sebab
itu diperlukan cara untuk memperkecil ukuran citra sehingga dapat
menghemat ruang penyimpanan dan mempercepat waktu
pengirimannya.
Solusi yang dapat diambil untuk menangani permasalahan tersebut
adalah dengan melakukan pemampatan atau kompresi terhadap citra
digital sebelum ditransmisikan. Terdapat dua tipe kompresi citra,
yaitu kompresi tipe lossless dan kompresi tipe lossy. Kompresi tipe
lossy adalah kompresi di mana terdapat data yang hilang selama
proses kompresi. Akibatnya kualitas citra yang dihasilkan jauh
lebih rendah daripada kualitas citra asli. Sementara itu, kompresi
tipe lossless tidak menghilangkan informasi setelah proses kompresi
terjadi, akibatnya kualitas citra hasil kompresi tidak menurun.
Salah satu contoh dari kompresi tipe lossless adalah Metode Huffman
[1].2. LANDASAN TEORI2.1 Kompresi Citra
Kompresi citra merupakan aplikasi kompresi data yang dilakukan
terhadap citra digital dengan tujuan untuk mengurangi redundansi
dari data-data yang terdapat dalam citra sehingga dapat disimpan
atau ditransmisikan secara efisien. Adapun teknik yang dapat
dilakukan dalam melakukan kompresi citra, yaitu [3]:
a. Lossless Compression
Lossless Compression merupakan kompresi citra di mana hasil
dekompresi dari citra yang terkompresi sama dengan citra aslinya,
tidak ada informasi yang hilang. Namun rasio kompresi citra dengan
menggunakan teknik ini sangat rendah. Contoh teknik kompresi
lossless adalah Run Length Encoding (RLE), Entropy Encoding
(Huffman), dan Adaptive Dictionary Based (LZW).b. Lossy
Compression
Lossy Compression adalah kompresi citra di mana hasil dekompresi
dari citra yang trerkompresi tidak sama dengan citra aslinya karena
ada informasi yang hilang, namun hal ini masih bisa ditolerir oleh
persepsi mata. Mata tidak dapat membedakan perubahan kecil pada
gambar. Teknik ini menghasilkan rasio kompresi yang lebih tinggi
daripada teknik kompresi lossless. Contohnya adalah Colo reduction,
chroma subsampling, dan transform coding, seperti transformasi
Fourier, Wavelet, dan lain-lain.
2.2 Metode Huffman
Metode Huffman merupakan salah satu teknik kompresi dengan cara
melakukan pengkodean dalam bentuk bit untuk mewakili data karakter.
Algoritma Huffman dikembangkan oleh David A Huffman saat di bangku
kuliah di Massachusetts Institute Technology. Algoritma ini
merupakan karya ilmiah dari Huffman yang ditulis pada tahun 1952
dengan judul A method for the Construction of Minimum Redundancy
Codes. Kode Huffman merupakan hasil pengembangan dari algoritma
yang sebelumnya dikembangkan oleh Claude Shannon dan R. M Fano pada
tahun 1950-an yang dikenal sebagai Shannon-Fano Coding. Perbedaan
algoritma ini terdapat dalam teknik pembentukan pohonnya. Algoritma
Huffman termasuk teknik kompresi lossless. Yang artinya bahwa
kompresi dilakukan tanpa terjadinya kehilangan informasi.
Metode pemampatan Huffman menggunakan prinsip bahwa nilai (atau
derajat) keabuan yang sering muncul di dalam citra akan dikodekan
dengan jumlah bit yang lebih sedikit sedangkan nilai keabuan yang
frekuensi kemunculannya sedikit dikodekan dengan jumlah bit yang
lebih panjang.
Misalkan sebuah sumber menghasilkan empat simbol berbeda a1, a2,
a3, a4 dengan probabilitas 0.4, 0.35, 0.2, 0.05. Membuat pohon
biner dari kiri ke kanan.
Gambar 2.1 Membuat Pohon Biner.Ambil dua buah simbol yang
memiliki probabilitas paling rendah, dijumlahkan menjadi
probabilitas dua simbol tadi, ulangi sampai hanya ada satu simbol
di kanan. Baca pohon terbalik dari kanan ke kiri sambil memberikan
kode biner berbeda pada tiap cabang.3. ANALISIS DAN PERANCANGAN3.1
AnalisisMetode Huffman termasuk teknik kompresi lossless, Yang
artinya bahwa kompresi dilakukan tanpa terjadinya kehilangan
informasi di mana pada proses dekompresi menghasilkan file yang
sebenarnya. Kelebihan algoritma ini terletak pada kebanyakan file
data mengandung redundansi. Huffman menemukan cara untuk
memanfaatkan redundansi pada suatu file sehingga mengecilkan ukuran
file tanpa kehilangan informasi yang terkandung di dalamnya.Secara
umum urutan langkah yang dilakukan untuk kompresi file citra dengan
algoritma Huffman adalah sebagai berikut:
1. Baca data citra masukan.
2. Tentukan frekuensi kemunculan masing-masing simbol pada
citra.
3. Urutkan secara menaik (ascending order) simbol citra
berdasarkan frekuensi kemunculannya (dari yang terkecil ke yang
terbesar). Masing-masing simbol direpresentasikan sebagai sebuah
simpul.
4. Gabung dua simpul bebas yang mempunyai frekuensi kemunculan
paling kecil pada kumpulan simpul. Kemudian dibuat simpul pertama
pada pohon Huffman (parent node) di mana simpul tersebut mempunyai
frekuensi yang merupakan hasil penjumlahan dari dua simpul
penyusunnya.
5. Masukkan simpul pertama (parent node) ke dalam kumpulan
simpul dan urutkan kembali berdasarkan frekuensi kemunculannya,
dari yang terkecil ke yang terbesar. Kemudian hapus simpul tersebut
dari kumpulan simpul.
6. Ulangi langkah c e sampai tersisa hanya satu pohon biner.
Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat,
maka semua pohon yang ada selalu terurut menaik berdasarkan
frekuensi.
7. Beri label setiap sisi pada pohon biner. Dengan cara sisi
kiri pohon diberi label 0 dan sisi kanan pohon diberi label 1.
8. Telusuri pohon biner dari akar ke daun. Barisan label-label
sisi dari akar ke daun menyatakan kode Huffman untuk simbol yang
bersesuaian.3.2 Perancangan Sistem Perancangan adalah tahap
mengimplementasikan hasil analisis yang dilakukan sebelumnya.
Perancangan digunakan untuk memberikan gambaran yang jelas dan
lengkap mengenai aplikasi yang akan dibangun, maka perlu dibuat
rancangan aplikasi berupa rancangan dalam bentuk UML (Unified
Modeling Language).
3.2.1 Use Case DiagramSecara umum, untuk sistem proses kompresi
dan dekompresi file citra yang akan dibangun dapat digambarkan
dalam use case berikut:
Gambar 3.1 Use Case Kompresi dan Dekompresi File Citra.
Keterangan use case:
a. User menginputkan file citra yang akan dikompresi.b. User
melakukan kompresi dari file citra yang telah diinputkan.c. User
menginputkan file .huff (file hasil kompresi) yang akan
didekompresi.d. User melakukan dekompresi dari file .huff yang
telah diinputkan.3.2.2 Activity Diagram3.2.2.1 Activity Diagram
Input File CitraDiagram activity untuk use case input file citra
dapat dilihat pada gambar 3.2.
Gambar 3.2 Diagram Activity Untuk Use Case Input File Citra
3.2.2.2 Activity Diagram Kompresi FileDiagram activity untuk use
case kompresi file dapat dilihat pada gambar 3.3.
Gambar 3.3 Diagram Activity Untuk Use Case Kompresi File
3.2.2.3 Activity Diagram Input File .HuffDiagram activity untuk
use case input file .huff dapat dilihat pada gambar 3.4.
Gambar 3.4 Diagram Activity Untuk Use Case Input File
.Huff3.2.2.4 Activity Diagram Kompresi FileDiagram activity untuk
use case dekompresi file dapat dilihat pada gambar 3.5.
Gambar 3.5 Diagram Activity Untuk Use Case Dekompresi File4.
HASIL DAN PEMBAHASAN4.1 Tab KompresiTampilan tab kompresi dapat
dilihat pada gambar 4.1.
Gambar 4.1 Tab Kompresi.
Keterangan:
1. Tombol Pilih Gambar adalah tombol di mana proses penginputan
gambar dilakukan.
2. Tombol adalah tombol refresh yang digunakan untuk mengetahui
informasi gambar yang telah diinputkan.3. Tombol Lakukan Kompresi
adalah tombol di mana proses kompresi gambar dilakukan.4.2 Tab
Dekompresi
Tampilan tab dekompresi dapat dilihat pada gambar 4.2.
Gambar 4.2 Tab Dekompresi.
Keterangan:
1. Tombol Pilih .Huff adalah tombol di mana proses penginputan
file hasil kompresi, yaitu file .huff dilakukan.
2. Tombol Lakukan Dekompresi adalah tombol di mana proses
dekompresi file .huff dilakukan.4.3 Hasil PercobaanUntuk mengetahui
seberapa besar kemampuan metode Huffman dalam mengkompresi citra,
penulis melakukan model uji coba dengan menggunakan beberapa citra
yang berukuran sama tetapi jumlah warna yang ada dalam citra
berbeda satu sama lain. Tabel berikut ini memperlihatkan hasil
kompresi menggunakan metode Huffman.
Tabel 4.1 Hasil Kompresi Citra
No.Nama CitraResolusi (W x H)Ukuran Citra Asli (byte)Hasil
Kompresi (byte)Rasio Kompresi
1Test1.png8x82.95189530,33%
2Test2.png8x82.9691.00833,95%
3Test2.jpg8x812.26610248.34%
4Test3.png8x82.95181627,65%
5Test3.jpg8x812.6619117,19%
Tabel 4.1 di atas merupakan hasil uji perbandingan kompresi
citra dengan jumlah warna yang sama dan format citra yang berbeda,
yaitu JPG dan PNG. Dari hasil tersebut dapat disimpulkan bahwa
hasil kompresi citra pada format JPG lebih baik daripada hasil
kompresi citra pada format PNG, dimana kedua file citra tersebut
memiliki jumlah warna yang sama.
Gambar 4.3 Ukuran Gambar Test1.png Sebelum Di Kompresi.
Gambar 4.4 Ukuran Gambar Test1.png Setelah Dikompresi.
Gambar 4.5 Ukuran Gambar Test2.png Sebelum Dikompresi.
Gambar 4.6 Ukuran Gambar Test2.png Setelah Di Kompresi.
Gambar 4.7 Ukuran Gambar Test2.jpg Sebelum Di Kompresi.
Gambar 4.8 Ukuran Gambar Test2.jpg Setelah Di Kompresi.
Gambar 4.9 Ukuran Gambar Test3.png Sebelum Di Kompresi.
Gambar 4.10 Ukuran Gambar Test3.png Setelah Di Kompresi.
Gambar 4.11 Ukuran Gambar Test3.jpg Sebelum Di Kompresi.
Gambar 4.12 Ukuran Gambar Test3.jpg Setelah Di Kompresi.5.
KESIMPULAN DAN SARAN5.1Kesimpulan
Berdasarkan pembahasan pada bab-bab sebelumnya dan berdasarkan
hasil dari perancangan dan implementasi yang telah dilakukan dapat
ditarik kesimpulan:
1. Aplikasi kompresi dan dekompresi citra digital menggunakan
metode Huffman dapat diimplementasikan menggunakan bahasa
pemrograman java.
2. File hasil kompresi dapat di dekompresi kembali menjadi file
citra.3. Citra sebelum dan sesudah dekompresi tidak mengalami
perubahan.4. File hasil kompresi berukuran lebih kecil dari citra
semula.
5.2 Saran
Dalam proses dekompresi dengan metode Huffman ini masih terdapat
beberapa aspek yang dapat dikembangkan lebih lanjut. Beberapa
diantaranya yaitu:
1. Citra digital yang dipakai juga dapat ditambah lagi tidak
mencakup citra .jpg atau .png saja. Misalnya menambah citra .bmp,
.gif dan lain sebagainya.
2. Bagaimana menulis kode program yang baik (beauty code) dan
program yang bersih (cleaning code) dengan struktur data dan
orientasi objek.
DAFTAR PUSTAKASari, I.D.R. dan Munawaroh, N. (2008).
Implementasi Metode Huffman untuk Kompresi Ukuran File Citra Bitmap
8 Bit menggunakan Borland Delphi 6.0, Jurnal Ilmiah Teknologi dan
Informasi ASIA. 3 (1), 5-9.
Lestari, S. dan Dapi, R. (2010). Perancangan Perangkat Lunak
Sistem Informasi Kepangkatan Pegawai Perumnas Regional IV Bandung.
Simposium Nasional RAPI IX 2010. ISSN: 1412-9612.
Sutoyo, T. et. al. (2009). Teori Pengolahan Citra Digital.
Yogyakarta. Andi.Setyawan S, I. (2011). Aplikasi Kompresi Citra
Menggunakan Kode HUFFMAN Berbasis Java.
Tama, P.Y. (2013). Perbandingan Algoritma Huffman, LZW, dan BWT
dalam Kompresi Pesan Tersembunyi pada SMS berbasis Android.
Wijanarko, L. (2010). Cara Menghitung Ukuran File Gambar dan
Foto Digital.Putra Darma. (2009). Pengolahan Citra Digital.
Yogyakarta. Andi.
Putra, S.D.P. (2013). Analisis Perbandingan Metode LZW dan
Huffman dalam Kompresi File Teks. [Online]. Tersedia:
http://www.slideshare.net/dewa89s/stmik-stikom-indonesia-denpasar-dewa-purnama-sidi-putra.
[10 Maret 2014].Mps. (2013). Huffmans Algorithm. [Online].
Tersedia: http://planetmath.org/huffmansalgorithm. [10 Maret
2014].