Perbandingan Algoritma Golomb Rice Dan Interpolative Coding Dalam Mengkompresi File Video
Refo Irfansyah
Fakultas Ilmu Komputer dan Teknologi Informasi, Teknik Informatika, Universitas Budi Darma Medan, Medan, Indonesia Email: [email protected]
Abstrak-Kompresi merupakan suatu teknik untuk memperkecil jumlah ukuran data dari data aslinya. Prinsip umum yang digunakan pada proses kompresi video adalah mengurangi duplikasi data dalam video sehingga memori yang dibutuhkan untuk merepresentasikan video menjadi lebih sedikit. Ukuran file video tergolong sangat besar sehingga megakibatkan perlunya penyimpanan yang cukup besar dan file video dengan durasi yang panjang sangat mempengaruhi ruang penyimpanan dan waktu pengiriman yang cukup lama sehingga perlu dilakukannya kompresi data. Pada penelitian kali dilakukan perbandingan algoritma untuk mengetahui algoritma manakah yang efektif dalam proses kompresi file berfomat MP4. Algoritma yang akan dibandingkan yaitu Algoritma Golomb Rice dan Interpolative Coding. Kedua algoritma tersebut merupakan algoritma untuk proses kompresi.
Variabel perbadingan kedua algoritma adalah Ratio Compression (Rc), Compression Ratio (Cr), Redudancy (Rd) dan Space Saving (Ss).Hasil yang diharapkan dalam penelitian ini yaitu memperoleh file hasil kompresi yang berukuran lebih kecil, sehingga dari hasil tersebut dapat dibandingkan mana algoritma yang lebih efektif dalam melakukan kompresi file video.
Kata Kunci: Kompresi; File Video; Perbandingan; Golomb Rice; Interpolative Coding
Abstract-Compression is a technique to reduce the amount of data size from the original data. The general principle used in the video compression process is to reduce the duplication of data in the video so that less memory is needed to represent the video.
The size of the video file is quite large so that it requires a large enough storage and video files with a long duration greatly affect the storage space and delivery time which is long enough so that data compression is needed. In this study, a comparison of algorithms was carried out to find out which algorithm was effective in the MP4 file compression process. The algorithms that will be compared are the Golomb Rice Algorithm and Interpolative Coding. Both algorithms are algorithms for the compression process. The comparison variables between the two algorithms are Ratio Compression (Rc), Compression Ratio (Cr), Redundancy (Rd) and Space Saving (Ss). The expected result in this study is to obtain a compressed file that is smaller in size, so that the results can be compared. which algorithm is more effective in compressing video files.
Keywords: Compression; Video Files; Comparison; Golomb Rice; Interpolative Coding
1. PENDAHULUAN
Kompresi data merupakan suatu cara dalam ilmu komputer untuk mengecilkan ukuran data ataupun memampatkan data. Data yang akan dimampatkan berukuran lebih kecil dari data sebelumnya dengan tujuan agar terjadi penghematan pada ruang penyimpanan. Jika kompresi data dilakukan, maka ruang penyimpanan yang dibutuhkan akan menjadi kecil. Selain lebih efisien, kompresi juga dapat menyebabkan lebih cepatnya waktu pertukaran data.
Seiring berkembangnya teknologi pada saat ini, data memiliki peranan yang sangat penting, besar jumlah data yang disimpan pada memori penyimpanan akan terjadi penambahan besar kapasitas pada media penyimpanan. Kompresi data file semakin banyak diterapkan pada berbagai jenis data, teks, gambar, audio, dan video[1].
Ukuran file video tergolong sangat besar dan terjadi pengaruh pada ruang penyimpanan serta waktu berkirim data juga tergolong lama dengan ukuran file yang begitu besar. Oleh karenanya perlunya dilakukan kompresi dalam dimampatkannya isi file video (.MP4). Ketika proses kompresi dilakukan harus adanya algoritma pendukung dalam kompresi. Algoritma-algoritma yang memiliki kelebihan serta kekurangan saat melakukan proses kompresi data [2]
[3]. File video yang digunakan dalam penelitian ini adalah sebuah file video yang berekstensi MP4 yang merupakan salah satu format file video yang sering digunakan dalam pengunduhan dan streaming video dari media internet.
Dalam pengkompresiannya format MP4 bersifat fleksibel karena dapat menyimpan audio, subtitle,dan gambar.
Pada penelitian kali dilakukan perbandingan algoritma untuk mengetahui algoritma manakah yang efektif dalam proses kompresi file berfomat MP4. Algoritma yang akan dibandingkan yaitu Algoritma Golomb Rice dan Interpolative Coding. Kedua algoritma tersebut merupakan algoritma untuk proses kompresi. Variabel perbadingan kedua algoritma adalah Ratio Compression (Rc), Compression Ratio (Cr), Redudancy (Rd) dan Space Saving (Ss).
Algoritma Golomb Rice adalah Algoritma yang digunakan untuk melakukan kompresi pada data sehingga data yang dikompresi menjadi lebih kecil dari ukuran sebenarnya [4]. Adapun sistem dan teknik yang diperoleh pada Algoritma Golomb Rice adalah Golomb Coding yang dimana dalam penggunaan teknik ini mampu menghasilkan kode prefix yang mudah untuk dipahami. Ketika Algoritma Golomb Rice dapat merubah sebuah nilai menjadi nilai positif, berbeda dengan Rice Coding memiliki parameter yang dapat diubah hanya menjadi kelipatan dari angka 2 dan dalam hal inilah pengguaan Golomb Rice sangat mudah dalam melakukan implementasi dalam kasus perhitungan aritmatika biner.
Golomb Rice biasanya digunakan dalam kompresi gambar dan audio, namun kali ini peneliti akan mencoba melakukan kompresi pada file video.
Dalam kompresi ini juga menggunakan Algoritma Interpolative Coding yang merupakan metode yang sangat inovatif dalam menetapkan kode dinamis ke simbol data. Algoritma Interpolative Coding sangat berbeda dengan pengkodean yang lainnya, itu dikarenakan kode yang diberikan untuk simbol tidak statis dan hanya bergantung pada keseluruhan pesan dari pada simbol dan frekuensinya [5]. Seluruh pesan yang diencode harus tersedia untuk pembuat
encode dan dalam proses pengkodeannya dilakukan dengan memindai pesan kedalam suatu urutan khusus. Akibatnya, codeword yang ditetapkan untuk simbol bergantung pada susunan atau urutan khusus pada pesan. Hasil dari pengkodean tersebut mungkin akan bernilai nol bit.
Berdasarkan penelitian yang dilakukan oleh Ikhsan Okto Kurnia Ginting pada tahun 2017 tentang
“Implementasi algoritma enkripsi Golomb Rice untuk kompresi file gambar berbasis Android”. Dapat disimpulkan bahwa algoritma Golomb Rice mampu mendesain dan mengkodekan file citra dan algoritma Golomb Rice juga mampu mengompresi citra jika citra didominasi warna hitam. Namun, jika gambar memiliki warna dominan selain hitam, algoritma Golomb Rice tidak dapat mengompres gambar, bahkan ukuran file gambar lebih besar.[3].
Berdasarkan penelitian Rahmadsyah dkk tahun 2018 tentang “Kompresi Data Benchmarking Menggunakan Enkripsi Rice dan Algoritma Lemple Ziv Storer Symanski (LZSS) pada Jaringan Client-Server”. Dapat disimpulkan bahwa proses parsing ini dapat menghemat penggunaan bandwidth saat data dikirim. Dari segi waktu yang digunakan untuk melakukan kompresi dari client ke server membutuhkan waktu yang relatif singkat dan juga dalam proses kompresi data algoritma enkripsi Rice lebih baik dibandingkan dengan algoritma Lemple Ziv Storer Symanski (LZSS) [4].
Berdasarkan penelitian yang dilakukan oleh Agung Dwi Pradana dan Saputra pada tahun 2019 tentang
“Penerapan algoritma enkripsi interpolasi pada aplikasi kompresi file gambar”. Dapat disimpulkan bahwa penggunaan algoritma enkripsi interpolasi untuk mengompresi file gambar dapat mengurangi penggunaan memori saat menyimpan data pada hard drive atau flash drive dan penerapan algoritma enkripsi interpolasi untuk mengompresi file gambar juga menunjukkan bahwa ukuran file gambar yang besar dapat dikompresi ke ukuran yang lebih kecil. tanpa kehilangan kualitas. dari file gambar [5].
Berdasarkan penelitian yang dilakukan oleh Riyo Oktavianty Finola pada tahun 2019 tentang “Penerapan Algoritma Interrupt Encryption for Compressing Audio Files”. Dapat disimpulkan bahwa mengompresi file audio dengan algoritma pengkodean interpolasi menghemat memori penyimpanan. Untuk kompresi, itu mengubah file audio ke heksadesimal untuk menghasilkan nilai baru yang akan mengubah ukuran file audio [6].
2. METODOLOGI PENELITIAN
2.1 Kompresi Data
Kompresi adalah proses mengecilkan ataupun memampatkan sebuah file yang memiliki ukuran besar menjadi lebih kecil serta membuat ukuran ruang penyimpanan menjadi berkurang. Kompresi file video merupakan salah satu cara pengecilan tiap bit yang dihadirkan dalam file video dengan data menjadi lebih kecil [6]. Kompresi Data adalah mengubah ukuran data menjadi lebih kecil tanpa mengurangi kualitas atau ukuran dari masing-masing file tersebut.
Proses kompresi pada data didasarkan pada kenyataan bahwa suatu jenis data selalu terdapat pengulangan pada komponen data yang dimilikinya dan kompresi data juga melalui proses yang disebut dengan proses encoding yang berusaha menghilangkan unsur pengulangan sehingga ukuran data menjadi lebih kecil [6] [10].
2.1.1 Parameter Kinerja Kompresi Data
Ada beberapa teknik yang digunakan dalam mengkompresi sebuah data yang telah di hitung padding dan flagging dari bit yang telah di kompresi untuk menentukan perbandingan antara kedua algortitma kompresi antara lain [7]:
1. Ratio of compression (Rc)
Ratio of compression adalah perbandingan ukuran data sebelum terjadinya proses kompresi dengan ukuran data yang sudah dikompresi[3].Secara sistematis dapat dituliskan sebagai berikut :
𝑅𝑐 =𝑢𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖
𝑢𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 (1)
2. Compression Ratio (Cr)
Compression Ratio (Cr) adalah persentase perbandingan ukuran data yang sudah dikompresi dengan ukuran data
yang belum dikompresi[3].Secara sistematis dapat dituliskan sebagai berikut:
𝐶𝑟 =𝑢𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖
𝑢𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖𝑥 100 % (2)
3. Redudancy (Rd)
Redudancy adalah tersimpannya data sebagai informasi yang memiliki basis data, karakteristik serta struktur yang sama[3]. Secara sistematis dapat dituliskan sebagai berikut :
𝑅𝑑 =𝑓𝑖𝑙𝑒 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠 − 𝑓𝑖𝑙𝑒 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖
𝑢𝑘𝑢𝑟𝑎𝑛 𝑓𝑖𝑙𝑒 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 x 100 % (3)
4. Space Saving (Ss)
Space Saving selisih antara data yang belum dikompres dengan data yang sudah dikompres[3].Secara sistematis dapat dituliskan sebagai berikut
Space Saving(Ss) => 100% - Compression Ratio(Cr) (4)
2.1.2 Teknik Kompresi
Kompresi data dibagi menjadi dua kategori yaitu lossless dan lossy [5]. Berikut penjelasannya:
1. Lossless compresion ‘
Lossless compression merupakan teknik kompresi yang tidak menghilangkan data sebelumnya, Dimana data yang dikompres dapat diembalikan lagi kedata aslinya[5].Teknik ini memungkinkan tidak akan terjadinya kehilangan informasi data yang dikompres dan rasio pada teknik Lossless compresion juga sangat rendah [12].
2. lossy compresion
Lossy compresion merupakan kebalikan dari teknik Lossless compresion, Dimana hasil dari data yang dikompres tidak bisa dikembalikan kedata sebelumnya[5].Teknik ini memungkinkan terjadinya kehilangan informasoi data dan ratio pada teknik ini juga sangat tingi dibandingkan dengan teknik Lossless compresion.
2.2 Algoritma Kompresi 2.2.1 Algoritma Golomb Rice
Golomb Rice adalah metode kompresi lossless yang di perkenalkan oleh Solomon W. Golomb pada tahun 1960-an dan Rice Coding atau disebut juga Golomb-Rice Coding ditemukan oleh Robert F. Rice yang menggunakan subset dari turunan Golomb Rice untuk menghasilkan sebuah perhitungan yang lebih sederhana tetapi mungkin suboptimal dari kode awalan itu sendiri. Algoritma Golomb Rice ini digunakan dalam skema pengkodean adaptif yang menggunakan sebuah subset dari turunan Golomb Coding. Algoritma Golomb Rice merupakan Algoritma untuk melakukan kompresi data dan memperkecil ukuran data. Di dalam Algortima Golomb Rice, ada sebuah nilai k yang artinya adalah banyaknya angka 1 pada suffix dari kode terkompresi. Dalam proses encode, dilakukan pemisahan pada prefix dan suffix. Ketika proses decode, decoder membaca sign bit dan lompat ke angka 0 pertama dari sebelah kiri, yang mana akan berlanjut kembali untuk penambahan bit pada k selanjutnya [6]. Pada nilai k dalam proses kompresi menggunakan langkah-langkah sebagai berikut :
1. Pisahkan bit tanda dari sisa nomor yang merupakan bagian opsional dan bit yang paling signifikan pada Golomb Rice.
2. Pisahkan k LSB menjadi LSB dari Golomb Rice Codes
3. Kode yang tersisa adalah j = [n/2𝑘] bit. Baik sebagai j nol diikuti oleh 1, kemudian diikuti lagi oleh 0 (serupa dengan kode unary) dan ini menjadi bagian tengah dari Algoritma Golomb Rice.
2.2.2 Algoritma Interpolative Coding
Algoritma Interpolative Coding merupakan metode yang tidak biasa dan inovatif untuk menetapkan kode dinamis ke simbol data. Ini berbeda dari metode pengkodean lainnya, karena kode yang diberikannya untuk simbol individual tidak statis dan bergantung pada keseluruhan pesan daripada simbol dan frekuensinya. Seluruh pesan yang di-encode harus tersedia untuk pembuat encode. Pengkodean dilakukan dengan memindai pesan dalam urutan khusus, tidak secara linier dari awal hingga akhir, dan menugaskan codeword ke simbol saat bertemu. Akibatnya, codeword yang ditetapkan untuk simbol bergantung pada urutan simbol dalam pesan. Sebagai hasil dari penugasan kode yang tidak biasa ini, codeword tertentu mungkin bernilai nol bit panjang [7].
Dari penjelasan diatas maka dapat dirumuskan algoritma Interpolative Coding untuk mengompresi file video dengan langkah-langkah sebagai berikut :
1. Bacalah semua karakter untuk menghitung seberapa sering setiap karakter muncul.
2. Masukkan nilai frekuensi setiap karakter, lalu hitung jumlah kumulatif.
a. M = nilai masing-masing frekuensi.
b. L = elemen atau nilai dari kumulatif M
3. Interpolative coding memproses data tersebut, kemudian dibuatka pohon biner untuk menentukan urutan penyelesaiannya..
4. Interpolative coding mengkompresi string dengan cara mengencode panjang dari L (elemen) yang berada ditengah.
L = X, X, X, X, X, X, X, X, X.
5. Ketika mengencode elemen yang berada ditengah, maka kita mengeksploitasi elemen awal dengan panjang elemen yng mendahuluinya yang sudah diketahui oleh decoder.
L = X, X, X, X, X, X, X, X, X.
6. Perhatikan bahwa L [tengah] mendahului 4 elemen, maka:
L [tengah] = elemen awal + jumlah elemen yang mendahuluinya L [tengah] = elemen akhir - jumlah elemen yang mengikutinya
7. Kemudian lakukan langkah selanjutnya secara rekursif untuk mengenkripsi semua elemen.
8. Kemudian lakukanlah pembacaan panjangnya dalam bit menggunakan = 2 (CEILING MATH (LOG (hasil elemen yang mengikuti – hasil elemen yang mendahului + 1).
9. Hasil penjumlahan elemen tersebut kemudian diubah menjadi bilangan biner yang nantinya akan menjadi codeword.
3. HASIL DAN PEMBAHASAN
Kompresi file video dengan ekstensi MP4 memiliki ukuran yang sangat besar. Dengan dilakukannya kompresi file MP4, file yang memiliki ukuran lebih besar akan dikompres agar ukuran lebih kecil serta menghemat ruang penyimpanan serta diketahui algoritma yang lebih efekti dalam melakukan kompresi file MP4 dengan Algoritma Golomb Rice dan Interpolative Coding. Melakukan kompresi menggunakan dua algoritma yaitu Algoritma Golomb Rice dan Interpolative Coding. Sebelum file MP4 dikompres, lebih dulu dilakukan pembacaan file MP4 agar didapatkan nilai hexadesimal menggunakan aplikasi HxD. Berikut contoh file MP4 yang dikompres serta didekompresi dapat dilihat pada gambar dibawah ini.
.Gambar 1. Isi File MP4 dari Hasil HxD
Dari gambar diatas didapat sampel nilai hexadesimal file MP4. Untuk keperluan perhitungan manual, maka hanya akan diambil sampel nilai sebanyak 16 karakter nilai hexadesimal file MP4. Nilai hexadesimal diambil dari sisi kiri ke kanan. Kemudian dilakukan Pembacaan Isi File. Adapun Nilai hexadesimal file MP4 ini ialah:
00,00,00,20,66,74,79,70,69,73,6F,6D,00,00,02,00,69,73,6F,6D,69,73,6F,32,6176,63,31,6D,70,34,31.Nilai data ini dimasukkan dalam tabel agar dilakukan pembacaan frekuensi. Frekuensi dibaca dengan perhitungan jumlah nilai yang sama disetiap nilai yang muncul. Pembacaan frekuensi dapat dilihat pada tabel dibawah ini:
Tabel 1. Nilai File Nilai Frekuensi
0 6
69 3
73 3
6F 3
6D 3
70 2
31 2
20 1
66 1
74 1
79 1
2 1
32 1
61 1
76 1
63 1
34 1
Setelah itu dilakukan pengurutan karakter yang memiliki frekuensi paling besar (banyak nilai yang sama) ke frekuensi paling kecil. Urutan nilai dapat dilihat dalam tabel di bawah:
Tabel 2. Nilai Bit MP4 Sampel Nilai
Bit Frek Bit x Frek
Hexa Biner
00 00000000 8 6 48
69 01101001 8 3 24
73 01110011 8 3 24
6F 01101111 8 3 24
6D 01101101 8 3 24
Nilai
Bit Frek Bit x Frek
Hexa Biner
70 01110000 8 2 16
31 00110001 8 2 16
20 00100000 8 1 8
66 01100110 8 1 8
74 01110100 8 1 8
79 01111001 8 1 8
02 00000010 8 1 8
32 00110010 8 1 8
61 01100001 8 1 8
76 01110110 8 1 8
63 01100011 8 1 8
34 00110101 8 1 8
Total Bit 256
Dari tabel di atas, satu nilai hexadesimal (karakter) bernilai 8 bit bilangan biner. Hingga 16 bilangan hexadesimal memiliki nilai biner dengan jumlah 256 bit.
3.1 Kompresi menggunakan Golomb Rice
Aturan pada pembentukan kode bilangan dengan memakai Golomb Rice dapat dilihat pada bab sebelumnya. Adapun kode Golomb Rice dapat dilihat pada tabel di bawah ini.
Tabel 3. Kode Golomb Rice N Kode Golomb Rice
0 0
1 1
2 10
3 11
4 1000
5 1001
6 1010
7 1011
8 11000
9 11001
10 11010
11 11011
12 111000
13 111001
14 111010
15 111011
16 1111000
Proses berikutnya ialah dilakukan kompresi nilai pada sample dengan kode Golomb Rice yang didapat pada tabel di atas. Adapun proses kompresi file MP4 sample dapat di lihat pada tabel berikut :
Tabel 4. Kompresi Nilai File Video MP4 Sample Dengan Golomb Rice N Nilai Hexa Kode Golomb Rice Bit Frek Bit x Frek
0 00 0000 4 6 24
1 69 0001 4 3 12
2 73 0010 4 3 12
3 6F 0011 4 3 12
4 6D 01000 5 3 15
5 70 01001 5 2 10
6 31 01010 5 2 10
7 20 01011 5 1 5
8 66 011000 6 1 6
9 74 011001 6 1 6
10 79 011010 6 1 6
11 02 011011 6 1 6
12 32 0111000 7 1 7
13 61 0111001 7 1 7
N Nilai Hexa Kode Golomb Rice Bit Frek Bit x Frek
14 76 0111010 7 1 7
15 63 0111011 7 1 7
16 34 01111000 8 1 8
Total Bit 160
Pada perhitungan tabel di atas setelah dikompresi dengan memakai Algoritma Golomb Rice ialah 160 bit..kemudian Melakukan hasil string bit Algoritma Golomb Rice. Sebelum dilakukan hasil string bit Algoritma Golomb Rice menjadi nilai file, terlebih dulu lakukan pemeriksaan pada panjang string bit. Pembentukan nilai bit baru hasil kompresi pada susunan nilai heksadesimal sebelum dikompresi yaitu : 00,00,00,20,66,74,79,70,69,73,6F, 6D,00,00,02,00,69,73,6F,6D,69,73,6F,32,61,76,63,31,6D,70,34,31. (tanpa tanda koma dan spasi) menjadi nilai bit biner :
“0000000000000101101100001100101101001001000100100011010000000000001101100000001001000110100000 010010001101110000111001011101001110110101001000010010111100001010”
Lalu sebelum didapat hasil semua akhir kompresi dilakukan penambahan string bit yaitu padding serta flag bit.
Jika sisa bagi panjang string bit terhadap 8 ialah 0 maka ditambahkan 0000001. Dinyatakan dengan bit akhir.
Sedangkan jika sisa bagi panjang string bit terhadap 8 adalah n(1,2,3,4,5,6,7) maka tambahkan 0 sebanyak 7-n+”1”
diakhir string bit. Nyatakan dengan L, lalu tambahkan 0 bilangan biner dari 9 –n, nyatakan dengan bit akhir. karena jumlah string bit 160 habis dibagi 8 dan sisanya 0 bit, maka ditambahkan 0000001 diakhir string bit. Dan dinyatakan sebagai bit akhir bit akhir. 0000000000000101101100001100101101001001000100100011010000000000001101100 0000010010001101000000100100011011100001110010111010011101101010010000100101111000010100000001.
Total panjang bit keseluruhan setelah ada dilakukan tambah nilai bit ialah 160+8 =168. Lalu lakukan pemisahan bit ke beberapa kelompok. Perkelompok terdiri atas 8 bit seperti di bawah.
00000000 00000101 10110000 11001011 01001001 00010010 00110100 00000000 00110110 00000010 01000110 10000001 00100011 01110000 11100101 11010011 10110101 00100001 00101111 00001010 00000001
Berdasarkan pada pembagian kelompok nilai biner, didapatkan 21 kelompok nilai biner baru (21 byte) yang telah dikompresi nilai biner penambahan bit. Lalu dilakukan pembagian, maka nilai yang telah dibagikan diubah dalam suatu karakter terlebih dahulu dengan cara dilakukannya pencarian nilai hexadecimal serta string bit ini memakai kode ASCII untuk mengetahui nilai yang sudah dikompresi.
Gambar 2. karakter String bi
Persentase ukuran data yang dikompresi dapat dilihat pada hasil perbandingan antara ukuran data sesudah dikompresi menggunakan ukuran data sebelum dikompresi.
Ukuran data sebelum dikompresi = 256 Ukuran data sesudah dikompresi = 168
Dari data ini dapat dilakukan perhitungan kinerja kompresinya yaitu : 1) Ratio Compression (Rc)
Cr = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑆𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖
Cr = 256168 Cr = 1,523
2) Compression Ratio (Cr)
Cr = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑆𝑒𝑠𝑢𝑑𝑎ℎ 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖x 100%
Cr = 168
256x100%
Cr = 65,62%
3) Redudancy (Rd)
Rd = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑆𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖−𝑢𝑘𝑢𝑟𝑎𝑛 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑥100%
Rd = 256−168
256 x100%
Rd = 34,37%
00000000 00000101 10110000 11001011 01001001 00010010 00110100 0 5 ° Ë I 12 4 00000000 00110110 00000010 01000110 10000001 00100011 01110000 0 6 2 F 81 # p 11100101 11010011 10110101 00100001 00101111 00001010 00000001 Å Ó µ ! / A ┌
3.2 Kompresi Menggunakan Algoritma Interpolative Coding
Berdasarkan pada gambar 4.2 diatas didapat nilai heksadesimal file mp4. Untuk keperluan hitungan manual hanya diambil sampel nilai sebanyak 32 karakter nilai heksadesimal file mp4. Adapun bilangan heksadesimal file mp4 sampel tersebut adalah:
00,00,00,20,66,74,79,70,69,73,6F,6D,00,00,02,00,69,73,6F,6D,69,73,6F,32,6176,63,31,6D,70,34,31.
Setelah menghitung data sebelum dikompresi dari tabel diatas, lalu dilakukan proses kompresi menggunakan algoritma interpolative coding dengan mengkodekan karakter yang muncul berdasarkan urutan kemunculannya.
1. Masukkan nilai 17 frekuensi kemunculan karakter simbol pesan M = (6,3,3,3,3,2,2,1,1,1,1,1,1,1,1,1,1) = 32 2. Kemudian encode nilai dimulai dengan menghitung frekuensi kemunculn karakter secara kumulatif
L=(6,9,12,15,18,20,22,23,24,25,26,27,28,29,30,31,32).
3. Interpolative Coding memproses data tersebut kemudian dibuatkan pohon biner untuk menentukn urutan penyelesaiannya.
Gambar 3. Pohon Biner
4. Dari pohon biner kita dapat ketahui urutan penyelesainnya adalah (24 ,6, 9, 12, 15, 18, 20, 22 ,23, 25,26 ,27,28, 29, 30, 31, 32). Kemudian dilanjutkan dengan meng encode [L] 6 yang ada ditengah. Ketika meng encode elemen akhir maka selanjutnya mengeksploitasi elemen awal dengan panjang ekemen yang mendahuluinya yang sudah diketahui oleh decoder.
a. L = 6,9,12,15,18,20,22,23,24,25,26,27,28,29,30,31,32 L [9] mendahului 8 elemen
L [9] mengikuti 8 elemen
Lalu encode L [9] = elemen awal + jumlah elemen yang mendahuluinya Lalu encode L [9] = elemen akhir – jumlah elemen yang mengikutinya L [9] = 6 + 8 = 14
L [9] = 32 – 8 = 24
Nilai Range 24 – 14 = 10 maka nilai Binernya adalah 1010 2+(CEILING.MATH(LOG(24-14+1) = 4
b. L = 6,9,12,15,18,20,22,23,24,25,26,27,28,29,30,31,32 L [1] mendahului 0 elemen
L [1] mengikuti 8 elemen
Lalu encode L [1] = elemen awal + jumlah elemen yang mendahuluinya Lalu encode L [1] = elemen akhir – jumlah elemen yang mengikutinya L [1] = 6 + 0 = 6
L [1] = 24 – 8 = 16
Nilai Range 6 – 6 = 0 maka nilai Binernya adalah 0000 2+(CEILING.MATH(LOG(16-6+1) = 4
c. L = 6,9,12,15,18,20,22,23,24,25,26,27,28,29,30,31,32 L [2] mendahului 1 elemen
L [2] mengikuti 7 elemen
Lalu encode L [2] = elemen awal + jumlah elemen yang mendahuluinya Lalu encode L [2] = elemen akhir – jumlah elemen yang mengikutinya L [2] = 6 + 1 = 7
L [2] = 24 – 7 = 17
Nilai Range 9 – 7 = 2 maka nilai Binernya adalah 010 2+(CEILING.MATH(LOG(11-11+1) = 3
d. L = 6,9,12,15,18,20,22,23,24,25,26,27,28,29,30,31,32 L [3] mendahului 2 elemen
L [3] mengikuti 6 elemen
Lalu encode L [3] = elemen awal + jumlah elemen yang mendahuluinya Lalu encode L [3] = elemen akhir – jumlah elemen yang mengikutinya L [3] = 6 + 2 = 8
L [3] = 24 – 6 = 18
Nilai Range 12 – 8 = 4 maka nilai Binernya adalah 0100 2+(CEILING.MATH(LOG(11-11+1) = 4
Lakukan hingga elemen L10 dengan Nilai Range 25 – 25 = 0 maka nilai Binernya adalah 0000 dan hasil 2+(CEILING.MATH(LOG(11-11+1) adalah 4
Tabel 5. String hasil kompresi algoritma interpolative coding Elemen Nilai heksa Codeword Bit Frekuensi Bit x frekuensi
L9 = 00 10 1010 4 6 24
L1 = 69 0 0000 4 3 12
L2 =73 2 010 3 3 9
L3 = 6F 4 0100 4 3 12
L4 = 6D 6 0110 4 3 12
L5 = 70 8 1000 4 2 8
L6 = 31 9 1001 4 2 8
L7 = 20 10 1010 4 1 4
L8 = 66 10 1010 4 1 4
L17 =74 0 0000 4 1 4
L16 =79 0 0000 4 1 4
L15 =02 0 0000 4 1 4
L14 =32 0 0000 4 1 4
L13 =61 0 0000 4 1 4
L12 =76 0 0000 4 1 4
L11 =63 0 0000 4 1 4
L10 =34 0 0000 4 1 4
Total Bit x Frekuensi 125
Berdasarkan tabel 4.8 maka dapat dilihat bahwa bentuk dari string bit nilai heksadesimalnya adalah“00, 69, 73, 6F, 6D, 70, 31, 20, 66, 74, 79, 02, 32, 61, 76, 63, 34,”. Setelah dikompres mendapatkan codeword yaitu : 1010 0000 010 0100 0110 1000 1001 1010 1010 0000 0000 0000 0000 0000 0000 0000 0000. Sehingga file 32 karakter mempunyai ukuran 125 bit setelah dikompres. Namun, untuk men-decode string yang telah dikompresi, dibutuhkan padding dan flag bit. Padding adalah bit yang ditambahkan agar bit yang lain dapat dibagi 8, sedangkan flag bit adalah biner dari dari padding bit sebagai penanda yang menunjukkan tambahan bit dari padding. Kemudian sebelum didapatkan hasil keseluruhan akhir kompresi dilakukan penambahan string bit itu sendiri. Jika sisa bagi panjang string bit terhadap 8 adalah 0 maka tambahkan 0000001. Nyatakan dengan bit akhir. Sedangkan jika sisa bagi panjang string bit terhadap 8 adalah n(1,2,3,4,5,6,7) makan tambahkan 0 sebanyak 7-n+”1” diakhir string bit. Nyatakan dengan L, lalu tambahkan 0 bilangan biner dari 9 –n, nyatakan dengan bit akhir. karena jumlah string bit 125 tidak habis dibagi 8 dan sisanya 5 bit, nyatakan sisa bagi tersebut dengan nilai n. Maka tambahkan 0 sebanyak 7 – n + “1” akhir string bit.
Nyatakan dengan L. Lalu tambahkan bilangan biner dari 9 – n. Nyatakan dengan bit akhir.
7 – n + “1”
7 – 5 + “1” = 001 Bit Akhir 9 – n
Bit Akhir = 9 – 5 = 4 = 00000101
String Bit yang telah dilakukan penambahan 10100000010010001101000100110101010000000000000000000 0000000000000000100000101. Total panjang bit keseluruhan setelah ada penambahan bit adalah 67+5+8 =80.
Selanjutnya lakukan pemisahan bit menjadi beberapa kelompok. Setiap kelompok terdiri dari 8 bit, Setelah pembagian dilakukan, maka nilai yang sudah dibagi diubah ke dalam suatu karakter dengan terlebih dahulu mencari nilai hexadecimal dan string bit tersebut menggunakan kode ASCII.
Gambar 3. karakter String bit
Persentase ukuran data yang dikompresi dan dapat dilihat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi.
Ukuran data sebelum dikompresi = 256 Ukuran data sesudah dikompresi = 125
Berdasarkan data tersebut dapat dihitung kinerja kompresinya yaitu :
10100000 01001000 11010001 00110101 01000000 00000000 160 H Ñ 5 @ 0 00000000 00000000 00000100 000101
0 0 4 5 5
1) Ratio compression (Rc)
Rc = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑆𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖
Rc = 256125 Rc = 2,048
2) Compression Ratio (Cr)
Cr = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑆𝑒𝑠𝑢𝑑𝑎ℎ 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖x 100%
Cr = 125
256x100%
Cr = 48,8%
3) Redudancy (Rd)
Rd = 𝑈𝑘𝑢𝑟𝑎𝑛 𝑆𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖−𝑢𝑘𝑢𝑟𝑎𝑛 𝑠𝑒𝑠𝑢𝑑𝑎ℎ 𝑑𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑈𝑘𝑢𝑟𝑎𝑛 𝑑𝑎𝑡𝑎 𝑠𝑒𝑏𝑒𝑙𝑢𝑚 𝐷𝑖𝑘𝑜𝑚𝑝𝑟𝑒𝑠𝑖 𝑥100%
Rd = 256−125
256 x100%
Rd = 51,17%
3.3 Perbandingan Algoritma Golomb Rice dan Interpoltive Coding
Perbandingan algortima Golomb Rice dan Interpolative Coding ialah membandingan Ratio Compression (Rc), Compression Ratio (Cr) ,redudancy dan space saving dari kedua algoritma. Dimana setelah dilakukan perhitungan dengan algoritma Golomb Rice dan Interpolative Coding maka hasil dari Ratio Compression (Rc), Compression Ratio (Cr), Redudancy dan space saving didapatkan. Setelah hasil dari kedua algoritma didapatkan, lalu dilakukan perbandingan untuk mengetahui algoritma mana yang lebih efektif dalam melakukan proses kompresi file Video MP4 Untuk perbandingannya dapat dilihat pada tabel dibawah ini.
Tabel 6. Nilai Perbandingan
No Algoritma Ratio Compression (Rc) Compression Ratio (Cr) Redudancy (Rd)
Space Saving (Ss)
1 Golomb Rice 1,523% 65,62% 34,37% 37,35%
2 Interpolative Coding 2,048% 48,8% 51,17% 51,2%
Berdasarkan penjelasan pada tabel diatas,maka Algoritma Interpolative Coding yang lebih efektif dalam melakukan kompresi file video MP4. Karena memiliki space saving terbesar dibandingkan dengan Algoritma Golomb Rice. Dan bisa juga dibandingkan dari ukuran Ratio Compression (Rc) dan Redudancy.
4. KESIMPULAN
Ada beberapa kesimpulan yang dapat ditarik setalah dilakukan penngerjaan pada bab-bab sebelumnya. Kesimpulan tersebut yaitu Kompresi file video MP4 dapat dilakukan dengan mengubah kedalam bentuk heksadesimal untuk dapat melakukan perhitungan. Bilangan heksadesimal yang didapat diolah menggunakan algoritma Golomb Rice dan Interpolative Coding sehingga menghasilkan nilai yang baru yang akan merubah ukuran file video MP4. Algoritma Golomb Rice dan Interpolatie Coding dapat dilakukan perbandingan setelah dilakukannya perhitungan. Dengan skala perbandingan yaitu Ratio Compression, Compression Ratio, Redudancy dan Space Saving. Dengan perbandingan yang dilakukan maka diketahui bahwa persentase Ratio Compression, Redudancy dan Space Saving algoritma Interpolative Coding lebih besar daripada algoritma Golomb Rice. Ratio Compression (Rc), Compression Ratio (Cr), Redudancy (Rd) dan Space saving dapat diketahui dengan melakukan mengubah nilai awal file MP4 dengan nilai heksadesmial. Untuk Algoritma Golomb Rice didapatkan nilai Ratio Compression (Rc) sebesar 1,532, Compression ratio (Cr) sebesar 65,62%, Redudancy (Rd) sebesar 34,37% dan Space Saving (Ss) sebesar 37,35%. Sedangkan untuk Algoritma Interpolative Coding, Ratio Compression (Rc) sebesar 2,048, Compression ratio (Cr) sebesar 48,8%, Redudancy (Rd) sebesar 51,17% dan Space Saving (Ss) sebesar 51,2%.
REFERENCES
[1] D. Rachmawati, M. A. Budiman, and M. A. Subada, “Comparison study of Fibonacci code algorithm and Even-Rodeh algorithm for data compression,” J. Phys. Conf. Ser., vol. 1321, no. 3, 2019, doi: 10.1088/1742-6596/1321/3/032015.
[2] M. Alfarizi and S. Aripin, “Penarapan Algoritma Prefix Code Dalam Kompresi File Video,” KOMIK (Konferensi Nas. …, vol. 4, pp. 249–252, 2020, doi: 10.30865/komik.v4i1.2686.
[3] N. Rizka, S. D. Nasution, and K. Ulfa, “Penerapan Algoritma Elias Omega Code Untuk Kompresi File Video Pada Aplikasi Rekam Layar,” vol. 9, no. 4, pp. 257–265, 2021.
[4] I. O. K. L. GINTING, “IMPLEMENTASI ALGORITMA GOLOMB-RICE CODING UNTUK KOMPRESI FILE CITRA BERBASIS ANDROID,” 2017.
[5] R. O. Finola, “Penerapan Algoritma Interpolative Coding Untuk Kompresi File Audio,” KOMIK (Konferensi Nas. Teknol.
Inf. dan Komputer), vol. 3, no. 1, pp. 378–384, 2019, doi: 10.30865/komik.v3i1.1616.
[6] R. Syah and M. Elveny, “Analisis Perbandingan Pemampatan Data Menggunakan Algoritma Rice Coding dan Lemple Ziv
Storer Symanski (LZSS) Pada Jaringan Client-Server,” vol. 6, no. 1, 2014.
[7] A. D. Pradana and I. Saputra, “Penerapan Algoritma Interpolative Coding Pada Aplikasi Kompresi File Gambar,” KOMIK (Konferensi Nas. Teknol. Inf. dan Komputer), vol. 3, no. 1, pp. 220–227, 2019, doi: 10.30865/komik.v3i1.1592.
[8] Y. F. Amri, “Kompresi File Audio,” Univ. Sebel. Maret, 2012.
[9] K. Ramayani, “Penerapan Algoritma Rice Codes Untuk Mengkompresi File Video,” vol. 5, pp. 186–192, 2021, doi:
10.30865/komik.v5i1.3670.
[10] “Kompresi video - Wikipedia bahasa Indonesia, ensiklopedia bebas.”
[11] D. Riyansyah, “Perancangan Aplikasi Kompresi File Video Menggunakan Algoritma Interpolative Coding,” KOMIK (Konferensi Nas. Teknol. Inf. dan Komputer), vol. 3, no. 1, pp. 392–397, 2019, doi: 10.30865/komik.v3i1.1618.
[12] T. P. Sari, S. D. Nasution, and R. K. Hondro, “Penerapan Algoritma Levenstein Pada Aplikasi Kompresi File Mp3,”
KOMIK (Konferensi Nas. Teknol. Inf. dan Komputer), vol. 2, no. 1, pp. 439–443, 2018, doi: 10.30865/komik.v2i1.946.