Jumat, 11 Januari 2013

Teknik Kompresi Data

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:
  1. RLE ( Run Length Encoding)
RLE merupakan salah satu algoritma kompresi yang menggunakan angka sebagai pemendekan suatu frase. Berikut kita akan mencoba membuat program kompresi RLE dengan menggunakan bahasa pemrograman C
  • 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;}
}
  • 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.
2.  Algoritma HALF BYTE
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