150 likes | 345 Views
Lempel-Ziv vizualizacija. Podatkovni višemedijski prijenos i računalne mreže. Autori: - Petar Juroš - Mario Srbiš - Ivor Grubišić. Zašto koristimo kompresiju. Količina memorije se povećava, no ipak je ograničena, a podaci zauzimaju sve više memorije pa je time kompresija vrlo poželjna
E N D
Lempel-Ziv vizualizacija Podatkovni višemedijski prijenos i računalne mreže Autori: - Petar Juroš - Mario Srbiš - Ivor Grubišić
Zašto koristimo kompresiju • Količina memorije se povećava, no ipak je ograničena, a podaci zauzimaju sve više memorije pa je time kompresija vrlo poželjna • Iako ima i drugih metoda kako učinkovitije smjestiti podatke u memoriju, kompresija je jedna od njih • Razvoj filmske i glazbene industrije još dugo vremena bio bi nezamisliv bez upotrebe neke vrste kompresija
Podjela • lossy data compression • Gubi se dio originalne informacije, ali se dobiva velika ušteda u memoriji • Koristi se kod podataka gdje je dozvoljen određen gubitak kao što su zvuk, video, slika • lossless data compression • Nema gubitaka informacije jer kod nekih vrsta podataka to ne bi bilo prihvatljivo • Mali, ali vidljivi omjeri kompresije
Sažetak • Do kraja 70-tih radilo se na poboljšanju Huffman algoritma kodiranja koji se temelji na određivanju frekvencije ponavljanja simbola te njihovom predviđanju i čitanju podataka unaprijed • 1977. Abraham Lempel i Jacob Ziv predstavili drugačiji pristup kompresiranju podataka
Ideja • Ideja je kreirati rječnik od podataka koji su procesirani i zamijena simbola(ili niza simbola) sa indeksima iz tog rječnika • U kompresiranom nizu imamo samo pokazivače prema frazama u rječniku • Postoji dvije varijante Lampel-Ziv kodiranja, a najpoznatije su LZ77 i LZ78
Varijante Lempel-Ziv kodiranja LZ77 koristi se najčešće u programima koji kompresiraju tekst i opće podatke LZ78 koristi se prilikom kompresiranja binarnih podataka (slike i sl.)
Primjer Lempel-Ziv kodiranja • Vrlo učinkovito kodiranje kad se upotrebljava na nizovima velike dužine • Kod realnih nizova male dužine je teško prikazati učinkovitost
Primjer Lempel-Ziv kodiranja • Koraci: • Inicijalizacija rječnika, unose se blokovi dužine 1 • Traženje najdužeg bloka W unutar niza kojeg imamo unesenog u rječnik • Zapisati indeks bloka W u kodirani niz • Dodati novi zapis u rječnik koji se sastoji od bloka W i sljedećeg znaka • Ponoviti korak 2
Primjer Lempel-Ziv kodiranja • Nakon završetka kodiranja, niz ‘abbaabbaababbaaaabaabba’ smo zamijenili nizom ‘0110242655730’ koji ima znatno kraću dužinu • Dekodiranje ostvarujemo tako da pomoću rječnika zamijenimo indekse sa pripadajućim blokovima podataka i dobijemo polazni niz
Primjer Lempel-Ziv kodiranja • Veličina rječnika teoretski bi mogla biti beskonačna, ali se ona u praksi ograničava • Kod dovoljno velikih ulaznih podataka i kad oni imaju određen stupanj redundancije postižu se visoke kompresije • Primjeri programa koji koriste Lempel-Ziv kodiranje: • Unix – gzip, gunzip.. • Windows – WinZip, Arj, Pkzip..
Lempel-Ziv-Welch kodiranje (LZW) • 1984. Terry Welch je modificorao LZ78 kako bi ga implementirao u brze diskovne kontrolere • Koristi se u nekoliko formata za pohranu slika kao što su GIF i TIFF, dio je V.42bis modemskog kompresijskog standarda, nalazimo ga u PostScript Level 2 formatu
Lempel-Ziv-Welch kodiranje • Velika brzina kompresiranja i dekompresiranja • Nije potrebno prenositi rječnik, jer se rječnik konstruira iz kodiranih podataka, a samim time se postiže još veći stupanj kompresije od LZ78
Zaključak • Lempel-Ziv je vrlo jednostavan i brz algoritam te je jedan od najučinkovitijih načina kompresiranja podataka koji poznajemo • Ima vrlo raširenu primjenu • Cijeli niz algoritama i metoda temelji se na osnovnim principima tog algoritma i svakim danom se nadograđuje sa novim mogućnostima i modifikacijama