Kompresia dát je proces zmenšovania veľkosti súboru alebo dátového toku. Menšie súbory sa rýchlejšie prenášajú po sieti a zaberajú menej miesta na disku. Existujú dva základné prístupy: bezstratová a stratová kompresia.
Bezstratová kompresia
Pri bezstratovej kompresii (lossless) je možné pôvodné dáta plne a presne obnoviť. Žiadna informácia sa nestratí.
Základný princíp — RLE (Run-Length Encoding): Namiesto opakovania toho istého bajtu niekoľkokrát zapíšeme, koľkokrát sa opakuje.
Pôvodné dáta: AAAAAABBCCDDDDDD
RLE kódovanie: 6A 2B 2C 6D
Ulorit musíme 8 znakov namiesto 16 — 50% úspora
ZIP je najbežnejší bezstratový formát. Využíva algoritmus DEFLATE, ktorý kombinuje LZ77 (nájde opakujúce sa sekvencie) a Huffmanovo kódovanie (kratšie kódy pre častejšie znaky).
Bezstratová kompresia je povinná všade tam, kde presnosť dát je kritická: textové dokumenty, zdrojový kód, databázy, spustiteľné programy. Akákoľvek zmena dát by mohla spôsobiť nefunkčnosť alebo nesprávnosť.
Stratová kompresia
Pri stratovej kompresii (lossy) sa niektoré informácie trvalo odstránia, čo umožňuje oveľa väčšiu kompresiu. Stratu navrhujeme tak, aby bola pre človeka čo najmenej postrehnuteľná.
JPEG (obrázky): JPEG využíva skutočnosť, že ľudské oko je citlivejšie na zmeny jasu ako na zmeny farby. Algoritmus rozdeľuje obrázok na bloky 8x8 pixelov a odstraňuje vysokofrekvenčné detaily, ktoré si väčšina ľudí nevšimne.
MP3 (zvuk): MP3 využíva psychoakustický model — odstraňuje zvuky, ktoré ľucho nevníma (napríklad tiché zvuky maskované hlasnejšími). Typická kompresia: 10x menší súbor ako nekomprimované WAV.
Stratovú kompresiu nie je možné zvrátiť — raz stratené informácie sa nedajú obnoviť. Preto nikdy neukladajte pôvodné fotografie len vo formáte JPEG — zachovajte si kópiu v pôvodnom formáte.
Porovnanie prístupov
| Bezstratová | Stratová | |
|---|---|---|
| Obnova dát | Úplná | Nie je možná |
| Stupeň kompresie | Nižší | Vyšší |
| Typické formáty | ZIP, PNG, FLAC | JPEG, MP3, MP4 |
| Použitie | Dokumenty, kód | Médiá (foto, hudba, video) |
Prečo kompresia záleží
Bez kompresie by boli naše disky plné oveľa rýchlejšie a prenášanie súborov po internete by trvalo omnoho dlhšie. Napríklad:
- Nekomprimované video vo Full HD rozlíšení: cca 6 GB za minútu.
- Rovnaké video v MP4 (H.264): cca 100–200 MB za minútu.
Kompresia je teda kľúčová technológia pre moderné streamovanie, cloud úložiská a efektívny prenos dát.
Cvičné príklady
Prečo nemôžeme použiť stratovú kompresiu na textové dokumenty alebo zdrojový kód?