01 Kompresi Dan RLE

Embed Size (px)

Citation preview

2/23/2011

Kompresi Memampatkan / mengecilkan raw data Kompresi Multimedia: memampatan raw data multimedia Kompresi multimedia adalah mutlak mengingat ukuran raw data media yang sangat besar: sinyal suara, image maupun video

1

2/23/2011

Tujuan Kompresi Memperkecil ukuran file / data -> penyimpanan maupun transmisi

Kompresi Berdasarkan Output1. 2.

Kompresi Lossless (Non-Lossy) Hasil dekompres dari data terkompresi akan tepat sama persis dengan data sebelum dikompres Kompresi Lossy Hasil dekompres dari data terkompresi tidak tepat sama persis, tetapi persepsi terhadap semantik data tetap sama

2

2/23/2011

Kompresi Berdasarkan PenerimaanDialoque Mode: proses penerimaan data secara real time, mis: video conference. Kompresi data harus berada dalam batas penglihatan dan pendengaran manusia. 2. Retrieval Mode: proses penerimaan data tidak real time. Dapat dilakukan fast forward dan fast rewind di client. Dapat dilakukan random access terhadap data dan dapat bersifat interaktif1.

Kriteria Algoritma & Aplikasi Kompresi Kualitas data hasil enkoding: ukuran lebih kecil, data tidak rusak (untuk kompresi lossy) Ketepatan proses dekompresi data: data hasil dekompresi tetap sama dengan data sebelum dikompres (kompresi loseless) Kecepatan, ratio, dan efisiensi proses kompresi &

dekompresi

3

2/23/2011

Klasifikasi Teknik Kompresi Entropy Encoding Source Coding Hybrid Coding

Entropy Encoding Bersifat lossless Tekniknya tidak berdasarkan media dengan spesifikasi dan karakteristik tertentu namun berdasarkan urutan data. Statistical encoding, tidak memperhatikan semantik data. Misalnya: Run-length coding, Huffman coding,

Arithmetic coding

4

2/23/2011

Source Coding Bersifat lossy Berkaitan dengan data semantik (arti data) dan media. Misalnya: Prediction (DPCM, DM), Transformation (FFT, DCT), Layered Coding (Bit position, subsampling, sub-band coding), Vector quantization

Hybrid Coding Gabungan antara lossy + lossless Misalnya: JPEG, MPEG, H.261, DVI

5

2/23/2011

Informasi dan Entropy Set event: S = {x1, .., xn} S disebut alphabet jika xi sebuah simbol (huruf) digunakan

utk membangun pesan (message) Probabilitas kemunculan masing-masing event, p(xi) = pi n i1 pi 1 P = {p1, .., pn}, dimana pi 0, Untuk sumber memoryless: Nilai self-information yg berhub. dg event xi digunakan definisi

I(xi) = -logkpi Fungsi di atas adalah ukuran informasi (surprise atau

unexpectedness) dari kemunculan event xi

ENTROPI : Menurut Shannon, entropi dari sebuah informasi adalah minimum bit yang dibutuhkan untuk mengkodekan sebuah simbol

Dimana

pi

= probabilitas kemunculan simbol Si. = jumlah bit yang dibutuhkan untuk kode Si

For example, in an image with uniform distribution of gray-level intensity, i.e. pi = 1/256, then the number of bits needed to code each gray level is 8 bits. The entropy of this image is 8.

6

2/23/2011

Terminology Enkoder / Compresor : software (atau hardware)

yang mengkodekan data orisinal menjadi data terkompres Dekoder / Decompresor: software (atau hardware) yang mendekode data terkompres menjadi data orisinal Codec: software (atau hardware) yang mengkodekan dan mendekodekan data Algoritma : teknik yang digunakan dalam proses pengkodean/kompresi

Code Word

Code word : kombinasi bit yang merupakan representasi dari suatu simbol data orisinalMisalnya: 1 = 001; 2 = 010; 5 = 101; 7 = 111;

Codeword yang dibuat harus unik, tidak ambigu, relasi 1-1 (uniquely decodable): unik sehingga sumber orisinal dapat dikodekan kembali secara sempurna dari deretan biner code word-nya Natural Binary Code (NBC): panjang codeword sama untuk semua simbol Variable Length Code (VLC): panjang cw bervariasi

7

2/23/2011

Background

Run length encoding (RLE) is a simple technique

to compress digital data by representing successive runs of the same value in the data as the value followed by the count, rather than the original run of values. The goal is to reduce the amount of data needed to be stored or transmitted.

8

2/23/2011

The Idea Behind RLE Compression technique : Represents data using value and run length Run length defined as number of consecutive equal values e.g RLE 1110011111 1 3 0 2 1 5

Values

Run Lengths

Basic Encode Algorithm (http://www.fileformat.info)

9

2/23/2011

Encoding Algorithm Examine next value If same as previous value

Start on the first element of input

Keep a counter of consecutive values Keep examining the next value until a different value or end of input then output the value followed by the counter. Repeat

If not same as previous value Output the previous value followed by 1 (run length). Repeat

Encoder Matlab Code% Run Length Encoder % EE113D Project function encoded = RLE_encode(input) my_size = size(input); length = my_size(2); run_length = 1; encoded = []; for i=2:length if input(i) == input(i-1) run_length = run_length + 1; else encoded = [encoded input(i-1) run_length]; run_length = 1; end end if length > 1 % Add last value and run length to output encoded = [encoded input(i) run_length]; else % Special case if input is of length 1 encoded = [input(1) 1]; end

10

2/23/2011

Encoder Matlab Result>> RLE_encode([1 0 0 0 0 2 2 2 1 1 3]) ans = 1 1 0 4 2 3 1 2 3 1 >> RLE_encode([0 0 0 0 0 0 0 0 0 0 0]) ans = 0 11 >> RLE_encode([0 1 2 3 4 5 6 7 8 9])

ans = 0 1 1

1

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

Run Length Encoding Scanning

11

2/23/2011

Decoder Matlab Codemy_size = size(encoded); length = my_size(2); index = 1; decoded = []; % iterate through the input while (index > RLE_decode([0 12]) ans = 0 0 0 0 0 0 0 0 0 0 0 0 >> RLE_decode([0 1 1 1 2 1 3 1 4 1 5 1]) ans = 0 1 2 3 4 5 >> RLE_decode(RLE_encode([0 0 3 1 4 4 5 6 10])) ans = 0 0 3 1 4 4 5 6 10

12

2/23/2011

Analysis Useful for compressing data that contains repeated values, Very simple compared with other compression techniques, Reversible (Lossless) compression decompression is just as easy

Conclusion

Compression effectiveness depends on input Must have consecutive runs of values in order to maximize compression Best case: all values same

Can represent any length using two values Compressed data twice the length of original!!

Worst case: no repeating values

Should only be used in situations where we know for sure have repeating values

13

2/23/2011

Range Recursive Reduction

Range ReductionAlgoritma :1. 2.

3.

4. 5.

Buat header di aliran pertama kompres, dengan panjang L dari integer pertama, Jika nilai integer di baris ke-1, bit pertamanya = 1 (MSB =1), maka eliminasi bit tsb, dan dapat dimulai penulisan hasilnya pada output dari L - 1. Dengan demikian, encoder tidak akan membaca secara ambigu, Decoder lalu cek MSB pada baris ke-2, jika nilai yang terbanyak dikiri k bit adalah 0, maka decoder akan mengenali bit selanjutnya adalah yang akan ditulis di output tanpa k terbanyak di kiri 0 yang menempati L k bit selanjutnya, Jika tidak, maka tuliskan nilainya pada aliran output seperti input, Ulangi langkah ke-3 sampai selesai.

14

2/23/2011

Contoh Range ReductionData 1000010 1000001 1000000 0111111 0111110 0111101 0111100 49 RR code 0101 = 6 000010 1000001 1000000 0111111 111110 111101 111101 49 Data 10011100010000 00001111101000 00000001100100 00000000001010 00000000000001 RR code 1101 = 13 0011100010000 00001111101000 0001100100 0001010 0001

70

52

Kelemahan dan Kelebihan Kelebihan :

1. 2. 3. 4.

Membangkitkan kompresi yang baik Mudah untuk memprogram Performansi terbebas dari data yang akan di kompres Penerapannya akan baik pada aplikasi dimana data tidak berada di beberapa standar distribusi dan data yang random

Kelemahan : 1. Penggunaannya hanya untuk nilai integer yang tidak

negative 2. Encoder mensyaratkan dua phase pertama untuk membangun tree, kedua melintasi dan mengumpulkan node-nodenya

15

2/23/2011

Contoh image kompresi dengan data tidak random

Binary tree dengan 3RA+B+C+D+E A+B A B C C+D+E D+E D E

16

2/23/2011

Binary tree Algoritma 3R melibatkan binary tree dimana setelah bagian dari akar

ke daun merupakan daftar yang tidak menaik, setiap bagian disandikan dengan 3R dengan terpisah, syarat rekursif. Binary tree dibangun dimana setiap pasang integer yang berurutan menjadi subtree di level dibawahnya. Setiap 5bagian dari akar ke daun merupakan daftar yang terurut dan dikompres dengan 3R. Hanya note di awal yang ditulis di output. Aturannya : ikuti bagian dari akar lalu pilih node-node sepanjang sisi yang menuju kekiri. Sehingga nilai yang di peroleh di output : 1. header dengan panjang di root 2. encode 3R dengan bagian ter-encode (akar, A+B, A) 3. nilai dari node [setelah bagian(akar, C+D+E, C)] 4. nilai dari node D [setelah bagian(root, C+D+E, D+E, D)]

17