1 Výtvarné zpracování rastrových obrazů Pro popis transformací je použita následující notace: ÷, div - operace celočíselného dělení %, mod - operace zbytek po celočíselném dělení W - šířka obrazu H - výška obrazu R - maximální poloměr polárních souřadnic obrázku 22 )2()2( ÷+÷= HWR [x, y] - kartézské souřadnice bodu obrazu >-<>-< 1;0,1;0 HyWx [r,a] - polární souřadnice bodu Old[x,y] - barva původního obrazu v bodě o souřadnicích [x,y] New[x,y] - barva nového obrazu v bodě o souřadnicích [x,y] xxx[x,y].a - hodnota barevné složky a obrazu xxx v bodě o souřadnicích [x,y] - složka a může být R ­ červená, G ­ zelená, B ­ modrá Rand(x) - celé náhodné číslo z intervalu <0;x) New[x,y, w,h] - okolí bodu [x,y] o šířce w a výšce h v původním obrázku Old[x,y, w,h] - okolí bodu [x,y] o šířce w a výšce h ve výsledném obrázku cond ? a : b - platí-li cond, má výraz hodnotu a, jinak b 2 1 Jednoduché geometrické transformace Geometrické transformace jsou operace, jež v podstatě nahlížejí na rastrový obraz jako na množinu bodů v rovině (v ortogonálním souřadném systému) a nad nimi realizují geometrické operace: posunutí, otočení a změnu měřítka. Tyto operace jsou prováděny buďto s konstantními koeficienty nebo s koeficienty proměnnými dle polohy bodu. U těchto operací nezáleží na barevné hloubce pixelu zpracovávaného obrázku a často se liší rozměry zdrojového a cílového obrazu. 1.1 Překlopení obrazu (prohození horizontální nebo vertikální) Provedení operace spočívá v prohození dvou stejně vzdálených pixelů od osy vedené středem obrázku. Podle polohy osy pak dostaneme prohození horizontální nebo vertikální. Horizontální a vertikální prohození 3 1.2 Otočení obrazu Transformační rovnice )]cos(.)sin(.);sin(.)cos(.[],[ yxyxOldyxNew --= Podle zadaného úhlu otočení je třeba vypočítat souřadnice rohů obrázku a z nich určit novou šířku a výšku. Díky tomu, že pracujeme v rastru a výsledné hodnoty po transformaci převádíme na celá čísla, došlo k nechtěnému vytvoření vzorku z bodů, do nichž během transformace otočení nebyly žádné původní pixely převedeny. Proto je nutná tzv. inverzní transformace. nežádoucí vzorek Otočení obrázku o 30° podle transformační rovnice a s použitím zpětné rotace 4 1.3 Zrcadlení Po umístění osy a zvolení části obrázku, která se má zrcadlit, je vytvořen nový obrázek dvojnásobné velikosti zvolené části podle směru osy. Procházíme vybranou částí obrázku a nové pixely umísťujeme souměrně podle osy. horizontální vertikální ],2[],[12, ],[],[1;0 yxWOldyxNewWWx yxOldyxNewWx -=>-< =>-< ]2,[],[12, ],[],[1;0 yHxOldyxNewHHy yxOldyxNewHy -=>-< =>-< Původní tvář a její složenina z levé a pravé poloviny obličeje 5 1.4 Náhodné posouvání stejných částí obrazu Zajímavý vzhled rozpadajícího se obrazu můžeme dostat následující operací: obraz rozdělíme na stejné části ­ bloky a ty posuneme v libovolném směru o náhodnou vzdálenost. )();( ],[],[ aRanddyaRanddx yxOlddyydxxNew == =++ Hodnoty dx a dy jsou konstantní pro každou zvolenou pravoúhlou oblast. Pro zachování dobré rozpoznatelnosti obrazu je dobré, aby délka posunutí a byla menší než velikost segmentu. Podobné je náhodné rozhození obrazu. Transformační rovnice mají stejný tvar jako minulé rovnice, ale tentokrát je velikost bloku náhodná a pozadí je bílé. Náhodné posouvání a rozhození bloků 6 1.5 Vír Zvolíme úhel otočení , který je mírou víru. Poté procházíme jednotlivé souřadnice x a y nového obrázku a provádíme jejich převod do polárních souřadnic s počátkem ve středu obrázku. R r x,y S(xsize/2, ysize/2) Zavedení polárních souřadnic v rastrovém obrázku S takto získanými polárními souřadnicemi r a provedeme transformaci otočení o úhel, který závisí na velikosti poloměru r. Poté se provede přepočet zpátky do souřadnic (xn, yn). Pixelu na souřadnicích (x, y) je pak přiřazena barva bodu (xn, yn). Nejjednodušší možností je lineární závislost úhlu na velikosti r. Z toho vyplývají dvě varianty provedení efektu. Úhel otočení se s rostoucím r zvětšuje nebo zmenšuje. 7 V prvním případě je stočení obrázku největší v jeho rozích, ve středu obrázku přitom k pohybu nedochází, ve druhém je tomu naopak. Efekt víru se zmenšujícím se úhlem otočení s rostoucím r (otočení o 60° a 360°) Efekt víru se zvětšujícím se úhlem otočení s rostoucím r (otočení o 60° a 360°) 8 1.6 Stlačení obrazu ven (vyboulení) Použijeme opět polárních souřadnic, kdy při následné zpětné transformaci na souřadnice kartézské se hodnota r mění podle zadané nelineární funkce: ( )r f rn = Př: Kvadratická funkce rn r R R rn r R R Efekt stlačení ven s použitím kvadratické funkce 9 1.7 Stlačení obrazu dovnitř (vmáčknutí) Pro analogii efektů použijeme druhou odmocninu. Při zpětné transformaci mohou vyjít získané kartézské souřadnice mimo původní obrázek. Tyto pixely nastavíme na barvu pozadí, nebo jim přiřadíme barvu bodů na nejbližším okraji obrázku. Efekt stlačení dovnitř s použitím druhé odmocniny 10 1.8 Zvlnění obrazu Efekt využívá generátoru náhodných čísel, který rozhoduje o posunu zpracovávaného pixelu ve svislém nebo vodorovném směru. Nejprve se vypočítá pole svislých posuvů pro jeden řádek: Nastaví se startovací hodnota odchylky Dy a při průchodu polem se podle hodnoty náhodného čísla k této odchylce přičte nebo odečte jednička. Zároveň se takto upravená odchylka uloží do pole. S připraveným polem hodnot se pak provede posuv ve svislém směru pro každý řádek obrázku a zároveň se ve zpracovávaném řádku podle náhodného čísla realizuje horizontální posuv. V případě, že nové souřadnice pixelu padnou mimo meze obrazu, je barva pixelu nastavena na zvolenou hodnotu. Zvlnění obrázku 11 1.9 Efekt koupelnového skla Transformace vytváří dojem pohledu přes tvarované sklo. Parametr q určuje ,,jemnost" efektu ]),2()%([],[ yqqxxOldyxNew ÷-+= Efekt koupelnového skla 12 1.10 Efekt fazetového skla Tento efekt je parametrizován velikostí ,,oka sítě" N. )]%()2(),%()2([],[ NyNyNxNxOldyxNew +÷-+÷-= Efekt fazetového skla 13 1.11 Stočení obrazu do kruhu Př. Mapovací funkce pro různé úhly výseče Totální deformace rastrového obrázku do kruhu směrem nahoru a dolů 14 1.12 Sprej Nejprve se definují rozměry pracovní obdélníkové oblasti, a potom následuje průchod celým obrázkem pixel po pixelu. Z obdélníkové oblasti, jejíž levý horní roh je určen aktuálním pixelem, se pomocí generátoru náhodných čísel vybere další pixel a barvy těchto dvou pixelů se prohodí. Efekt spreje s nastavenou oblastí 5x5 a 20x20 15 1.13 Vepsání obrazu do kruhu Střed kruhu je ve středu původního obrázku a jednotlivé strany přejdou v obvod kruhu. Roztažení obrázku do kruhu 16 2 Barevné transformace obrazu U těchto operací záleží na barevné hloubce pixelu zpracovávaného obrazu. 2.1 Olejomalba Operace vytváří efekt obrazu malovaného olejovými barvami. Ve zvoleném okolí N zpracovávaného pixelu sestavíme histogram výskytu jednotlivých barevných odstínů a jako novou barvu tohoto pixelu pak dosadíme barvu sestavenou z nejčastěji se vyskytujících barevných složek v prozkoumaném okolí MaxN. )].,,,[(].,,,[ )].,,,[(].,,,[ )].,,,[(].,,,[ BhwyxOldMaxNBhwyxNew GhwyxOldMaxNGhwyxNew RhwyxOldMaxNRhwyxNew = = = Olejová malba pro N = 3 17 2.2 Pixelizace obrazu Pixelizace obrazu spočívá ve výpočtu průměrného barevného odstínu na definované pravoúhlé oblasti původního obrázku. V nově vytvářeném obrázku je pak tato oblast vyplněna takto získaným barevným odstínem. Operaci je možné modifikovat tím, že se místo průměrné hodnoty použije hodnota maximální (Max) nebo minimální (Min) hodnota z daného okolí. ]),,,[(],,[ ]),,,[(],,,[ ]),,,[(],,,[ hwyxOldMinhywxNew hwyxOldMaxhwyxNew hwyxOldAvghwyxNew = = = Pixelizace obrazu na oblasti 5x5 a 10x10 pixelů 18 2.3 Plakátový efekt - posterizace U plakátů je často omezen počet barevných odstínů ­ tzn. volíme určitý počet intenzit každé barevné složky a pro všechny body obrazu vyhledáme nejbližší hodnotu (pro každou složku zvlášť). Zvolit barvy je možné tak, že celý interval rozdělíme na žádaný počet (n) stejných intervalů (d) a z něj zvolíme nějakou hodnotu (například minimum). nByxOldnByxNew nGyxOldnGyxNew nRyxOldnRyxNew nd ÷= ÷= ÷= ÷= ].,[.].,[ ].,[.].,[ ].,[.].,[ 255 Posterizace 19 2.4 Negativ, solarizace a prahování Hodnotu příslušné barevné složky nahradíme jejím doplňkem do maximální hodnoty. Uvažovaná maximální hodnota složek R, G, B je rovna 255. Negaci je např. možné provést jen u některých barevných složek, tak docílíme dalších efektů. Operace solarizace je modifikací negace obrazu. Pokud intenzita šedi pixelu přesáhne určitou hranici závislou na poloze pixelu v obrázku, provedeme negaci tohoto pixelu. Efekt prahování je založen na rozdělení barev na dvě skupiny podle toho, zda je jejich hodnota větší nebo menší než daná hodnota (práh ­ pR, pG, pB). Hodnota výsledného pixelu se nastaví na hodnotu extrému (0 nebo 255), který do intervalu patří. Tato operace se provádí pro každou barevnou složku zvlášť. 0:255?].,[].,[ 0:255?].,[].,[ 0:255?].,[].,[ pBByxOldByxNew pGGyxOldGyxNew pRRyxOldRyxNew = = = Negativ, prahování a solarizace 20 2.5 Rozpouštění barev Od náhodně vygenerované pozice uvnitř obrázku se postupuje svisle dolů a testují se vždy dva po sobě následující pixely. Pokud je odstín šedi horního pixelu tmavší, barvy obou pixelů se prohodí a provádí se porovnání následujících dvou bodů. V případě, že je odstín vrchního pixelu světlejší, vygeneruje se nová náhodná pozice a postup se opakuje. Počet opakování je většinou dán počtem pixelů v obrázku. Efekt je možné umocnit malou změnou algoritmu. Pokud nastane situace, že odstín šedi horního pixelu je tmavší, nedojde k prohození barvy obou pixelů, ale provede se rotace barev ve svislém směru od dané pozice až k dolnímu okraji obrázku. Normální a silnější rozpouštění obrázku 21 3 Homogenní barevné souřadnice Řady zajímavých efektů můžeme docílit aplikací barevných homogenních souřadnic. Ty získáme tak, že barvě pixelu určené barevnými složkami (R, G, B) přiřadíme čtveřici (Rw, Gw, Bw, w), kde w 0. Nejčastěji bude w = 1. Podobně jako u geometrických transformací lze takto definované operace nad obrazy skládat pomocí standardního násobení matic. V příkladech jsou uvažovány rozsahy barevných složek R, G a B v intervalu <0, 255>. Obecně se pak dá efekt z této kategorie popsat následující rovnicí: × = 1 [.,[ [.,[ [.,[ .. .... .... .. ].,[ ].,[ ].,[ 4441 1411 ByxOld GyxOld RyxOld aa aa x ByxNew GyxNew RyxNew 3.1 Matice pro změnu jasu Změnu jasu v obrazu lze vyjádřit maticí 1 0 0 0 0 1 0 0 0 0 1 0 1R G Bposun posun posun Ke skutečné změně jasu dojde pouze v případě, že všechny uvedené konstanty mají stejnou hodnotu. Pokud se hodnoty navzájem liší, dochází k různému ovlivnění barevných složek, čímž lze dosáhnout dalších efektů. 22 Př. 1 0 0 0 0 1 0 0 0 0 1 0 120 120 120 1 Změna jasu obrázku podle zvolené matice 23 3.2 Matice pro změnu měřítka barev Podobně jako při prostorových transformacích lze provádět i změnu velikosti jednotlivých barevných složek pomocí známé měřítkové matice: R G B rozsah rozsah rozsah 0 0 0 0 0 0 0 0 0 0 0 0 1 Př. 12 0 0 0 0 0 6 0 0 0 0 11 0 0 0 0 1 . . . Změna měřítka barev obrázku podle zvolené matice 24 3.3 Matice pro otočení barev Analogicky k transformaci otáčení lze provádět rotaci barev podle některé z barevných os R, G nebo B. Složením základních transformací a jejich inverzí můžeme rotovat kolem libovolného barevného vektoru. Jako příklad uveďme otočení kolem vektoru šedé V o 120°, tj. barevný přechod (R, G, B) (B, R, G). Otočení barev kolem vektoru šedé o 120° R G B V 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 25 3.4 Matice pro převod barev na stupně šedi Matice pro převod barevného obrazu na odstíny šedi: R R R G G G B B B vá ha vá ha vá ha vá ha vá ha vá ha vá ha vá ha vá ha 0 0 0 0 0 0 1 Hodnoty konstant podle standardu NTSC: Rváha = 0.299, Gváha = 0.587, Bváha = 0.114 Hodnoty konstant podle standardu CIE (lepší): Rváha = 0.3086, Gváha = 0.6094, Bváha = 0.0820 Převod obrázku na stupně šedi pomocí matice 26 3.5 Matice pro změnu sytosti barev Sytost vlastně určuje množství příměsi jiných barev. Složitější cesta, jak změnit hodnotu sytosti vede přes převody barevných modelů HSV RGB nebo HLS RGB. Matice pro změnu sytosti barev: Použité konstanty jsou definovány takto: A = (1 - s) * Rváha + s B = (1 - s) * Rváha C = (1 - s) * Rváha D = (1 - s) * Gváha E = (1 - s) * Gváha + s F = (1 - s) * Gváha G = (1 - s) * Bváha H = (1 - s) * Bváha I = (1 - s) * Bváha + s Hodnota sytosti je v intervalu s = <0, 1>, Rváha, Gváha a Bváha jsou výše definované konstanty. Dosadíme-li za s hodnotu 0, je barevný vektor převeden na odstín šedi, naopak po dosazení hodnoty 1 se tento vektor nezmění (jednotková matice). Tyto dva případy zvolených hodnot odpovídají umístění barvy ve středu a na obvodu jehlanu či kužele uvedených barevných modelů. Změna sytosti barev obrázku na hodnotu s = 0.6 1000 0 0 0 IHG FED CBA 27 4 Průsvity 4.1 Konstantní průsvit Tento průsvit je nejjednodušší z možných průsvitových operací. Máme dva obrázky A a B, ze kterých průsvit vytváříme. Barevné hodnoty jejich pixelů označíme (RA, GA, BA) a (RB, GB, BB) a určíme, kolik procent p obrázku A bude vidět v obrázku B. Barevné hodnoty výsledného pixelu pak určíme podle vztahů ( ) ( ) ( ) R pR p R G pG p G B pB p B A B A B A B = + = + = + - 1 1 1 Průsvit obrázků na 50% 28 4.2 Průsvit řízený funkcí Při vytváření těchto efektů se vychází z výše uvedených rovnic, procento určující míru průsvitu však není konstantní a zpravidla závisí nějakým způsobem na souřadnicích zpracovávaného pixelu. ( )p f x y= , Lineární změna průsvitu obrázků zleva - doprava a shora - dolů Nelineární řízení průsvitu vertikální vlnou sinusovky 29 4.3 Průsvit řízený maskou Pro zcela obecné řízení průsvitu při skládání obrázků se nabízí možnost zadat funkci průsvitu pomocí tzv. masky. Masku tvoří další obrázek v odstínech šedi. Úrovně intenzit představují procenta průsvitnosti pixelu daného obrazu. Př. Použití masky s binární průsvitností (0% nebo 100% průsvitu) Maska a provedený průsvit obrázků 30 5 Filtrace obrazu Při filtraci obrazu se používají většinou dva přístupy, prostorový a frekvenční. Uvedeme pouze prostorový přístup, jenž pracuje přímo s obrazem. Obraz transformujeme pomocí operátoru ( ) ( )[ ]g x y T f x y, ,= , kde f(x,y) je vstupní funkce a g(x,y) je výstupní funkce Operátor T je nejčastěji vyjádřen pomocí funkce hodnot okolí bodu - tzv. masky okolí. Příklad masky okolí o rozměru 3x3: x-1 x x+1 y-1 h-1,-1 h0,-1 h1,-1 y h-1,0 h0,0 h1,0 y+1 h-1,1 h0,1 h1,1 ( )[ ] ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) T f x y h f x y h f x y h f x y h f x y h f x y h f x y h f x y h f x y h f x y , , , , , , , , , , , , , , , , , , , = - - + - + + - + + - + + + + + - + + + + + + - - - - - 1 1 0 1 1 1 10 0 0 10 11 0 1 11 1 1 1 1 1 1 1 1 1 1 1 1 Jedná se vlastně o konvoluci ( ) ( ) ( )g x y h i j f x i y j ji , , ,= + + =- =- Funkce h bývá označovaná jako jádro. 31 5.1 Rozostření K vytvoření dojmu rozostřeného obrazu nám stačí použít obyčejné průměrování okolí bodu. Konvoluční maska 3x3 může vypadat následovně. h = 1 9 1 1 1 1 1 1 1 1 1 Rozostření obrazu Někdy se zvětšuje váha středového bodu masky případně jeho čtyř sousedů pro přiblížení k vlastnostem Gaussovského rozložení. h = 1 10 1 1 1 1 2 1 1 1 1 h = 1 16 1 2 1 2 4 2 1 2 1 32 5.2 Zaostření Pro zaostření obrazu se osvědčila tato konvoluční maska. h = - - - 0 1 0 1 5 1 0 1 0 Zaostření obrazu 33 5.3 Reliéf Pro zobrazení reliéfu obrázku lze použít konvoluční masku h = - 1 0 0 0 0 0 0 0 1 Reliéf obrazu 34 Je možné použít Sobelova operátoru, který aproximuje první parciální derivaci. Ten je možné vytvořit pro různé velikosti a směry. Pro rozměr 3x3 existuje osm konvolučních masek, které se získají rotací masky první. h1 1 2 1 0 0 0 1 2 1 = - - - h2 0 1 2 1 0 1 2 1 0 = - - h3 1 0 1 2 0 2 1 0 1 = - - - h4 =... Masky h1 a h3 mají důležitý význam. Maska h1 přibližuje parciální derivaci ve směru x a h3 ve směru y. První parciální derivace ve směru x a y 35 5.4 Detekce hran Pro detekci hran je vhodné použít Laplaceův gradientní operátor (Laplacián). Udává velikost hrany a nikoliv její směr, proto není citlivý na otočení. Podle typu sousednosti je možné použít dvě konvoluční masky. h4 0 1 0 1 4 1 0 1 0 = - h8 1 1 1 1 8 1 1 1 1 = - Detekce hran pomocí Laplaciánu 36 5.5 Kresba Velmi zajímavé výsledky dává konvoluční maska diskrétní aproximace Laplacián Gaussiánu. 37 Př. Matice funkce LoG se = 1.4 h = - - - - - - - 0 0 3 2 2 2 3 0 0 0 2 3 5 5 5 3 2 0 3 3 5 3 0 3 5 3 3 2 5 3 12 23 12 3 5 2 2 6 0 23 40 23 0 6 2 2 5 3 12 23 12 3 5 2 3 3 5 3 0 3 5 3 3 0 2 3 5 5 5 3 2 0 0 0 3 2 2 2 3 0 0 Diskrétní aproximace funkce LoG 38 6 Nestandardní transformace Uvedený výčet představuje jen základní výtvarné efekty, které jsou převážně výpočetně nenáročné. Lze nalézt řadu dalších výpočetně náročných transformací. Pro příklad uveďme techniku LIC. 6.1 Lineární integrální konvoluce LIC je technika určená pro vizualizaci vektorových polí. Nicméně se dá použít i při zpracování obrazu. Její podstatou je lokální ,,rozmazání" textury podle směru vektorového pole. LIC vznikla z lineárních algoritmů, jejichž nevýhodou je, že nerespektují malá lokální zakřivení pole. Naproti tomu LIC aproximuje lokální chování pole pomocí čáry, která prochází středem počítaného pixelu a vine se podél ,,vlákna" vektorového pole symetricky na obě strany. Metodu lze různě modifikovat pro dosažení dalších efektů. Obraz zpracovaný technikou LIC 39 LIC ­ Lineární integrální konvoluce LIC je technika určená pro vizualizaci vektorových polí. Její podstatou je lokální ,,rozmazání" textury ve směru vektorového pole. LIC vznikla z lineárních algoritmů, jejichž nevýhodou je, že nerespektují malá lokální zakřivení pole. LIC aproximuje lokální chování pole podél myšlené čáry, která vychází z počítaného pixelu a vine se podle vektorového pole symetricky na obě strany. vektorové pole výstupní obraz DDA linie vstupní obraz 40 Postup: Pomocí konvolučních masek určíme v obrazu gradientní vektory. Operace se provádí na 256 úrovňové mapě (odstíny šedé). Protože vektory představují gradienty, je třeba je otočit o 90 stupňů, aby směřovaly po ,,liniích" obrázku. Originál Gradient Gradient otočený o 90° Konečný stav 41 Vlastní LIC. V každém bodě obrazu se počítá suma hodnot na pomyslné čáře délky 2L Proces lze zapsat rovnicí: ( ) ( ) == = = + + = ' ' 0 ' 0 ' 0 0 ' ],[ l i i l i i i l i l i ii hh hPInputPInput yxOutput , kde )( iPInput je pixel odpovídající ( )iyix PPInput , Metoda je výpočetně náročná, proto se užívá zjednodušení: První výpočetně náročná část je samotná detekce gradientů, proto se používá aproximace pomocí omezeného počtu směrů (například 8 ­nebo 24). Počet potřebných konvolučních masek je k počtu směrů poloviční. 42 Konvoluční masky: --- 121 000 121 -- - 012 101 210 - - - 101 202 101 - -- 210 101 012 (8 směrů) ----- ----- 11111 11111 00000 11111 11111 ---- --- -- - 01111 10111 11011 11101 11110 -- -- -- -- -- 11011 11011 11011 11011 11011 - -- --- ---- 11110 11101 11011 10111 01111 ----- ----- 11111 11111 00000 11111 11111 ----- ---- - 11111 01111 10001 11110 11111 ----- --- -- 11111 00111 11011 11100 11111 ---- --- -- - 01111 10111 11011 11101 11110 5) --- --- -- - - 10111 10111 11011 11101 11101 --- -- -- -- - 10111 11011 11011 11011 11101 -- -- -- -- -- 11011 11011 11011 11011 11011 - -- -- -- --- 11101 11011 11011 11011 10111 (24 směrů) - - -- --- --- 11101 11101 11011 10111 10111 - -- --- ---- 11110 11101 11011 10111 01111 -- --- ----- 11111 11100 11011 00111 11111 - ---- ----- 11111 11110 10001 01111 11111 43 Pokud je použit jednotkový integrační krok, jmenovatel zlomku udává počet ,,prošlých" pixelů, což zjednodušuje výpočet jmenovatele zlomku. Nutnost počítat pohyb ve vektorovém poli v reálných číslech (změny souřadnic ve směru os jsou v rozsahu 0..1), přináší oproti celočíselné aritmetice zpomalení výpočtu. LIC celočíselná LIC v reálných číslech Pro urychlení je možné použít aproximaci, kdy se pohyb počítá tak, že se určí pixel, do nějž linie míří. Délka je pak daná vzdáleností tohoto pixelu od výchozího. Poznámka: Řada modifikací přináší další efekty. Efekt hrubé zrno: Před vlastním zpracováváním můžeme obraz zpracovat filtrem typu dolní propust. 44 Efekt směrové rozmazání: Délku integračního kroku (L) je možné dynamicky měnit ­ například podle velikosti vektoru (pokud vektory představují rychlost, pak rozlišíme místa rychlá (větší L) a pomalá (menší L ­ méně ,,rozmazané"). Je možné řídit délku kroku intenzitou šedi (jasem)... Efekt zašumění: Použijeme vektorové pole vygenerované z obrázku a aplikujeme ho na bílý šum.Ve vektorovém poli se často vyskytují singulární body, které mohou ve výsledném obrázku působit rušivě. Toto je možné zaretušovat náhradou nulových vektorů náhodnými vektory. LIC v reálných číslech na bílém šumu (s a bez singularit) Efekt aplikace vektorového pole: LIC lze využít pro zpracování obrazu i způsobem, pro nějž byla původně navržena ­ pro zobrazení vektorových polí. Vygenerujeme vektorové pole zajímavého tvaru (např. soustředné kružnice, čárové rastry atd.) a s tímto polem provedeme LIC nad obrázkem. Pokud však používáme zjednodušení na 24 nebo dokonce 8 směrů, vznikají problémy s generováním vektorového pole. Vektorové pole lze vytvořit i ,,ručně" ... 45 Aplikace metody LIC Efekt ,,čtverečkového" vektorového pole 46 Vincent van Gogh: ( LIC neznal) 47 48 Doplňme: I pouhé zvětšené vzorky rozptylovacích algoritmů (dithering) mohou býti výtvarně zajímavé.