Snad veškeré systémy strojového vidění dokážou číst text i
jednorozměrné čárové a 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ů pro tento účel. Mnohé metody k
lokalizaci čárového kódu využívají gradientů jasů. Používá se
např. Robinsonův nebo Sobelův operátor pro získání velikostí i
směrů gradientů. 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 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 transformací. Při obvyklém
řešení v CPU vzhledem ke spotřebě výpočetního výkonu jsou tyto
metody problematické pro práci v reálném čase. 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 výše uvedených metod je malá odolnost na
změny 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 potřebujeme multiměřítkový algoritmus.
Obdobné potíže přináší 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. I pomocí nejjednodušší metody čtení
obrazových bodů podél skenovacích čar můžeme 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
neznáme měřítko.
Měřítková pole obrazových znaků
V rámci rozvoje systému VisionLab byly vyvinuty nové zajímavé
algoritmy, které redukují velikost obrazových dat do malých polí
obrazových znaků (features), které 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 nějaké
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ěřítcí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ů potřebujeme takový
operátor, který bude mít maximální odezvu v místech lomů a křížení
kontrastních linií obrazu. Pro tento účel vyhodnocujeme
determinant Hessovy matice, tzv Hessián (Hessova matice je
čtvercovou maticí druhých parciálních derivací obrazové funkce).
Pro výpočet determinantu potřebujeme 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. Pro zrychlení
výpočtů použijeme aproximace jader Gaussova filtru pomocí
Haarových vlnek. A toto vše potřebujeme provádět pro celou škálu
měřítek. Zde nám hodně pomáhá využití integrálního obrazu, ze
kterého lze počítat odezvy Haarových vlnek libovolných velikosti
se stále stejnou výpočetní náročností.
Obr. 1: Odezvy detektoru maticového kódu v celé škále
osmi měřítek
Na obraze 1 vidíme místa nadprahových odezev Hessiánu vyznačená
č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 jednotlivých měřítkových dvourozměrných polích
je pak 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. 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ého 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ě velikými čtverečkovými strukturami
Lokalizace čárových kódů
Čárový kód má jednodušší strukturu, ale jeho hledání není
nikterak snadnější. Integrální obraz nám zde podstatně zrychluje
nejen 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á vůči změnám jasu a kontrastu a pomocí volby velikosti
testovaných regionů dobře pracuje ve velkém rozsahu měřítek. Celý
tento proces, tak jako v předchozím případě, běží masivně
paralelně v GPU.
Obr. 8: Čárový kód nalezený v obraze s různými druhy
periodických struktur
Obr. 9: 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 ne
nenachází žádná kontrastní hrana
Obr. 10: Lokalizace čárového kódu v měřítkovém poli
obrazových znaků
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 zde narážíme na požadavek multiměřítkovosti
detektorů. S výhodou můžeme použít obdobný matematická aparát a
algoritmy jako ve výše popsaných případech. Pomocí systému
VisionLab tak dokážeme hledat vady a nepravidelnosti obrazových
struktur na hranicích jejich viditelnosti lidským okem.
Obr. 11: Kamerová hlava s rotujícími osvětlovači a
kamerami DataCam
Obr. 12: Detekované vady na povrchu plastových
trubiček
Jako příklad použití může sloužit např. tester povrchových vad
plastových trubiček, který současně ukazuje efektivitu a eleganci
řešení zakázkových systémů vizuální inspekce v společném
programovém prostředí systému Control Web, které dokáže jak řídit
stroje v reálném čase, tak spolupracovat s kamerami a
vstupně/výstupními jednotkami DataLab a také provozovat systém
strojového vidění VisionLab.
Článek tak, jak vyšel
v magazínu Automa je v PDF podobě zde: A05_2017_VisionLab.pdf.
Roman Cagaš
|