Aktuální vydání

celé číslo

11

2017

PLC, průmyslové počítače, operátorské panely, I/O moduly

celé číslo

Nové algoritmy v systému strojového vidění VisionLab

Při představování systému strojového vidění VisionLab (Moravské přístroje) bývají obvykle prezentovány pokročilé algoritmy pro rozpoznávání obrazových vzorů, rozpoznávání obličejů nebo obecných objektů v obraze, nezávisle na jejich jasu, natočení i velikosti. Vývoj tohoto systému ale probíhá i v oblastech, které nejsou na první pohled tak výjimečné, jež ale mohou přinášet nová a unikátní řešení a v celkové kvalitě produktu hrají významnou roli.

Snad veškeré systémy strojového vidění dokážou číst text i jednorozměrné čárové a dvourozměrné maticové kódy. Přibližme si na první pohled jednoduchou problematiku, jakou je detekce a lokalizace čárových a maticových kódů v obraze.

Tradiční metody detekce a lokalizace

Zdánlivá jednoduchost je zde trochu klamná. V literatuře je popsáno velké množství algoritmů určených pro tento účel. Mnohé metody k lokalizaci čárového kódu využívají gradienty jasů. Pro získání velikostí i směrů gradientů se používá např. Robinsonův nebo Sobelův operátor. Poté se vyhledávají oblasti s vysokou hustotou gradientů shodného směru. Další metody využívají k lokalizaci morfologické operace. Pomocí Cannyho operátoru jsou detekovány hrany a je stanovován jejich směr. Obdobně se používá i skeletonizace. Obraz je rozdělen na nepřekrývající se bloky, pro každý blok jsou vytvořeny skelety jednotlivých spojitých částí a je zkoumána jejich rovnoběžnost. Používána bývá i Houghova transformace nebo některá z vlnkových (waveletových) transformací. Při obvyklém řešení v CPU jsou však tyto metody vzhledem ke spotřebě výpočetního výkonu pro práci v reálném čase problematické. Nejjednodušší a nejčastěji používanou metodou je čtení obrazových bodů podél skenovacích čar a vyhodnocování jasových profilů.

Společným problémem uvedených metod je malá odolnost proti změnám jasu, a především pevné měřítko detektorů. Proto bývá problematická detekce ve velkém rozsahu velikostí obrazců kódů. Pro spolehlivou detekci je třeba multiměřítkový algoritmus.

Obdobné potíže s sebou nese i detekce maticových kódů. Výjimkou jsou QR kódy, protože obsahují tzv. vyhledávací vzory, které velmi usnadňují lokalizaci těchto kódů v obraze. Vyhledávací vzory QR kódů mají takový tvar, že při přechodu tímto vzorem jakýmkoliv směrem je vždy zachován stejný poměr délek tmavých a světlých lineárních oblastí 1 : 1 : 3 : 1 : 1. Dokonce i pomocí nejjednodušší metody čtení obrazových bodů podél skenovacích čar lze nejen kód nalézt, ale i stanovit jeho měřítko. Hledání ostatních maticových kódů přináší podobné potíže jako hledání čárových kódů – opět vesměs předem není známo měřítko.

Měřítková pole obrazových znaků

Během rozvoje systému VisionLab byly vyvinuty i nové zajímavé algoritmy, které redukují velikost obrazových dat do malých polí obrazových znaků (features), jež jsou následně rychle zpracovatelné. Tato pole jsou vytvářena pro škálu několika, obvykle osmi, měřítek.

Znaky popisující zvolenou charakteristiku obrazu v určité oblasti mohou být např. vstupními daty neuronové sítě nebo v případě dobře zvolených charakteristik mohou být hledané objekty spolehlivě detekovány a lokalizovány i algoritmickými postupy.

Redukce objemu dat je velmi značná: obraz s miliony obrazových bodů je v polích znaků reprezentován stovkami, maximálně, při malých měřítkách znaků, tisíci elementy. Pro extrakci znaků z originálního obrazu jsou využívány masivně paralelní algoritmy běžící v grafických procesorech a nezatěžující CPU počítače.

Lokalizace maticových kódů

Pro hledání a lokalizaci maticových kódů je třeba takový operátor, který bude mít maximální odezvu v místech lomů a křížení kontrastních linií obrazu. Pro tento účel VisionLab vyhodnocuje determinant Hessovy matice, tzv. hessián (Hessova matice je čtvercovou maticí druhých parciálních derivací obrazové funkce). Pro výpočet determinantu je zapotřebí pro každý bod obrazu získat výsledky konvoluce obrazové funkce s druhou derivací Gaussovy funkce ve vodorovném, svislém i příčném směru. Ke zrychlení výpočtů se používá aproximace jader Gaussova filtru pomocí Haarových vlnek. A to vše je třeba počítat pro celou škálu měřítek. Zde hodně pomáhá využití integrálního obrazu, ze kterého lze počítat odezvy Haarových vlnek libovolných velikostí se stále stejnou výpočetní náročností.

Na obr. 1 jsou místa nadprahových odezev hessiánu vyznačena červenými kružnicemi. Velikosti kružnic současně ukazují měřítko dané odezvy. Jsou zobrazeny i jednotlivé měřítkové matice obrazových znaků. V individuálních měřítkových dvourozměrných polích je potom vyhledána ta lokalizace, která nejlépe odpovídá charakteru maticových kódů. Současně je tak nalezeno i správné měřítko pro následné čtení kódu (obr. 2obr. 5).

Lokalizace čárových kódů

Čárový kód má jednodušší strukturu, ale jeho hledání není nikterak snadnější. Integrální obraz zde nejen podstatně zrychluje detekci v různých měřítkách, ale umožňuje rychle vyhodnocovat střední jas obrazu v libovolně velkých regionech.

Detektor čárových kódů vždy pro každý bod obrazu změří směr nejbližší kontrastní hrany. K tomu využívá znalost lokálního středního jasu získaného z integrálního obrazu. Metoda je tak odolná proti změnám jasu a kontrastu a pomocí volby velikosti testovaných regionů dobře pracuje ve velkém rozsahu měřítek (obr. 7obr. 9). Celý tento proces, tak jako v předchozím případě, běží masivně paralelně v GPU.

Hledání vad povrchů

Hledání defektů povrchů výrobků je častou úlohou vizuálních inspekčních systémů. I tato problematika na první pohled vypadá jednoduše, ale opět se zde naráží na požadavek multiměřítkovosti detektorů. S výhodou lze použít obdobný matematický aparát a algoritmy jako v již popsaných případech. Pomocí systému VisionLab je tak možné hledat vady a nepravidelnosti obrazových struktur na hranicích jejich viditelnosti lidským okem (obr. 10). Za příklad použití lze zvolit např. tester povrchových vad plastových trubiček (obr. 11), který současně ukazuje efektivitu a eleganci řešení zakázkových systémů vizuální inspekce ve společném programovém prostředí systému Control Web, jež dokáže jak řídit stroje v reálném čase, tak spolupracovat s kamerami a vstupně-výstupními jednotkami DataLab a provozovat systém strojového vidění VisionLab.

Roman Cagaš, Moravské přístroje a. s.

Obr. 1. Odezvy detektoru maticového kódu v celé škále osmi měřítek

Obr. 2. Odezvy na příliš velkých měřítkách

Obr. 3. Správná detekce ukazuje současně správné měřítko

Obr. 4. Maticový kód v obraze s mnoha strukturami a kontrastními hranami

Obr. 5. Nalezení maticového kódu v obraze s čárovým kódem a podobně velkými čtverečkovými strukturami

Obr. 6. Zobrazení směrů gradientů jasu obrazu získaných pomocí Haarových vlnek v malém (vlevo) a velkém (vpravo) měřítku z integrálního obrazu

Obr. 7. Čárový kód nalezený v obraze s různými druhy periodických struktur

Obr. 8. Vizualizace prvního kroku detekce: v červeném kanálu vystupuje směr kontrastní hrany v okolí, zeleně jsou signalizovány body, v jejichž definovaném rozsahu blízkosti se nenachází žádná kontrastní hrana

Obr. 9. Lokalizace čárového kódu v měřítkovém poli obrazových znaků

Obr. 10. Kamerová hlava s rotujícími osvětlovači a kamerami DataCam

Obr. 11. Detekované vady na povrchu plastových trubiček