• Tidak ada hasil yang ditemukan

06.01 Kompresi Lossless

N/A
N/A
Protected

Academic year: 2021

Membagikan "06.01 Kompresi Lossless"

Copied!
46
0
0

Teks penuh

(1)

1

Sistem dan Teknologi Informasi STEI ITB

Yusep Rosmansyah, Ph.D.

M. Rizki Nugraha, M.T.

Chessa Nur Triejunita, S.T.

Modul 06

Kompresi dan Dekompresi

06.01

Kompresi Lossless

II3150 Sistem Multimedia Program Studi

Sistem dan Teknologi Informasi

(2)

2

Kompresi Lossless

Run Length Encoding

Huffman Coding

Arithmetic Coding

Lempel-Ziv-Welch

(3)

3

Run Length Encoding (RLE)

RLE merupakan algoritma kompresi

data sederhana

Data disusun beserta

dengan jumlahnya Sangat cocok jika ada data-data yang

berdekatan nilainya sama

(4)

4

Run Length Encoding (RLE)

Mengurangi redudansi data dengan mengganti pengulangan karakter secara berturut-turut dalam suatu string dengan dua

entitas, yaitu angka jumlah pengulangan suatu karakter dan karakter itu sendiri

Contoh:

BBBBEEEEEEEECCCCDAAAAA dapat direpresentasikan dengan:

4B8E4C1D5A

(5)

5

Run Length Encoding (RLE)

Jika diasumsikan 1 byte per karakter, maka BBBBEEEEEEEECCCCDAAAAA adalah 22 byte, dan

4B8E4C1D5A

adalah 10 byte

(6)

6

Contoh RLE 1

1 2 1 1 1 1

1 3 4 4 4 4

1 1 3 3 3 5

1 1 1 1 3 3

Susunan bilangan pada tabel adalah:

121111134444113335111133 = 24 byte

(7)

7

Contoh RLE 1

• Dihitung jumlah kemunculan data:

(1,1) (2,1) (1,5) (3,1) (4,4) (1,2) (3,3) (5,1) (1,4) (3,2)

• Data kompresi:

1 1 2 1 1 5 3 1 4 4 1 2 3 3 5 1 1 4 3 2 = 20 byte

(8)

8

Contoh RLE 2

• Data asli sebagai berikut:

WWWWWWWWWWWWKWWWWWWWWWWWWKKKW WWWWWWWWWWWWWWWWWWWWWWWKWWWW

WWWWWWWWWW

• Ada 67 karakter

(9)

9

Contoh RLE 2

• Data disusun dengan algoritma RLE:

12W1K12W3K24W1K14W

Ada 18 karakter

(10)

10

Huffman Coding

Pengkodean karakter berdasarkan frekuensi kemunculan karakter tersebut

Karakter kemudian disusun menjadi pohon

biner

Karakter yang sering muncul terletak dekat dengan akar sedangkan karakter yang jarang

muncul terletak jauh dari akar

Dengan demikian, karakter yang sering muncul memiliki kode yang

pendek sedangkan yang jarang

muncul memiliki kode yang panjang

(11)

11

Huffman Coding

Frekuensi karakter dari string yang akan dikompres dianalisa terlebih dahulu

1

• Frekuensi terkecil dikerjakan terlebih dahulu dan diletakkan ke dalam leaf

• Leaf-leaf dikombinasikan dan dijumlahkan probabilitasnya atau frekuensinya menjadi root di atasnya

2

Selanjutnya dibuat pohon Huffman

(12)

12

Contoh Huffman

• Misalkan ada string:

AAAABBDCCAAAEEEBBBCDDAABCCDAAA = 30 byte

= 30 x 8 = 240 bit

Karakter Frekuensi Probabilitas

A 12 12/30

B 6 6/30

C 5 5/30

D 4 4/30

E 3 3/30

Hitung frekuensi setiap karakter:

(13)

13

Contoh Huffman (2)

String terdiri atas 5 karakter yaitu A, B, C,

D dan E

Setiap karakter

menjadi Subtree yang

terpisah

(14)

14

Contoh Huffman (3)

• Subtree untuk D dan E mempunyai frekuensi yang paling kecil, maka

keduanya digabung

(15)

15

Contoh Huffman (4)

• Subtree untuk B dan C mempunyai frekuensi yang paling kecil,

sehingga mereka digabungkan

(16)

16

Contoh Huffman (5)

• Subtree untuk {B, C} dan {D, E} mempunyai frekuensi terkecil,

kemudian digabungkan:

(17)

17

Contoh Huffman (6)

• Hasil akhir :

(18)

18

Contoh Huffman (7)

Maka:

• A dikodekan 1

• B dikodekan 000

Untuk mengkodekan karakter, setiap cabang kiri

diberi nilai 0 dan setiap cabang kanan diberi nilai 1

(19)

19

Contoh Huffman (8)

Jumlah bit yang diperlukan dengan kompresi Huffman menjadi: 12 + 18 + 15 + 12 + 9 = 66 bit

Karakter Frekuensi Kode Panjang Kode Jumlah bit=frekuensi x panjang kode

A 12 1 1 12

B 6 000 3 18

C 5 001 3 15

D 4 010 3 12

E 3 011 3 9

(20)

20

Huffman Decoding

Menggunakan LUT (Look Up Table), jika diterima bit:

1 → A

0 → ada 4 kemungkinan, lihat bit kedua

bit kedua 0 → ada dua kemungkinan, lihat bit ketiga bit ketiga 0 → yakin bahwa karakter adalah B

A A A A B B D C C … …

1 1 1 1 000 000 010 001 001

(21)

21

Arithmetic Coding

Memetakan seluruh pesan ke dalam bilangan asli antara 0 dan 1

1

Selang tersebut memiliki jumlah bilangan asli yang tidak terbatas sehingga memungkinkan

untuk encoding pesan apapun

2

Arithmeic compression memungkinkan

melakukan encoding pesan tanpa meng-assign bilangan biner tetap pada setiap karakter

3

(22)

22

D = Batas atas (UB) – Batas bawah (LB)

UB = LB + D x P(x), dimana P(x) adalah probabilitas dari karakter Range karakter [R(x)] = LB : UB

= LB : LB + D x P(x)

Nilai tag = nilai untuk melakukan decoding

(23)

23

Contoh Arithmetic Coding

Encoding Pesan “MURINU”

Total karakter : 6

Hitung probalibitas Karakter Probabilitas P(x)

U 2/6 0,33

R 1/6 0,17

N 1/6 0,17

M 1/6 0,17

I 1/6 0,17

(24)

24

1

0 0,17

I

0,34

M

0,51 0,68

R U

MURINU

0,34

0,17 0,1989

I

0,2278

M

0,256

7 N

0,2856

R U

D = UB – LB

= 0,34 – 0,17

= 0,17

R(I) = LB : LB + D x P(I)

= 0,17 : 0,17 + 0,17 x 0,17

= 0,17 : 0,1989

R(M) = LB : LB + D x P(M)

= 0,1989 : 0,1989 + 0,17 x 0,17

= 0,1989 : 0,2278 R(N) = LB : LB + D x P(N)

= 0,2278 : 0,2278 + 0,17 x 0,17

= 0,2278 : 0,2567 R(R) = LB : LB + D x P(R)

= 0,2567 : 0,2567 + 0,17 x 0,17

= 0,2567 : 0,2856 N

(25)

25

1

0 0,17

I

0,34

M

0,51 0,68

R U

MURINU

0,34

0,17 0,1989

I

0,2278

M

0,2567

N

0,2856

U

0,2856

I M

0,313344

N

0,322592

R U

0,322592

0,313344

I

0,31648832

M N

0,31963264

R U

0,31806048

0,31491616

0,31361127

I

0,31387854

M N R U

0,31414581 0,34

0,304096

0,294848 0,31491616

R

N

0,31414581

0,31392398

I

0,31396942

M N

0,3140603

R U

0,31401486

0,31387854 0,31441308

0,313344

(26)

26

0,3140603 < U < 0,31414581

Nilai tag untuk decoding : 0,31414581 + 0,3140603

2 = 0,31410306

(27)

27

Arithmetic Coding - Decoding

• Diketahui:

• Nilai tag = 0,31410306

• Banyak karakter = 6

• Nilai Probabilitas Karakter

Karakter Probabilitas P(x)

U 0,33

R 0,17

N 0,17

M 0,17

I 0,17

(28)

28

1

0 0,17

I

0,34

M

0,51 0,68

R U

Nilai tag = 0,31410306

0,34

0,17 0,1989

I

0,2278

M

0,2567

N

0,2856

U

0,2856

I M

0,313344

N

0,322592

R U

0,322592

0,313344

I

0,31648832

M N

0,31963264

R U

0,31806048

0,31491616

0,31361127

I

0,31387854

M N R U

0,31414581 0,34

0,304096

0,294848 0,31491616

R

N

0,31414581

0,31392398

I

0,31396942

M N

0,3140603

R U

0,31401486

0,31387854 0,31441308

0,313344

(29)

29

Kompresi Lossless

Lempel-Ziv-Welch

(30)

30

Lempel-Ziv-Welch

Dibuat oleh Abraham Lempel, Jacob Ziv dan Terry Welch

1

Mensubstitusi kumpulan karakter dengan suatu kode

2

Melakukan kompresi dengan menggunakan kamus

• Fragmen-fragmen text digantikan dengan indeks yang diperoleh dari sebuah kamus

3

(31)

31

Algoritma Kompresi LZW

1. Inisialisasi kamus

2. P ← karakter pertama dalam stream karakter 3. C ← karakter berikutnya dalam stream karakter 4. IF string (P+C) terdapat dalam kamus

THEN

P ← P+C

ELSE • Cetak indeks string P

• Tambahkan string (P+C) ke dalam kamus dan berikan indeks berikutnya

• P ← C

5. IF NOT EOF THEN GOTO 2

ELSE • Cetak indeks string P

• STOP

(32)

32

Initial

Dictionary

(33)

33

Algoritma Dekompresi LZW

1. Kamus diinisialisasi dengan semua karakter dasar yang ada 2. CW ← Input pertama

3. Lihat kamus dan simpan string dari kode tersebut (string CW) ke output

4. C ← karakter pertama dalam string CW

(34)

34

Algoritma Dekompresi LZW

5. PW ← CW;

CW ← indeks berikutnya dalam input 6. IF string CW terdapat dalam kamus

• THEN

1) Simpan string CW ke output 2) P ← string PW

3) C ← karakter pertama dari string CW 4) Tambahkan string (P+C) ke dalam kamus

• ELSE

1) Output string S ← string PW + C ke stream karakter 2) P ← string PW

3) C ← karakter pertama dari string S

4) Tambahkan string (P+C) ke dalam kamus

7. Kembali ke langkah 5

(35)

35

LZW Contoh 1 (1) (Kompresi)

• Input : ABABBABCAB

• Initial dictionary A = 1, B = 2, C = 3

Input = P NxCh = C Output Add to Dictionary

Index Index String

A B 1 4 AB

B A 2 5 BA

A B

AB B 4 6 ABB

B A

BA B 5 7 BAB

B C 2 8 BC

C A 3 9 CA

A B

AB EOF 4

Output:

1 2 4 5 2 3 4

(36)

36

LZW Contoh 1 (2) (Dekompresi)

• Input : 1 2 4 5 2 3 4

• Initial dictionary 1 = A, 2 = B, 3 = C

StringPW

CW P C Output

Add to Dictionary

Index String Index String

NULL 1 A A A

A 2 B A B B 4 AB

B 4 AB B A AB 5 BA

AB 5 BA AB B BA 6 ABB

BA 2 B BA B B 7 BAB

B 3 C B C C 8 BC

C 4 AB C A AB 9 CA

AB EOF

Output:

A B AB BA B C AB

(37)

37

LZW Contoh 2 (1) (Kompresi)

• Input : ITETEBEBE

• Initial dictionary A=1, ...., Z=26, (B=2, E=5, I=9, T=20)

Input = P NxCh = C Output Add to Dictionary

Index Index String

I T 9 27 IT

T E 20 28 TE

E T 5 29 ET

T E

TE B 28 30 TEB

B E 2 31 BE

E B 5 32 EB

B E

BE EOF 31

Output:

9 20 5 28 2 5 31

(38)

38

LZW Contoh 2 (2) (Dekompresi)

• Input : 9 20 5 28 2 5 31

• Initial dictionary A=1, ...., Z=26, (B=2, E=5, I=9, T=20)

StringPW

CW P C Output

Add to Dictionary

Index String Index String

NULL 9 I I I

I 20 T I T T 27 IT

T 5 E T E E 28 TE

E 28 TE E T TE 29 ET

TE 2 B TE B B 30 TEB

B 5 E B E E 31 BE

E 31 BE E B BE 32 EB

BE EOF

Output:

I T E TE B E BE

(39)

39

LZW SOAL 1 (1) (Kompresi)

• Buatlah kompresi dan dekompresi LZW

• Input : LOSSLESSLOSSLESS

• Initial dictionary A=1, …, Z=26

Input = P NxCh = C Output Add to Dictionary

Index Index String

L O 12 27 LO

(40)

40

LZW SOAL 1 (2) (Kompresi)

Input = P NxCh = C Output Add to Dictionary

Index Code String

Output:

(41)

41

LZW SOAL 1 (3) (Dekompresi)

• Input : 12 15 19 19 12 5 29 27 33 32 19

• Initial dictionary A=1, …, Z=26

StringPW

CW P C Output

Add to Dictionary

Index String Index String

NULL 12 L L L

(42)

42

LZW SOAL 1 (4) (Dekompresi)

StringPW

CW P C Output Add to Dictionary

Index String Index String

Output:

(43)

43

JAWABAN LZW SOAL 1 (1) (Kompresi)

• Input : LOSSLESSLOSSLESS

• Initial dictionary A=1, …, Z=26

Input = P NxCh = C Output Add to Dictionary

Index Index String

L O 12 27 LO

O S 15 28 OS

S S 19 29 SS

S L 19 30 SL

L E 12 31 LE

E S 5 32 ES

S S

SS L 29 33 SSL

L O

LO S 27 34 LOS

(44)

44

JAWABAN LZW SOAL 1 (2) (Kompresi)

Input = P NxCh = C Output Add to Dictionary

Index Code String

S S

SS L

SSL E 33 35 SSLE

E S

ES S 32 36 ESS

S EOF 19

Output:

12 15 19 19 12 5 29 27 33 32 19

(45)

45

JAWABAN SOAL 1 (3) (Dekompresi)

• Input : 12 15 19 19 12 5 29 27 33 32 19

• Initial dictionary A=1, …, Z=26

StringPW

CW P C Output

Add to Dictionary

Index String Index String

NULL 12 L L L

L 15 O L O O 27 LO

O 19 S O S S 28 OS

S 19 S S S S 29 SS

S 12 L S L L 30 SL

L 5 E L E E 31 LE

E 29 SS E S SS 32 ES

SS 27 LO SS L LO 33 SSL

(46)

46

JAWBAN LZW SOAL 1 (4) (Dekompresi)

StringPW

CW P C Output Add to Dictionary

Index String Index String

SS 33 SSL SS S SSL 34 SSS

SSL 32 ES SSL E ES 35 SSLE

ES 19 S ES S S 36 ESS

S EOF

Output:

L O S S L E SS LO SSL ES S

Referensi

Dokumen terkait

Upaya- upaya itu antara lain, pendekatan untuk mengaktifkan peserta didik baik secara fisik maupun secara mental dalam suatu pembelajaran sains, mengaitkan bahan

Segala puji dan syukur kehadirat Allah SWT atas berkah, rahamat dan hidyah- Nya yang senantiasa dilimpahakan kepada penulis, sehingga bisa menyelasaikan skripsi dengan judul

ROLE BASED ACCESS CONTROL SISTEM PENILAIAN AKADEMIK ONLINE BERBASIS WEB DENGAN MENGGUNAKAN FRAMEWORK CODEIGNITER PADA FAKULTAS TEKNOLOGI INDUSTRI UPN ”VETERAN”

Secara keseluruhan EPIC rate, rata-rata adalah 4,077, artinya iklan menggunakan aplikasi mobile offline ini berada pada dimensi “efektif” (Gambar 4). Hal ini

Hasil pengujian menunjukkan bahwa ketepatan perpindahan distributor channel sesuai rancangan, kecepatan sumber hasil pengamatan antara 15 mm/dt sampai 20 mm/detik masih

Maka ditetapkanlah kembali fatwa baru yang merupakan revisi bukan menghapus tetapi sebagai penjelasan dari Fatwa MUI Nomor 03 Tahun 2010 dengan Fatwa MUI Nomor 05 Tahun 2010

Faktor-faktor yang memengaruhi daya ingat sesaat dalam penelitian ini yaitu pengetahuan gizi, status gizi, dan status anemia, semakin baik skor pengetahuan gizi

Investment Area (AIA) pada tahun 1998 sebagai inisiatif investasi yang bertujuan untuk menarik dan meningkatkan arus PMA dari luar maupun. dalam kawasan sebagaimana digariskan