s obrazovou funkcí lze považovat např. fil - traci, prahování, hledání hran či vyhlazení.
Vždy se jedná o to, aby výsledná obrazová funkce g(x, y) byla podrobena takové opera- ci h(x, y), s jejíž pomocí je dosaženo požado- vané nebo hledané vlastnosti obrazu. Filtrace je obecná operace s obrazovou funkcí umož - ňující eliminaci rušení, šumu a dalších nežádoucích jevů. Prahování a hledání hran jsou operace, jejichž výsledkem je nalezení takových změn v charakteristické vlastnosti objektů v obraze (jas, barva, tvar apod.), které lze následně použít pro úlohy počítání objektů v obrazu, posuzování nebo měření tvaru objektu apod. Vyhlazení je operace, při níž se potlačují velké změny charakteristické vlastnosti objektů
v obraze (jas, barva apod.), a obraz se tak průměruje, přičemž se tím eliminuje šum a rušení (jde tedy o filtraci).
Při práci s obrazem budeme pracovat mimo jiné s pojmy: pixel, oblast zájmu – ROI (Region Of Interest), jak bylo znázorně- no na obr. 1, případně okolí (např. 4-okolí, 8- okolí, okolí 3 × 3 apod.), jak je znázorněno na obr. 2.
Pro zpracování obrazu je třeba použít vhodný matematický nástroj, který by dovo- lil poměrně snadno provádět operace s obrazovou funkcí. Základní metody práce s obrazovou funkcí pracují s analýzou pixelu a jeho určitého vybraného okolí. Hodnota tohoto pixelu (v našem případě jas) je potom nahrazována lineární kombinací hodnot ve zkoumaném okolí. Významným nástrojem je konvoluce.
Konvoluce
Konvoluce je definována [6 a 14] pro spojité funkce f(t) a h(t) vztahem
(1) Operátorem * je vyznačen symbolický vztah mezi dvěma funkcemi f a h (skutečné násobení platí pro Laplaceovy obrazy těchto funkcí). Funkci h se říká též konvoluční jádro.
Pro diskrétní 2D funkce (těmi obrazové funkce jsou) lze uvedený vztah přepsat do tvaru
(2) kde M, resp. N je počet sloupců, resp. řádků zkoumané obrazové funkce f. Dále je třeba připomenout, že pro i < 0 a pro j < 0 je h(i, j)
= 0.Výraz konvoluce má původ v latinském slově convolutus, což znamená stočený, obtočený, což do jisté míry popisuje význam této funkce – operace pracuje s definovaným okolím „obtáčejícím“ definovaný středový pixel. Konvolučnímu jádru h v diskrétním tvaru (ve tvaru dvourozměrné matice) bude- me rovněž říkat filtr.
Zpracování obrazu je jednou z významných součástí v současnosti velmi bouřlivě se roz- víjející vědní disciplíny s názvem „počíta- čové vidění“, jejíž kořeny se nacházejí v oblasti televizní techniky, kybernetiky, výpočetní techniky, ale rovněž v oblasti opti- ky či obecně fyziky, a která ve značné míře využívá matematických a numerických metod. Tento článek si klade za cíl seznámit čtenáře s některými základními metodami a výchozími postupy zpracování obrazu nasnímaného kamerou s použitím základ- ních nástrojů poskytovaných programovým prostředím LabVIEW.
ÚvodV teorii zpracování obrazu [2, 3 a 4] se vel- mi často pracuje s pojmem dvourozměrný (2D) obraz a jeho interpretací v podobě obrazové funkce f(x, y), jejíž každý prvek o souřadnici (x, y) nese informaci o jednom prvku obrazu – pixelu (picture element – obrazový prvek). Pro názornost a z důvodu zjednodušení budeme pracovat v dalším popisu s černobílou interpre- tací nasnímané scény. Proto budeme předpo- kládat, že každý prvek obrazové funkce f(x, y) je tvořen celým číslem popisujícím jasovou informaci jednoho pixelu. Obrazovou funkci lze potom psát ve tvaru dvourozměrného pole – matice a s ní dále pracovat pomocí matematic- kých funkcí pro práci s maticemi. Na obr. 1 je znázorněn příklad výřezu obrazu a části obra- zové funkce.
Operace s obrazem a obrazovou funkcí Při zpracování obrazu je třeba mít k dispozici především takové nástroje, které umožní s dostatečnou přesností a rychlostí zpracování vykonat potřebné operace s obra- zovou funkcí f(x, y). Za základní operace
Základy zpracování obrazu v prostředí LabVIEW
ZPRACOVÁNÍ OBRAZU
A U T O M A T I Z A C E • R O Č N Í K 5 2 • Č Í S L O 1 • L E D E N 2 0 0 9
40
Obr. 1 Příklad obrazu a obrazové funkce
oblast z·jmu (ROI)
v˝¯ez Ë·sti obrazu
v˝¯ez matice obrazovÈ funkce ( , ) (p¯Ìklad jasovÈ funkce) f x y
...
...
...
...
50 0 0 120
0 50 250 0
0 120 50 255
255 0 120 50 ...
...
...
...
Obr. 2 Obrazový prvek (pixel) a jeho okolí
pixel
pixel a jeho 4-okolÌ
pixel a jeho 8-okolÌ (okolÌ 3 ◊ 3)
Obr. 3 Základní část programu pro zpracování obrazu – hranový filtr Obr. 4 Čelní panel programu pro zpracování obrazu – hranový filtr g( )t = f( ).h(t− ) d =f( ) * h( )t t
=
+∞
∫
τ τ ττ 0
g( , )x y f( , ) h(i j x i y j, )
j N i
=M − − =
=
−
=
−
∑
∑
0 10 1
f( , ) * h( , )x y x y
=
Praktické řešení v LabVIEW
Prostředí LabVIEW nabízí celou řadu funkcí pro práci jak s maticemi, tak obecně se signály. Lze rovněž dokoupit a doinstalo- vat NI Vision Development Module, který obsahuje další funkce pro práci s obrazem.
V tomto článku však využijeme subpaletu funkcí pro obecnější zpracování signálů, kte- rá je obsažena již např. v demoverzi na Evaluation CD.
Pro základní práce s obrazem, resp.
s obrazovou funkcí, v prostředí LabVIEW můžeme využít funkci Convolution.vi, která se nachází na subpaletě Functions»Signal Processing»Signal Operation. Funkce Convolution.vi má dva signálové vstupy X a Y, na něž připojujeme obrazovou funkci f a konvoluční jádro (filtr) h. Pro maximální zjednodušení a názornost budeme pracovat s obrazovou funkcí f(x, y) v podobě dvou- rozměrné matice s hodnotami jasu jednotli- vých pixelů, přičemž tuto matici jsme před- tím získali např. z kamery či ze souboru obsahujícího uložený obraz např. ve formátu BMP apod.
Vlastní řešení filtrace je poměrně snadné:
na plochu blokového diagramu vložíme do smyčky While funkci konvoluce, na její vstup X připojíme matici s obrazovou funkcí (obsahuje hodnoty jasu vstupního obrazu v rozlišení 0 až 255, přičemž hodnotě 0 odpovídá černá barva a hodnotě 255 bílá bar- va pixelu) a na vstup Y matici filtru (tedy konvoluční jádro). Matematicky jde tedy o realizaci vztahu (2).
V prvním příkladu (obr. 3) je využita kon- voluce pro realizaci hranového filtru.
V daném případě je použit filtr, jehož matice je
(3)
což je podle [3] aproximace Laplaceova gra- dientního operátoru pro druhou derivaci
V daném 8-okolí je celkem devět prvků, takže hodnota výsledného jasu každého pixe- lu se bude skládat s příspěvků 1/9 hodnot jasů okolních pixelů.
Někdy je vhodné zvětšit váhu středového pixelu nebo pixelů v jeho okolí. Příkladem je maska s maticí
(5)
V příkladu na obr. 5 je použita maska pro vyhlazení ve tvaru podle vztahu (5).
Opět je možné si „hrát“ s hodnotami mas- ky pro vyhlazení a zjišťovat její efektivní působení. Je zřejmé, že pro každý druh vstupního obrazu a pro požadované zpraco- vání bude třeba volit vhodné konvoluční masky a jejich hledání a nalezení může být poměrně náročným procesem.
Závěr
Není účelem tohoto článku vyčerpáva- jícím způsobem popisovat metody zpraco- vání obrazu. Hlavním smyslem je čtenáře zís- kat pro danou problematiku a nasměrovat k využití prostředí LabVIEW. Základní infor- mace o programování v prostředí LabVIEW lze čerpat z [5, 10, 13 a 9]. Pro studium tema- tiky zpracování obrazu lze doporučit další zdroje informací, kterých však bohužel v českém, resp. slovenském jazyce není mno- ho. Čerpat lze např. z dnes již „klasické“ kni- hy [2] nebo skript [3], samozřejmě též z rozsáhlé učebnice v angličtině [3].
Informace lze také získat z dalších, přede- vším internetových zdrojů [12 a 15].
Ing. Jaroslav Vlach obrazové funkce f v
8-okolí středového pixelu (Laplacián).
Na obr. 4 je znázorněn čelní panel vytvářeného progra- mu, kde vlevo je zná - zor něn výchozí obrázek (Veronika u Niagarských vodo- pádů), který je do programu vložen ve formě matice o rozměrech 256 × 256 pixelu. Vpravo je potom znázorněn výsledek konvoluční operace – obraz se zdůrazněnými hrana- mi, tedy místy změny jasu v obrazu. Je potom poměrné snadné zkoušet měnit konkrétní tvar konvo- lučního filtru a sledovat výsledky jeho čin- nosti. S výsledným obrazem lze dále praco- vat (např. provést inverzi barev).
V dalším příkladu rozšíříme program (resp. vytvořený virtuální instrument – VI) o další filtr, kterým budeme provádět vyhlazení.
Základní metodou vyhlazení je průměrování, kde každému pixelu přiřadíme novou jasovou hodnotu vypočtenou jako průměr hodnot jasu ve zvoleném okolí (např. v 8-okolí).
Filtrem pro průměrování v 8-okolí může být např. jednoduchá konvoluční maska průměrující hodnoty pixelů v 8-okolí, která je dána maticí
(4)
ZPRACOVÁNÍ OBRAZU
41
A U T O M A T I Z A C E • R O Č N Í K 5 2 • Č Í S L O 1 • L E D E N 2 0 0 9
L I T E R A T U R A
[1] Začínáme s LabVIEW. Praha : NI Czech, 2006.
[2] HLAVÁČ, V., ŠONKA, M., Počítačové vidění.Praha : Grada Publishing, 1992.
[3] HLAVÁČ, V., SEDLÁČEK, M., Zpracování signálů a obrazu (skripta FEL ČVUT).
Praha : ČVUT, 2007.
[4] SONKA, M., HLAVAC, V., BOYLE, R., Image Processing, Analysis, and Machine Vision, Thomson Learning. Toronto, 2008.
[5] PECHOUŠEK, J., Základy programování v prostředí LabVIEW. Olomouc : Vydavatelství UP Olomouc, 2004.
[6] PÍRKO, Z., VEIT, J., Laplaceova trans- formace.Praha : SNTL, 1972.
[7] NOVÁK, V., ZÍTEK, P., Praktické metody simulace dynamických systémů.Praha : SNTL, 1982.
[L8]VLACH, J., Začínáme s LabVIEW.
Sdělovací technika, 2008, č. 4, s. 20–21.
[9] VLACH, J. a kol., Začínáme v LabVIEW.
Praha : BEN – Technická literatura, 2008.
[10] ŽÍDEK, J., Grafické programování ve vývojovém prostředí LabVIEW (výuková skripta). Ostrava : VŠB-TU Ostrava, 2006.
[11] Internet: www.ni.com/czech [12] Internet: http://itakura.kes.tul.cz/pv [13] Internet: http://autnt.fme.vutbr.cz/lab
/FAQ/labview/VI_Skripta.pdf [14] Internet: http://cs.wikipedia.org [15] Internet: www.fit.vutbr.cz/~spanel/seg -
mentace Obr. 5 Rozšíření programu pro zpracování obrazu – vyhlazení
H = −
⎡
⎣
⎢⎢
⎢
⎤
⎦
⎥⎥
⎥
1 1 1
1 8 1
1 1 1
H =
⎡
⎣
⎢⎢
⎢
⎤
⎦
⎥⎥
⎥ 1
9
1 1 1 1 1 1 1 1 1
H =
⎡
⎣
⎢⎢
⎢
⎤
⎦
⎥⎥
⎥ 1
16
1 2 1 2 4 2 1 2 1