Kapitola 1. Úvod

Pracujeme-li s velkými objemy dat, brzy narazíme na potřebu tato data někam přenést nebo je někde archivovat. Při přenosu dat jsme omezeni šířkou přenosového pásma, a tedy i objemem dat, který jsme schopni za časovou jednotku přenést. To může vést ke značnému zpomalení přenosu a v některých případech i zcela znemožnit zamýšlené využití přenášených dat, například pokud chceme přenášet živé vysílání hudby nebo videa, případně zprostředkovat současné telefonické spojení velkého počtu účastníků. Při ukládání dat zase může jejich objem převyšovat kapacitu prostoru, který máme k dispozici.

Jednou z možností, jak uvedené situace řešit, je použití metod komprese dat. To znamená, že se pokusíme konkrétní data (např. textový soubor, obrázek, zvukový záznam nebo video) reprezentovat na menším prostoru než kolik zabírají v původní podobě. Tato data často obsahují mnohem menší množství informace, než odpovídá velikosti zabraného prostoru - například často se vyskytující slova v textovém souboru nebo opakující se sekvence v hudbě. Případně můžeme využít některých nedokonalostí lidského vnímání a odstranit z dat to, co člověk není schopen svými smysly zachytit (např. vysoké frekvence zvuku, rychlé změny v obrazu nebo podobné odstíny barev) nebo co neovlivní výsledný dojem natolik, aby odchylky od původního stavu nebylo možné tolerovat.

Metody komprese dat jsou charakterizované svou rychlostí (komprese i dekomprese dat), kvalitou a efektivitou. Kvalita komprese je dána tím, jak moc se liší rekonstruovaná data od původních, počínaje úplnou rekonstrukcí (\emph{bezeztrátová komprese}), až po omezení určitých vlastností u \emph{ztrátové komprese}, např. omezení přenášeného frekvenčního pásma (zvuk), počtu zobrazovaných barev (obraz, video) nebo počtu rozlišitelných prvků informace (obraz, video, dynamika zvuku).

V dalších kapitolách tohoto modulu se budeme věnovat metodám používaným pro kompresi jednotlivých druhů informace. Ukážeme si obecné metody používané v běžných archivačních programech i metody, se kterými se můžeme setkat v oblasti komprese zvuku, obrazu či videa. Vybrané jednodušší algoritmy si vyzkoušíme implementovat přímo v některém programovacím jazyce, u těch složitějších se seznámíme alespoň s jejich principem.