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
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
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
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.
|