VisionLab - systém strojového vidění pro Control Web
 

VisionLab je programový systém zaměřený na tvorbu aplikací pro analýzu obrazu a počítačové vidění. VisionLab ale nepracuje jako samostatný a nezávislý programový systém, ale je integrován do systému pro rychlý vývoj průmyslových aplikací Control Web.

Díky zabudování do systému Control Web tak aplikace strojového vidění v prostředí VisionLab mohou všech těchto vlastností využívat. Vývojový systém pro aplikace strojového vidění postrádající tyto vlastnosti by byl velmi ochuzen a uživatelé by ve velkém množství případů museli pracně řešit výměnu dat mezi aplikací pro vizualizaci a řízení procesů a aplikací pro strojové vidění, což s sebou samozřejmě přináší vyšší náklady a delší a náročnější vývoj.

VisionLab editor

VisionLab editor

Funkčnost systému Control Web je velmi rozsáhlá a zahrnuje mimo jiné rozhraní pro komunikaci s velkým množstvím vstupně/výstupních jednotek, průmyslových automatů a komunikačních karet. Rozhraní ovladačů pro Control Web je dobře zdokumentované a 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é nativní ovladač není k dispozici. Aplikace v prostředí Control Web vytváří 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 aplikace přistupovat k firemním databázím. Control Web dovoluje velmi snadnou tvorbu distribuovaných client-server i peer-to-peer aplikací. Součástí systému je i HTTP server pro přístup k aplikacím prostřednictvím WWW prohlížečů.

VisionLab a Control Web

Ačkoliv VisionLab pracuje v prostředí aplikací Control Web, je záměrně navržen tak, aby bylo možné jej instalovat zcela samostatně a aby vazba mezi oběma systémy byla nezávislá na verzi obou prostředí. Jedinou podmínkou pro práci systému VisionLab je Control Web verze 6.1 a vyšší. Starší systémy Control Web nedokáží se sytémem VisionLab pracovat.

Spojovacím článkem obou prostředí jsou virtuální přístroje systému Control Web pro obsluhu kamer. Virtuální přístroje camera a gl_camera jsou přítomny v každé instalaci systému Control Web počínaje verzí 6.1. Tyto virtuální přístroje dokáží 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 aplikace, může být také nahráván do AVI sekvence spolu s dalšími údaji (datum, čas atd.) např. pro bezpečnostní aplikace. Pro ukládání AVI souboru je možné zvolit libovolný formát (codec) instalovaný v operačním systému (samozřejmě za předpokladu jeho kompatibility se zdrojem dat — např. v některých formátech není možné uchovávat pouze černobílý obraz apod.). Obraz je také možné předávat po síti do jiné aplikace 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í nutno instalovat samotný VisionLab.

Kamerové přístroje v systému Control Web

Kamerové přístroje v systému Control Web

Po instalaci je VisionLab k dispozici pro všechny systémy Control Web (jak již bylo řečeno od verze 6.1) instalované na daném počítači, tedy pro vývojovou i runtime verzi, pro verze se znakovými sadami ANSI i UNICODE, pro rozličné jazykové mutace apod. Licence pro systém VisionLab je možné stejně jako u samotného systému Control Web vázat na daný počítač prostřednictvím licenčního čísla nebo je možné licenci umístit na přenosný USB klíč.

Analýza obrazu v prostředí VisionLab

VisionLab je prostředí, které aplikaci dodá schopnosti obraz skutečně analyzovat, získat z něj potřebnou informaci. Množství a druhy získávaných informací velice závisí na cílové aplikaci. Například může aplikace měřit rozměry výrobků. Nebo může kontrolovat přítomnost či nepřítomnost jednotlivých částí výrobku. Může detekovat tvary a/nebo barvy, zjišťovat přítomnost otvorů, počítat snímané elementy a třídit je do kategorií, číst čárové nebo maticové kódy či texty na štítcích, … Možností je nepřeberné množství a nelze je ani přibližně vypočítat.

Vlastní analýza obrazů probíhá v jednotlivých krocích (anglicky „steps“). Kroky se liší funkčností 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 aplikace kroky vybírá z palety nabízených kroků a sestavuje je do sekvence podle potřeb aplikace.

Paleta kroků editoru VisionLab

Paleta kroků editoru VisionLab

Schopnost řetězit kroky zpracování obrazu je dána všem virtuálním přístrojům typu kamera 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 kamera je spojena s jednou konkrétní kamerou připojenou k počítači.

V rámci každé instance kamerového 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 mohou být různých typů, počínaje základními typy pro uchování číselných, logických a řetězcových (textových) hodnot přes typu 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 (např. 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 pak mimo dalších vstupních parametrů modifikujících 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íší výsledky do pole objektů typu kružnice nebo obdélník apod.

Datové objekty systému VisionLab mohou být vždy před každým startem sekvence zpracování obrazu inicializovány hodnotami (výrazy) datových elementů systému Control Web. Tak může aplikace systému Control Web modifikovat algoritmy zpracování obrazu.

Na druhá staraně na konci sekvence zpracování obrazu je možné hodnoty datových objektů systému VisionLab zapsat do datových elementů aplikace systému Control Web. Tím lze výsledky zpracování dále využít v aplikaci např. k uložení do databáze, k ovlivnění procesu prostřednictvím vstupně/výstuních jednotek apod.

Hardware pro VisionLab

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 programovatelných GPU (Graphical Processing Unit – obrazový procesor). Moderní GPU obsahuje velké množství paralelně pracujících výpočetních jednotek, jejichž čistý výpočetní výkon přesahuje i ty nejrychlejší více-jádrové CPU (Central Processing Unit – procesor počítače) až o několik řádů. To samozřejmě platí za předpokladu, že daná úloha je vhodná pro masivně paralelní zpracování. Takovou úlohou je vykreslení 3D scény u moderních počítačových her a rozvoj herního průmyslu stojí za obrovským rozmachem GPU. Když už je v řadě moderních PC výkonný GPU procesor přítomen (naneštěstí to nelze říci o jedné z nejrozšířenějších řad grafických adaptérů, a to o integrovaných grafických adaptérech firmy Intel), nabízí se možnost tohoto výkonu využít i v jiných aplikacích. Ovšem úloh vhodných pro tento způsob zpracování není mnoho, v naprosté většině úloh, běžně zpracovávaných počítači, je role CPU nezastupitelná. Zpracování obrazů v reálném čase ale k úlohám velmi dobře zpracovatelným masivně paralelními procesory patří 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 (název tohoto virtuálního přístroje je odvozen z názvu aplikačního programového rozhraní „OpenGL“ pro práci s GPU) využívá GPU ke zpracování obrazu z kamery. Díky tomu dokáže provádět s obrazem operace jinak v reálném čase 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. Taková rekonstrukce vytvoří barevný snímek, který oproti běžné bilineární interpolaci barev postrádá barevné artefakty a nabízí výrazně vyšší barevnou věrnost zejména v jemných detailech. Dalším příkladem je např. adaptivní redukce šumu. Oblastí, kde GPU velice vyniká jsou celoplošné transformace obrazu (změny barevného prostoru, obrazové filtry apod.). GPU je také velice dobře využitelný 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 mimo samotnou funkčnost také přispět k vizuální atraktivitě aplikace – čáry, kóty a texty vkládané do obrazu využívají anti-aliasing (v podstatě schopnost kreslit „mezi obrazové body“), mohou mít nastavenou průhlednost a nepřekrývat tak zcela obraz z kamery atd.

Pro aplikace na počítačích bez vhodného GPU je možné používat virtuální přístroj camera, který ke své práci GPU nepotřebuje. Řada algoritmů pro zpracování obrazu není vhodná pro zpracování na GPU a musí být prováděna na CPU. Pokud aplikace 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.

S výjimkou opravdu základních typů počítačů jsou prakticky všechny moderní počítače (stolní modely i přenosné počítače) vybaveny CPU jednotkami s více (dvěma, třemi nebo čtyřmi) výpočetními jádry. A trend vývoje je zcela zřejmý — nárůst výkonu osobních počítačů bude stále více realizován spíše zvyšováním počtu jader procesorů než zvyšováním rychlosti jediného jádra.

Ovšem pro velké množství programů bývá často problém více jader efektivně využít. Řada algoritmů je navrhována jako jediné výpočetní vlákno a dost dobře není možné úlohu rozdělit tak, aby rovnoměrně vytížila více CPU jader. Naštěstí oblast zpracování obrazů je velmi vhodná pro paralelní zpracování a i pokud daný algoritmus nedokáže využít masivně paralelní zpracování na GPU, paralelní zpracování na více CPU lze použít prakticky vždy. Proto je VisionLab již od počátky navrhován tak, aby maximálně využíval možností moderních vícejádrových CPU. Schopnost paralelního vykonávání přitom není omezena na nějaký konkrétní počer jader. Pokud je počítač vybaven CPU se dvěma jádry, výpočetní čas řady kroků je skutečně téměř 1/2 času vykonání stejného algoritmu na jednojádrovém CPU. Podobně na CPU se čtyřmi jádry se dostaneme na asi 1/4 výpočetního času apod.