Zpracování multimédií
Rozpoznávání obrazu

Typický problém s obrazem je detekce toho, zda se v obrázku nachází specifický objekt, anebo jestli má specifickou vlastnost. Tento problém je v současnosti vyřešen pouze pro specifické objekty (například detekce obličeje), ale ne pro obecné objekty (například seznam všech věcí, co se nacházejí na daném obrázku). Z tohoto důvodu rozeznáváme více oblastí rozpoznávání a detekce, jako například:

- Čárové kódy – čárový kód se skládá z černých čar různé tloušťky, které reprezentují číslice. Šířky jsou samozřejmě relativní, aby mohly být kódy skenovány z různých vzdáleností a různé velikosti.
- 2D kódy – též známé jako QR kódy, anebo maticové kódy jsou v zásadě rozšířením čárových kódů o další dimenzi. 2D kódy dokáží uložit mnohem větší množství informací než jednoduché čárové kódy, včetně URL adres, textu anebo čísel. Mohou mít různou velikost i hustotu a mají implementovány RS kódy, které mají schopnost detekce a opravy chyb.
- Optické rozpoznávání znaků (Optical Character Recognition OCR) – rozpoznávání znaků (písmen a číslic) z obrázků tištěného, anebo psaného textu. Tento proces je v zásadě specifickým případem rozpoznávání vzorů.
- Identifikace otisků prstů – druh algoritmu rozpoznávajícího vzory, který porovnává základní charakteristiky otisků (a pattern based algorithm compares basic fingerprint patterns (oblouky a smyčky) na zkoumaném obrázku s uloženým originálem.
- Specifické detekce – obraz je prohledáván za účelem identifikace specifických podmínek, například detekce pohybu v bezpečnostních kamerách.
- Rozpoznávání obličeje – obrázek je prohledáván za účelem identifikace specifických znaků obličeje.
- Rozpoznávání objektů – jeden, anebo více předem specifikovaných, anebo naučených druhů objektů je automaticky rozpoznáváno. Příkladem mohou být programy jako například Nokia Lens, anebo Google Goggles automaticky zobrazující popis různých objektů na obrazovce v reálném čase.

Každý typ rozpoznávání používá vlastní specifický algoritmus, který může být jednoduchý, ale i složitý – například použití statistických metod anebo neuronových sítí. Jako příklad algoritmu rozpoznávání uvádíme jednoduchý algoritmus detekce obličeje s body pro čelo a bradu.

## Detekce bodů obličeje

Detekce bodů obličeje je založena na barevnosti lidské kůže a morfologické charakteristice lidské hlavy. Výstup algoritmu pro detekci kůže je důležitý pro oddělení významných bodů zkoumaného obličeje. Prvním bodem pro správnou detekci je odstranění šumu pomocí dolnopropustného filtru. Za takovýmto filtrem nám nebudou vznikat nechtěné (a nesprávné) detekce. Dalším důležitým krokem je zjišťování hran. K tomu se používá tzv. Sobelův filtr. Po těchto nutných úpravách je obrázek předzpracován pro detekci. Následuje samotná detekce jednotlivých částí obličeje (jako jsou oči, nos a ústa, brada,…) založená na známých charakteristikách těchto bodů.

Detekce brady probíhá v oblasti pod dolním rtem a postupujeme směrem dolů. Horizontální prohledávání končí asi ve třetině obrázku, protože předpokládáme, že budou splněny podmínky pro vstupní fotografii (tj. že brada se nebude nacházet dále). Hledáme oblast, která je charakteristická relativně klidným průběhem s následným prudkým stoupáním, které označuje konec brady.

Detekce vychází z porovnávání horizontální vzdálenosti dvou bodů. Oba body leží na hraně – to znamená na hranici profilu. Ypsilonová souřadnice druhého bodu je však o 10 bodů (10 pixelů – je to hodnota určená konkrétně v algoritmu a vychází z požadavků na vstupní fotku) větší. Když horizontální vzdálenost takovýchto dvou bodů (tedy rozdíl x – ových souřadnic) je větší než je povolená vzdálenost, tak bod je označen jako bod brady.

Oblast vyhledávání bodu na čele jsme definovali v prvé třetině obrázku v horizontálním směru i vertikálním směru. Detekce probíhá na obrázku se zvýrazněnými hranami (ze Sobelova filtru) a na obrázku, na kterém je výsledek detekce kůže (Skin detect). Hledaný bod se nachází přibližně na místě, kde končí pokožka, a začínají vlasy.

Při detekci bodu definujícího čelo vycházíme nejdříve ze Sobelova filtru. Najdeme bod, který leží na hraně. Potom začneme prohledávat obrázek „Skin detect“ v horizontálním směru, přičemž postupujeme od detekovaného bodu směrem vpravo. Barevné složky bodů pokožky na „Skin detect“ obrázku mají hodnotu 0 (černá barva), barevné složky ostatních částí obličeje mají hodnotu 255 (bílá barva). Když najdeme prvý bod s hodnotou 255 (v naší oblasti prohledávání to znamená, že jsme našli část hlavy, kde už začínají vlasy), zjistíme rozdíl x – ových souřadnic. Když je menší než stanovená hranice, tak bod je právě náš hledaný bod – čelo.

Detekce brady
Detekce čela

Na základě výsledků detekce bodů obličeje se může deformovat obecný 3D model hlavy a může být personalizován.