Pemampatan Huffman pcd1
Pemampatan Huffman pcd1
OLEH :
WIDIASTUTI
08.04.1.1.1.00016
Perkembangan teknologi informasi yang pesat telah memberi peran yang sangat
penting untuk menjalin pertukaran informasi yang cepat. Kecepatan pengiriman informasi
dalam bentuk perpaduan teks, suara dan gambar secara real-time akan menjadi bagian utama
dalam pertukaran informasi masa mendatang. Hingga saat ini pengiriman informasi secara
real-time masih mengalami kendala. Di antaranya adalah besarnya jumlah data yang harus
dikirim melampaui kecepatan transmisi yang dimiliki oleh perangkat keras yang ada,
sehingga masih terdapat delay time yang relatif besar.
Salah satu solusi untuk mempersingkat waktu dan memperkecil biaya pengiriman dari
masalah di atas adalah dengan melakukan pemampatan data teks, suara dan citra sebelum
ditransmisikan dan kemudian penerima akan merekonstruksinya kembali menjadi data
aslinya. Beberapa metode kompresi telah dikembangkan seperti : metode Huffman digunakan
untuk mengkompres data teks, metode block coding, wavelet, encoding digunakan untuk
kompresi signal suara atau citra.
Yang menjadi permasalahan yang diteliti dan diuraikan dalam makalah ini adalah
menentukan dan mengembangkan suatu metode yang dapat berfungsi baik untuk
mengkompres teks, suara maupun citra. Makalah ini menguraikan aplikasi metode Huffman
untuk kompresi data citra. Permasalahan utama yang akan dibahas dalam makalah ini adalah :
- Apakah metode Huffman dapat diterapkan untuk mengkompres data citra ?
- Seberapa besar rasio kompresi yang dapat dihasilkan ?
- Apakah metode Huffman ini dapat merekonstruksi kembali data citra sesuai
dengan data aslinya ?
Untuk menjawab permasalahan di atas maka Penulis melakukan eksperimen, dengan
membuat program kompresi citra menggunakan algoritma Huffman. Untuk menentukan rasio
kompresi, dilakukan melalui perbandingan langsung antara besar data file citra asli dengan
besar data file hasil kompresi. Sedang untuk mengukur kualitas citra hasil dekompresi atau
rekonstruksi digunakan metode Root Mean Square Error dan Signal-to-Noise Ratio.
B. METODE KOMPRESI HUFFMAN
Metode Huffman merupakan salah satu teknik kompresi dengan cara melakukan
pengkodean dalam bentuk bit untuk mewakili data karakter. Cara kerja atau algoritma metode
ini adalah sebagai berikut :
a. Menghitung banyaknya jenis karakter dan jumlah dari masing-masing karakter yang
terdapat dalam sebuah file.
b. Menyusun setiap jenis karakter dengan urutan jenis karakter yang jumlahnya paling sedikit
ke yang jumlahnya paling banyak.
c. Membuat pohon biner berdasarkan urutan karakter dari yang jumlahnya terkecil ke yang
terbesar, dan memberi kode untuk tiap karakter.
d. Mengganti data yang ada dengan kode bit berdasarkan pohon biner.
e. Menyimpan jumlah bit untuk kode bit yang terbesar, jenis karakter yang diurutkan
dari frekuensi keluarnya terbesar ke terkecil beserta data yang sudah berubah
menjadi kode bit sebagai data hasil kompresi.
Contoh teknik kompresi dengan menggunakan metode Huffman pada file teks.
Misalkan sebuah file teks yang isinya “AAAABBBCCCCCD”. File ini memiliki ukuran 13
byte atau satu karakter sama dengan 1 byte. Berdasarkan pada cara kerja di atas, dapat
dilakukan kompresi sebagai berikut :
a. Mencatat karakter yang ada dan jumlah tiap karakter.
A = 4, B = 3, C = 12, D = 1
b. Mengurutkan karakter dari yang jumlahnya paling sedikit ke yang paling banyak
yaitu : D, B, A, C
c. Membuat pohon biner berdasarkan urutan karakter yang memiliki frekuensi
terkecil hingga yang paling besar.
d. Mengganti data yang ada dengan kode bit berdasarkan pohon biner yang dibuat.
Penggantian karakter menjadi kode biner, dilihat dari node yang paling atas atau disebut
node akar :
A = 01, B = 001, C = 1, D = 000.
Selanjutnya berdasarkan pada kode biner masing-masing karakter ini, semua karakter
dalam file dapat diganti menjadi :
01010101001001001111110001111111
Karena angka 0 dan angka 1 mewakili 1 bit, sehingga data bit di atas terdiri dari 32 bit atau
4 byte (1 byte = 8 bit)
e. Menyimpan kode bit dari karakter yang frekuensinya terbesar, jenis karakter yang terdapat
di dalam file dan data file teks yang sudah dikodekan. Cara menyimpan data jenis karakter
adalah dengan mengurutkan data jenis karakter dari yang frekuensinya paling banyak
sampai ke yang paling sedikit, menjadi : [C,A,B,D]
File teks di atas, setelah mengalami kompresi, memiliki ukuran sebesar 1 + 4 + 4 = 9 byte.
Jumlah ini terdiri dari 1 byte kode karakter yang memiliki frekuensi terendah, 4 jenis
karakter = 4 byte dan 4 byte data kode semua karakter.
Bila matriks ini mewakili sebuah citra gray-level berukuran 5x3 pixel, maka nilai elemen
matriks (pixel) menyatakan tingkat keabuan citra. Tetapi bila matriks ini mewakili sebuah
citra berwarna, maka nilai elemen matriks menyatakan warna. Setiap pixel dalam sebuah citra
yang dikode dalam 8 bit, berarti citra tersebut memiliki 256 tingkat keabuan atau memiliki
256 warna.
Dengan mengambil contoh citra di atas dan dengan menggunakan metode Huffman,
dikembangkan sebuah algoritma untuk mengkompres data citra sebagai berikut :
a. Buat data citra yang berupa matriks tersebut menjadi vektor, sehingga didapat
vektor [100,100,100,100,100,100,200,200,200,100,250,100,200,100,250]
Besarnya data citra = 15 byte
b. Baca vektor tersebut dan tentukan nilai warna yang ada serta frekuensi
munculnya. Hasilnya adalah 100 = 9, 200 = 4, dan 250 = 2
c. Urutkan warna dari yang frekuensinya terkecil ke yang frekuensinya terbesar.
250,200,100
d. Membuat pohon biner berdasarkan urutan warna.
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.
Contoh soal :
Terdapat citra digital berukuran 64 x 64 dengan 8 derajat keabuan (k) dan jumlah seluruh
pixel (n) = 64 x 64 = 4096
k nk P(k) = nk/n
0 790 0.19
1 1023 0.25
2 850 0.21
3 656 0.16
4 329 0.08
5 245 0.06
6 122 0.03
7 81 0.02
Pohon Huffman
1.
2.
3.
4.
5.
6.
7.
8.
Sehingga dari pohon Huffman tersebut kita memperoleh kode untuk setiap derajat keabuan
sebagai berikut :
Hasil
k Code bit nk
Pemampatan
0 00 2 bit 790 1580
1 10 2 bit 1023 2046
2 01 2 bit 850 1700
3 110 3 bit 656 1968
4 1110 4 bit 329 1316
5 11111 5 bit 245 1225
6 111101 6 bit 122 732
7 111100 6 bit 81 486
Ukuran citra setelah dimampatkan 11053 bit
11053
Nisbah pemampatan = (100 % - 100 % ) = 10 %
12288
Artinya 10 % citra semula telah dimampatkan.
CONTOH STUDI KASUS II METODE PEMAMPATAN HUFFMAN
Cr adalah compretion ratio, N.M adalah resolusi citra (N = Tinggi citra dan M = Lebar citra),
m = jumlah bit yang digunakan untuk setiap pixel dan L = jumlah total bit hasil kompresi.
Namun, untuk mudahnya, penulis menggunakan rumus rasio kompresi sebagai berikut :
Pada tabel 1 tampak bahwa semakin banyak jumlah warna yang terdapat dalam
sebuah citra, maka rasio kompresi semakin mengecil. Hal ini sangat sesuai dengan bentuk
pohon biner Huffman. Semakin banyak jumlah warna yang muncul dalam sebuah citra, maka
pohon biner yang terbentuk memiliki cabang-cabang yang jauh masuk ke dalam. Hal ini
dapat meyebabkan sejumlah pixel akan dikode dengan jumlah bit yang besar. Misalnya pada
tabel 1, sebuah citra yang memiliki 31 macam warna di dalamnya, memiliki rasio kompresi
0,99. Ini berarti bahwa bukannya data citra terkompres tetapi justru memperbanyak jumlah
data. Hal ini dapat terjadi karena pohon biner yang terbentuk memiliki 30 cabang dan dengan
demikian pixel-pixel yang dikode akan memiliki jumlah bit yang bervariasi antara 1 sampai
dengan 30 bit per pixelnya. Sementara pixel aslinya dikode dalam 8 bit.
Pada tabel 2, dapat dilihat bahwa resolusi citra dengan warna yang sama tidak banyak
mempengaruhi nilai rasio kompresi. Dengan demikian dapat dikatakan bahwa metode
Huffman tidak dapat digunakan untuk mengkompres citra yang memiliki jumlah warna lebih
besar dari pada 30 warna.
Melihat tabel di atas maka dapat katakan bahwa dengan mengkompres kembali kode
data citra, nilai rasio kompresi meningkat. Namun algoritma yang dijalankan hingga iterasi ke
dua ini hanya memberikan nila rasio kompresi di atas 1 untuk jumlah warna di bawah 100
warna. Kemungkinan kompresi dapat dilanjutka pada iterasi berikutnya, namun perlu
diperhitungkan waktu kompresi dan dekompresi agar kedua operasi tersebut masih dalam
hitungan waktu untuk real-time. Gambar berikut ini memperlihatkan hasil algoritma yang
dikembangkan di atas untuk citra ril. Gambar(2) memperlihatkan gambar berwarna asli yang
dikode dalam 8 bit, gambar(3) adalah hasil dekompresi untuk dua kali iterasi. Gambar hasil
dekompresi, baik untuk satu kali maupun dua kali iterasi, menghasilkan kualitas citra yang
sama dengan aslinya.
Gambar 3. Citra Dekompresi untuk Dua Kali Iterasi (Rasio kompresi = 2,104)
DAFTAR PUSTAKA
Rafael C. Gonzales dan Richard E. Woods, Digital Image Processing, Edisi 2, Prentice Hall,
2002
Rafael C. Gonzales, Richard E. Woods dan Steven L. Eddins, Digital Image Processing using
Mathlab, Prentice Hall, 2003
http://one.indoskripsi.com