Metódy kompresie
Metódy kompresie

Cieľom kompresie je odstránenie nepodstatných alebo nadbytočných informácií z pôvodných dát tak, aby sme ich mohli ukladať alebo prenášať efektívnejšie: ušetríme tak napríklad prenosový kanál alebo ukladací priestor. Kompresiou kódujeme užitočnú informáciu menším počtom bitov, než bol použitý v pôvodnej reprezentácii.

Množstvo dát, ktoré v súčasnosti vytvoria multimediálne zariadenia, je obrovské. Ak by sme chceli uložiť 6-megapixelový obrázok (3000x2000 pixelov s 8 bitmi/farba) na US kľúč v nekomprimovanom tvare, potrebovali by sme vyše 17 megabajtov priestoru (presne 18 miliónov bajtov). Rovnaký obrázok skomprimovaný pomocou kodéra JPEG by zabral okolo 3 megabajtov ukladacieho priestoru (asi 3 200 000 bajtov) a nepostrehli by ste žiaden rozdiel. Rovnako to platí nielen pri obrázkoch, ale aj pri audio a video signáloch, a to ako pri ukladaní, tak aj pri prenose digitálnymi sieťami.

Kompresné algoritmy môžeme rozdeliť na:

- Bezstratové kódovanie
- Stratové kódovanie

Bezstratové kódovanie znižuje počet bitov hľadaním a odstraňovaním štatistickej nadbytočnosti, teda informácií, ktoré sa opakujú alebo sa môžu získať z iných informácií v signále. Bezstratová kompresia (označovaná tiež ako kompakcia) umožňuje rekonštrukciu pôvodného signál bez akýchkoľvek zmien. Je preto vhodná na archivačné účely.

Na druhej strane stratová kompresia sa snaží znížiť množstvo dát odstraňovaním informácií, ktoré človek kvôli nedokonalostiam svojich zmyslov nemôže zachytiť. Pri použití tejto metódy kompresie nie je rekonštruovaný signál nikdy rovnaký ako pôvodný signál. Metódy sú však vhodné na aplikácie, kde sme obmedzení ukladacím priestorom alebo šírkou prenosového kanála.

Vo všeobecnosti sú stratové algoritmy oveľa efektívnejšie ako bezstratové algoritmy, no zrekonštruovaný signál sa vždy líši od toho pôvodného. Kvalita komprimovaného signálu je teda kompromisom medzi množstvom informácií odstránených z pôvodného signál a požadovanou veľkosťou súboru komprimovaného signálu.

Miera zmien v signáli, ktoré sú ešte akceptovateľné bez pozorovateľného rozdielu oproti pôvodnému signálu, sa nazýva práve pozorovateľné skreslenie (just-noticeable distortion) (pri zvuku a reči) alebo práve pozorovateľný rozdiel (just-noticeable difference) (pri obrázkoch a videu), jnd.

Kompresný pomer, vyjadrujúci efektívnosť kompresnej metódy, je daný vzťahom:

,

kde Nn je počet bitov nekomprimovaného signálu a Nk je počet bitov komprimovaného signálu.

Softvér, ktorý vykonáva kódovanie pôvodného signálu do jeho komprimovanej podoby a dekódovanie komprimovaného signálu do pôvodnej podoby, sa nazýva kodek (skratka z kodér-dekodér).

## Model kompresie

Proces kompresie sa skladá z troch základných fáz:

1. Dekorelácia vstupných dát
2. Redukcia entropie
3. Bezstratové kódovanie

Obr. 5.1: Všeobecná kompresná schéma

Dekorelácia vstupných dát odstraňuje zo signálu duplicitné informácie. Môže sa vykonať rôznymi spôsobmi, resp. v rôznych oblastiach reprezentácie signálu:

- Časová (alebo priestorová) oblasť
- Parametrická oblasť
- Rozklad signálu

V časovej (alebo priestorovej) oblasti sú metódy založené na lineárnej predikcii, ktorá predpokladá, že susedné vzorky v čase (alebo priestore) sú korelované (podobajú sa). Prístup pomocou rozkladu signálu rozkladá signál na subpásma, v ktorých je možné samostatne sledovať energiu. Do parametrickej oblasti prechádzame rôznymi transformáciami tak, aby sme dokázali získať charakteristické parametre na kódovanie a prenos vstupných dát.

Proces kvantizácie redukuje entropiu. Hoci kvantizácia vždy prináša stratu informácií, dostatočne presná kvantizácia túto stratu znižuje na minimum.

Posledným krokom v procese kódovania je bezstratové kódovanie, nazývané aj entropické kódovanie. Počas neho sa štatisticky častým kombináciám bitov (symbolom) priradí kratšie kódové slovo a štatisticky menej častým kombináciám bitov dlhšie kódové slovo. Takéto kódovanie sa tiež nazýva kódovanie s variabilnou dĺžkou (variable length coding, VLC), pretože kódové slová majú rôznu dĺžku. Najefektívnejším algoritmom na vykonanie bezstratového VLC entropického kódovania je Huffmanovo kódovanie.

Na prenos komprimovanej informácie prostredníctvom prenosového kanála existujú dva režimy:

- Konštantný dátový tok
- Premenlivý dátový tok

Pri použití konštantného dátového toku sa výstup kódéra ukladá do vyrovnávacej pamäte, z ktorej sa zabezpečuje konštantný dátový tok do prenosového kanála. Dátový tok ovplyvňuje kóder tak, aby produkoval rovnaký dátový tok. Takýmto spôsobom môže kóder ovplyvňovať krok kvantovania a tým aj kvalitu rekonštruovaného signálu.

Obr. 5.2: Kóder s konštantným dátovým tokom

Pri použití premenlivého dátového toku vyrovnávacia pamäť nie je potrebná a kóder tak môže použiť krok kvantovania podľa požiadaviek kódovaného vstupného signálu. Kvalita rekonštruovaného signálu sa potom nemení.

Obr. 5.3: Kóder s premenlivým dátovým tokom

Hoci sa môže zdať premenlivý dátový tok najlepšou voľbou, platí to iba v prípade, že kapacita prenosového kanála je dostatočná aj pre maximálny dátový tok, ktorý môže kóder s premenlivým dátovým tokom produkovať. Ak však máme k dispozícii obmedzenú kapacitu prenosového kanála, na zachovanie nepretržitého toku dát bude vhodnejší kóder s konštantným dátovým tokom.