Monday, November 17, 2008

Kompresi Citra Grayscale dengan Algoritma RLE (Run Length Encoding)

Sebelumnya sudah pernah dibahas, metode kompresi dengan algoritma kuantisasi. Algoritma kuantisasi merupakan teknik kompresi yang lossy, artinya banyak informasi dari citra yang hilang, sehingga akan sulit untuk didekompresi kembali.
Nah kalau Algoritma RLE ini merupakan teknik kompresi yang lossless, sehingga kita dengan mudah dapat melakukan dekompresi citra kembali.
Bagaimana algoritma RLE bekerja? Kita coba implementasikan dengan citra grayscale ukuran 6x6 bit (8 derajat keabuan) sebagai berikut:

1 1 1 7 1 3
4 4 6 1 2 2
7 7 7 5 5 5
6 4 4 2 2 2
5 5 2 2 2 1
2 3 3 3 0 0

Kode RLE merupakan pasangan intensitas warna dan banyaknya intensitas warna yang muncul berurutan. Sehingga di dapat kode RLE nya adalah sebagai berikut:
1 3 7 1 1 1 3 1 4 2 6 1 1 1 2 2 7 3 5 3 6 1 4 2 2 3 5 2 2
3 1 1 2 1 3 3 0 2

Cara membaca kode diatas adalah : intensi
tas warna 1 muncul 3 kali, intensitas warna 7 muncul 1 kali, intensitas warna 1 muncul 1 kali, intensitas warna 3 muncul 1 kali,...... dan seterusnya. Cocokkan dengan citra aslinya.
Berikutnya ini adalah source untuk mebuat kod
e RLE tersebut. Seperti biasa dibikinnya pake Matlab.
g adalah citra grayscale yang kita punya. Hasilnya akan ditampung dalam array yang diberi nama rle. Nah karena dapam array rle kita juga menyimpan berapa kali intensitas warna tersebut muncul, maka untuk mendekompresi kembali tentu merupakan perkara yang mudah.