česky english Vítejte, dnes je úterý 12. listopad 2024

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

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.

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 na rozdí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í výpoč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

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. Na rozdíl od rozpoznávání konkrétního exempláře dané třídy se zde jedná 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živa telského klasifikátoru – tedy naladit detektor pro detekci uživatelské třídy objektů.

Obr. 2 Detekce a sledování obličeje

Obr. 2 Detekce a sledování 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 histogram- based tracker, který zahrnuje algoritmus CAMShift. Po počáteční inicializaci je objekt automaticky sledován na základě analýzy histogramu.

Stavební kameny

Popsané algoritmy nepředstavují hotové 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.

Program 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, sledování mnoha objektů zároveň, stereovize a další.

Společnost HUMUSOFT s. r. o. je distributorem produktů firmy MathWorks v České republice a na Slovensku.

www.humusoft.cz