Metode kompresi Half
Byte merupakan suatu metode kompresi dengan prosesnya adalah memanfaatkan bit sebelah kiri yang sering sama secara
berurutan (Sujaini, 2000). Misalnya pada suatu file yang berisi data teks bertuliskan ”bilangan”, dalam
heksadesimal akan diterjemahkan pada tabel 2.1.
Tabel 2.1 Konversi Heksadesimal
Karakter
|
Heksadesimal
|
b
|
62
|
i
|
69
|
l
|
6c
|
a
|
61
|
n
|
6e
|
g
|
67
|
a
|
61
|
n
|
6e
|
Jika diperhatikan karakter-karakter tersebut memiliki bit sebelah kiri yang sama yaitu ’6’.
Gejala seperti inilah yang dimanfaatkan oleh metode kompresi Half Byte.
Saat karakter yang bit
kirinya sama secara berderet, maka algoritma ini mengkompres data tersebut
diawali dengan ”bit penanda” kemudian
bit pertama dari deretan yang sama
diikuti dengan pasangan bit kanan
dari deretan tersebut dan ditutup dengan bit
penanda.
Bit penanda (marker bit, dalam penelitian ini disingkat ‘mb’),
berupa suatu byte yang boleh dipilih
secara acak asalkan digunakan secara konsisten pada seluruh bit penanda pemampatan. Bit penanda disini berfungsi penanda
bahwa karakter selanjutnya adalah karakter pemampatan atau akhir pemampatan.
Dalam penelitian ini, penentuan bit
penanda dilakukan dengan mencari frekuensi nilai warna yang paling sedikit yang
terdapat dalam sebuah citra.
Metode kompresi Half Byte digambarkan lebih jelas pada gambar 2.2.
Deretan data sebelah kiri merupakan deretan data pada file asli, sedangkan deretan data
sebelah kanan merupakan deretan data hasil pemampatan dengan metode Half Byte.
Proses Kompresi Half
Byte
Setelah data nilai dijadikan array 1 dimensi dan
telah dirubah menjadi bilangan biner, maka langkah proses kompresi Half Byte dapat dilakukan. Langkah awal
ialah membaca data apakah terdapat deretan data yang bit kirinya sama secara berurutan sebanyak tujuh data atau lebih,
jika memenuhi lakukan pemampatan. Kemudian berikan bit penanda pada file
pemampatan.
Selanjutnya tambahkan bit kiri data pertama dari file
asli dan gabungkan bit kanan karakter
yang sama ke file pemampatan. Lalu
tutup dengan bit penanda pada file pemampatan.
Contoh kompresi Half Byte dalam bentuk tabel disajikan
dalam tabel 3.2, untuk menyederhanakannya maka penulis memproses langsung data
bilangan heksadesimal dengan bit
penanda ‘ff’. Dari tabel 3.2 data asli berukuran 30 byte dan data hasil
kompresi berukuran 25 byte. Dengan demikian proses telah berhasil mengkompresi
data sebanyak 5 byte.
Dalam kompresi Half Byte ada beberapa ketentuan selain
yang telah ditunjukkan pada tabel 3.2, antara lain (ditunjukkan pada gambar
3.7, 3.8, dan 3.9) :
Ø Bila pada file asli ditemukan nilai yang sama dengan
bit penanda, maka dalam file terkompresi hasus dituliskan nilai
tersebut sebanyak dua kali secara beruntun.
File
Asli File terkompresi Keterangan
ff ff *
f6 ff mb
fc f6
fe ce
f6 6a
fa a2
fa 02
f2 ff mb
f0
f2
Gambar 3.7
Kompresi Half Byte dengan nilai yang sama dengan bit penanda
*)
Nilai yang ditulis ulang karena sama dengan bit
penanda
Ø Bila terjadi
penggabungan bit kanan menghasilkan
nilai yang sama dengan bit penanda,
sehingga nilai tersebut diduga sebagai bit
penutup, maka deretan file
tersebut tidak dikompresi.
File
Asli File terkompresi Keterangan
ef ff mb
e8 ef
ec 8c
ef ff *
ef ab
ea 20
eb ff mb
e2
e0
Gambar 3.8
Kompresi Half Byte
dengan nilai
hasil kompresi sama dengan bit
penanda
*)
Nilai hasil kompresi sama dengan bit
penanda
Ø Bila banyaknya
nilai yang dapat dikompresi berjumlah genap, maka nilai terakhir tidak perlu
dikompresi.
File
Asli File terkompresi Keterangan
a8 ff mb
a5 a8
aa 5a
ad db
ab 69
a6 14
a9 ff mb
a1
a4
a2 *
Gambar 3.9
Kompresi Half Byte dengan banyaknya
nilai yang dapat dikompresi berjumlah genap
Tabel 3.2
Kompresi Half Byte
Hekadesimal
|
Hasil Kompresi
|
Keterangan
|
62
|
ff
|
mb
|
69
|
62
|
File terkompresi
|
6c
|
9c
|
|
61
|
1e
|
|
6e
|
71
|
|
67
|
ee
|
|
61
|
ff
|
mb
|
6e
|
00
|
|
6e
|
00
|
|
00
|
01
|
|
00
|
43
|
|
01
|
55
|
|
43
|
ff
|
mb
|
55
|
17
|
File terkompresi
|
17
|
be
|
|
1b
|
f0
|
|
1e
|
34
|
|
1f
|
15
|
|
10
|
2d
|
|
13
|
ff
|
mb
|
14
|
30
|
|
11
|
3f
|
|
15
|
60
|
|
12
|
6f
|
|
1d
|
6f
|
|
30
|
|
|
3f
|
|
|
60
|
|
|
6f
|
|
|
6f
|
|
|
Proses
Dekompresi Half Byte
Dalam melakukan
proses pengembalian data terkompresi ke data asli (berupa gambar bmp), dilakukan beberapa langkah, yakni
:
Ø Melihat seluruh
data file dimulai dengan data ke-5.
Ø Jika data bukan
merupakan bit penanda, maka data
langsung dimasukkan ke dalam file
pengembalian.
Ø Jika data
merupakan bit penanda, dilakukan
beberapa langkah, yakni:
§ Data kedua (data
setelah bit penanda) ditambahkan ke
dalam file pengembalian.
§ Pada data
berikutnya, gabungkan bit kiri
(sebagai bit kanan) dengan data bit kedua sebelah kiri (sebagai bit kiri). Kemudian bit kanannya (sebagai bit
kanan) dengan data bit kedua sebelah
kiri (sebagai bit kiri). Hasil dari
penggabungan data ditambahkan pada file
pengembalian.
§ Lakukan
penggabungan file hingga ditemukan bit penanda yang berfungsi sebagai bit penutup.
Untuk lebih
jelas, Gambar 3.11 menunjukkan ilustrasi proses pengembalian file terkompresi.
Gambar 3.11
Proses dekompresi data
Dengan
menggunakan data pada tabel 3.2, tabel 3.4 merupakan tabel dekompresinya.
Tabel 3.4
Dekompresi File
File Terkompresi
|
Keterangan
|
Hasil
Dekompresi
|
ff
|
mb
|
62
|
62
|
File terkompresi
|
69
|
9c
|
6c
|
|
1e
|
61
|
|
71
|
6e
|
|
ee
|
67
|
|
ff
|
mb
|
61
|
00
|
|
6e
|
00
|
|
6e
|
01
|
|
00
|
43
|
|
00
|
55
|
|
01
|
ff
|
mb
|
43
|
17
|
File terkompresi
|
55
|
be
|
17
|
|
f0
|
1b
|
|
34
|
1e
|
|
15
|
1f
|
|
2d
|
10
|
|
ff
|
mb
|
13
|
30
|
|
14
|
3f
|
|
11
|
60
|
|
15
|
6f
|
|
12
|
6f
|
|
1d
|
|
|
30
|
|
|
3f
|
|
|
60
|
|
|
6f
|
|
|
6f
|
Tidak ada komentar:
Posting Komentar