Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1069&lang=405, vytištěno: 29.09.2020 7:09:31

Hlavní stránkaProduktyStrojové vidění VisionLab

Hledání obrazových vzorů v binárním černobílém obraze - zajímavá aplikace systému VisionLab
 Obecně platí, že hledání obrazových vzorů pomocí normalizované křížové korelace je hodně náročné na výkon počítače. A požadavky na výpočetní výkon ještě dále významně rostou s potřebou hledat vzory v různých měřítcích velikosti a v různých natočeních. A máme-li hledat obrazové vzory v binárním obraze, není to, jak by se mohlo při prvním nahlédnutí zdát, zjednodušením, ale spíše komplikací. Uvedená aplikace, která tuto problematiku úspěšně řeší, může být inspirací pro autory, kteří jsou nebo budou postavení před podobná zadání.

Schopnosti systému strojového vidění VisionLab v oblasti hledání obrazových vzorů lze dobře ukázat na této, na první pohled prosté, ale ve skutečnosti náročné úloze.

Je zde několik požadavků, které problém hodně komplikují, ale zase na druhou stranu jej činí zajímavým a poučným:

  • Je nutno identifikovat a počítat plechové výrobky, které jsou zavěšeny na dopravníku výrobní linky. Počet výrobků v zorném poli kamery se může velmi lišit - od jednotek až po mnoho desítek.

  • Velikost výrobků je velmi rozdílná. Od maličkých po velmi rozměrné.

  • Rovněž poměr mezi šířkou a výškou výrobků je velmi různorodý.

  • Kamera musí být umístěna hodně blízko, potřebujeme velmi široký zorný úhel, který se nutně odrazí ve značném geometrickém zkreslení projekce.

  • A největší komplikací je to, že osvětlení scény je velmi různorodé a během činnosti systému se stále a významně mění od slunečního světla až po světlo lamp.

  • Změny osvětlení a změny pozice výrobků způsobují, že výrobky a jejich části jsou barevně i jasově velmi proměnlivé od tmavé barvy až po světlý intenzivní lesk.

Podle tohoto zadání by tuto úlohu asi většinu odborníků v oblasti strojového vidění označila jako neřešitelnou. Je dobře, že autora aplikace takovéto zadání neodradilo. Řešení všech výše uvedených potíží dobře dokumentuje nejen odvahu autora, ale i schopnosti systému VisionLab.

Malý odstup kamery a použití širokoúhlého objektivu nutně vede k značnému geometrickému zkreslení. Tyto aberace jsou při použití virtuálního přístroje gl_camera snadno korigovatelné. Stačí v konkrétní scéně pořídit snímek kalibračního tečkovaného rastru a pomocí průvodce ve vývojovém prostředí vytvořit soubor s kalibračními daty. Vlastní geometrická kalibrace pak již probíhá v reálném čase s vysokou subpixelovou přesností. Pro výpočty v plovoucí řádové čárce je využíván grafický procesor, takže kalibrace aplikační program prakticky nezatěžuje. Pomocí CPU počítače by byla takováto kalibrace v reálném čase nerealizovatelná.

Nastavení kalibrace geometrie obrazu je realizovatelná několika kroky průvodce ve vývojovém prostředí

Nastavení kalibrace geometrie obrazu je realizovatelná několika kroky průvodce ve vývojovém prostředí

Projektivní aberace objektivu máme odstraněny a nyní se dostáváme ke stěžejnímu problému. Osvětlení scény je v prostoru i v čase velmi různorodé a proměnlivé. Proto také jsou i plechové výrobky zobrazovány s temnými povrchy i vysokými jasy odlesků.

Výrobky se značně proměnlivě lesknou

Výrobky se značně proměnlivě lesknou

Tento problém je vyřešen pomocí barevného pozadí. Máme totiž k dispozici např. krok gpu_HSL_filter, který dokáže pomocí výpočtů v HSL barevném prostoru identifikovat varvu pozadí v požadovaných rozsahých nasycení a jasů. Takto dokážeme separovat i velmi různorodě vypadající výrobky. Krok běží v GPU a je velmi rychlý.

Prostřednictvím kroku gpu_HSL_filter dokážeme jakýkoliv objekt přesně oddělit od pozadí

Prostřednictvím kroku gpu_HSL_filter dokážeme jakýkoliv objekt přesně oddělit od pozadí

Výrobky máme nyní oddělené od pozadí a jejich proměnlivý vzhled je eliminován převedením do černo-bílého binárního obrazu. Zbývá již jen černé objekty na bílém pozadí identifikovat, spočítat je a vrátit pole s jejich pozicemi. Pro tento účel použijeme krok gpu_pattern. Obrazové vzory mohou být velké a v obraze se mohou vyskytovat mnohokrát v různých pozicích a rotacích. Velkou předností kroky gpu_pattern je jeho rychlost, ke které pomáhá vysoký výpočetní výkon grafického procesoru.

Objekty jsou identifikovány krokem gpu_pattern.

Objekty jsou identifikovány krokem gpu_pattern.

Hledání vzorů je optimalizováno do několika výpočetních průchodů v GPU, kdy jsou počítány odezvy normalizované křížové korelace a postupně jsou zpřesňovány regiony s nejlepšími výsledky. I když použitý krok je optimalizován pro použití v obrazech se škálou jasů, překvapivě i s binárním obrazem dosahuje dobrých výsledků.

Odezvy výpočtů korelací v GPU s nastaveným nízkým ...

Odezvy výpočtů korelací v GPU s nastaveným nízkým ...

... středním ...

... středním ...

... a vysokým prahem.

... a vysokým prahem.

Pro autory aplikací může snad být toto řešení inspirací a povzbuzením pro jejich práci v oblasti strojového vidění.

Roman Cagaš