Principy kódování zvuku a obrazu, komprese dat

Verze z 28. 5. 2018, 01:40, kterou vytvořil Jan.Dobiasovsky (diskuse | příspěvky) (Formátování)

Kódováním rozumíme proces konverze obrazových či zvukových dat z jednoho do druhého formátu požadovaného pro přenos, ukládání či kompresi / dekompresi.Komprese je proces modifikace, kódování, či konverze bitové struktury dat takovým způsobem, aby zabírala méně místa v úložišti.

Techniky kódování dat

[1]Kódování je proces konverze dat nebo dané sekvence znaků, symbolů, abecedy do specifikovaného formátu. Jeho opakem, tedy extrakcí informace z konvertováného souboru je dekódování. Kódováním převadíme různé vzorce elektrického napětí nebo úrovní tak, aby reprezentovaly 1 nebo 0 v digitálním signálu na přenosovém propojení. Rozlišujeme několik typů datové konverze:

  • Analogová data na analogový signál

Do této kategorie spadají modulační techniky jako je amplitudová modulace, frekvenční modulace a fázová modulace analogových signálů.

  • Analogová data na digitální signál

Tento proces se nazývá digitalizace, která se provádí modulací pulzního kódu (PCM). V tomto procesu hraje významnou část vzorkování a kvantizace

  • Digitální data na analogový signál

Tato technika se běžně používá v např. hudebních přehrávačích k převodu digitálních datových toků do analogových audio signálů. Používají se také v televizorech a mobilních telefonech, které převádějí digitální video data na analogové video signály, které se připojují k ovladačům obrazovky k zobrazení monochromatických nebo barevných obrazů.

  • Digitální data na digitální signál

Nejčastěji se používá v rámci přenosu informace mezi dvěmi zařízeními. Rozlišujeme tři typy přenosu řetězce: 1) Unipolární kódování Unipolární kódovací schémata používají jednotnou úroveň napětí k reprezentování dat. V tomto případě pro reprezentaci binárního 1 se vysílá vysoké napětí a reprezentuje 0, nepřenáší se žádné napětí. Název unipolární také znamená "nevrácená k nulovému stavu", protože neexistuje žádný klidový stav (tedy se buď přenáší 1 nebo 0).

2) Polární kódování Polární schéma kódování používá více úrovní napětí pro reprezentování binárních hodnot.

3) Bipolární kódování Bipolární kódování používá tři typy napětí. Pozitivní, negativná a nulové. Nulové napětí reprezentuje binární 0 a bit 1 je reprezentován střídáním positivních a negativních napětí


Pro zajištění přijatých datových rámců se používají redundantní bity. Např. V rovnoměrné paritě je přidán jeden bit parity, aby se počet párů v rovině dal vyrovnat. Tímto způsobem se zvýší původní počet bitů. Říká se tomu kódování bloků. Pro snažší představu blokové kódování mimo praxi kódování signálu být i např. vyjádřeno jako oddělovače MARC záznamů nebo znak "\n" při oddělování řádků v textových editorech.

Zpracování kódovaných dat

Rozlišujeme několik způsobů jak upravovat data před, během nebo po jejich konverzi.

1) Low-pass filter

Low-pass filter (LPF) je filtr, který přenáší signály s frekvencí nižší než určitá mezní frekvence a tlumí signály s frekvencemi vyššími než mezní frekvence. Přesná frekvenční odezva filtru závisí na návrhu filtru. Filtr se někdy nazývá filtrem s vysokým řezem nebo filtrem s vysokým rozlišením v audio aplikacích. Nízkoprůchodový filtr je doplněk vysokotlakého filtru. Běžně se používá k eliminaci šumění ve zvuku, snížení digitálního šumu, nebo při vyhlazování a rozmazávání digitálního obrazu

2) High-pass filter / Detekce okrajů Detekce okrajů zahrnuje řadu matematických metod zaměřených na identifikaci bodů v digitálním obrazu, při kterém se jas obrazu prudce mění, nebo formálněji má diskontinuity. Body, při kterých se ostře mění jas obrazu, jsou obvykle uspořádány do skupiny segmentů zakřivených čar označovaných okraji. Stejný problém zjištění nespojitostí v jednorozměrných signálech je znám jako detekce kroků a problém nalezení nespojitostí signálu v průběhu času (detekce změn). Detekce okrajů je základním nástrojem při zpracování obrazu, strojním vidění a počítačovém vidění, zejména v oblasti detekce a extrakce prvků.

3) Rychlá Fourierova transformace (FFT) Algoritmus, který odebírá signál po určitou dobu (nebo prostor) a rozděluje jej na frekvenční složky. Tyto komponenty jsou jednoduché sinusové oscilace na různých frekvencích, každá s vlastní amplitudou a fází. Běžně se používá při fotografické manipulaci, např. při konverzi barevných obrazů do černobílé, nebo úpravě barev na fotografii obecně (Změna odstínu, sytosti a jasu barvy).


Specifika kódování zvukových dat

V případě digitálního záznamu prakticky hovoříme o digitalizaci analogového signálu. Tento proces lze rozdělit do tří operací.

Vzorkování signálu

Příklad převodu analogového signálu do souboru hodnot

Analogový zvukový záznam obsahuje všechny hodnoty hladiny intenzit nahrávaného zvuku. Během vzorkování se z analogového signálu vybírají hladiny intenzity v určitých časových bodech na základě vzorkovací frekvence. Čím více hodnot je takto sesbíráno, tím je záznam kvalitnější a přesnější. Tento proces probíhá z toho důvodu, že v rámci digitálního záznamu nejsme schopni zachytit teoreticky všechny hodnoty hladiny intenzity zvuku, neboť jich je principiálně nekonečně mnoho.

Kvantování signálu je prakticky úrovňovou diskretizací (zaokrouhlujeme skutečné hodnoty na předem vybrané hodnoty). Výsledkem je konečný počet vzorků s konečným počtem jejich hodnot, které lze tedy vyjádřit binárním kódem.

Samotné kódování signálu. Získaný soubor je binárně kódován. Jednotlivým kvantizačním hladinám kvantovaného signálu je přiřazováno binární číslo. Hodnota původního analogového signálu byla během kvantování zaokrouhlena na některou z kvantizačních hladin. Tyto hladiny byly popsány čísly v desítkové soustavě. V průběhu kódování se toto číslo převede do dvojkové soustavy. Původní analogový signál bude tedy vyjádřen sledem jedniček a nul. Ve většině případů probíhá proces kvantování signálu a kódování signálu v jednom zařízení, které se nazývá A/D převodník. Výstupem tohoto zařízení je číslo kódované v přirozeném binárním kódu.


Specifika kódování obrazových dat

Obrazová data jsou kódována velmi podobným způsobem. Namísto amplitudy zvuku je zde ale zaznamenávána vlnová délka světla. Trojrozměrný objekt je za pomocí soustavy čoček zobrazen do roviny. Takto odražené světlo dopadá na CCD (Charge coupled devices), CID (Charge injection Devices) nebo Active pixel CMOS snímač, který převádí dané informace na binární kód za pomocí výše zmíněného postupu, kdy je daný analogový obraz rozvzorkován, diskretizován a násladně kódován do výstupní roviny.[2] Tyto hodnoty jsou reprezentovány tzv. pixely. Každý pixel tvoří kombinace intenzit 3 barev: červené, zelené a modré. Organizací jednotlivých pixelů vzniká poté konečný obraz. Existuje několik faktorů ovlivňujících kvalitu obrazu. Prvním z nich je rozlišení. Jedná se o hodnotu reprezentující jak velký počet pixelů byl použit k tvorbě finálního obrazu. Obecně lze říct že větší rozlišení umožňuje větší vyjádření detailů a tím i vyšší kvalitu obrazu. Druhý faktor ovlivňující kvalitu obrazu je digitální šum. Základním typem je tzv. náhodný šum, který vzniká tepelnými změnami v elektronických součástkách. Ty způsobují změny ve výstupním analogovém signálu a kolísání počtu fotonů dopadajících na světlocitlivé buňky snímače. Tento typ šumu lze eliminovat pořizováním záznamu za dostatečných světelných podmínek, neboť při dostatečnén osvětlení je hladina šumu téměř zanedbatelná. Méně častým typem je tzv. temný šum. Tepelná energie přítomná v polovodičových senzorech může vygenerovat elektircký náboj, aniž by na snímač dopadalo světlo a vznikají tzv. "hot pixels". Tento náboj nelze odlišit od skutečného signálu z expozice, nicméně je možné jej eliminovat testovacím snímkem s uzavřenou závěrkou a dva snímky od sebe v editačním programu "odečíst". Tento typ šumu nejčastěji vzniká při dlouhých či velmi dlouhých expozicích. Zatímco u analogového zpracování obrazu je zesilovací šum dán citlivostí filmu, u digitálních fotoaparátů je čip stále stejný. Hodnoty elektrického náboje vygenerované světelnými senzory jsou před samotným zpracováním zesíleny a právě míra zesílení způsobuje vznik šumu.


Komprese

Komprese dat (také komprimace dat) je zpracování počítačových dat s cílem zmenšit jejich objem (jednotka bajt) při současném zachování informací v datech obsažených. Úkolem komprese dat je zmenšit datový tok při jejich přenosu nebo zmenšit potřebu zdrojů při ukládání informací. Obecně se jedná o snahu zmenšit velikost datových souborů, což je výhodné pro jejich archivaci nebo pro přenos přes síť s omezenou rychlostí (snížení doby nutné pro přenos). Komprese se provádí vždy v určitém kompresním poměru vyjádřeném poměrem délky komprimovaných a původních dat.[3]

Ztrátová komprese

Tento typ využívá nedokonalosti lidských smyslů a používá se pro obraz i zvuk. Nevýhodou ztrátové komprese je že dochází k vzniku tzv. artefaktů (následky komprese, například. rozmazávání hran, pixelace, šum). Data se zde transformují tak, aby bylo možno prioritizovat důležitost informace. Nedůležité informace jsou poté potlačeny více, než ty důležité. Celý výsledek je nakonec kokmprimován bezeztrátovým kompresním algoritmem. Před samotnou kompresí je data nutné zpracovat aby byly lépe strojově srozumitelné. Buď výše zmíněnou Fourierovou transformací nebo např. DCT (district cosin transform) nebo WT (wavelet transform). Během komprese poté dochází k potlačení některých složek. Zde rozhoduje uživatelem vybraný psychovizuální nebo psychoakustický model, který určuje jaká data mohou být potlačena, nebo dokonce úplně odstraněna (např. při nahrávání fotografií na sociální síť instagram dochází ke kompresi fotografií na velikost max 2mpix. Větší velikost není nutná vzhledem k tomu že aplikace je stavěná na mobilní telefony, jejichž displej většinou nepřesahuje rozlišení 1920x1080px. Dále jsou tím také sníženy načítací časy, nároky na mobilní data uživatele a šetří se tím prostor na úložišti.). Komprese zvuku je mírně problematičtější, vzhledem k tomu, že lidský sluch je velmi citlivý na i na časové umístění zvuku. Ztrátová komprese není vratná. Jakmile proběhne, už není způsob jak obnovit originál bez záložní kopie.

Bezeztrátová komprese

Většinou se nepoužívá jen jeen algoritmus, ale hned několik najednou. Komprimační data jsou také napřed transformována pro zlepšení kompresních poměrů a až poté komprimována. Ve skutečnosti se během transformace nic nekokmprimuje, pouze se modifikují data tak, aby se dala lépe zkomprimovat. Pro každou transformaci zde existuje tranformace inverzní. Tedy komprimovaný soubor vrátit do originálu.

Typy kompresních algoritmů

1) Slovníkové algoritmy

Tyto algoritmy vytvářejí v průběhu komprimace slovník na základě již zkomprimovaných dat. Pokud jsou data nalezena ve slovníku, algoritmus místo samotných dat zapíše pozici ve slovníku. Patří zde například Lempel-Ziv a Lempel–Ziv–Welch algoritmy LZ77, LZ78 a LZW.

2) Statistické algoritmy

Snaží se určitým způsobem předvídat, jaké znaky budou v souboru dat následovat za pomoci statistického modelu. Tyto modely mohou být jak statické (před kompresí se vytvoří model a podle něho se data zkomprimují) nebo adaptivní (model se během komprese aktualizuje). Patří zde např. Huffmanovo kódování, Shannon-Fanovo kódování, aritmetické kódování, Range coding (RC), ACB nebo Prediction by partial match (PPM).

3) Run-lenght encoding

Zakóduje data tak, že před opakující se znaky vloží počet opakování.

Příklad:

WWWWWWWWWWWWBWWWWWWWWWWWWBBB

WWWWWWWWWWWWWWWWWWWWWWWWBWW

WWWWWWWWWWWW

Výsledek:

12WB12W3B24WB14W

Reference

  1. JIROUŠEK, Radim. Principy digitální komunikace. Voznice: Leda, 2006. ISBN 80-7335-084-X.
  2. CHRIS, Solomon a Toby BRECKON. Fundamentals of Digital Image Processing: a practical approach with examples in matlab. Oxford: Wiley-Blackwell, 2011. ISBN 0470844736.
  3. I. Vajda. Teorie informace. Vydavatelství ČVUT, 2004

Klíčová slova

Techniky kódování dat, kódování dat, komprese, zpracování signálu, transformace dat