BAB III METODOLOGI PENELITIAN 3.1 Tempat dan Waktu Penelitian Penelitian ini dilakukan di Jurusan Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Lampung. Waktu penelitian dilakukan selama semester ganjil dan semester genap tahun ajaran 2011-2012. 3.2 Algoritma Penelitian Pada penelitian ini digunakan dua metode kompresi yaitu algoritma kompresi Huffman dan Run Length. 3.2.1 Algoritma Huffman Tahapan proses kompresi algoritma Huffman : 1) Hitung banyaknya jenis karakter dan jumlah dari masing-masing karakter yang terdapat dalam sebuah citra. 2) Sorting nilai-nilai grayscale berdasarkan frekuensi kemunculannya. 3) Gabung dua buah pohon yang mempunyai frekuensi kemunculan terkecil dan urutkan kembali.
25 4) Ulangi langkah (3) sampai tersisa satu pohon biner. 5) Beri label pohon biner tersebut dengan cara sisi kiri pohon diberi label 0 dan sisi kanan pohon diberi label 1. 5) Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar ke daun adalah kode Huffman. (Sutoyo, 2009). Dari tahapan proses algoritma kompresi di atas, maka algoritma Huffman dapat digambarkan pada Gambar 3.1 dalam bentuk flowchart.
26 Start Input file Baca file Penghitungan frekuensi kemunculan berdasarkan jenis karakter dan jumlahnya Sorting nilai-nilai grayscale berdasarkan frekuensi kemunculannya Gabung dua buah pohon yang mempunyai frekuensi kemunculan terkecil dan urutkan Tidak Sisa 1 pohon biner Ya Beri label pohon biner 0 1 Telusuri pohon biner dari akar ke daun Output file End Gambar 3.1 Tahapan Proses Kompresi Algoritma Huffman
27 Contoh kasus penyelesaian kompresi dengan menggunakan algoritma Huffman, objek citra 10 x 10 pixel (n) dengan kedalaman warna 3 bit : Tabel 3.1 Tabel Daftar Frekuensi Kemunculan Karakter dan Probabilitasnya Karakter Banyak Frekuensi Kemunculan (n k ) Probabilitas Kemunculan = n k /n 0 30 0.3 1 3 0.03 2 5 0.05 3 7 0.07 4 45 0.45 5 10 0.1 Mengurutkan nilai-nilai berdasarkan frekuensi kemunculannya : 1 = 0,03 2 = 0,05 3 = 0,07 5 = 0,1 0 = 0,3 4 = 0,45 Menggabungkan dua pohon yang memiliki nilai terkecil : 1 = 0,03 2 = 0,05 3 = 0,07 5 = 0,1 0 = 0,3 4 = 0,45 1,2 = 0,08 Ulangi hingga tersisa satu pohon biner. Mengurutkan nilai-nilai berdasarkan kemunculan frekuensi : 3 = 0,07 1,2 = 0,08 5 = 0,1 0 = 0,3 4 = 0,45 1 = 0,03 2 = 0,05
28 Menggabungkan dua pohon yang memiliki nilai terkecil : 3 = 0,07 1,2 = 0,08 5 = 0,1 0 = 0,3 4 = 0,45 1,2,3 = 0,15 Mengurutkan nilai-nilai berdasarkan kemunculan frekuensi : 5 = 0,1 1,2,3 = 0,15 0 = 0,3 4 = 0,45 3 = 0,07 1,2 = 0,08 1 = 0,03 2 = 0,05 Menggabungkan dua pohon yang memiliki nilai terkecil : 5 = 0,1 1,2,3 = 0,15 0 = 0,3 4 = 0,45 1,2,3,5 = 0,25 Mengurutkan nilai-nilai berdasarkan kemunculan frekuensi : 1,2,3,5 = 0,25 0 = 0,3 4 = 0,45 5 = 0,1 1,2,3 = 0,15 3 = 0,07 1,2 = 0,08 1 = 0,03 2 = 0,05
29 Menggabungkan dua pohon yang memiliki nilai terkecil : 1,2,3,5 = 0,25 0 = 0,3 4 = 0,45 1,2,3,5,0 = 0,55 Mengurutkan nilai-nilai berdasarkan kemunculan frekuensi : 1,2,3,5,0, = 0,55 4 = 0,45 1,2,3,5 = 0,25 0 = 0,3 5 = 0,1 1,2,3 = 0,15 3 = 0,07 1,2 = 0,08 1 = 0,03 2 = 0,05 Menggabungkan dua pohon yang memiliki nilai terkecil : 1,2,3,5,0, = 0,55 4 = 0,45 1,2,3,5,0,4 = 1
30 Tersisa satu pohon biner, memberi label pohon biner tersebut dengan cara sisi kiri pohon diberi label 0 dan sisi kanan pohon diberi label 1 : 1,2,3,5,0,4 = 1 1 0 4 = 0,45 1,2,3,5,0, = 0,55 1 0 1,2,3,5 = 0,25 0 = 0,3 1 5 = 0,1 0 1,2,3 = 0,15 1 3 = 0,07 0 1,2 = 0,08 1 0 1 = 0,03 2 = 0,05 Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar ke daun adalah kode Huffman : Tabel 3.2 Tabel Kode Huffman Karakter Banyak Frekuensi Kemunculan (n k ) Probabilitas Kemunculan = n k /n Kode Huffman Jumlah bit 0 30 0.3 00 2 bit 1 3 0.03 01001 5 bit 2 5 0.05 01000 5 bit 3 7 0.07 010 3 bit 4 45 0.45 1 1 bit 5 10 0.1 011 3 bit Ukuran citra sebelum kompresi (kedalaman 3 bit) adalah : = 10 x 10 x 3 bit = 300 bit
31 Ukuran citra setelah kompresi menggunakan algoritma Huffman adalah : = (30 x 2 bit) + (3 x 5 bit) + (5 x 5 bit) + (7 x 3 bit) + (45 x 1 bit) + (10 x 3 bit) = 60 + 15 + 25 + 21 + 45 + 30 =196 bit 3.2.2 Algoritma Run Length Tahapan proses kompresi algoritma Run Length : 1) Nyatakan seluruh baris citra menjadi sebuah baris run. 2) Telusuri setiap pixel citra. 3) Hitung run length untuk setiap derajat keabuan yang berurutan. 4) Kompres setiap deret pixel dengan intensitas yang sama menjadi sepasang nilai yang masing-masing mewakili banyaknya nilai pixel yang sama dan kemudian diikuti dengan nilai pixel-nya. Dari tahapan proses algoritma kompresi, maka algoritma Run Length dapat digambarkan dalam bentuk flowchart, ditunjukkan pada Gambar 3.2.
32 Start Input file Baca file Telusuri setiap pixel citra Hitung run length untuk setiap derajat keabuan yang berurutan Kompres setiap deret pixel dengan intensitas yang sama Output file End Gambar 3.2 Tahapan Proses Kompresi Algoritma Run Length Contoh kasus penyelesaian kompresi dengan menggunakan algoritma Run Length, objek citra 10 x 10 pixel (n) dengan kedalaman warna 3 bit, berikut ini adalah contoh citranya : 0 0 0 0 0 2 2 4 4 4 5 5 4 4 4 4 3 3 3 0 4 4 0 0 4 4 0 0 4 1 4 4 4 4 4 4 4 5 3 0 3 3 1 1 4 4 4 4 0 0 5 5 5 5 5 0 4 0 0 0 4 4 4 5 5 0 0 4 4 4 4 4 4 0 4 4 4 3 4 4 0 0 0 2 2 4 4 4 0 0 4 4 4 4 0 0 2 0 0 0
33 Kompresi citra dengan Run Length : Citra belum terkompresi Hasil kompresi 0 0 0 0 0 2 2 4 4 4 (0,5) (2,2) (4,3) 5 5 4 4 4 4 3 3 3 0 (5,2) (4,4) (3,3) (0,1) 4 4 0 0 4 4 0 0 4 1 (4,2) (0,2) (4,2) (0,2) (4,1) (1,1) 4 4 4 4 4 4 4 5 3 0 (4,7) (5,1) (3,1) (0,1) 3 3 1 1 4 4 4 4 0 0 (3,2) (1,2) (4,4) (0,2) 5 5 5 5 5 0 4 0 0 0 (5,5) (0,1) (4,1) (0,3) 4 4 4 5 5 0 0 4 4 4 (4,3) (5,2) (0,2) (4,3) 4 4 4 0 4 4 4 3 4 4 (4,3) (0,1) (4,3) (3,1) (4,2) 0 0 0 2 2 4 4 4 0 0 (0,3) (2,2) (4,3) (0,2) 4 4 4 4 0 0 2 0 0 0 (4,4) (0,2) (2,1) (0,3) Hasil pengodean : 0 5 2 2 4 3 5 2 4 4 3 3 0 1 4 2 0 2 4 2 0 2 4 1 1 1 4 7 5 1 3 1 0 1 3 2 1 2 4 4 0 2 5 5 0 1 4 1 0 3 4 3 5 2 0 2 4 3 4 3 0 1 4 3 3 1 4 2 0 3 2 2 4 3 0 2 4 4 0 2 2 1 0 3 Semuanya = 84 pixel Ukuran citra sebelum dikompres Ukuran citra setelah dikompres : 10 x 10 x 3 = 300 bit : 84 x 3 = 252 bit