Metode Entropijskog Kodiranja - GIF

5
Metode entropijskog kodiranja – GIF Josip Grgec

description

GIF

Transcript of Metode Entropijskog Kodiranja - GIF

Page 1: Metode Entropijskog Kodiranja - GIF

Metode entropijskog kodiranja – GIF

Josip Grgec

Page 2: Metode Entropijskog Kodiranja - GIF

1.Entropijsko kodiranje

Entropijsko kodiranje je kompresijsko kodiranje bez gubitaka podataka, neovisno o specifičnim obilježjima medija. Kod entropijskog kodiranja svaki se kodirani podatak može vratiti u prvobitni oblik dekodiranjem. Zbog te mogućnosti entropijsko kodiranje se još zove i reverzibilnom medtodom kodiranja. Kod entropijskog kodiranja podaci se ne gube, zapisi se skraćuju, a neki simboli ili nizovi simbola ponavljaju.

2.GIF – Graphics Interchange Format

GIF je 8-bitni bitmap grafički format koji koristi paletu od maksimalno 256 boja. Gif podržava i animacije kod kojih se za svaki frame može koristiti paleta od 256 boja. Broj nijansi kod konvertiranja u GIF format se drastično smanjuje. Zbog toga GIF je prikladniji za dijagrame, logotipe i slične grafičke sadržaje. GIF se kompresira Lempel-Ziw-Welch-ovom metodom kodiranja za smanjivanje veličine datoteke bez gubitaka kvalitete slike.

2.1 Povijest GIF-a

CompuServe je predstavio GIF 1987. godine da bi zamjenili run-lenght encoding (RLE) fromat koji je pružao samo crnu i bijelu boju. Postao je popularan jer je zbog metode kodiranja bio puno efikasniji i mogao se puno brže preuzeti na vlastito računalo od drugih sličnih formata. 1989. godine dodana mu je podrška za animaciju. 1994. godine počeo je razvoj Portable Network Graphics-a (PNG), koji je trebao zamijeniti GIF, zbog patenta nad Lempel-Ziw-Welch-ovom medtodom kodiranja. PNG ima bolju kompresiju od GIF-a osim za animaciju.

3. Lempel-Ziw-Welch

Lempel-Ziw-Welch je algoritam za kompresijsko kodiranje bez gubitaka podataka nastao od strane Abrahama Lempela, Jacoba Ziwa i Terry-a Welcha. Objavljen je 1984. godine kao nadograda LZ78 algoritma koji su napravili Lempel i Ziw.

Page 3: Metode Entropijskog Kodiranja - GIF

4.Primjer Lempel-Ziw-Welch-a

4.1 Kodiranje

Enkrptirati čemo kod D A C C D B A C D A.

# 0000 0A 0001 1B 0010 2C 0011 3D 0100 4

Izlaz

Trenutna sekvenca

Slijedećiznak

Kod Bitovi Produženi riječnik

- DD A 4 100 DA: 5A C 1 001 AC: 6C C 3 011 CC: 7C D 3 011 CD: 8D B 4 0100 DB: 9B A 2 0010 BA: 10

AC D 6 0110 ACD: 11DA # 5 0101

0 0000

Uzmemo trenutni znak D, kojemu je kod po rječniku 4, te mu u dodajemo sljedeći znak u nizu, koji je A, i u produženi rječnik ih upisujemo kao niz i dajemo im prvi prazni broj u rječniku.

Dužina kodiranog koda : (4 simbola x 3 bit/simbol) + ( 5 simbola x 4 bit/simbol) = 32 bita

Ušteda bitova će rasti što je veći kod.

Kodiranje radi tako da simbolima koje dobijemo dodajemo broj koji im pripada po rječniku, te se radi produženi rječnik koji sadrži trenutni simbol i sljedeći simbol koji se kodira i dodjeljuje im se sljedeći slobodni redni broj po riječniku. Produženi rječnik se koristi u slučajevima kada se neki nizovi ponavljaju. Tako mogu nastati sve veći i veći nizevi i ušteda bitov araste. Bitovi se popunjavaju tako da se ukupni boroj bitova na izlazu povećava na 2, 4, 8, 16, 32, 64 itd. Mjestu.

Page 4: Metode Entropijskog Kodiranja - GIF

4.2 Dekodiranje

Ulaz Novi ulaz u riječnikBitovi Kod Izlaz Puni izraz Pretpostavka100 4 D 5: D?001 1 A 5: DA 6: A?011 3 C 6: AC 7: C?011 3 C 7: CC 8: C?

0100 4 D 8: CD 9: D?0010 2 B 9: DB 10: B?0110 6 AC 10: BA 11: AC?0101 5 DA 11: ACD 12: DA?0000 0 #

Dobijemo broj 4 i pogledamo u riječnik koja oznaka se nalazi na tom mjestu, u našem slučaju D, te se ta oznaka šalje na izlaz. Zatim se popunjava puni izraz kojega tu još nema jer smo u prvom redu, te se radi pretpostavka za sljedeći puni izraz koji izgleda kao trenutni izlaz D i nepoznata oznaka. Sljedeći znak na ulazu je 1 koji u riječniku označava slovo A, punimo puni izraz koji sada izgleda kao prošli izlaz i trenutni izlaz (DA), te se radi pretpostavka za sljedeći puni izraz koji počinje se A.

Dekoder radi tako da dobije kod, te pogleda u riječnik i na izlaz daje odgovarajuće simbole. Nakon što im da simbole on popunjava puni izraz, te radi pretpostavku za puni izraz sljedećeg dijela koda. Rječnik koji nastaje radom dekodera je isti rječnik koji nastaje i kada se kodira.