Spracovanie multimédií
Rozpoznanie obrazu

Typický problém s obrazom je detekcia, či sa v obrázku nachádza špecifický objekt, alebo či má špecifickú vlastnosť. Tento problém je v súčasnosti vyriešený iba pre špecifické objekty (napríklad detekcia tváre), ale nie pre všeobecné objekty (napríklad zoznam všetkých vecí, čo sa nachádzajú na danom obrázku). Z tejto príčiny rozoznávame viacero oblastí rozpoznávania a detekcie, ako napríklad:

- Čiarové kódy – čiarový kód pozostáva z čiernych čiar rôznej hrúbky, ktoré reprezentujú číslice. Šírky sú samozrejme relatívne, aby mohli byť kódy skenované z rôznej diaľky a rôznej veľkosti.
- 2D kódy – tiež známe ako QR kódy, alebo maticové kódy sú v zásade rozšírením čiarových kódov o ďalšiu dimenziu. 2D kódy dokážu uložiť oveľa väčšie množstvo informácii ako jednoduché čiarové kódy, vrátane URL adries, textu alebo čísiel. Môžu mať rôznu veľkosť aj hustotu a majú implementované RSkódy, ktoré majú schopnosť detekcie a opravy chýb.
- Optické rozpoznanie znakov (Optical Character Recognition OCR) – rozpoznávanie znakov (písmen a číslic) z obrázkov tlačeného, alebo písaného textu. Tento proces je v zásade špecifickým prípadom rozpoznávania vzorov.
- Identifikácia odtlačkov prstov – druh algoritmu rozpoznávajúceho vzory, ktorý porovnáva základné charakteristiky odtlačkov (a pattern based algorithm compares basic fingerprint patterns (oblúky a slučky) na skúmanom obrázku s uloženým originálom.
- Špecifické detekcie – obraz je prehľadaný za účelom identifikácie špecifických podmienok, napríklad detekcia pohybu v bezpečnostných kamerách.
- Rozpoznávanie tváre – obrázok je prehľadaný za účelom identifikácie špecifických čŕt ľudskej tváre
- Rozpoznávanie objektov – jeden, alebo viacero dopredu špecifikovaných, alebo naučených druhov objektov je automaticky rozpoznaných. Príkladom môžu byť program ako napríklad Nokia Lens, alebo Google Goggles automaticky zobrazujúce popis rôznych objektov na obrazovke v reálnom čase.

Každý typ rozpoznávania používa vlastný špecifický algoritmus, ktorý môže byť jednoduchý, ale aj zložitý – napríklad použitie štatistických metód alebo neurónových sietí. Ako príklad algoritmu rozpoznávania uvádzame jednoduchý algoritmus detekcie tváre s bodmi pre čelo a brady.

## Detekcia bodov tváre

Detekcia bodov tváre je založená na farebnosti ľudskej kože a morfologickej charakteristike ľudskej hlavy. Výstup algoritmu pre detekciu kože je dôležitý na oddelenie významných bodov skúmanej tváre. Prvým bodom pre správnu detekciu je odstránenie šumu pomocou dolno-priepustného filtra. Po takomto filtri nám nebudú vznikať nechcené (a nesprávne) detekcie. Ďalším dôležitým krokom je zistenie hrán. Na to sa používa Sobelov filter. Po týchto nutných úpravách je obrázok predspracovaný na detekciu. Nasleduje samotná detekcia jednotlivých častí tváre (ako sú oči, nos a ústa, brada,…) založená na známych charakteristikách týchto bodov.

Detekcia brady prebieha v oblasti pod dolnou perou, postupujeme smerom nadol. Horizontálne prehľadávanie končí asi v tretine obrázku, pretože predpokladáme, že budú splnené podmienky na vstupnú fotografiu (t.j. že brada sa nebude nachádzať ďalej). Hľadáme oblasť, ktorá je charakteristická relatívne pokojným priebehom s následným prudkým stúpaním, ktoré označuje koniec brady.

Detekcia vychádza z porovnávania horizontálnej vzdialenosti dvoch bodov. Oba body ležia na hrane – to znamená na hranici profilu. Y- ová súradnica druhého bodu je však o 10 bodov (10 pixelov – je to hodnota určená konkrétne v algoritme a vychádza z požiadaviek na vstupnú fotku) väčšia. Ak horizontálna vzdialenosť takýchto dvoch bodov (teda rozdiel x – ových súradníc) je väčšia ako je povolená vzdialenosť, tak bod je označený ako bod brady.

Oblasť vyhľadávania bodu na čele sme definovali v prvej tretine obrázku v horizontálnom smere aj vertikálnom smere. Detekcia prebieha na obrázku so zvýraznenými hranami (zo Sobelovho filtra) a na obrázku, na ktorom je výsledok detekcie kože (Skin detect). Hľadaný bod sa nachádza približne na mieste, kde končí pokožka a začínajú vlasy.

Pri detekcii bodu definujúceho čelo vychádzame najskôr zo Sobelovho filtra. Nájdeme bod, ktorý leží na hrane. Potom začneme prehľadávať obrázok „Skin detect“ v horizontálnom smere, pričom postupujeme od detekovaného bodu smerom vpravo. Farebné zložky bodov pokožky na „Skin detect“ obrázku majú hodnotou 0 (čierna farba), farebné zložky ostatných častí tváre majú hodnotu 255 (biela farba). Keď nájdeme prvý bod s hodnotou 255 (v našej oblasti prehľadávania to znamená, že sme našli časť hlavy, kde už začínajú vlasy ), zistíme rozdiel x – ových súradníc. Ak je menší ako stanovená hranica, tak bod je náš hľadaný bod – čelo.

Obr. 6.4: Detekcia brady
Obr. 6.5: Detekcia čela

Na základe výsledkov detekcie bodov tváre sa môže deformovať všeobecný 3D model hlavy a môže byť personalizovaný.