Jak funguje komprese? zpracováno podle článku Martina Zachara (digitalne.cz)
Používáte kompresi každý den, ale nevíte, jak funguje? Co se skrývá za slůvky rar nebo zip? Jak se mohou zmenšovat soubory, data nebo obrázky a jaké postupy se na to používají?
každodenně se z internetu stahují instalační soubory zabalené do archivů komprese pomocí archivů se dříve používala zejména pro zmenšení velikosti souborů v dnešní době se využívá spíše pro vytvoření jednoho jediného souboru z více souborů či složek, popřípadě pro vytvoření několika souborů stejné velikosti
jak vlastně komprese funguje jak to, že posloupnost jedniček a nul se dá zredukovat na kratší posloupnost a poté opět rozvinout do původní princip není nikterak složitý jednotlivé postupy se však zdokonalují, komplikují a stávají se složitými
Bezeztrátová komprese jedná se o proces, při kterém nedochází ke ztrátě informací proces je vratný využívá se například u typů rar, zip, tar, gz a dalších pokud tedy zabalíme nějaký soubor, po rozbalení bude zcela shodný s tím původním
Příklad na vysvětlení – použijeme obyčejná slova Petr požádal Petru o ruku. Petra však Petra odmítla a Petr nevěděl, jestli ji má požádat později znova. Pokud bychom chtěli zkrátit danou větu, měli bychom se snažit zkrátit ji právě pomocí opakujících se (redundantních, nadbytečných) slov.
LZ slovník Jako první případ si ukážeme jednoduché použití Lempel and Ziv adaptive dictionary-based algorithm (ve volném překladu: Lempelův a Zivův přizpůsobivý slovníkový postup). Nejprve si sepíšeme tabulku s výskytem redundancí a s novým označením slova (kódovým slovem), čímž vytvoříme slovník:
LZ slovník SlovoVýskytKódové slovo Petr2x1 Petra2x2 1 požádal Petru o ruku. 2 však 2 odmítla a 1 nevěděl, jestli ji má požádat později znova. Nyní můžeme větu přepsat za použití našeho slovníku, který jsme si sestavili:
LZ slovník Původní věta měla 103 znaků (včetně mezer a interpunkčních znamének). Nová věta má jen 89, ale nesmíme zapomenout na slovník, který jsme si vytvořili a který musíme k datům přiložit. Ten má (vždy číslo + slovo) dohromady 11 znaků. To je spolu s novou větou 100 znaků. Naše komprese tedy nebyla moc úspěšná a rozhodně jsme neušetřili příliš místa.
LZ slovník Při chytřejším použití slovníkového postupu nebudeme brát celá slova, ale samotná písmena. Nový slovník tedy bude vypadat následovně: PosloupnostVýskytKódové slovo Petr5x1 _požáda2x2
LZ slovník Tato věta má 76 znaků, slovník má 13 znaků. Dohromady tedy máme 89 znaků. To je určitě lepší než v prvním případě 12l 1u o ruku. 1a však 1a odmítla a 1 nevěděl, jestli ji má2t později znova.
Huffmanovo kódování Dochází při něm k prohledávání textu a hledání nejčastěji se vyskytujících posloupností znaků určité délky. Nejčastější posloupnosti jsou pak nahrazeny nejkratšími kódovými slovy (například 011 binárně), nejméně časté posloupnosti jsou nahrazeny nejdelšími kódovými slovy (například ).
Typy dat V dlouhých textových souborech se dá často najít spousta podobných slov a tím pádem je i dostatečně zmenšit. U různých zdrojových textů programovacích jazyků to bývá mnohdy ještě daleko lepší, protože jazyky se skládají z několika častých příkazů a výrazů, které se používají neustále dokola. Na druhou stranu například hudební nebo video soubory neobsahují příliš redundantních informací a tudíž ani komprese nebude příliš úspěšná.
Ztrátová komprese Při tomto procesu dochází ke ztrátě informací, které se již nedají získat zpátky. Obyčejný uživatel se s ní nejčastěji setkává například u obrázkových formátů (JPG, JPEG), a to pravděpodobně nejvíce u fotek, které se v těchto formátech často uchovávají, jelikož u nich ztrátová komprese nezpůsobí na první pohled rozeznatelné škody.
Obrázky Vezměme si například fotku, obloha se jeví celá modrá a tráva celá stejně zelená. Tím pádem by se měl dát soubor jednoduše zmenšit. Když se však podíváte podrobněji, všimnete si, že barva jednotlivých pixelů oblohy se jemně liší. Při procesu ztrátové komprese pak dochází k výpočtu jedné barvy, kterou se dá nahradit více barevně podobných pixelů.
Obrázky Před kompresíPo kompresi