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

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 Universitas Sumatera Utara 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. 6. Ulangi lagkah 1-5 sampai semua simbol habis dibangkitkan. Universitas Sumatera Utara 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. 3 6 6 7 14 Universitas Sumatera Utara 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 Universitas Sumatera Utara 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 1 1 1 1 13 9 3 14 6 6 7 22 Universitas Sumatera Utara 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,62536 x 100 = 70,486 .

2.9 Algoritma Shannon-Fano