Počítačové vidění v MATLABu

Technologie |

Počítačové vidění (computer vision) využívá obrazu a videa k detekci, klasifikaci a sledování objektů nebo událostí za účelem pochopení reálné situace. MATLAB jako jazyk a platforma pro technické výpočty nabízí množství funkcí, které můžete v této oblasti využít.

Počítačové vidění v MATLABu



Zpracování obrazu v MATLABu můžeme rozdělit do dvou kategorií – klasické zpracování obrazu a počítačové vidění. Klasické zpracování obrazu se zaměřuje především na úlohy, jako je odstranění šumu v obrazu a filtrace, nastavení kontrastu, práce s barevnými prostory nebo měření a transformace obrazu. Kromě úpravy a předzpracování snímků spadá do klasického zpracování obrazu také registrace snímků na základě intenzity či detekce objektů založená na barevné informaci, morfologických operacích, prahování a tvorbě masky.

Počítačové vidění vnáší do analýzy obrazu hlubší rozměr se zaměřením na detekci, klasifikaci a sledování objektů. Nástroje MATLABu obsahují množství specifických algoritmů, které lze v této úloze využít a řešit jimi typické úkoly, se kterými se v oblasti počítačového vidění setkáváme.

 

Registrace snímků a detekce objektů

První skupinu úloh počítačového vidění v MATLABu představuje registrace snímků a detekce objektů na snímku nebo ve videosekvenci. Obě úlohy využívají stejných algoritmů, které vyhledávají podobné prvky na dvojici snímků, respektive na snímku a hledaném vzoru.

Cílem registrace snímků je sesouhlasení dvou a více obrazů zobrazujících jedinou scénu. Jeden ze snímků je referenční a úkolem je určit geometrickou transformaci druhého snímku, po jejíž aplikaci je možné oba snímky překrýt.

Cílem detekce objektů je nalezení daného objektu (vzoru) ve snímané scéně. Zde může být výsledkem poloha hledaného objektu ve scéně, nebo transformace, která vzor do snímku scény mapuje.

K řešení obou úloh využíváme tzv. příznaky a algoritmus RANSAC. Příznaky nám umožní popsat klíčová místa v obrazu. Kromě klasických příznaků, jako jsou hrany, rohy nebo vzory, můžeme v MATLABu využít i pokročilých algoritmů, metody SURF a MSER. Výhodou příznaků získaných metodou SURF je skutečnost, že narozdíl od klasických prvků (rohů, hran, vzorů) jsou tyto příznaky necitlivé ke změnám měřítka, natočení i změnám jasu a kontrastu. Algoritmus detekce objektu využívající příznaků SURF je tím pádem mnohem robustnější než algoritmy využívající klasických prvků.

Dalším krokem je automatické nalezení párů odpovídajících příznaků mezi oběma snímky, případně mezi snímkem a vzorem. Poloha odpovídajících příznaků určuje vzájemnou souvislost mezi snímky a umožní vypočet hledané transformace. Nalezené řešení však může obsahovat falešné odhady – nesprávně určené dvojice příznaků. Tyto dvojice představují z hlediska výpočtu transformace odlehlé datové body a mohou výsledek významně zkreslit.

Pro správné určení výsledné transformace je k dispozici algoritmus RANSAC – iterativní odhad parametrů matematického modelu z množiny pozorovaných dat, která obsahují odlehlé hodnoty. Algoritmus automaticky testuje velké množství transformací určených náhodným výběrem z množiny odpovídajících příznaků. Jako výslednou transformaci zvolí tu, po jejíž aplikaci se poloha většiny odpovídajících příznaků na obou snímcích shoduje.

Výsledek konkrétní aplikace je na obr. 1. Obrázek demonstruje hledání značky STOP ve snímané scéně. Zelené kružnice označují příznaky SURF. Červené linky zobrazují transformaci odpovídajících příznaků ze vzoru do snímku po nasazení algoritmu RANSAC.


Obr. 1: Detekce objektu na snímku

 

Detekce obličeje

Detekce obličejů na snímku představuje odlišný typ úlohy, než detekce objektů popsaná v předcházejících odstavcích. Narozdíl od rozpoznávání konkrétního exempláře dané třídy se zde jedná se o hledání obecnější kategorie objektů, která pojímá určitou diverzitu. Vhodnou funkčnost v této oblasti poskytuje cascade object detector využívající algoritmus Viola-Jones. V MATLABu je tento algoritmus předtrénován pro detekci obličeje (obr. 2), nosu, očí a dalších častí lidského těla. Jeho použití je tak velmi snadné. Kromě toho je zde obsažena i možnost trénování uživatelského klasifikátoru – tedy naladit detektor pro detekci uživatelské třídy objektů.


Obr. 2: Detekce obličeje

 

Sledování objektů

Sledování objektů není pouhou opakovanou detekcí objektů aplikovanou na jednotlivé snímky ve videu. Při sledování se snažíme nalézt souvislosti a změny scény v po sobě jdoucích snímcích. V MATLABu můžeme k tomuto účelu využít např. sledování množiny bodů (algoritmus Kanade-Lucas-Tomasi), kde jsou po počáteční inicializaci zadané body automaticky sledovány (obr. 3).

Kromě popsaných metod nabízí MATLAB také funkce pro sledování objektu pomocí Kalmanova filtru, detekci popředí (Gaussian mixture models), sledování na základě histogramu (algoritmus CAMShift) a další.

 

Stavební kameny

Popsané algoritmy nepředstavují uzavřené řešení, ale stavební kameny, které můžete využít pro budovaní vlastních, komplexních algoritmů pro detekci a sledování objektů či osob. MATLAB nabízí množství příkladů, jak tyto stavební kameny skládat a řešit jimi úlohy a situace, jako je problematika ztráty a opětovného nalezení sledovaného objektu nebo sledování mnoha objektů zároveň.

 

Další oblasti počítačového vidění

Nástroje pro počítačové vidění v MATLAB zahrnují ještě funkce pro 3-D vidění, rekonstrukci hloubkové mapy z posunutých obrazů, kalibraci kamer, optické rozpoznávání textů a mnoho jiných algoritmů z oblasti počítačového vidění

 

Distributor produktů společnosti MathWorks v České republice a na Slovensku:
HUMUSOFT s. r. o.
http://www.humusoft.cz
logo_humusoft



Úvodní foto: humusoft




Související články




Komentáře

Napsat vlastní komentář

Pro přidání příspěvku do diskuze se prosím přihlašte v pravém horním rohu, nebo se prosím nejprve registrujte.