Arithmetic Coding

7
TUGAS PERKULIAHAN GRAFIKA Dan PENGOLAHAN CITRA (IFX-34-01) ARITHMETIC CODING Nama Anggota Kelompok 2 : 1. Heru Permana / 113108003 2. Tahta Galuh Sari / 113108007 3. Shulha Yahya / 113108038 4. Rendi Trizaurochim / 113108043 S1 EKSTENSI TEKNIK INFORMATIKA FAKULTAS TEKNIK INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG 2010

Transcript of Arithmetic Coding

TUGAS PERKULIAHAN GRAFIKA Dan PENGOLAHAN CITRA (IFX-34-01)

ARITHMETIC CODING

1. 2. 3. 4.

Nama Anggota Kelompok 2 : Heru Permana / 113108003 Tahta Galuh Sari / 113108007 Shulha Yahya / 113108038 Rendi Trizaurochim / 113108043

S1 EKSTENSI TEKNIK INFORMATIKA FAKULTAS TEKNIK INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG 2010

Aritmatika coding merupakan perbaikan dari teknik huffman. Pada huffman setiap simbol direpresentasikan dengan bilangan integer unik, sedangkan pada aritmatika setiap simbol akan direpresentasikan sebagai bilangan pecahan antara 0-1. Urutan penginputan simbol pada aritmatika direpresentasikan dengan 0.0 sampai 1.0. Hal tersebut diberikan atas dasar probabilitas kemunculan setiap simbol. Semakin tinggi frekuensi kemunculan suatu simbol, maka semakin luas interval nilainya dan semakin sedikit representasi bit yang dibutuhkan untuk mewakili nilai tersebut. Sebaliknya semakin rendah frekuensi kemunculan karakter, maka semakin pendek intervalnya dan representasi bit yang dibutuhkan semakin besar. A. Encoding Algorithm Misalnya terdapat 4 simbol alfabet dalam data A = {a, b, c, d} dengan nilai probabilitas yang sudah ditentukan, yaitu p(a) = 0.3, p(b) = 0.2, p(c) = 0.4, dan p(d) = 0.1. Dari data diatas dapat diperoleh nilai range seperti terdapat dalam tabel di bawah ini. Simbol a b c d Probabilitas 0.3 0.2 0.4 0.1 Komulatif probabilitas 0.3 0.5 0.9 1.0 Range [0.0 , 0.3] [0.3 , 0.5] [0.5 , 0.9] [0.9 , 1.0]

Dengan N sebagai panjang data pesan dan F(i) sebagai komulatif probabilitas pada

begin L = 0.0; H = 1.0; F(0) = 0; For ( j = 1 to N ) { i = index of Symbol(j); L = L + ( H - L ) * F(2 - 1); H = L + ( H - L ) * F ( i ) ;} Output end

simbol ke i, maka algortima aritmatik coding dapat dituliskan sebagai berikut : Contoh :

2

Jika akan meng-encode pesan A c a c b a d dengan menggunakan nilai probabilitas yang sudah ditetapkan diatas, maka pertama akan dibuat nilai range awal yaitu [0.0, 0.3], [0.3, 0.], [0.5, 0.9], dan [0.9, 1.0] untuk simbol a, b, c, dan d. Kemudian akan digambarkan posisi range untuk masing-masing simbol seperti gambar di bawah ini.

Penjelasan : Simbol pertama pada pesan adalah C, maka range akan berubah menjadi range C, yaitu [0.5, 0.9]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5, 0.62], [0.62, 0.7], [0.7, 0.86], [0.86, 0.9]. Simbol kedua pada pesan adalah A, maka range akan berubah menjadi range A, yaitu [0.5, 0.62]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5, 0.536], [0.536, 0.56], [0.56, 0.608], [0.608, 0.62]. Simbol ketiga pada pesan adalah C, maka range akan berubah menjadi range C, yaitu [0.56, 0.608]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.56, 0.5744], [0.5744, 0.584], [0.584, 0.6032], [0.6032, 0.608]. Simbol keempat pada pesan adalah B, maka range akan berubah menjadi range B, yaitu [0.5744, 0.584]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5744, 0.57728], [0.57728, 0.5792], [0.5792, 0.58304], [0.58304, 0.584]. Simbol kelima pada pesan adalah A, maka range akan berubah menjadi range A, yaitu [0.5744, 0.57728]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5744, 0.575264], [0.575264, 0.57584], [0.57584, 0.576992], [0.576992, 0.57728]. Simbol keenam pada pesan adalah D, maka range akan berubah menjadi range D, yaitu [0.576992, 0.577280]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.576992, 0.577078], [0.577078, 0.577136], [0.577136, 0.577251], [0.577251, 0.577280].

3

Hasil akhir didapatakan pesan c a c b a d terdapat dalam range [0.576992, 0.577280]. Misalkan dengan midpoint interval maka pesan dikodekan menjadi 0.577136.

B. Decoding Algorithm Encoder dan Decoder memiliki model probabilitas yang sama. Dalam decoder, dimulai dengan range [0.0,0.1] dengan 4 interval yaitu [0.0, 0.3], [0.3, 0.], [0.5, 0.9], dan [0.9, 1.0] untuk simbol a, b, c, dan d. Setelah decoder menerima bilangan yang telah di-encode yaitu 0.577136, maka didapatkan simbol pertama dari pesan adalah C karena 0,577136 berada pada range C , yaitu [0.5, 0.9]. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5, 0.62], [0.62, 0.7], [0.7, 0.86], [0.86, 0.9]. Karena 0.577136 berada pada range A [0.5, 0.62], maka simbol berikutnya adalah A. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5, 0.536], [0.536, 0.56], [0.56, 0.608], [0.608, 0.62]. Karena 0.577136 berada pada range C [0.56, 0.608], maka simbol berikutnya adalah C. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.56, 0.5744], [0.5744, 0.584], [0.584, 0.6032], [0.6032, 0.608]. Karena 0.577136 berada pada range B [0.5744, 0.584], maka simbol berikutnya adalah B. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5744, 0.57728], [0.57728, 0.5792], [0.5792, 0.58304], [0.58304, 0.584]. Karena 0.577136 berada pada range A [0.5744, 0.57728], maka simbol berikutnya adalah A. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.5744, 0.575264], [0.575264, 0.57584], [0.57584, 0.576992], [0.576992, 0.57728]. Karena 0.577136 berada pada range D [0.576992, 0.577280], maka simbol berikutnya adalah D. Setelah itu, range akan dipartisi menjadi 4 interval, yaitu [0.576992, 0.577078], [0.577078, 0.577136], [0.577136, 0.577251], [0.577251, 0.577280].

Apabila decoder tidak mengetahui bahwa pesan berhenti di simbol D, maka decoder akan terus mendecoding simbol-simbol berikutnya. Masalah ini dapat diatasi dengan memastikan4

setiap pesan diakhiri dengan simbol spesial yang terdapat pada encoder dan decoder. Contohnya, diasumsikan bahwa D adalah simbol spesial tersebut, sehingga decoder akan berhenti setelah men-decoding simbol D pada pesan c a c b a d. Atau bisa juga dengan decoder mengetahui panjang pesan yang akan di decoder, sehingga mengetahui kapan proses decoder harus berhentinya.

C. QM Coder QM Coder adalah algoritma aritmatika coding yang digunakan pada JBIG (Joint Bilevel Image Processing Group) untuk kompresi gambar bilevel. Simbol input pada QMCoder adalah bit tunggal dari citra bilevel. Dengan memperkirakan perhitungan interval oleh operasi aritmatika integer yang ketelitiannya sama, QM-coder mengeliminasi operasi perkalian. QM-coder hanya melibatkan operasi penjumlahan, pengurangan dan shift. Ide utama dari QM-coder adalah memetakan bit inputan ke More Probable Symbols(MPS) dan Less Probable Symbols(LPS). Pada citra bilevel, jika bit 0 dan1 masingmasing mewakili pixel hitam dan putih, maka dalam daerah yang paling banyak pixel hitam 0 akan dipetakan ke MPS dan 1 akan dipetakan ke LPS. Begitu pula sebaliknya. Sebelum bit selanjutnya diinputkan, QM-Coder menentukan bit yang masuk MPS dan bit yang masuk LPS dan mengompres informasi tersebut. Pada proses dekode, QM-decoder menentukan apakah bit yang telah di dekode adalah MPS atau LPS, lalu mengonversi informasi tersebut nilai pixel baru. QM-coder menetapkan interval dengan simbol MPS dan LPS. Jika perkiraan probabilitas LPS adalah Q, maka perkiraan probabilitas MPS adalah (1-Q). Untuk interval A, QM-coder membagi interval menjadi 2 sub-interval sesuai nilai Q. Nilai A diasumsikan selalu mendekati 1. Maka subinterval LPS dan MPS dapat diasumsikan masing-masing AQ Q dan A(1-Q) A-Q. Nilai A selalu berada pada range 1.5 > A 0.75. Kapanpun nilai A berada di bawah 0.75 pada proses encoing, dilakukan proses renormalisasi dengan pengulangan duplikasi A (shifting left)sampai A 0.75. Kode output pada QM-coder dinotasikan dengan C. C mengacu pada ujung bawah dari interval terkini. Jika inputan terkini adalah MPS /LPS,maka nilai C didapat dengan menjumlahkan sub-interval MPS/LPS dan interval terkini.

5

Algoritma QM coder encoding dapat dilihat seperti gambar di bawah ini.Algoritma encoding QM-Coder When MPS is encoded: begin C is unchanged; A=A-Q; if (C < 0.75) then if ( A < Q) then C=C+A; A = Q; endif; Renormalize A and C; endif; end When LPS is encoded: begin A = A - Q; if (A 2 Q)then C=C+A; A = Q; endif; Renormalize A C; End

and

Perkiraan probabilitas dalam QM-coder didapatkan dengan menggunakan tabel nilai Q yang telah ditentukan sebelumnya. Nilai Q pada LPS diupdate setiap proses renormalisasi terjadi pada saat encoding. Interval inversion terjadi ketika ukuran sub-interval MPS lebih kecil dari ukuran sub-interval LPS sebagai hasil perkiraan nilai A dan C. Ini terjadi ketika LPS muncul lebih sering dibanding MPS. Masalah ini dapat diselesaikan dengan conditional exchange, yaitu membalikkan penempatan 2 subinterval kapanpun subinterval LPS lebih besar dari subinterval MPS. Conditional Exchange Subinterval assignment pada QM-coder: a. Dengan conditional exchange b. Tanpa conditional exchange6

Algoritma QM coder encoding dapat dilihat seperti gambar di bawah ini.Algoritma decoding QM-Coder QM-Decoder: The Decoding Algorithm begin if (C 2 Q ) then (MPS is decoded) C=C-Q; A=A-Q; else (LPS is decoded) A = Q: endif; if (A < 0.75) then endif; Renormalize A and C ; end.

7