Základy detekce obličeje v obraze
Metody pro rozpoznávání a detekci obličeje je v poslední době stále více se rozrůstající oblastí výzkumu, neboť tato oblast nachází stále větší uplatnění v různých oborech jako kriminalistika, identifikace, snímací technic, a pod.
Pro napsání tohoto článku mě inspiroval odkaz http://photofunia.com/, na který jsem nedávno narazil na internetu.
Pod odkazem se nachází jednoduché rozhraní pro generování fotografií. Funguje tak, že po vybrání šablony jste vyzvání pro výběr vlastní fotografie. Program se snaží rozpoznat na fotografii obličej a tento uložit do vybrané šablony.
Moje hrátky si můžete prohlídnout zde (ano, je to moje fotografie – takže odhalení blogera).
Metody detekce
Pro detekci obličeje existuje celá řada postupů a způsobů, z nichž každý je použitelný v jiné oblasti nebo jiných podmínkách, podle vhodnosti. V základu se všechny tyto metody dělí na několik základních, podle přístupu a detekce:
– Neměnné rysy (invertní přístup) – přístup je založen na znalosti základních rysů obličeje a výpočtu ploch těchto částí. Jedná se o části obličeje, které nepodléhají velkým změnám a nejsou pro jednotlivé obličeje většinou unikátní. Můžeme využívat například polohu nosu, oči, barva kůže obličeje, a podobně.
Důležité je odhadovat při snímání obličejů jejich chování těchto rysových vlastností při změně okolních jevů, jako například osvětlení a podobně.
Výhodou a hlavním důvodem rozšíření je velmi snadná implementace a vcelku uspokojivé výsledky.
– Znalostní metoda – používá se pro detekování obličeje na základě popsaných vlastností obličeje a přesně definovaných pravidel, které obličej obsahuje. Popis obličeje, použitý pro metodu, by měl vyhovovat všem obličejům – musí se jednat o typickou tvář, z čehož vyplívá, že složitost algoritmu bude dost velká.
– Pomocí vzorových obličejů – metoda je založena na srovnávání obličejů s uloženými vzorovými obličeji (metoda známá z filmů, kdy počítač na základě fotografie prohledává databází fotografií a hledá v nich podobné obličeje). Tato metoda je vcelku jednoduchá na implementaci a při správném použití je schopna generovat velmi dobré výsledky.
– Vzhled a zjev obličeje – metoda je podobná předchozí, s tím rozdílem, že v databázi není potřeba udržovat všechny obličeje, ale ze spousty obličejů jsou získány jejich průměrné modely, které jsou při procesu rozpoznávání používány. Metoda dosahuje podobných výsledků jako metoda pomocí vzorových obličejů.
Detekce hlavy
Většinou prvním krokem u všech algoritmů pro detekci obličeje je detekce hranice hlavy, kdy se algoritmus snaží vyhodnotit z fotografie oblast zájmu.
Pro detekci oblasti zájmu se hodně využívá invertní přístup (popřípadě některý jiný), pomocí nějž se zjistí umístění významných bodů v obličeji. Z těchto bodů se dále určí hlavně orientace hlavy, která samozřejmě může být na fotografii jakákoli.
Po rozpoznání oblasti zájmu je ve fotografii tato oblast nějakým způsobem zvýrazněna (zachována, pro pozdější zkoumání). Oblastí zájmu může být na jedné fotografii několik.
Hlavní nevýhodou je velká nestandartalizace fotografií, kdy dopředu nemůžeme znát závislosti fotografií na osvětlení, pozadí a podobných podmínkách.
Velmi dobré výsledky, jak jsem zmínil, dosahují metody založené na porovnávání. Ať už porovnávání pomocí vzorových obličejů, tak porovnávání pomocí vytvořených modelů.
Algoritmus funguje tak, že šablony nebo modely neustále posunuje a s výsledným obrazem srovnává.
Bohužel je zase nutnost brát ohledy na možnosti různého natočení (deformace) obličeje, takže musí být na vzory použity různé afinní transformace, aby bylo dosaženo objektivního porovnávání. Je jisté, že tyto operace mohou celý proces rozpoznávání velmi zpomalit.
Při detekci oblasti zájmu se taky hojně využívá charakteristické barvy lidské kůže v barevné representaci YCbCr, která je velmi podobná pro většinu obličejů.
Informace nesena v tomto barevném prostoru je určena pouze dvěmi hodnotami – Cb a Cr:
- Cb – určuje rozdíl mezi modrou složkou a referenční hodnotou
- Cr – určuje rozdíl mezi červenou složkou a referenční hodnotou
- Y – určuje informace o luminanci (jas, váhu, spektrální citlivost)
Další výhoda je velmi jednoduchá transformace z klasického RGB do modelu YCbCr (početně jednoduchá), která je dána vztahy:
1 2 3 |
Y = 0,299 * R+0,587 * G + 0,114 * B Cb = -0,1687 * R - 0,3313 * G + 0,5 * B + 128 Cr = 0,5 * R - 0,4187 * G - 0,0813 * B + 128 |
(http://www.root.cz/clanky/…ce-a-podvzorkovani-barev/)
Po provedení jednotlivých transformací jsou je pozorovatelný rozdíl v barevném rozdílu obličeje, ze kterého je vyhodnocována oblast zájmu.
Závěrem
Metody pro detekování obličeje a jeho rozpoznávání jsou velmi obsáhlé a není možné probrat všechny, ani ty základní, algoritmy v jednom článku. Pokud by byl zájem o pokračování, rád jej napíši. Prozatím tuto první část ukončím.
Zdravím,
nechcete psát spolu s dalšími autory na programujte.com?
Diky,
prodiskutovano na WLM.
Ahoj,
uvítal bych pokračování článku v detailech. Pokud již nějaký takový článek existuje, prosím odkaz na toms.jel@seznam.cz