Foto: kentoh / Dollar Photo Club

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 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í 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ázku 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.

detekce objektu

Obrázek 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ázek 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ů.

detekce obličeje

Obrázek 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ázek 3).

sledování

Obrázek 3: Sledování obličeje pomocí sledování zadaných bodů

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

humusoft-logo

mathworks-logo

Důkazy o primordiálních černých dírách se mohou skrývat v planetkách, nebo dokonce v běžných objektech na Zemi

Extrémní podmínky raného vesmíru možná umožnily vznik mnoha malých černých děr dávno před zrodem prvních …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *