Systém strojového vidění VisionLab

Kontrola kvality, automatická inspekce nebo měření pomocí kamerových systémů dosud nejsou zcela běžnou součástí průmyslové automatizace a zachovávají si nádech určité výjimečnosti. Tomu často odpovídá i jejich cena. Stejně exkluzivní byl však svého času i počítač v roli řídicí jednotky nebo rozhraní člověk-stroj. Dnes je počítač běžnou součástí průmyslové automatizace a systémy strojového vidění se jí nepochybně stanou velmi brzy také. Napomoci tomuto trendu má i nový systém strojového vidění VisionLab, pracující jako rozšíření systému Control Web pro rychlý vývoj aplikačních programů v reálném čase používaných v průmyslu.
 

Integrace strojového vidění do Control Web

 
Integrace VisionLab se systémem Control Web, široce používaným k vývoji programů pro vizualizaci technologických procesů, řízení v reálném čase atd., má pro uživatele velké množství výhod. Soubor funkcí systému Control Web je velmi rozsáhlý a zahrnuje také rozhraní pro komunikaci s mnoha vstupně-výstupními jednotkami, průmyslovými automaty a komunikačními kartami. Rozhraní ovladačů pro Control Web je dobře zdokumentováno a je volně k dispozici pro firmy implementující ovladače svých zařízení. Díky podpoře standardních protokolů (např. OPC) a de facto standardů (např. Modbus) dokáže Control Web komunikovat i se zařízeními, pro která není nativní ovladač k dispozici. Aplikační programy v prostředí Control Web vytvářejí datové rozhraní člověk-stroj, archivují procesní data a zobrazují jejich historii, hlídají mezní hodnoty sledovaných veličin a upozorňují obsluhu na jejich překročení. Prostřednictvím SQL mohou aplikační programy přistupovat k firemním databázím. Control Web usnadňuje tvorbu distribuovaných řešení klient-server i peer-to-peer. Součástí systému je i HTTP server pro přístup k aplikačním programům prostřednictvím webových prohlížečů. Díky zabudování v prostředí Control Web tak mohou aplikační programy strojového vidění v prostředí VisionLab všechny tyto vlastnosti používat. Vývojový systém pro řešení strojového vidění postrádající tyto vlastnosti by byl velmi ochuzen a uživatelé by mnohdy museli pracně řešit výměnu dat mezi systémem pro vizualizaci a řízení procesů a systémem strojového vidění, což by vedlo k vyšším nákladům a delšímu a náročnějšímu vývoji.
 
VisionLab si ale v prostředí Control Web rovněž vytváří vlastní množinu datových objektů, optimalizovanou pro analýzu obrazu a strojové vidění. K tomu jsou zapotřebí datové typy, které se v typických úlohách průmyslové automatizace nepoužívají, např. datový typ frame, reprezentující bitovou mapu s obrazem (matici obrazových bodů – pixelů), ale také typy, jako je color pro reprezentaci barvy, nebo typy rectangular_region a ring_region, dovolující omezovat algoritmy jen na určitou podoblast obrazu, apod.
 
Analýza obrazu je velmi zjednodušena tím, že je oddělena od ostatních částí aplikačního programu, a také tím, že je vytvořeno jasně stanovené rozhraní mezi datovými prvky systému Control Web a datovými objekty VisionLab. Rozhraní mezi oběma světy tvoří bloky nazvané init_data a output_data. První blok dovoluje definovat datové objekty VisionLab pomocí standardních výrazů systému Control Web na počátku každého řetězce obrazové analýzy a druhý umožňuje vrátit výsledky analýzy na konci tohoto řetězce zpět do aplikačního programu. Jestliže je např. v dané části obrazu zapotřebí snímat čárový kód, je možné pomocí výrazů v systému Control Web určit region (pozici, velikost a úhel natočení) v bloku init_data a nalezený čárový kód v podobě textového řetězce vrátit po skončení analýzy s využitím proměnné typu string pro další zpracování do aplikačního programu (např. k archivaci, vyhledání v databázi, zobrazení apod.).
 

Virtuální přístroje pro obsluhu kamer

 
Pro svou práci vyžaduje VisionLab systém Control Web verze 6.1 a vyšší. V této verzi jsou zahrnuty virtuální přístroje pro snímání obrazů z kamer, které tvoří spojovací článek mezi systémy Vision-Lab a Control Web. Systém pracuje s několika třídami virtuálních přístrojů, nikoliv tedy s jediným přístrojem typu camera.
 
Jednou ze zásadních inovací systému VisionLab ve srovnání s obdobnými systémy je schopnost využívat obrovský výpočetní výkon ukrytý v moderních obrazových procesorech, GPU (Graphical Processing Unit). Moderní GPU obsahuje velké množství paralelně pracujících výpočetních jednotek, jejichž čistý výpočetní výkon až o několik řádů přesahuje i ty nejrychlejší vícejádrové procesory počítače, CPU (Central Processing Unit). To platí za předpokladu, že daná úloha je vhodná pro masivně paralelní zpracování. Vzhledem k tomu, že většina současných PC již obsahuje výkonný grafický procesor, nabízí se možnost tento výkon využít i v jiných úlohách. Pro uvedený způsob zpracování ovšem neexistuje příliš mnoho vhodných úloh, pro naprostou většinu úloh běžně zpracovávaných počítači je totiž role CPU nezastupitelná. Právě zpracování obrazů v reálném čase patří k úlohám velmi dobře zpracovatelným masivně paralelními procesory a některé operace, vyžadující i několik sekund práce CPU, mohou být na GPU prováděny v reálném čase pro každý snímek přečtený z kamery.
 
Virtuální přístroj gl_camera využívá GPU ke zpracování obrazu z kamery. Díky tomu dokáže provádět s obrazem operace v reálném čase jinak neproveditelné. Příkladem je víceprůchodová rekonstrukce barevného obrazu ze syrového snímku pořízeného barevným snímačem s tzv. Bayerovou maskou. Při takové rekonstrukci se vytvoří barevný snímek, který oproti běžné bilineární interpolaci barev postrádá barevné artefakty a poskytuje výrazně větší barevnou věrnost zejména v jemných detailech. Dalším příkladem je adaptivní redukce šumu. Oblastí, kde GPU zvlášť vyniká, jsou celoplošné transformace obrazu (změny barevného prostoru, obrazové filtry, morfologické transformace apod.). Procesor GPU lze také velmi dobře využít pro další způsoby předzpracování obrazu, jako např. filtry „sůl a pepř“, adaptivní prahování, segmentace obrazu atd.
 
Použití GPU může rovněž přispět k vizuální atraktivitě řešení např. tím, že grafika vkládaná do obrazu využívá anti-aliasing (v podstatě schopnost kreslit „mezi obrazové body“), může mít nastavenou průhlednost, a mísit se tak s obrazem z kamery, atd.
 
Pro úlohy řešené na počítačích bez vhodné GPU je možné používat virtuální přístroj camera, který ke své práci GPU nepotřebuje. Jeho možnosti jsou menší, to ale v mnoha případech nemusí znamenat žádnou překážku. Jestliže aplikační program nepoužije např. náročný filtr, segmentaci nebo jinou operaci probíhající v GPU, může bez problému pracovat i na zabudovaných počítačích bez programovatelného grafického adaptéru.
 
Virtuální přístroje camera a gl_camera jsou k dispozici v každé instalaci systému Control Web počínaje verzí 6.1. Tyto virtuální přístroje dokážou zobrazit obraz digitálních kamer řady DataCam nebo jiných kamer s patřičným WDM ovladačem. Živý obraz může být nejen vložen do aplikačního programu, ale může být též nahráván do AVI sekvence spolu s dalšími údaji (datum, čas atd.), např. pro bezpečnostní řešení. Pro ukládání AVI souboru je možné zvolit libovolný formát (codec) instalovaný v operačním systému. Obraz je také možné předávat po síti do jiného aplikačního programu systému Control Web, kde může být obraz nejen zobrazen, ale také zpracován, archivován v AVI souboru apod. Toto vše je k dispozici v systému Control Web v6.1 a není nutné instalovat VisionLab.
 

Analýza obrazu v prostředí VisionLab

 
VisionLab je prostředí, které aplikačnímu programu umožňuje obraz analyzovat a skutečně mu „porozumět“, tj. získat z něj potřebnou informaci. Množství a druhy získávaných informací velmi závisejí na cílovém řešení. Systém strojového vidění může měřit rozměry výrobků nebo kontrolovat přítomnost či nepřítomnost jednotlivých částí výrobku. Může detekovat tvary a barvy, zjišťovat přítomnost otvorů, počítat snímané prvky a třídit je do kategorií, číst čárové nebo maticové kódy či texty na štítcích apod. Možností je nepřeberné množství a nelze je ani přibližně vypočítat.
 
VisionLab je dodáván jako samostatná komponenta nainstalovaná na daný počítač. Po instalaci je VisionLab k dispozici pro všechny systémy Control Web (od verze 6.1) umístěné na daném počítači, tedy pro vývojovou verzi i verzi runtime, pro verze se znakovými sadami ANSI i Unicode, pro rozličné jazykové verze apod.
 

Analýza obrazů v krocích

Vlastní analýza obrazů probíhá v jednotlivých krocích (steps). Kroky se liší funkcemi a také typy a počty vstupních a výstupních parametrů. Právě jednotlivé kroky pro zpracování obrazu tvoří jádro systému VisionLab. Tvůrce aplikačního programu vybírá kroky z palety nabízených kroků a sestavuje je do sekvence podle potřeb dané úlohy.
 
Schopnost řetězit kroky zpracování obrazu je dána všem virtuálním přístrojům typu camera v systému Control Web. Každý virtuální přístroj má vlastní sekvenci kroků a pracuje zcela nezávisle na jiných instancích těchto virtuálních přístrojů. Rovněž každá instance virtuálního přístroje typu camera je spojena s jednou konkrétní kamerou připojenou k počítači.
 
V rámci každé instance virtuálního přístroje je vytvořena množina datových objektů systému VisionLab. Tyto datové objekty uchovávají stav při každém průchodu sekvencí kroků. Datové objekty jsou jednoznačně identifikovány svým názvem (identifikátorem) a jsou k dispozici v různých typech, počínaje základními typy pro uchování číselných, logických a řetězcových (textových) hodnot, přes typy uchovávající body, přímky, obdélníky a prstence až po typ reprezentující celý obraz.
 
Jednotlivé kroky pracují se vstupními objekty. Většina kroků vyžaduje jeden vstupní parametr typu obraz, v němž dostává bitovou mapu, se kterou má pracovat. Kroky provádějící filtraci obrazu mimo další vstupní parametry modifikující daný filtr (např. velikost tzv. kernelu filtru) vyžadují opět výstupní parametr typu obraz, kam uloží výsledek po filtraci. Kroky pro čtení písma nebo čárových kódů potřebují výstupní parametr typu řetězec, kam uloží přečtený text nebo kód. Kroky vyhledávající geometrické tvary zapíšou výsledky do pole objektů typu kružnice nebo obdélník apod.
 
Každý krok může jako vstupní parametry použít výstupní parametry všech předchozích kroků. Jak je to ale s prvním krokem v celé posloupnosti? První možností je využít datové objekty systému VisionLab pevně zabudované do systému. Základním datovým objektem zabudovaným přímo v systému VisionLab (a tedy objektem, který je vždy k dispozicí a není nutné jej vytvářet) je objekt typu frame s názvem source. Tento obraz reprezentuje snímek získaný z kamery. Již první krok této posloupnosti má tedy přístup k obrazu kamery a může jej analyzovat či modifikovat.
 

Definice datových objektů v bloku init_data

Další možností, jak definovat datové objekty VisionLab (jinak než jako výstupní parametry kroků), je specifiovat je před začátkem sekvence zpracování obrazu (tedy před prvním krokem) v bloku init_data. V rámci tohoto bloku je možné definovat datové objekty pomocí zadaných hodnot neboli literálů. Například číslo je možné určit hodnotou, např. 3,14, řetězec textem, logickou hodnotu true a false atd. Mimo tuto charakteristiku je taktéž možné uvést výraz systému Control Web a operátor určující, zda má výsledek výrazu přepsat určenou hodnotu (operátor set) nebo má být k této hodnotě připočten (operátor add). Prahová hodnota tak může být nastavena např. na 0,5 a současně může být přepisována proměnnou systému Control Web pojmenovanou např. Threshold. Aplikační program pak může být navržen tak, aby daný virtuální přístroj (např. typu control v módu slider) zapisoval hodnotu do proměnné Threshold, a uživatel tak mohl z programu nastavovat prahovou hodnotu používanou kroky. Nic nebrání tomu, nastavovat v rámci bloku init_data i obraz source. Program pak bude pracovat nikoliv s obrazem čteným z kamery, ale s obrazem zaváděným z diskového souboru. Stejně tak výstupní obraz každého kroku může být definován jako source. Pak je obraz z kamery přepsán výsledkem kroku a v sekvenci je nadále nedostupný. Samozřejmostí je možnost jako výstup zvolit jiný obraz, např. filtered_source. Pak jsou pro následující kroky k dispozici oba obrazy – původní, přečtený z kamery, i nový, vytvořený předešlým krokem.
 

Předání datových objektů systému Control Web

Na konci sekvence kroků může být umístěn blok output_data. V rámci tohoto bloku jsou datové objekty systému VisionLab opět kopírovány do datových prvků systému Control Web. Aplikační program s nimi může nakládat stejně jako s jakýmikoliv jinými datovými prvky. Může je archivovat, zobrazovat, hlídat meze atd. Na základě získaných hodnot lze ovládat technologii (např. třídicí stroj), data je možné prostřednictvím HTTP serveru nastavovat, zasílat klientům používajícím webový prohlížeč atd.
 

Vývoj aplikačních programů pro VisionLab

 
Stejně jako je tomu u celého systému Control Web, i aplikační programy pro VisionLab je možné vyvíjet pomocí grafického vývojového nástroje a stejně jako u programů pro Control Web, je i kód analýzy obrazu ukládán jako zdrojový text. Protože jednotlivé kroky obrazové analýzy jsou vždy spojeny s konkrétním virtuálním přístrojem typu camera, je i zdrojový text zapisován v kontextu zápisu tohoto přístroje. Ve zdrojovém kódu je celá analýza uložena v bloku textu označeném identifikátory image_processing a end_image_processing. Uvnitř tohoto bloku jsou již zmíněné sekce init_data, steps a output_data.
 
Stejně jako je tomu u všech virtuálních přístrojů v aplikačních programech Control Web, jsou parametry přístrojů camera a gl_camera v grafickém editoru modifikovány za použití nástroje zvaného Inspektor přístroje (obr. 1). V tabulkovém režimu tohoto nástroje představuje blok image_processing jednu podtabulku s parametry obrazové analýzy (obr. 2). Tuto tabulku lze rozvinout a pomocí nabízených seznamů datových objektů a seznamů kroků, které jsou v systému instalovány, je možné sestavovat posloupnost obrazové analýzy.
 
Avšak základním nástrojem pro tvorbu aplikačních programů pro systém VisionLab je grafický návrhový systém. Tento nástroj je k dispozici v okně Inspektor přístroje v záložce Zpracování obrazu. V této záložce je k dispozici mnoho nástrojů pro snadnou definici datových objektů, výběr kroků, jejich řazení do sekvence atd. Editor velmi usnadňuje manipulaci s jednotlivými datovými objekty – pokud mají vizuální reprezentaci, zobrazí je graficky a umožňuje je nastavovat pomocí myši. U jiných typů objektů napomáhá např. výběru prahové hodnoty zobrazení jasového profilu obrazu, u výběru vzoru pro vyhledání dovoluje myší zarámovat oblast v existujícím obraze apod.
 
Je-li k počítači připojena kamera obsluhovaná daným virtuálním přístrojem, editor dokáže zobrazit živý obraz v záložce obrazu source. Tvůrce aplikace tak přímo vidí, co kamera zobrazuje, a může definovat správné nastavení expozičních parametrů, zaostření obrazu apod. Mimo živý obraz je možné snímat jednotlivé expozice a k vývoji aplikačního programu lze použít připravenou sekvenci nasnímaných obrázků v libovolném formátu (png, jpeg, tiff, gif, bmp atd.) uložených na disku.
 
Vlastní kroky zpracování obrazu je možné spouštět v rámci vizuálního editoru sekvenčně. Po každém kroku lze analýzu pozastavit a sledovat, popř. modifikovat hodnoty datových objektů, vizualizovat body, přímky, obdélníky či kružnice a další objekty. Tvůrce aplikačního programu tak má vždy přehled o tom, jak daný krok pracuje, jaké poskytuje výsledky, popř. proč neposkytuje očekávaná data. Tvůrce programu tedy může modifikovat vstupní data (např. prahové hodnoty, požadované přesnosti vyjádřené jako násobky směrodatných odchylek atd.) a sledovat reakci systému na tyto změny.
 

Kamery DataCam

 
Systém VisionLab dokáže pracovat s jakoukoliv kamerou s WDM ovladačem nainstalovaným v operačním systému. To zahrnuje nejen tzv. webové kamery, ale často i standardní TV kamery připojené prostřednictvím desky rozhraní (tzv. grabber, tedy zařízení převádějící analogový televizní signál do digitální podoby), popř. digitální kamery s rozhraním FireWire (IEEE1394) nebo USB.
 
Ovšem optimálními kamerami pro zpracování obrazu jsou digitální kamery řady DataCam. Ty poskytují četné výhody, např. jsou k dispozici za velmi příznivou cenu, v kompaktním a robustním provedení, lze s nimi snadno manipulovat a instalovat je (kamery jsou připojeny pouze jediným kabelem USB, který poskytuje i napájení) a bez problémů zapojit do celého systému. Kamery DataCam jsou systémem VisionLab podporovány přímo, bez interakce s jinými vrstvami operačního systému, než je rozhraní USB. Tyto kamery skutečně naplňují označení plug and play, tedy stačí je připojit a ihned použít. Zcela zásadní výhodou kamer DataCam pro analýzu a zpracování obrazu je kvalita jejich obrazu. Obraz kamer DataCam je digitalizován s dynamikou 16 bitů a je přenášen do počítače bezztrátově, tedy bez deformací obrazu způsobených kompresí MJPEG nebo MPEG, zcela běžnou u naprosté většiny jiných kamer. Obrazový šum je minimalizován velmi pečlivě navrženou elektronikou, která vychází z konstrukce kamer pro náročně vědecké použití a doslova počítá jednotlivé fotony. Při řešení je tedy možné se spolehnout v podstatě na každý pixel obrazové informace. Z těchto důvodů byl v několika pilotních úlohách, kde byly kamery DataCam použity, zaznamenán nárůst až o řád přesnosti měření oproti řešením postaveným na jiných digitálních kamerách, byť za několikanásobně vyšší cenu.
 
Kamery DataCam jsou k dispozici ve velkém počtu rozlišení od VGA 640 × 480 bodů až po kamery 2 Mpx s rozlišením 1 600 × 1 200 bodů. Velikosti čipů zahrnují formáty od 1/3 palce po 2/3 palce. Všechny modely jsou k dispozici v monochromatické i barevné variantě. Monochromatické varianty navíc mohou být vybaveny filtry vybírajícími pouze určitou část spektra – např. použití červeného filtru spolu s červeným podsvícením měřených objektů potlačí vliv běžného osvětlení v modré a zelené barvě, a zvýší tak spolehlivost a přesnost měření.
 
Pavel Cagaš,
  
Obr. 1. Živý obraz z kamery v nástroji Inspektor přístroje, otevřeném nad virtuálním přístrojem camera
Obr. 2. Identifikace barevných objektů
Obr. 3. Hledání vzorů a čtení textů z typových štítků při automatizované inspekci