Moravské přístroje, a. s., zdroj: http://www.mii.cz/art?id=858&lang=405, vytištěno: 20.10.2017 3:11:13

Hlavní stránka  Produkty  Strojové vidění VisionLab

Identifikace objektů v prostředí strojového vidění VisionLab
 Jedním z nejnáročnějších požadavků v aplikacích strojového vidění bývá spolehlivá identifikace objektů v obraze. Nalezení a rozpoznání požadovaných objektů můžeme považovat za podstatnou složku vedoucí k „porozumění“ obsahu obrazu strojem.

Vizuální inspekce se stává stále běžnější součástí systémů průmyslové automatizace. S novou generací kamer a především díky současnému programovému vybavení je sice realizace těchto aplikací snadnější, než tomu bylo kdykoliv dříve, ale na druhé straně se touto činností také zabývá stále rostoucí počet lidí, pro které je problematika strojového vidění pouze okrajovým zájmem. Proto se v tomto oboru setkáváme výrazně vyšším počtem neúspěšných řešení, než v ostatních oblastech průmyslové automatizace.

Pro úspěšné řešení zakázkového systému je důležitá volba základních principů a koncepce. I zkušenému odborníkovi může značně pomoci rezerva klíčových parametrů. Často se velmi vyplatí použití kamery s pokud možno co nejkvalitnějším obrazem, kvalitního softwarového systému strojového vidění a také je dobré nechat si rezervy ve výpočetním výkonu zařízení, na kterém běží algoritmy úlohy.

Systém strojového vidění VisionLab se trvale rozvíjí a postupně do něj přibývají stále náročnější a složitější algoritmy zpracování obrazu. Mnoho často používaných algoritmů lze rozumně implementovat jen díky využívání mohutného masivně paralelního výkonu současných grafických procesorů. Při řešení úloh strojového vidění musíme nepřetržitě hlídat čas, který naše úloha spotřebovává. Významně zjednodušit objektivně složité algoritmy není vždy možné a tak nám často nezbývá nic jiného, než použít výkonnější hardware. Vývoj v oblasti grafický procesorů si naštěstí zachovává již dlouhodobě vysokou dynamiku. Je sice pravda, že je poháněn průmyslem počítačových her a nikoliv oborem strojového vidění, ale to nám při využívání schopnosti současných GPU vůbec nevadí. I s běžným počítačem s cenově velmi dostupným grafickým adaptérem máme k dispozici systém, kterému se datovou propustností a masivně paralelním výkonem v plovoucí řádové čárce nevyrovná prakticky žádné jiné dostupné zařízení. A v poměru cena/výkon je situace ještě více jednoznačná.

Jedním z nejnáročnějších požadavků v aplikacích strojového vidění bývá spolehlivá identifikace objektů v obraze. Nalezení a rozpoznání požadovaných objektů můžeme považovat za podstatnou složku vedoucí k „porozumění“ obsahu obrazu strojem. Algoritmy identifikace objektů jsou často hodně náročné na spotřebu výpočetního výkonu a některé z nich jsou rozumně použitelné jen díky využití mohutného masivně paralelního výkonu současných grafických procesorů.

Jednotlivé algoritmy se sice hodně liší svým zaměřením, neexistuje jeden společný postup, který by řešil vše od čtení textu až po rozpoznávání obličejů, ale několik základních požadavků mají všechny postupu společné. Obvykle je nutné, aby spolehlivost rozpoznávání nebula ovlivňována jasem a kontrastem obrazu, často také potřebujeme objekty detekovat nezávisle na jejich velikosti a natočení vzhledem k souřadnému systému obrazu. Optimální algoritmy tedy musejí být invariantní vzhledem k jasu, měřítku i rotaci. Právě tyto požadavky a komplikace algoritmů s nimi spojené pak s stojí za již zmiňovanou potřebou značného výpočetního výkonu. Systém strojového vidění VisionLab nám pro kvalitní vyřešení těchto požadavků poskytuje řadu nástrojů.

Jednoúčelové hledání specifických objektů

Zde patří mnoho často používaných metod, které nejsou opravdovou obecnou indentifikací libovolných objektů. Nejjednodušší, ale hojně používaná je i prostá extrakce barevných nebo jasových skvrn či textur. Takto získané objekty mohou být popsány např. pomocí souřadnic svého těžiště a mohutnosti.

Obr. 1: Nalezení specifických objektů podle barvy

Obr. 1: Nalezení specifických objektů podle barvy

Za identifikaci objektů můžeme do určité míry považovat i např. nalezení obrazců čárových a datamatrix kodů v ploše obrazu. Obdobnou úlohou je i nalezení písmen a přečtení textů. Speciálně zaměřeným hledáním a identifikací písmen a číslic je i krok pro čtení registračních značek automobilů. Také zde je třeba v širokém rozsahu jasů, měřítek a natočení značku nalézt a poté spolehlivě přečíst všechny znaky.

Obr. 2: Identifikace obrazce datamatrix kódu

Obr. 2: Identifikace obrazce datamatrix kódu

Nyní ale již pojďme o obecným identifikacím (téměř) libovolných objektů.

Obr. 3: Vyhledání pozice a regionu registrační značky

Obr. 3: Vyhledání pozice a regionu registrační značky

Hledání podle geometrických útvarů

Jako ostatně vše, má tato metoda rozpoznávání objektů své přednosti i nevýhody. Nejprve je nutno ze vzorového obrazu extrahovat množinu jednoduchých geometrických tvaru, které objekt dostatečně identifikují. Nelze tedy použít barevný či šedotónový obraz, přesněji řečeno, během zpracování obrazu dochází k jeho prahování. V binárním obraze je nutno nejprve extrahovat hrany, a z nich vybrat ty, které lze považovat za obrysy hledaných geometrických útvarů. Nejčastějšími útvary jsou úsečky a kružnice včetně kruhových oblouků. Zásadní nevýhodou je omezení na binární obraz, předností je naopak přirozená invariance vůči měřítku a rotaci.

Obr. 4: Identifikace geometrických útvarů a jejich vzájemných relací

Obr. 4: Identifikace geometrických útvarů a jejich vzájemných relací

Pro hledání objektů podle geometrických útvarů nabízí prostředí VisionLab krok geometric_matching.

Hledání podle bitmapových vzorů

Jedná se o v současnosti nejčastěji používaný postup. Algoritmus pattern matching mají k dispozici téměř všechny nástroje pro strojové vidění. Bývá implementován i v tzv. inteligentních kamerách. V obraze je hledán bitmapově definovaný vzor pomocí normalizované křížové korelace. Normalizace zde řeší invarianci vzhledem k jasu. Potíž je ale v tom, že výpočet korelačního koeficientu je natolik náročný, a to dokonce i pro nejvýkonnější současné GPU, že nemůže být dělán hrubou silou pro všechny body vzoru ani pro všechny body prohledávaného obrazu. Zde musí nastoupit nejrůznější aproximace a optimalizace, které výsledek do určité míry poškozují. Právě tyto postupy optimalizací si dodavatelé pečlivě chrání. I systém VisionLab má ve svých víceprůchodových algoritmech řadu unikátních optimalizací, které uspoří spoustu výpočetního výkonu při minimalizovaném vlivu na kvalitu a reprodukovatelnost identifikace objektů. Opravdové potíže s požadavky na výpočetní výkon nastanou u většiny implementací tehdy, budeme li požadovat také invarianci vzhledem k větším rozsahům měřítek a rotací.

Obr. 5: Výkonná identifikace bitmapových vzorů pomocí GPU

Obr. 5: Výkonná identifikace bitmapových vzorů pomocí GPU

Možnosti hledání bitmapových vzorů jsou hodně široké, ale tento algoritmus také není vhodný pro všechny typy objektů. Není dobré jej používat pro černobílé objekty se strmými kontrastními hranami a problémy často přinášejí i objekty s periodicky se vyskytujícími obrazci (např. nožičky integrovaných obvodů atd.). Tou hlavní potíží je zůstává náročnost na výpočetní výkon.

V systému VisionLab je implementace pro CPU algoritmu hledání vzorů k dispozici v krocích pattern_match_monochrome a pattern_match_color. Masivně paralelní řešení s podporou GPU je obsaženo v kroku gpu_pattern. U moderních grafických adaptérů může být tento krok i několikanásobně rychlejší než na vícejádrových CPU.

Hledání podle deskriptorů v okolí významných bodů

Tyto moderní algoritmy se dostávají ke slovu teprve v posledních několika letech. Přinášejí mnoho skvělých vlastností, nicméně jsou také velice náročné na výpočetní výkon. Rozumná implementace se neobejde bez co největšího využití výkonu GPU.

Obr. 6: Ukázka nalezených významných bodů včetně jejich orientací a měřítek na jednoduchém testovacím obrazci

Obr. 6: Ukázka nalezených významných bodů včetně jejich orientací a měřítek na jednoduchém testovacím obrazci

Základní myšlenkou je nezkoumat obrazové body celého obrazu, ale omezit se pouze na pixely v okolí tzv. významných bodů. A navíc ani v tomto okolí nepoužíváme normalizovanou křížovou korelaci bodů obrazů, ale vzájemně porovnáváme vektory čísel tzv. deskriptorů. Pro identifikaci objektů tedy postačí zapamatovat si pouze určitý nevelký počet těchto deskriptorů. Proces identifikace se pak již více podobá hledání podobnosti číselných řad v databázích.

Obr. 7: Identifikace obálek knih i na nekvalitním snímku metodou deskriptorů významných bodů

Obr. 7: Identifikace obálek knih i na nekvalitním snímku metodou deskriptorů významných bodů

Nejprve ale musíme významné body o obraze najít. Obvykle jsou to body, v jejichž okolí dochází ke změnám jasu ve více směrech. To zní celkem jednoduše, ale podstatnou komplikací je nutnost vyhledat významné body co nejrychleji v mnoha měřítcích obrazu. Pro každý bod zjistíme i jeho úhlovou orientaci jako vektor největšího gradientu jasu v jeho okolí úměrném měřítku. Tato informace nám zajišťuje invarianci vzhledem k rotaci. Pro oblasti kolem detekovaných významných bodů již jen vypočteme vektory čísel deskriptorů. Deskriptory charakterizují směry a dynamiku gradientů jasu obrazové funkce kolem významných bodů.

Obr. 8: Nalezení a identifikace požadovaných obličejů ve skupině lidí pomocí deskriptorů

Obr. 8: Nalezení a identifikace požadovaných obličejů ve skupině lidí pomocí deskriptorů

Při vyhledávání objektů pak již jen postačí identifikovat zapamatované deskriptory s nově nalezenými.

Obr. 9: Spolehlivé nalezení požadované osoby i na nekvalitně snímané fotografii

Obr. 9: Spolehlivé nalezení požadované osoby i na nekvalitně snímané fotografii

V systému strojového vidění VisionLab jsou pro využití těchto algoritmů k dispozici kroky gpu_keypoint, gpu_feature_save, gpu_feature_match a gpu_multiple_feature_match. Možnosti těchto kroků jsou překvapující. Kromě samozřejmé invariance vzhledem k jasu, měřítku a neomezené rotaci umožňují s vysokým výkonem vyhledávat a identifikovat prakticky veškeré typy a velikosti objektů. Metoda je velmi odolná i proti obrazovému šumu, změnám ostrosti obrazu a částečnému skrytí objektů. Lze jejím prostřednictvím s velkou spolehlivostí identifikovat např. i lidské obličeje atd.

Společná softwarová platforma pro strojové vidění i průmyslovou automatizaci

Díky několika principům, který jsou využití čistých a stabilních syrových obrazových dat z kamer DataCam, jednotná softwarová platforma Control Web a systém VisionLab s implementací pokročilých algoritmů využívajících vícejárdové CPU i masivně paralelní GPU, mají autoři zakázkových aplikací k dispozici systém, který významně zvyšuje pravděpodobnost úspěšného řešení i u velmi složitých úloh

RC

Článek tak, jak vyšel v magazínu Automa je v PDF podobě zde: Automa_08_2015.pdf.

rc