Dalam ilmu komputer, pemampatan data
atau Kompresi Data merupakan salah satu subyek di bidang teknologi
informasi yang saat ini telah diterapkan secara luas. Kompresi Data adalah
sebuah cara untuk memadatkan data sehingga hanya memerlukan ruangan
penyimpanan lebih kecil sehingga lebih efisien dalam menyimpannya atau
mempersingkat waktu pertukaran data tersebut. Teori Informasi sendiri
adalah salah satu cabang Matematika yang berkembang sekitar akhir dekade
1940-an. Tokoh utama dari Teori Informasi adalah Claude Shannon dari
Bell Laboratory. Teori Informasi mengfokuskan pada berbagai metode
tentang informasi termasuk penyimpanan dan pemrosesan pesan. Teori
Informasi mempelajari pula tentang redundancy (informasi tak berguna)
pada pesan.
Semakin banyak redundancy semakin besar
pula ukurang pesan, upaya mengurangi redundancy inilah yang akhirnya
melahirkan subyek ilmu tentang Kompresi Data. Teori Informasi
menggunakan terminologi entropy sebagai pengukur berapa banyak informasi
yang dapat diambil dari sebuah pesan. Kata “entropy” berasal dari ilmu
termodinamika. Semakin tinggi entropy dari sebuah pesan semakin banyak
informasi yang terdapat di dalamnya. Entropy dari sebuah simbol
didefinisikan sebagai nilai logaritma negatif dari probabilitas
kemunculannya.
Ada terdapat jenis Teknik Kompresi
dapat dibagi menjadi dua kategori besar, yaitu pemampatan tanpa
kehilangan (lossless data compression) dan pemampatan berkehilangan
(lossy data compression).
Berikut beberapa Alogritma Kompresi yang sering digunaka:
- RLE ( Run Length Encoding)
- langkah 1: buat project baru, file – > new project, pada kotak project name, diisi dengan nama project sesuai dengan keiinginan
- langkah 2: tambahkan empat label, dua button dan dua textbox, atur dan tata sedemikian rupa sehingga tampilannya seperti pada gambar dibawah ini
- langkah 3: Pada button kompres tambahkan sourcode seperti ini:
string data;
int jum ;
jum = 0;
data = textBox2.Text.Trim()+” “;
textBox1.Text = “”;
if (isNumeric(data) == true)
{
MessageBox.Show(“bkn angka”);
return;
} else
for (int i = 0; i < (data.Length-1); i++)
{
if (data.Substring(i,1)!=data.Substring(i + 1, 1)){
textBox1.Text = textBox1.Text + data.Substring(i, 1);
if (jum >= 3){
textBox1.Text += “!” + (jum + 1).ToString();
jum = 0;}else
{textBox1.Text = textBox1.Text + data.Substring(i – jum, jum);
jum = 0;}
}else
{jum = jum + 1;}
}
jum = 0;
data = textBox2.Text.Trim()+” “;
textBox1.Text = “”;
if (isNumeric(data) == true)
{
MessageBox.Show(“bkn angka”);
return;
} else
for (int i = 0; i < (data.Length-1); i++)
{
if (data.Substring(i,1)!=data.Substring(i + 1, 1)){
textBox1.Text = textBox1.Text + data.Substring(i, 1);
if (jum >= 3){
textBox1.Text += “!” + (jum + 1).ToString();
jum = 0;}else
{textBox1.Text = textBox1.Text + data.Substring(i – jum, jum);
jum = 0;}
}else
{jum = jum + 1;}
}
- langkah 4: Sekarang jalankan program, jika langkah-langkah diatas dilakukan dengan benar, program ini mampu melakukan pengompresian huruf pada kata jika terdapat minimal 4 huruf yang kembar secara berurutan.
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 kompresiHalf Byte.
Saat karakter yang bit kirinya sama secara berderet, maka algoritma ini mengkompres data tersebut diawali dengan ”bit penanda” kemudian bitpertama 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 gabungkanbit kanan karakter yang sama ke file pemampatan. Lalu tutup dengan bitpenanda 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, makadalam 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 bitpenanda
*) 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 bitpenutup, 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, makanilai 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
|
Fileterkompresi
|
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
|
Fileterkompresi
|
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 filepengembalian.
§ Pada data berikutnya, gabungkan bit kiri (sebagai bit kanan) dengan data bit kedua sebelah kiri (sebagai bit kiri). Kemudian bitkanannya (sebagai bit kanan) dengan data bit kedua sebelah kiri (sebagai bit kiri). Hasil dari penggabungan data ditambahkan padafile 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
FileTerkompresi
|
Keterangan
|
Hasil Dekompresi
|
ff
|
mb
|
62
|
62
|
Fileterkompresi
|
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
|
Fileterkompresi
|
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
|
0 komentar:
Posting Komentar