BAB 3
ANALISIS DAN PERANCANGAN SISTEM
Dalam bab ini akan membahas tentang analisis dan perancangan sistem analisis perbandingan algoritma Huffman dan Run Length Encoding pada kompresi file audio,
membahas alur kerja algoritma Huffman dan Run Length Encoding begitu juga perancangan interface aplikasi.
3.1. Analisa Sistem
Analisa dilakukan untuk memberikan gambaran secara umum terhadap implementasi yang akan dibuat. Hasil analisa akan menjadi dasar untuk melakukan perancangan
atau desain program sesuai dengan rancangan sistem. Yang menjadi tujuan penelitian ini adalah untuk mengkompresi dan juga
mendekompresi file audio menggunakan Algoritma Huffman dan Run Length Encoding, dan bagaimana hasil perbandingan antara kedua algoritma tersebut. Dengan
penelitian ini user bisa mengalami manfaatnya khususnya penggunaan file audio .mp3 dan .wav.
3.2. Analisa Proses
Dalam kompresi dan dekompresi file audio seperti dalam penelitian ini menggunakan algoritma Huffman dan Run Length Encoding. Untuk mengetahui bagaimana langkah-
langkah kedua algoritma tersebut, berikut adalah penjelasannya.
Universitas Sumatera Utara
3.2.1. Analisa Kompresi Huffman Kode Huffman adalah angka-angka biner yang akan digunakan untuk mengkodekan
setiap karakter dalam file. Pohon Huffman Huffman Tree adalah karakter-karakter yang akan direpresentasikan dalam biner, dipisahkan ke dalam cabang pohon biner
dan diberi frekuensinya. Cabang sebelah kiri diberi bit 0 dan bit kanan diberi angka 1 sebagai identitas Fardisa dan Budiono, 2011. Jadi, bit ini akan dibaca dari akar
sampai ke daun sehingga terbentuk angka biner sebagai identitas setiap karakter. Adapun langkah-langkah untuk membentuk pohon Huffman adalah sebagai
berikut.
1. Baca semua data untuk menentukan frekuensi kemunculan masing-masing
simbol pada sampel file audio. 2.
Urutkan simbol sampel audio berdasarkan frekuensi kemunculannya dari yang terkecil ke yang terbesar.
3. Gabung dua simpul bebas yang mempunyai frekuensi kemunculan paling
kecil pada kumpulan simpul. Kemudian dibuat simpul pertama pada pohon Huffman dimana simpul tersebut mempunyai frekuensi yang merupakan
hasil penjumlahan dari dua simpul penyusunnya. 4.
Masukkan simpul pertama ke dalam kumpulan simpul dan urutkan kembali berdasarkan frekuensi kemunculannya, dari yang terkecil ke yang terbesar.
5. Ulangi langkah 2-4 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.
6. Beri label setiap sisi pada pohon biner dengan cara sisi kiri pohon diberi label 0
dan sisi kanan pohon diberi label 1. 7.
Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar kedaun menyatakan kode Huffman untuk simbol yang bersesuaian.
Berikut ini adalah contoh untuk memperjelas langkah-langkah membentuk pohon Huffman. Misalnya ada sampel audio seperti berikut.
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2
Universitas Sumatera Utara
C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4
E5 E5 Dari data diatas berikut adalah langkah-langkah sampai terbentuk pohon
Huffman. a. Menentukan frekuensi atau banyaknya sampel audio yang muncul, misalnya
frekuensi dari setiap sampel audio seperti pada tabel 3.1 berikut.
Tabel 3.1. Frekuensi sampel audio Sampel audio
Frekuensi
A1 10
A2 8
C3 6
D4 5
E5 2
b. Setelah frekuensi dari sampel audio diketahui maka urutkan data dengan frekuensi terkecil ke terbesar, dengan masing-masing sampel sebagai simpul seperti pada
gambar 3.1 berikut.
Gambar 3.1. Urutan sampel secara ascending
c. Dari gambar 3.1 sudah menunjukan sampel secara berurutan sesuai dengan frekuensi terkecil ke terbesar. Maka langkah selanjutnya adalah penggabungan dua
buah simpul yang mempunyai frekuensi terkecil, seperti pada gambar 3.2 berikut.
Gambar 3.2. Penggabungan dua buah simpul
Universitas Sumatera Utara
d. Dari gambar 3.2 sudah menunjukan penggabungan dua buah simpul dengan frekuensi terkecil. Maka langkah selanjutnya adalah mengurutkan kembali seperti
pada gambar 3.1 secara ascending lalu penggabungan dua buah simpul yang mempunyai frekuensi terkecil sedangkan gambar 3.2 tidak perlu diperbaharui lagi,
maka seperti pada gambar 3.3 berikut.
Gambar 3.3. Pemindahan dua buah simpul urutan sampel secara ascending
e. Ulangi langkah-langkah sebelumnya sampai hanya ada satu tersisa pohon biner. Seperti pada gambar 3.4 berikut adalah penggabungan dua buah simpul terkecil.
Gambar 3.4. Penggabungan dua buah simpul
Karena ketiga simpul masih belum sesuai dengan frekunesi dari yang terkecil ke yang terbesar, maka dilakukan pemindahan sehingga kembali ascending, seperti pada
gambar 3.5 berikut.
Gambar 3.5. Pemindahan dua buah simpul urutan sampel secara ascending
Universitas Sumatera Utara
f. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, kemudian diurutkan kembali seperti pada gambar
3.6 berikut.
Gambar 3.6. Penggabungan dua buah simpul
g. Langkah selanjutnya adalah menggabungkan dua buah simpul yang mempunyai frekuensi kemunculan terkecil, sehingga hanya memiliki satu simpul seperti pada
gambar 3.7 berikut.
Gambar 3.7. Penggabungan dua buah simpul
h. Maka langkah akhir pembentukan pohon Huffman adalah memberi bit 0 di sebelah kiri dan bit 1 di sebelah kanan setiap akar ke daun, seperti pada gambar 3.8 berikut.
Universitas Sumatera Utara
Gambar 3.8. Pemberian bit 0 dan bit 1
Setelah melihat hasil dari pohon Huffman, dapat membuat sebuah tabel yang berisi identitas dari tiap-tiap sampel audio berdasarkan biner. Dalam proses encoding
ini, prosesnya adalah baca urutan biner tiap sampel sampai edge dari pohon yang berisi sampel yang dicari. Misalnya, sampel yang dicari adalah A1, maka akan dibaca
urutan sampel dari akar sampai ke A1 dengan kode biner 10. Maka gantikan sampel audio sebelum di kompresi atau encoding menjadi kode biner seperti berikut.
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 10 10 10 10 10 10 10 10 10 10
A2 A2 A2 A2 A2 A2 A2 A2 111 111 111 111 111 111 111 111
C3 C3 C3 C3 C3 C3 110 110 110 110 110 110
D4 D4 D4 D4 D4 0101010101
E5 E5 0000
Universitas Sumatera Utara
Demikian untuk seluruh sampel-sampel seterusnya, seperti pada tabel 3.2 berikut.
Tabel 3.2. Hasil Kompresi Huffman Sampel audio
Frekuensi Kode Huffman Dalam Binary
A1 10
10 A2
8 111
C3 6
110 D4
5 01
E5 2
00
Total 31 byte
12 bit
Sebelum dilakukan kompresi maka ukuran data file audio adalah 31 byte, diperoleh dari total frekuensi kemunculan sampel dikalikan dengan 1 byte.
= + + + +
+ … + Dimana:
T = Total Frekuensi f = Frekuensi setiap sampel
Cara menghitung Total frekuensi adalah: = + + +
+ = 10 + 8 + 6 + 5 + 2
= 31
Sedangkan ukuran audio setelah dikompresi menggunakan algoritma Huffman adalah sebagai berikut.
= ℎ + ℎ
+ ℎ + ℎ
+ ℎ + … + ℎ
Dimana: H = Total Kode Huffman bit
h = bit length bit f = Frekuensi setiap sampel
Universitas Sumatera Utara
Cara menghitung jumlah bit hasil kompresi algoritma Huffman. = ℎ
+ ℎ + ℎ
+ ℎ + ℎ
+ … + ℎ = 2
10 + 3 8 + 3
6 + 2 5 + 2
2 = 76
= 9.5
Jadi sampel file audio yang setelah dilakukan kompresi atau decoding adalah 31 byte menjadi 9.5 byte.
3.2.2. Analisa Dekompresi Huffman Decoding adalah kebalikan dari kompresi atau encoding, yaitu penyusunan kembali
sampel audio yang telah dikompresi menjadi sampel semula. Sebelum melakukan dekompresi file, maka harus dibentuk kembali pohon Huffman berdasarkan informasi
yang disimpan dengan file yang dikompresi. Proses dekompresi dapat dilakukan dengan dua cara, yang pertama adalah dengan pohon Huffman dan yang kedua menggunakan
tabel kode Huffman. Seperti pada contoh kompresi Huffman atau encoding sebelumnya. Untuk melakukan dekompresi atau decoding dapat dilakukan dengan
pohon Huffman sebagai berikut.
1. Proses pembacaan simpul dimulai dari akar pohon Huffman, dengan membaca
sebuah bit. 2.
Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.
3. Lakukan pengulangan langkah 1 dan 2 sampai cabang yang bersesuaian ketemu
setiap bagian simpul mana sampel itu berada. 4.
Lakukan pengulangan langkah 1 sampai seluruh sampel audio tersebut di dekompresi.
Sebagai contoh akan men-decoding biner yang bernilai 110. Maka pohon Huffman-nya adalah seperti gambar 3.9 berikut.
Universitas Sumatera Utara
Gambar 3.9. Proses Decoding dengan pohon Huffman
Pada gambar 3.9 dimulai dari akar sampai sampel yang ingin ditemukan adalah C3 dengan kode Huffman 110. Cara yang kedua adalah dengan menggunakan
tabel kode Huffman, seperti pada tabel 3.2, dengan menggunakan tabel 3.2 kode biner sebagai masukan adalah sebagai berikut.
10 10 10 10 10 10 10 10 10 10 111 111 111 111 111 111 111 111
110 110 110 110 110 110 01 01 01 01 01
00 00
Saat membaca kode biner pertama adalah dari 1, karena bit yang dibaca adalah 1 maka akan dilakukan penelusuran terhadap pohon Huffman ke arah
simpul sebelah kanan terlebih dahulu. Kemudian dilakukan penelusuran kembali jika 1 belum mewakili sampel maka akan dibaca bit berikutnya sehingga bit yang dibaca
menjadi 10. Dan karena 10 mewakili simbol data yang bersesuaian dan berakhir pada daun maka dinyatakan bahwa 10 mewakili simbol A1.
Universitas Sumatera Utara
Setelah itu dibaca kembali bit berikutnya dan lakukan penelusuran kembali terhadap pohon Huffman sehingga didapat bit-bit yang mewakili sebuah simbol data
yang bersesuaian sehingga semua sampel terdekompresi seperti sampel sebelum dikompresi.
3.2.3. Analisa Kompresi Run Length Encoding Kompresi dengan RLE adalah penjumlahkan pengulangan byte yang sama secara
berturut dan jika ada byte yang tidak terjadi pengulangan maka byte tersebut tidak dikompresi. Seperti contoh pada algoritma kompresi Huffman, akan menggunakan
contoh yang sama juga pada algoritma kompresi RLE, adapun langkah-langkah proses kompresi dengan algoritma Run Length Encoding sebagai berikut.
1. Pembacaan sampel audio
2. Kompresi data nilai jika ditemukan data nilai sampel yang sama secara berurutan
lebih dari dua dengan cara: a. Berikan bit penanda pada data kompresi,
b. Tambahkan deretan bit untuk menyatakan jumlah nilai data yang sama berurutan.
c. Tambahkan deretan bit yang menyatakan sampel yang berulang. d. Konversikan semua data kompresi ke dalam hexa.
3. Simpan file audio
Berikut adalah contoh untuk memperjelas langkah-langkah kompresi dengan algoritma Run Length Encoding, misalnya ada sampel audio seperti berikut.
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A2 A2 A2
C3 C3 C3 C3 C3 C3 D4 D4 D4 D4 D4
E5 E5
Dari sampel tersebut semua sampel mengalami pengulangan byte, seperti A1 sebanyak 10 kali, A2 sebanyak 8 kali, C3 sebanyak 6 kali, D4 sebanyak 5 kali, dan E5
Universitas Sumatera Utara
sebanyak 2
kali. Jadi
sampel tersebut
setelah dikompresi
menjadi A110A28C36D45E52. Dapat diperhatikan pada tabel 3.3 berikut.
Tabel 3.3. Hasil Kompresi RLE Sampel Masuk
Sampel Keluar
Frekuensi Kode RLE hasil
Kompresi
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1
10 A110
A2 A2 A2 A2 A2 A2 A2 A2 A2
8 A28
C3 C3 C3 C3 C3 C3 C3
6 C36
D4 D4 D4 D4 D4 D4
5 D45
E5 E5 E5
2 E52
Total 31 byte
10 byte
Seperti pada tabel 3.3 tersebut, sampel sebelum dikompresi adalah 31 byte kemudian setelah dilakukan kompresi menjadi 10 byte.
3.2.4. Analisa Deompresi Run Length Encoding Dekompresi atau decoding RLE adalah dengan menguraikan nilai sampel yang diikuti
oleh nilai sebanyak nilai sampel tersebut. Berikut adalah langkah dalam proses dekompresi algoritma Run Length Encoding.
1. Buka file audio untuk membaca header-header dan sample audio.
2. Baca file audio untuk mendapatkan data sample.
3. Ambil nilai sample audio ke 1 sampai ke n.
4. Lihat data pada hasil kompresi satu persatu dari awal sampai akhir, jika
ditemukan byte penanda , lakukan proses pengembalian. 5.
Baca posisi penanda setelah byte penanda, konversikan ke bilangan desimal untuk menentukan jumlah karakter yang berurutan.
6. Lihat data berikutnya, kemudian lakukan penulisan karakter tersebut sebanyak
bilangan yang telah diperoleh pada data sebelumnya point 5. 7.
Ulangi langkah 4, 5 dan 6 sampai karakter terakhir.
Berikut adalah contoh dekompresi RLE, misalnya seperti hasil dari kompresi RLE adalah A110A28C36D45E52, dimana nilai 10 menyatakan sampel A1 yang
diulang, sehingga setelah menlakukan dekompresi menjadi A1A1A1A1A1A1A1
Universitas Sumatera Utara
A1A1A1A28C36D45E52, demikian seterusnya sampai sampel audio menjadi seperti semula. Dapat diperhatikan pada tabel 3.4 berikut.
Tabel 3.4. Hasil dekompresi RLE Kode RLE
hasil Kompresi
Sampel Masuk
Frekuensi Kode RLE hasil Dekompresi
A110 A1
10 A1 A1 A1 A1 A1 A1 A1 A1 A1
A1 A28
A2 8
A2 A2 A2 A2 A2 A2 A2 A2 C36
C3 6
C3 C3 C3 C3 C3 C3 D45
D4 5
D4 D4 D4 D4 D4 E52
E5 2
E5 E5
10 byte 31 byte
Seperti pada tabel 3.4 tersebut, sampel setelah dikompresi adalah 10 byte kemudian setelah dilakukan dekompresi menjadi 31 byte kembali seperti sampel
semula.
3.3. Perancangan Sistem