Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Kompresní algoritmy.

Podobné prezentace


Prezentace na téma: "Kompresní algoritmy."— Transkript prezentace:

1 Kompresní algoritmy

2 Opakování Co je to kódování? Jaký je rozdíl oproti šifrování? Jak pracuje Shanon-Fanovo kódování? Jak pracuje Huffmanovo kódování?

3 Problém komprese Balení věcí do skříně nebo batohu Úspora úložného prostoru Zjednodušení transportu Nezáleží na kapacitě, problém nedostatku místa nakonec vždycky přijde

4 Komprese dat Komprese a komprimace jsou synonyma
Kompresní algoritmus transformuje řetězec S1 délky d1 na řetězec S2 délky d2 Požadujeme, aby: d2 < d1 I(S1) = I(S2), kde I je informační hodnota Jak to udělat?

5 Jak to udělat? Základní myšlenka: Vyhledáme nadbytečné informace, které vypustíme. Viz teorie informace z minulé přednášky Příklad: qu v angličtině Jiná myšlenka: Vypustíme nějaké informace tak, “aby to nebylo poznat“. Text lze komprimovat 1:2, obrázky 1:50, video až 1:1000

6 Vlastnosti kompresních algoritmů
Ztrátovost / bezeztrátovost komprese Kompresní poměr k = d2/d1 (k<=1) někdy udáván v procentech kompresní zisk: z = 1 – k Metody lze rozdělit na: statické x adaptivní symetrické x asymetrické proudové x blokové

7 Historie kódování a komprese
1820 Braillovo písmo pole 3x2 bodů písmena, slova 1838 Morseova abeceda Samuel Morse kódování pro telegraf

8 Historie kódování a komprese
1800 Baudotův kód 5bitový kód pro telegraf písmena, znaky přepínač LTRS/FIGS Dvacáté století s rozvojem IT jde i rozvoj kompresních algoritmů Huffmann, Shannon, Lempel, Ziv, Welch

9 Jednoduché kompresní metody
Adam adaptace 3ptace adekvátní 2ekvátní adept 3pt admirál 2mirál afekt 1fekt aféra 2éra agenda 1genda agent 4t Komprese slovníku opakující se písmena nahradíme číslem vyjadřující jejich počet 54 zn.  44 zn. Jaký je kompresní poměr a zisk?

10 Metoda potlačení nul Jedna z nejstarších, v kombinaci s jinými dodnes používaná V souboru se vyskytují sekvence stejných znaků (mezery) Sekvenci nahradíme indikátorem a číslem Dekomprese: načteme-li indikátor, přečteme číslo a vypíšeme příslušný počet nul Efektivní až při sekvenci tří nul Posunutá stupnice => při 8bitovém kódování 258 až nul v jednom znaku

11 Metoda potlačení nul – příklad
Vstupní text: AB---CAB----B-A CB Výstupní text: ABI0CABI1B-AI4CB Řetězec 24B zkomprimován na 16B Dekomprese: Při načtení I přečteme číslo (x) a vypíšeme x+3 nul I se nesmí vyskytovat v textu

12 Metoda bitové mapy Potlačení výskytu často opakovaného znaku (nuly) Ke každé osmiznakové sekvenci vytvoříme bitovou mapu výskytu nul Ukládáme vždy bitovou mapu a sekvenci nenulových znaků V souboru musí být alespoň 1/8 nul

13 Metoda bitové mapy – příklad
Vstupní text: AB-CA--C Bitová mapa: Výstupní text: < >ABCAC Řetězec 8B zkomprimován na 6B Při dekompresi se doplňují nuly podle bitové mapy, ostatní znaky podle textu

14 Proudové kódování – RLE
Run Length Encoding (kódování délkami sekvencí) Vylepšení metody potlačení nul Označme an posloupnost znaku a délky n Každou posloupnost an nahradíme sekvencí Ian Příklad Vstupní text: abbbbcccaaaaaaaabbbb Výstupní text: aIb4cccIa8Ib4 Řetězec 20B zkomprimován na 13B Efektivní pro n>3

15 RLE s posunutou stupnicí
Náhradu sekvence an provádíme jen při n>3 Na výstup umístíme Ia(n-3) V 1B až 258 opakování (místo 255) Příklad Vstupní text: abbbbcccaaaaaaaabbbb Výstupní text: aIb1cccIa5Ib1 Řetězec 20B zkomprimován na 13B

16 RLE bez indikátoru komprese
Znak I se nesmí vyskytovat v textu – nevýhoda Každou sekvenci an pro n>=3 nahradíme sekvencí aaa(n-3) Dekomprese: Při načtení trojice stejných znaků načteme číslo – počet zbývajících znaků Nepotřebujeme indikátor komprese Při n=3 dochází k expanzi!!! aaa0

17 Využití algoritmu RLE V grafických a zvukových souborech s malými změnami malá barevná hloubka, jednoduchá kresba záznam hlasu Hlavní algoritmus: *.PCX Pomocný algoritmus: *.JPG Faxy většina faxu je bílá, ojediněle černý bod

18 Kódování delta U některých typů dat nastává lineární růst (pokles)
hudba, animace První byte uložíme tak, jak je Každý další byte je kódován jako rozdíl (delta) oproti předcházejícímu bytu Příklad Vstupní soubor: Delta kódování:

19 Kódování delta – použití
Sekvence stejných znaků jsou nahrazeny sekvencemi nul Kromě toho získáme nové sekvence stejných znaků následné kódování RLE má větší efekt Použití zejména v audioformátech

20 Algoritmus LZW84 Lempel – Ziv – Welch
Vylepšení LZ78 (Lempel – Ziv 1978) Slovníkový algoritmus pro bezeztrátovou kompresi Použitý ve formátech GIF, TIFF a PDF Do roku 2004 chráněn patentem Dnes již překonaný Čím delší text, tím lepší kompresní poměr

21 Vývoj algoritmu LZW84 LZ77 LZ78
Používá klouzavé okno, v něm hledá opakující se sekvence Vstup: Leze leze po železe Výstup: Leze l[2,3] po že[5,4] LZ78 Místo klouzavého okna tvoří vlastní slovník Slovník narůstá a je třeba jej vyprazdňovat

22 LZW komprese forall c do add c to dictionary w = ‘’ while read(c) do
if wc is in dictionary then w = wc else add wc to dictionary write code(w) w = c endif done

23 LZW dekomprese read(k) write(dictionary_entry(k)) w = k
while read(k) do if k is in dictionary then entry = dictionary_entry(k) else entry = w + w[0] endif write(entry) add w+entry[0] to dictionary w = entry done

24 Předpřipravení dat pro kompresi
Úkolem těchto algoritmů je modifikovat data tak, aby měla následná komprese lepší poměr typicky se jedná o vhodnou reverzibilní permutaci Burrows-Wheelerova transformace Move-to-front transformace

25 Burrows-Wheelerova transformace
Příprava textu pro RLE Výsledný text má stejnou délku plus znak začátku a konce ale lépe se komprimuje Algoritmus transformace: přidej k textu znak začátku a konce vytvoř tabulku všech posuvů daného textu seřaď řádky podle abecedy na výstup zapiš poslední sloupec

26 Burrows-Wheelerova transformace
Zpětná transformace opakuj tolikrát, kolik je znaků ve vstupním textu vezmi aktuální tabulku a před první sloupec vepiš vstupní text seřaď řádky aktuální tabulky podle abecedy výsledkem je původní tabulka vezmi řádek začínající znakem začátku řádku

27 Move-to-front transformace
Příprava textu tak, aby častější symboly byly kódovány nižšími čísly Proudové zpracování Algoritmus transformace Začínáme se seřazenou abecedou (tabulkou) Zapíšeme index symbolu na vstupu V tabulce indexů právě použitý symbol přesuneme na začátek Kódování je reverzibilní zpětná transformace probíhá stejně

28 Další algoritmy PPM (Prediction by Partial Matching)
adaptivní statistická metoda předpověď následujících dat na základě předchozích CM (Context Mixing) kombinace více statistických metod


Stáhnout ppt "Kompresní algoritmy."

Podobné prezentace


Reklamy Google