Detekce obrazových vzorů (pattern matching) je v aplikacích
strojového vidění jedním z nejpoužívanějších funkcí. Používané
algoritmy, kdy se porovnávají obrazové body prostřednictvím
normalizované křížové korelace spotřebovávají velké množství
výpočetního výkonu. Vše je samozřejmě silně závislé na množství
porovnávaných obrazových bodů. Zde je značným přínosem využití GPU,
které disponuje jednak vysokým masivně paralelním výkonem pro výpočty
křížových korelací, tak si vysokým datovým tokem pro přístup k
fragmentům obrazů, uložených v grafické paměti. I přes to ale naivní
přístup s testováním všech bodů dokáže zahltit i velmi výkonné
grafické procesory. Proto je zde použito několik optimalizací. Nejsou
testovány vždy všechny body, ale množina bodů je vybírána na základě
svých jasů a také proces detekce je rozdělen do několika fází s různou
přesností nalezených pozic obrazových vzorů. Významná je i role GPU
při výpočtech obrazových transformací při rotacích a proměnlivém
měřítku obrazu. Hledání obrazových vzorů tak dosahuje díky využití
grafického procesoru velmi vysokých výkonů.
Vývojové prostředí systému VisionLab s kroky vyhledávání
vzorů.
Pro hledání siluet objektů v binárních obrazech lze dále ušetřit
několik operací z výše popsaného algoritmu. Zjevně není nutno vybírat
testované body na základě jejich jasů a také není třeba pro posuzování
shod počítat normalizované křížové korelace. Postačí shodnost
prahovaných hodnot jasů v mřížce s definovanou hustotou. V případě
maximálních nároků na přesnost lze testovat veškeré body vzorů.
Algoritmus má dvě fáze, kdy pro každou z nich si můžeme rovněž zadat
rozdílné požadované skóre srovnávání. V první fázi obvykle můžeme
požadovat nižší skóre než ve fázi finální. Metoda je pro siluety v
binárních obrazech velmi rychlá a přesná.
Přesnost metody umožňuje spolehlivé rozlišení podobných
vzorů
Tento krok gpu_pattern_binary je k dispozici v update
8.0.16 systému VisionLab.
Roman Cagaš
|