MASARYKOVA UNIVERZITA V BRNĚ FAKULTA INFORMATIKY
Editor abstraktní stylizace fotografií BAKALÁŘSKÁ PRÁCE
Zdeněk Cetkovský
Brno,2005
Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypraco val samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Vedoucí práce: Mgr. Tomáš Staudek, Ph.D. 11
Shrnutí Obsahem práce je implementace interaktivního grafického editoru pro stylizaci a abstrakci fotografických předloh. Jeho podstata spočívá v nefotorealistické stylizaci a ve zvýraznění významné struktury v obraze transformací do kresleného stylu s výraznými černými linkami a velkými oblastmi jednolitých barev Toho je dosaženo spoluprací s moderními algoritmy pro analýzu obrazu a použitím intuitivních editačních nástrojů. Program je určen pro platformu Win32. Je implementován ve formě dynamické knihovny, napsán v jazyce Object Pascal ve vývojovém prostředí Borland Delphi 6 a slouží jako zásuvný modul (plug-in) ke grafickému editoru Elephant.
m
Klíčová slova nefotorealistické zobrazování, NPR, stylizace, abstrakce, zjednodušování obrazu
IV
Obsah 1
Úvod 1.1 Vnímaní a pochopení obrazu 1.2 Nefotorealismus, věda versus umění 1.3 Inspirace a hledání stylu 1.4 Objekt zájmu —fotografie 1.5 Přístup programu 2 Analýza obrazových dat 2.1 Segmentace obrazu 2.2 Detekce hran 2.3 Využití systému EDISON 3 Abstrakce a syntéza 3.1 Abstrakce oblastí 3.2 Úprava hran 3.3 Syntéza výsledného obrazu 3.3.1 Vykreslení oblastí 3.3.2 Kreslení štětcových tahů 4 Stylize Editor 4.1 Popis software 4.2 Instalace 4.3 Uživatelské rozhraní 4.3.1 Zobrazení a vrstvy 4.3.2 Ovládání analýzy 4.3.3 Nástroje editace 4.3.4 Ovládání syntézy 4.3.5 Ukládání a načítání 5 Implementace 5.1 Knihovna Stylize 5.2 Jednotka Settings 5.3 Jednotka HystThreshSettings 5.4 Jednotka RunEDISON 5.5 Jednotka Filters 5.6 Jednotka Compose 6 Závěr Bibliografie A Galerie B Obsah CD
1 1 3 3 5 8 9 9 10 12 13 13 15 16 16 17 19 19 19 20 20 22 24 25 26 27 27 27 29 29 30 31 34 35 36 42
v
Kapitola 1
Úvod Ve své bakalářské práci jsem zamýšlel spojit a zužitkovat své poznatky z oblastí počítačové grafiky, výtvarných snah informatiky, fotografie a vizuální komunikace. Díky velké inspi raci jsem se rozhodl prezentovat a pro potenciální uživatele (nejen z řad fotografů a grafiků) vytvořit grafický filtr nebo lépe editor, který umožňuje stylizovat fotografické předlohy do nefotorealistické podoby. Použitý druh stylizace svým zjednodušeně řečeno „komiksovým", kresleným charakterem uživateli poskytuje možnost interaktivně vstoupit do procesu abstrakce významově důležité struktury v obraze. Výsledek by měl zprostředkovat nejen zajímavý výtvarný výstup, ale reflektovat zmíněný proces abstrakce zlepšením porozumění obrazu divákem, usnadněním vizuální komunikace. Textová dokumentace se skládá z pěti částí. V následujících sekcích první kapitoly je stručně naznačena existence vnímání a čtení vizuální informace a přiblížen pojem nefotorealistického zobrazování. Neposledně je také popsána cesta k výběru tématu práce a nalezení výtvarného stylu. V kontextu je pojednáno o subjektu předlohy — fotografii. Na konci kapi toly jsou zmíněna úskalí abstrahování v NPR systémech. Zde je rovněž představen základní charakter mého programu a přístup k řešené problematice. Ve druhé kapitole je popsán mechanismus strojové analýzy obrazových (fotografických) dat, moderní algoritmy pro zpracování obrazu a spolupráce se systémem EDISON. Ve třetí kapitole potom proces abstrakce z technického pohledu a princip generování výsledného obrazu. Čtvrtá kapitola prezentuje výsledný program, instalační proceduru, uživatelské rozhraní, způsob a možnosti interakce. Pátá kapitola popisuje implementaci a schematicky vysvětluje důležité (klíčové) algoritmy. 1.1
Vnímání a pochopení obrazu
Úspěch, s jakým dokáže člověk využít vizuální informaci, závisí na komplexní spolupráci procesů vnímání a poznávání, které jsou k tomu zapotřebí. Pokaždé, když soustředíme svůj pohled na obraz, naše vizuální inteligence interpretuje co vidíme pomocí důmyslné dedukce, aby identifikovala v zorném poli spojité oblasti, seskupila tyto části dohromady jako známky významných objektů, a vysvětlila jejich totožnost a původ. Sledování obrazu často vede k nenamáhavému a detailnímu porozumění, a to jen poukazuje na jemnost a rafinovanost těchto dedukcí [DeCarlo]. Naše vizuální schopnosti mají pochopitelně jisté hranice. Dobrý design informace závisí na způsobech jak omezit vnímavé a poznávací úsilí potřebné pro pochopení obrazu. Má-li 1
1.1. VNÍMÁNÍ A POCHOPENÍ OBRAZU designér v rukou ilustraci zobrazovanou abstraktně, může podniknout obzvláště radikální kroky k objasnění a pročištění její struktury. Proto je například navrhováno a doporučováno co nejvíce odlehčit detaily, aby nosná myšlenka prezentace byla vnímána jako hlavní, a také upozorňováno před přidáváním jakéhokoli detailu, který k tomuto sdělení nepřispívá [DeCarlo]. Talentovaní umělci nezřídka využívají smysluplnou abstrakci. Zakladatel moder ního plakátu Tolouse-Lautrec dokázal svými pracemi zaujmout na první pohled díky čisté a jednoduché struktuře scény, viz Obrázek 1.1. Pozornost diváka se upírá na důležité části bez většího úsilí. Lautrec dokázal zobrazit scénu se smysluplnou abstrakcí.
Obrázek 1.1: Henri de Toulouse-Lautrec: Moulin Rouge — La Goulue (litografický tisk ve 4 barvách, 1891). Struktura slavného plakátu zaměřuje pozornost na tanečnici La Goulue. Zatímco jasné jednolité barvy oddělují její figuru od pozadí, černé linky na jejích šatech podávají dostatek informací o jejich tvaru a materiálu. Tanečník v popředí postrádá barvy, ale je detailně vykreslen v linkách; pozadí tvořené diváky je zobrazené pouze jako černá silueta.
2
1.2. NEFOTOREALISMUS, VĚDA VERSUS UMĚNÍ 1.2
Nefotorealismus, věda versus umění
Protože mým záměrem je abstrakce a ne realismus, tato práce spadá do oblasti nefotorealistického zobrazování. Je na místě věnovat přiblížení tohoto pojmu následující odstavec. Ve výuce předmětu Výtvarná informatika [Vytvlr :] jsem se poprvé setkal s pojmem nefotorealistického zobrazování, zkráceně NPR, z anglického Non-Photorealistic Rendering. V posledních letech se tato oblast počítačové grafiky těší velkému zájmu, například konfe rence Siggraph (ACM Special Interest Group on Computer Graphics and Interactive Techniques)1 se již několik let jejím studiem intenzivně zabývá. Sféra NPR je „čerstvá" nejen svým trváním v rámci historie počítačové grafiky, ale zejména tím, že propojuje disciplíny vědy a umění. Stále si zachovává strojové pozadí, avšak myšlenkovou podstatu přejímá z lidského výtvar ného projevu, často spolu s velkou dávkou fantazie a touhy po „slučování neslučitelného" [Salova]. Hodnota NPR mnohem více než na technické brilantnosti závisí na estetičnosti výsledků a na možnostech vyjádření tvaru, struktury a uměleckého cítění [Green]. Škála zájmů NPR je velmi široká a do procesu se zapojují rozličné disciplíny. Zatímco prostor pro cit a emotivní vyjádření hraje velkou roli v interpretaci malířských a kreslířských tech nik (zastřešující pojem painterly processing — painterly techniques), přesnost matematického modelu řemeslné práce hraje větší roli při napodobování grafických a tiskařských technik (různé druhy rytin, umělecké polotónování — artistic screening). Nefotorealisticky se stále častěji zobrazuje trojrozměrná (3-D) vektorová reprezentace obrazu, jak pro účely simulace tradiční ilustrace v průmyslovém designu či architektuře, v oblasti zábavního a herního průmyslu 2 (pojmy eel-shading a 'toon shading), tak opět pro napodobování uměleckých tech nik, nyní však s novými možnostmi díky rozdílné reprezentaci předlohy. V případě použití geometrické datové reprezentace není nutné soustředit takovou pozornost na hledání lo gické struktury a rozdělení scény, jako v případě zpracování fotografických, resp. klasicky snímaných dvojrozměrných (2-D) předloh. Více informací o nefotorealistickém zobrazování zájemce najde například v použité literatuře [Reynolds] [NYUmrl] [Gooch]. 1.3
Inspirace a hledání stylu
Při objevování světa NPR jsem se setkal s mnoha zajímavými pracemi, dlouho mě však nic nepřimělo k rozhodnutí věnovat konkrétně tomu více pozornosti v rámci studia. Než jsem objevil téměř současně několik výsledků snahy o kreslený výtvarný styl dvou příbuzných médií. Prvním impulsem bylo zhlédnutí netradičního filmu Waking Life3. Ten je zajímavý jak svým vědecko-filozofickým obsahem, tak z pohledu kontextu této práce především vi zuálním stylem, který vnímání tohoto obsahu nejen podporuje, ale navíc nabízí divákovi nevšední obrazový zážitek. Film byl natočen digitální kamerou a následně tým animátorů a ilustrátorů překreslil snímek po snímku za pomoci speciálního softwaru pro podporu ne fotorealistického zpracování a za použití animačních technik, jako např. rotoscoping. Styl se 1. ACM SIGGRAPH homepage < h t t p : //www. s i g g r a p h . o r g / > 2. Počítačová hra XIII jako příklad NPR v reálném čase < h t t p : //www. x i i i - t h e g a m e . com> 3. www.wakinglifemovie.com < h t t p : / / w w w . w a k i n g l i f e m o v i e . c o m / >
3
1.3. INSPIRACE A HLEDÁNÍ STYLU mění téměř s každou scénou, obecně jej lze ale popsat jako pohyblivý stylizovaný komiks s proměnlivou mírou abstrakce vizuální formy a se zvýrazněním důležitých obrazových ele mentů v kontextu s obsahem (dějem). V obraze jsou značně až úplně potlačeny textury, plošná struktura je tím méně náročná na vnímání a oko diváka se může pevněji upřít ke klíčovým prvkům. Hrany a ostré přechody jsou často zvýrazněny a napomáhají tak nejen snazšímu rozpoznání struktury, ale také objektům k harmonickému spojení s atmosférou momentální scény. Animator nezřídka zasahuje do vizuální komunikace přidáváním symbolických zkra tek myšlenek, sdělovaných ústy virtualizovaných herců. Režisér tohoto snímku připravuje v podobném vizuálním stylu adaptaci literární předlohy A Scanner Darkly Phillipa K. Dicka.
Obrázek 1.2: A Scanner Darkly. Snímek z připravovaného filmu režiséra Richarda Linklatera (Warner Independent Pictures/
). Dalším a pro tvorbu mé práce hlavním impulsem byl odborný článek, který na konfe renci Siggraph v roce 2002 prezentovali Doug DeCarlo a Anthony Santella z Rutgers University v New Jersey v USA. Jejich práce Stylization and Abstraction of Photographs [DeCarlo] se za bývá stylizací a abstrahováním fotografických předloh s využitím pestrého modelu lidského vizuálního vnímání. Jimi představený konzervativní NPR systém není plně automatický (je totiž interaktivní), ale interakce člověka se strojem je zde minimalizována a maximálně zefektivněna použitím snímače pohybu očí (eye-tracker). Zúčastněná osoba nemusí mít ani výtvarné nadání, pouze krátký časový interval pozoruje obraz a snímač zaznamená dráhu pohledu a časovou prodlevu u míst, kde se zrak zastaví, aby místo důkladněji prozkoumal. Data získaná tímto způsobem jsou poté přeložena modelem lidského vnímání a použita pro určení oblastí v obraze, které nesou důležité informace. Následný zjednodušovací proces aplikuje náročné transformace, včetně odstranění detailů, průměrování barev napříč ob lastmi a zdůrazněním významných hran, ve smyslu vyzdvižení smysluplných vizuálních prvků. V jejich výzkumu jsou spojeny nejnovější poznatky z oblastí rozpoznávání a zpra cování obrazu, lidského vnímání a interakce člověka s počítačem. Výstupy tohoto systému 4
1.4. OBJEKT ZÁJMU — FOTOGRAFIE jsou kvalitativně na výši. Jejich práce mě stimulovala k rozhodnutí věnovat se více nefotorealistickým snahám v procesu abstrakce. Poněvadž jsem sám nadšeným fotoamatérem a i v rámci studia se fotografii věnuji, touha zpřístupnit podobně zaměřený softwarový nástroj všem, kteří rádi dále tvůrčím způsobem pracují na svých fotografiích, byla vcelku přirozeným důsledkem. Fotografie jako realistické, přesné obrazové médium, je pro počítačem zprostředkovaný proces abstrakce velká výzva. 1.4
Objekt zájmu — fotografie
Má práce se zabývá stylizací a abstrahováním fotografií, takže je vhodné připomenout některá užitečná fakta a odhadnout jejich vliv na výsledek procesu. Svět fotografie je velmi rozsáhlý, a proto bych se v následujících řádcích soustředil jen na některé obecné principy, které ve fotografii platí. Dobře pořízená fotografie musí splňovat několik kriterií. Z těch základních to jsou: •
správná expozice a zaostření,
•
dobrá kompozice,
•
obsah nějakého sdělení (jeho čitelnost vyplývá z předchozích bodů).
Pochopitelně bychom našli mnoho výjimek, díky subjektivitě lidského vnímání nemá vý znam se jim nyní věnovat. Kromě požadavků na správnou, pro oko co nejpřirozenější ex pozici a dobré zaostření důležitých objektů je pro snadné vnímání (čtení) fotografie důležitá hlavně kompozice celé scény. Jde jak o rozmístění objektů, respektování principu zlatého řezu [Vytvlnf] a udržení prostorové harmonie mezi významnými částmi scény, tak i o vhodný vztah barev v popředí a v pozadí, správné využití kontrastu světlých a stinných partií a vůbec o celé světelné podání. Tyto principy ovlivňují zejména estetičnost; zda se nám fotografie líbí a zaujme nás je první podmínka úspěchu. Každá fotografie by měla také nést nějaké sdělení pro potenciálního komunikanta — adresáta tohoto sdělení. V našem případě člověka, který si ji prohlíží. Fotografie zachycuje reálný svět a zhostit se tohoto úkolu tak, aby komunikant pochopil, co chtěl fotograf snímkem sdělit ostatním, není často vůbec jednoduché. Při ne respektování výše naznačených principů může být cesta od shlédnutí obrazové informace k pochopení sdělení velmi znesnadněna. Důležitá struktura obrazu je často rušena víceméně zbytečnými detaily, které odvádí divákovu pozornost a činí získávání vizuální informace mnohem náročnější. Aby tato komunikace fungovala efektivně, používají fotografové celou řadu postupů. Například při manipulaci s tzv. hloubkou pole se fotograf snaží vyzvednout objekt v popředí tím, že pozadí umístí mimo zaostřenou oblast a tímto rozostřením dosáhne účinného omezení detailu při zachování celistvosti scény. Různé kompoziční postupy a de tailní informace čtenář jistě nalezne v libovolné publikaci věnované základům fotografování a vzhledem k oblibě a rozšíření digitální fotografie i v rozličných elektronických médiích. Pro účely zkoumané abstrakce je vhodné použít fotografie, které vyhovují výše uvede ným požadavkům. Nástroj mnou prezentovaný rozhodně neslouží k opravování špatných 5
1.4. OBJEKT ZÁJMU — FOTOGRAFIE snímků ani nedokáže zjistit, zdali jsou použité snímky vhodné pro abstraktní stylizaci. Hod nocení a tvůrčí přínos pochází prozatím vždy od člověka, počítačový program je pouze nástrojem. Znaky vhodné či nevhodné fotografie lze však specifikovat ještě konkrétněji. Za nepříliš vhodné považuji noční fotografie, kvůli obvyklému množství velmi tmavých ploch, což nekoresponduje s vykreslováním černých linií. Fotografie vzniklé výrazným použitím hloubky pole (např. portrétní) jsou již svým způsobem stylizované (člověk takto svět ko lem sebe nevidí) a jejich úprava do našeho stylu může být složitá. U makrofotografie se mohou objevit podobné potíže. Četné problémy také způsobuje složitá textura (viz 2.2), její přítomnosti se však často nevyhneme. Problémy lze za pomoci nabídnutých nástrojů minimalizovat, jak můžeme vidět z úpravy na obrázku 1.3.
Obrázek 1.3: Příklad úpravy fotografie s přírodní texturou Ze znaků, které jsou pro úpravu v mém programu žádoucí, bych zdůraznil tyto: •
hloubka struktury: v obraze je jasná ubíhající perspektiva, hloubka pole je velká až maximální (proostření celé scény),
•
zřetelná hierarchie: v popředí se nachází dominantní objekt(y), se vzdáleností dalších objektů klesá jejich důležitost; zároveň se nevyskytuje příliš mnoho objektů, zejména stejné důležitosti.
•
život: lidé nebo zvířata na fotografii často obohatí jinak chladnější snímek (doslova jej „oživí") a stylizace postav poskytuje velký prostor pro abstrakci. 6
1.4. OBJEKT ZÁJMU — FOTOGRAFIE Z technického pohledu fotografa se tedy zdá být vhodnější použití normálního nebo široko úhlého objektivu. Vhodnost ale vždy závisí na konkrétní fotografii a subjektivním hodnocení, jak bylo předesláno, a je na každém, aby nalezl svoji metodu výběru fotografií k abstraktní stylizaci. Je možné použít jak barevnou, tak i monochromatickou fotografii. Současná převaha digitální fotografie nad klasickou se nese v duchu překotného tech nického vývoje. Neznamená to nutně zlepšování kvality fotografie z hlediska obsahu, spíše naopak. Pevné disky jsou přeplněné snímky, které bychom na klasický film s takovou zbrk lostí nefotili. Na druhou stranu ale má téměř každý díky existenci množství grafického software prostor pro kreativní úpravu svých (digitálních či digitalizovaných) fotografií. Tyto nástroje jsou většinou všestranně zaměřené a proto jsou možnosti stylizace, kterou posky tují, často omezeny použitím obvyklých automatických filtrů. Převážně jsou tyto programy využívány pro retušování a zde s nimi lze dosáhnout úctyhodných výsledků. Hledanou smysluplnou abstrakci však umožňují pouze specializovanější NPR systémy, případně ně které trasovací programy. Příklad výstupů různých grafických nástrojů při snaze o kreslenou abstraktní stylizaci ukazuje obrázek 1.4. K úpravě v programu Adobe Photoshop (a) byly použity filtry Cutout, Glowing edges a mnoho dalších nástrojů, také vrstvení. Obrázek (b) byl vytvořen v programech Corel Trace a Corel Draw. Výstup mnou prezentovaného systému pro porovnání je na obrázku 1.3 (b).
(a) příklad stylizace v Adobe Photoshop
(b) příklad stylizace v Corel Graphics Suite
Obrázek 1.4: Porovnání výstupů oblíbených grafických nástrojů
7
1.5. PŘÍSTUP PROGRAMU 1.5
Přístup programu
Abstrakce závisí na přijmutí zobrazovacího stylu (rendering style), který poskytuje svobodu vypustit či odstranit obrazovou informaci [DeCarlo]. Napodobení malířských technik, které překreslují obraz do podoby štětcových tahů, je příklad takového stylu. Algoritmům pro tyto i další techniky se věnuje např. Aaron Hertzmann ve své disertační práci [NYUmrl]. Ve své práci se věnuji stylu naznačenému na začátku kapitoly 1, v sekci 1.3 a patrného z obrázku 1.3 (b). Tento styl je od napodobování malířských technik dosti odlišný a v rámci NPR poměrně nový. Obraz je transformován do kresleného {line-drawing) stylu s výraz nými černými linkami vykreslenými přes nově interpretovanou strukturu, která je tvořena velkými oblastmi konstantní barvy. Máme-li určený styl, hlavním problémem pro interaktivní a automatické NPR systémy je využít možnosti tohoto stylu k zachování významné vizuální formy a současně vypuštění nepatřičných detailů. Automatické techniky jsou více limitovány ve schopnostech redukovat nepotřebný detail, protože dosud nedokáží přesně identifikovat významné prvky vizuální formy. Smysluplné abstrakce je možné dosáhnout pouze skrze interakci [DeCarlo]. Na rozdíl od konzervativního systému přiblíženého výše (viz část 1.3) jsem se rozhodl pro „liberální" přístup. Záměrem je totiž vytvoření editoru, který uživateli poskytne mož nost libovolně vstupovat do procesu abstrakce. To i s případnými nevýhodami, které mohou z tohoto postoje vyplynout. Výsledný systém není triviálně jednoduchý, ovšem nevyžaduje okamžité zorientování. Uživateli napomáhá zejména automatickým nastavením základ ních parametrů, aby minimalizoval interakci na určování důležitých částí obrazu pomocí standardních polohovacích zařízení (myši, touchpadu, tabletu). Pro zachování konzistence vizuální formy nejsou určeny striktní požadavky, avšak uživatel je naveden instrukcemi v nápovědě tak, aby se výsledek procesu přibližoval smysluplné abstrakci. Pozorný čtenář si může klást otázku, jestli k tomu není zapotřebí alespoň minimálního výtvarného nadání. Určitě vyžadováno není, avšak nelze ho než doporučit. Domnívám se, že práce i experimen tování s mým programem může dokonce podpořit (podnítit) výtvarné cítění pro obraz a jeho stylizaci a zjednodušování. Přehled kroků pro transformaci obrazu pomocí software je následující: •
Rozebrání obrazu na jednotlivé složky vizuální formy (adekvátní počet vrstev s roz dílnou měrou detailů) analýzou obrazu na nejnižší úrovni pomocí systému EDISON (segmentace obrazu a detekce hran).
•
Intuitivní označování významných oblastí pomocí jednoduchého označovacího štětce a rovněž úprava nalezených hran.
•
Syntéza obrazu za použití získaných dat, včetně filtrování vrstev, zahrnutí oblastí označených za významné a následného vykreslení a zdůrazněných hran.
8
Kapitola 2
Analýza obrazových dat Aby bylo možno vytvořit výstup, který koresponduje se stylem popsaným v předchozí kapitole, bylo nutno na počátku celého procesu zajistit nástroje počítačového vidění (compu ter vision) na nejnižší úrovni. K získání vstupů používám algoritmy pro úlohy segmentace obrazu a detekce hran. Existuje velké množství algoritmů dostupných pro tyto procesy a v následující sekcích je stručně popsáno, které používám v mé práci a v jaké implementační formě. S některými algoritmy segmentace obrazu a detekce hran jsem se setkal na přednáš kách předmětu Digitální zpracování obrazu [DigZprac]. Pro moje účely bylo vhodné hledat ty, které produkují poměrně čisté výsledky, nabízejí dobrou variabilitu, a zároveň není zvláště obtížné jejich použití. Při seznamování se s prací DeCarla a Santelly [DeCarlo] jsem hledal algoritmy, které ve své práci autoři používají, protože ty jimi použité splňují požadavek kvalitních výstupů. Implementace níže popsaných algoritmů je volně dostupná v systému EDISON, se kterým v rámci softwarové realizace editoru spolupracuji. Tato spolupráce je přiblížena na konci kapitoly. 2.1
Segmentace obrazu
Segmentace obrazu je proces rozdělení obrazu do přiléhajících oblastí obrazových bodů (pixelu), které mají podobný vzhled, například barvu nebo texturu [Trucco]. Každá oblast má nějaké souhrnné vlastnosti, jako např. svoji průměrnou barvu. Druh segmentace popiso vaný níže patří do skupiny shlukovacích metod (clustering methods — metod založených na shlukové analýze). Zjednodušená idea procesu: •
v každém obrazovém bodě je spočítán vektor x=[xlr... ,xN] z N různých měření;
•
shluková analýza v N-rozměrném prostoru: ta slučuje pixely vytvářející shluk v Nrozměrném prostoru do jedné oblasti (obvykle rovněž přidělí vzniklé oblasti průměr nou barvu);
•
potenciální postprocessing podle nastavených kritérií spojuje některé oblasti do větších celků.
Algoritmus využitý pro účely této práce popisují Comaniciu a Meer [Comanici]. Jedná se o využití poměrně známé metody, tzv Mean Shift procedury. V jejich úpravě zajišťuje robustní segmentaci barevného obrazu. Algoritmus pracuje v percepčné uniformním ba revném prostoru L*u*v* a díky tomu produkuje hranice oblastí, které jsou významnější 9
2.2. DETEKCE HRAN pro lidské pozorovatele. Rekurzivní Mean Shift procedura konverguje k lokálnímu maximu hustoty (local density maximum) v 5-D prostoru. Algoritmus je vysoce optimalizovaný míra optimalizace je kontrolovatelná a ovlivňuje množství potřebného výpočetního času a kva litu výstupu. Parametry pro průběh algoritmu jsou prostorový poloměr hs (spatial bandwidth, obdoba poloměru filtru), prahová hodnota barevného rozdílu hr (range bandwidth), a mini mální velikost akceptované oblasti M (minimum region area). Míra optimalizace algoritmu se nastavuje parametrem SpeedUp (urychlení) a může být buď žádná, střední nebo vysoká. I při vysokém urychlení je výstup algoritmu pro účely zpracování v editoru kvalitní a díky velké úspoře času je tento parametr implicitně používán. Příklad výstupu segmentačního algoritmu je na testovacím obrázku 2.1 (b) pro hs=7 (v jednotkách pixelů), hr=6.5 (v L*u*v* jednotkách) a M=20 (pixelů), střední míra urychlení (optimalizace).
Obrázek 2.1: Výstup segmentace systému EDISON
2.2
Detekce hran
Detekce hran je proces hledání výskytu vysokého kontrastu v obraze, který pravděpodobně utváří hranice objektu nebo jeho částí. Body hran (edge points), či jednoduše hrany (edges), jsou pixely ve kterých nebo kolem kterých hodnoty v obraze procházejí prudkými změnami. Detekce hran je z detailnějšího pohledu v rámci moderního počítačového vidění obvykle proces o třech krocích [Trucco]: •
Redukce šumu. Potlačit co nejvíce šumu v obraze bez poškození skutečných hran.
•
Zesílení hran. Navrhnout filtr reagující na hrany. To znamená, že výstupem filtru jsou vysoké hodnoty na hranových pixelech a nízké v ostatních případech (např. Laplaceův a Sobelův filtr. Hrany pak mohou být nalezeny jako lokální maxima výstupu filtru.
•
Lokalizace hran. Rozhodnout, které lokální maximum na výstupu filtru je hrana a které je pouze způsobeno šumem. To zahrnuje: 10
2.2. DETEKCE HRAN zúžení širokých hran na šířku jednoho pixelu — nonmaximum suppression.; -
ustanovení prahové hodnoty nad kterou je lokální maximum považováno za hranu — hysteresis thresholding;
Ve sféře počítačového vidění je asi nejpoužívanějším hranovým detektorem Canny edge detector (podle autora J. Cannyho). Ranné detektory — lineární filtry jako např. Laplaceův filtr nebo variabilnější Sobelůvfiltr, byly méně matematicky formalizovány a Cannym definovaná kritéria [Trucco] na dobrý detektor sami o sobě nesplňují. Pro získání vstupních dat využívám silnou variantu Cannyho hranového detektoru, představenou v odborném článku Edge Detection with Embedded Confidence [Meer]. Algorit mus je taktéž implementován v systému EDISON. Cílem detekce hran je najít co nejvíce skutečných významných hran ze vstupního obrazu, a naopak ignorovat falešné hrany, které se mohou objevovat v částech s komplikovanou texturou (např. travnatá plocha, koruny stromů, apod.). Hranový detektor systému EDISON používá k lokalizaci hran výše popsané techniky (nonmaximum suppression, hysteresis thresholding) a umožňuje jejich výborné nasta vení. Základní parametry pro detekci hran jsou poloměr okna gradientního filtru r (Gradient Window Radius) a délka nejkratší akceptované hrany lmin (Minimum Length). Implicitně se používá poloměr r=2 (okénko filtru o velikosti (2r + 1) x (2r + 1), tedy 5 x 5) a lmin=10. Para metry potlačení non-maxima a hysterezního prahování jsou vždy trojice. První dvě hodnoty reprezentují body na osách x a y tzv. rank-confidence grafu [Meer], třetí udává typ křivky určené těmito body (oblouk, přímka, obdélník,...). Potlačení non-maxima určují parametry NmxRank, NmxConf a NmxType. Nastavení hysterezního prahování určují parametry HysterisisHighRank, HysterisisHighConf a HysterisisHighType pro vyšší práh a HysterisisLowRank, HysterisisLowConf a HysterisisLowType pro práh nižší. Pro bližší vysvětlení významu a použití těchto parametrů je vhodné se seznámit s příslušným odborným článkem [Meer].
(a) nalezené hrany pro implicitní nastavení
(b) nalezené hrany pro filtr s poloměrem r=5
Obrázek 2.2: Výstupy detekce hran systému EDISON
11
2.3. VYUŽITÍ SYSTÉMU EDISON 2.3
Využití systému EDISON
Implementace výše uvedených pokročilých algoritmů je v obou případech téma pro samo statnou práci. Má práce se tímto nezabývá, protože využívá tyto algoritmy již implemen tované v systému EDISON (Edge Detection and Image Segmentation System). Charakterem se jedná o tzv. low-level image feature extraction tool, neboli nástroj pro extrahování vlastností obrazu na nejnižší úrovni. Tento systém je dílem výzkumníků [Chris] z Robust Image Un derstanding Laboratory1. Je volně šiřitelný i se zdrojovými kódy a je vystaven ke stažení na stránkách této laboratoře. Implementace existuje ve formě interaktivního editoru a ve verzi pro použití z příkazové řádky. Za účelem automatizace procesu analýzy používám variantu pro příkazovou řádku. Na vstup systému je předána předloha — originální obraz ve formátu PPM (Portable Pixel Map) a prováděcí skript (viz příklad 5.4.1), který určuje druh procesu a definuje jeho parametry. Skript je generován na základě parametrů, které jsou pro proces segmentace aproximovány podle velikosti vstupního obrazu a dalších kritérií (viz 3.1). Pro detekci hran jsou použity hodnoty implicitní, převzaté z typického nastavení v interaktivní verzi systému EDISON. Veškeré parametry může uživatel měnit. Na jeho pokyn je z grafického rozhraní editoru spuštěn proces analýzy a po skončení průběhu je výsledek načten z výstupního souboru do datové struktury (viz 5.4).
1. Domovská stránka Robust Image Understanding Laboratory < h t t p : //www. c a i p . r u t g e r s . e d u / r i u l / >
12
Kapitola 3
Abstrakce a syntéza V interaktivní fázi uživatel svým vstupem poskytuje data potřebná pro syntézu výsledné vizuální formy Základní data tvoří vzestupně uspořádaný sled vrstev segmentace a mapa nalezených hran. Jsou získána z výstupu systému EDISON, který na pokyn provádí poža dovanou operaci. Pro vrstvy je to segmentace obrazu a pro mapu hran je to detekce hran, procesy popsané v minulé kapitole. Tato obrazová data uživatel doplňuje pomocí jednodu chých nástrojů. V následujících částech této kapitoly jsou popsány možnosti a postupy pro abstrahování struktury obrazu k zachování důležitých částí a redukci nadbytečných detailů. Jde jak o systém volby parametrů pro analýzu obrazu, tak i o využití nástrojů pro úpravu těchto dat. V části 3.3 je konečně popsán postup syntézy (renderování) výsledného obrazu. 3.1
Abstrakce oblastí
Sled segmentované předlohy obsahuje minimálně jednu vrstvu, maximální počet teoreticky není omezen. Z praktických důvodů, jakými jsou paměťové nároky při rastrové reprezentaci obrazu nebo zachování přehlednosti práce s programem, je však jejich počet shora omezený na 6 (viz popis rozhraní v kapitole 4). První vrstva tvoří základ pro budování hierarchie. Segmentace se provádí s nastavením pro značné potlačení detailů. Volbou velké minimální oblasti M (viz 2.1) v řádu tisíců pixelů (adekvátně podle rozměrů obrazu) dochází k masiv nímu spojování podobných oblastí a jejich výsledný počet se tak pohybuje maximálně v řádu desítek. Parametr minimální oblasti je automaticky předpočítán jako násobek delší strany obrazu a implicitní hodnoty hs=7. Pro viditelnou a přesvědčivou abstrakci je vhodné základní vrstvu takto podobně vy tvořit. Rovněž je důležité získat dostatečný počet dalších vrstev tak, aby se rozlišení seg mentace zvyšovalo od první, nejspodnější vrstvy, po poslední, nejvyšší vrstvu, tedy aby se míra potlačení detailů s vyšší vrstvou rovnoměrně snižovala. Hledáním vhodných para metrů je možné dojít k vyváženému rozdělení míry detailu napříč jednotlivými vrstvami. Z důvodu velké výpočetní náročnosti procesu segmentace může být tato činnost velmi zdlouhavá. Proto se při přidávání vyšších vrstev automaticky předpočítá minimální obsah oblasti M dle velikosti předlohy a výšky aktuálně přidané vrstvy, jak ilustruje jednoduchý vztah M = max(W, H) -^ L^, kde W a H jsou výška a šířka obrazu (v pixelech) a Ls je číslo přidávané segmentační vrstvy (podle interního indexování od nuly pro první, základní vrstvu). Tento vztah zjednodušeně poukazuje na hierarchické uspořádání obrazové struk tury, kterého chceme docílit. Pokud toto nastavení nebude produkovat žádaný výsledek, 13
3.1. ABSTRAKCE OBLASTÍ
Obrázek 3.1: Segmentace se značným potlačením detailů. hs=7, hr=6.5, M=7000
mění jej uživatel již sám na základě praktických zkušeností a také vlastností konkrétního obrazu. Změna hodnoty M ovlivňuje velikost oblastí a tím i jejich počet. Parametr hs ovliv ňuje nepřímo úměrně prostorové rozlišení segmentace a pro hrubou segmentaci a např. pro fotografie s rozostřenými oblastmi lze vylepšit výsledek zvyšováním jeho hodnoty. Parametr hr zase určuje prahovou hodnotu barevného rozdílu a vhodnou změnou lze při nevyhovující barevnosti oblastí docílit zlepšení. Máme-li vytvořen sled segmentací obrazu od nejnižší (nejhrubější) po nejvyšší (nejjem nější) vrstvu, proces abstrakce pokračuje v interaktivní fázi. Uživatel postupuje od nejnižší vrstvy k nejvyšší (postup běžný, nikoliv nutný). Jak je výše uvedeno, základní vrstva slouží jako podklad a dovoluje pouze změnu velikosti vyhlazovacího filtru. Řízení abstrakce uži vatelem nastupuje až od druhé vrstvy. Zde se zároveň účastní i eventuální cit pro obraz. Údaje získané v této fázi mají na kvalitu abstrahování vizuální struktury největší vliv. Pro každou vrstvu vyšší než základní je zapotřebí vytvořit masku vybraných struktur, chtěných oblastí (žádoucích reprezentací objektů). Tato maska při syntéze obrazu určuje, které oblasti z příslušné vrstvy budou použity a přeneseny do výsledného obrazu. Ovládání nástrojů je popsáno v části 4.3.3. Při renderování jsou vždy oblasti vrstvy označené maskou naneseny na výsledek syntézy předchozích vrstev. Tvar masky ani vztah k masce předcházející vrstvy opět není limitován. Považujme masku v tomto případě za množinu souřadnic těch obrazových bodů, které chceme zahrnout do procesu. Pro konzistenci výsledné vizuální formy, tvořené takto hie rarchicky, je však optimální, pokud se maska vrstvy n podobá vlastní podmnožině masky vrstvy n-1, tj. pokud množina souřadnic pixelů vyšší masky je podmnožinou množiny sou řadnic pixelů masky nižší (viz obrázek 3.2). V případě, že maska vrstvy n není podmnožinou masky vrstvy n-1 a výrazně rozměry té předchozí přesahuje, ve výsledku se mohou objevit velké skoky v úrovni detailu a vizuální forma tak kromě nekonzistentnosti může působit nepravděpodobně a nevěrohodně. 14
3.2. ÚPRAVA HRAN
(a) vrstva č.2 a její maska
(c) vrstva č.3 a její maska
(b) vybrané a ořezané oblasti
(d) složení vybraných a ořezaných oblastí ze tří vrs tev (třetí není na obrázku)
Obrázek 3.2: Použití masky pro určení vybraných detailů
3.2
Úprava hran
Další složkou výsledného obrazu jsou černé tlusté linky vykreslené podle detekovaných hran. I v rámci této složky finální vizuální formy existuje interaktivní fáze pro kreativní manipulaci. Volba parametrů pro analýzu systémem EDISON umožňuje ovlivnit vstupní mapu hran. Kromě volby parametrů, popsané více v částech 2.2 a 4.3.2, může uživatel mapu hran ručně upravovat. Hrany ve formě sousedících obrazových bodů lze smazat celé, umazávat, a dokonce kreslit jednoduchým nástrojem tužky. Pro kreslení nových hran bych ale doporučil vhodnější polohovací zařízení než myš, např. tablet. Takto je možné autorsky vstupovat do výsledku, je však nutné dávat si velký pozor, abychom do obrazu nezanesli mylné, nevěrohodné informace (pokud nejde o experiment, kde je vše dovoleno). Variabilitu finální podoby ovlivňuje uživatel také nastavením parametrů pro vykreslování (viz 3.3.2). 15
3.3. SYNTÉZA VÝSLEDNÉHO OBRAZU 3.3
Syntéza výsledného obrazu
V této sekci je popsán mechanismus vytváření výsledného obrazu a ovlivnění výstupu pomocí parametrů. 3.3.1 Vykreslení oblastí Oblasti se vykreslují po vrstvách od nejnižší po nejvyšší (viz 3.1). Každá vrstva je nejdříve zpracována filtrem (viz 5.5), který zaoblí a vyhladí hranice oblastí. Členitost hranic je totiž z výstupu segmentace systémem EDISON příliš velká. Aby byla konzistentní s velikostí oblasti, je podle nastavení nejmenší akceptované oblasti M určena velikost Ssmooth jádra vy hlazovacího filtru (v intervalu [Smin/ Smax]) vzorcem 3.3.1. Ssmooth = max.[Smin, mm(Smax,
2 x (round í yj
x
3°
g
j + 2) + 1)J
Rovnice 3.3.1: Výpočet velikosti vyhlazovacího filtru Efektivitu vyhlazování hranic oblastí ilustruje obrázek 3.3. Při vyhlazování může díky povaze filtru docházet k posunutí bodů spojení tří a více hranic oblastí a deformaci ostrých rohů. Při optimálním nastavení velikosti filtru jsou však tyto odchylky ve výsledné formě zanedbatelné. Nevhodné nastavení vede buď k značné deformaci hranic, nebo k jejich velké členitosti (příliš velká nebo malá hodnota Ssmooth vzhledem k velikosti nejmenší oblasti M).
*w
(a) nefiltrovaný výstup skládání všech vrstev s ob- (b) zaoblené hranice oblastí při skládání všech vrslastmi; tev, Ssmooth=31,11,5 a 3 pro jednotlivé vrstvy.
Obrázek 3.3: Efektivita vyhlazování hranic oblastí Nejprve se zpracovává základní vrstva, která se filtruje a následně celá přenese na vý stupní plátno jako základ celého obrazu. Poté se postupně zpracovávají vyšší vrstvy. Oproti první vrstvě se po filtrování aplikuje maska vybraných oblastí, která nejprve určí hrubý vý řez. Oblasti, které hranice výřezu protíná, jsou vyplněny transparentní barvou. Díky tomu 16
3.3. SYNTÉZA VÝSLEDNÉHO OBRAZU jsou na plátno vykresleny pouze ty jejichž obrazové body jsou vlastní podmnožinou obra zových bodů použité masky a žádný takový bod nemá shodné souřadnice s bodem tvořícím hranici masky. Proces, opakující se z části pro základní a celý pro každou vyšší vrstvu segmentace, je možné shrnout do tří dílčích operací: •
vyhlazení hranic oblastí nelineárním filtrem;
•
ořezání vrstvy definovanou maskou a odstranění oblastí protínajících nebo dotýkají cích se hranice této masky (pouze pro vyšší vrstvy);
•
vykreslení oblastí na plátno, nesoucí výsledek procesu z předchozích vrstev.
3.3.2 Kreslení štětcových tahů Jsou-li na plátně naneseny oblasti ze všech vrstev, vykreslují se na základě hran zakřivené černé tahy. Hrany jsou z fáze analýzy a případných úprav reprezentovány bitovou mapou. Sousedící pixely tvořící jednotlivé hrany jsou nejprve trasovány (viz 2. algoritmus v 5.6). Tím získáme seznam, kde každá hrana-křivka je reprezentována seznamem po sobě jdoucích souřadnic pixelů. Počet pixelů je pak roven délce křivky (hrany), na které závisí její tlouštka t. Ta je určena afinní funkcí (vzorec 3.3.2), která mapuje rozsah délek křivek [lmin/ lmax] na rozsah tlouštěk křivek [tmin/ tmax]. Tlouštka křivek delších než lmax je omezena na tmax. Linky kratší než lmin se nevykreslují a linky kratší než 3 x lmin musejí protínat alespoň 2 různé oblasti. Implicitní hodnoty pro výpočet tlouštky jsou [lmin/ lmax] = [15, 500] a [tmin/ tmax] = [3, 9]. t = ma,x[tmin, min(round (tmax x j-í—j , tmaxyj Rovnice 3.3.2: Určení tlouštky tahu.
(a) vykreslené linie s implicitními parametry
(b) linie s větší tloušťkou, avšak bez vyhlazování
Obrázek 3.4: Vykreslení černých linií 17
3.3. SYNTÉZA VÝSLEDNÉHO OBRAZU Před vykreslením jsou body hran filtrovány tak, že pokud prostřední bod trojice vybo čuje z přímého směru, je přesunut na optimální pozici. Rozsáhlejší filtrování není použito z důvodu zachování potenciálně důležitých detailů. Křivky jsou vykreslovány černou bar vou, štětcem s kruhovou stopou o průměru rovném tloušťce křivky. Jsou lineárně ztenčeny od třetin své délky směrem k oběma koncům (pokud se konec hrany příliš neblíží okraje obrazu). Černé linie jsou vykresleny nejprve do dočasné bitmapy, odkud jsou překresleny s volitelným vyhlazením okrajů na plátno s oblastmi. Proces vyhlazení eliminuje zubatost vykreslených tahů, takže nepůsobí rušivě (viz 3.4).
Obrázek 3.5: Výsledná vizuální forma. Černé linky vykreslené přes plošnou strukturu do tvářejí obrazový celek.
18
Kapitola 4
Stylize Editor 4.1
Popis software
Editor Stylize („Stylize Editor") je určen pro abstraktní stylizaci obrazové (fotografické) před lohy Je možné jej nazývat grafický filtr díky způsobu použití jako zásuvný modul (plug-in) v editoru Elephant. Jedná se o plug-in typu 3, tzn. s grafickým rozhraním (GUI), obsahu jícím náhled a interaktivní nástroje. Druh ovládání a interakce ovšem zajišťuje programu Stylize roli plnohodnotného editoru. Forma zásuvného modulu je zvolena proto, aby bylo možné využít nástroje programu Elephant pro prolínání vrstev a možnou kombinaci s jinými moduly (filtry). Vývoj samostatné (standalone) verze je do budoucna zvažován. Význačné vlastnosti: •
náhled na vrstvy a jejich snadné přepínání, názorné zobrazení;
•
automatické (a případné manuální) nastavení parametrů analýzy i syntézy;
•
intuitivní nástroje pro manipulaci s vrstvami, pohodlně ovladatelné pomocí myši;
•
přímý autorský vstup do procesu abstrahování důležité obrazové struktury;
•
možnost náhledu na výsledky zpracování dílčích vrstev před finální syntézou;
•
možnost uložení všech vrstev a nastavení do souboru pro pozdější načtení a pokračo vání v editaci (prozatím ve vývoji).
4.2
Instalace
Pro instalaci editoru Stylize do Elephantu je potřeba zkopírovat knihovnu s t y l i z e . d l i do adresáře s programem Elephant (typicky e l e p h a n t . exe). Dále je nutné do téhož adre sáře nahrát program EDISON ( e d i s o n . exe) 1 . Pro dostupnost nápovědy (obsahující také 1. Z prozatím nejasných příčin problémů s průběhem segmentace na některých konfiguracích při zapnuté vysoké optimalizaci (může být paradoxně mnohonásobně pomalejší) je přiložena i verze pro prostředí Cygwin (spolu s cygwin 1. d l i ) , u které se tyto problémy neobjevily.
19
4.3. UŽIVATELSKÉ ROZHRANÍ vysvětlení postupu) je zapotřebí do adresáře zkopírovat i soubor s t y 1 i z ehe l p . chm. Odin stalování se provede pouhým smazáním těchto nakopírovaných souborů. Na přiloženém CD (viz příloha B) je k dispozici balík editoru Stylize a program Elephant verze 1.1. Nemá-li dosud uživatel program Elephant na svém počítači, stačí zkopírovat adresář b i n \ E l e p h a n t , který obsahuje i editor Stylize se všemi potřebnými soubory. Hardwarové nároky •
•
Minimální požadavky k instalaci a ovládání: -
2 MB místa na disku
-
polohovací zařízení (myš)
Doporučená konfigurace: -
procesor na kmitočtu alespoň 1 GHz
-
operační paměťalespoň 256 MB
-
dostatek místa na disku pro ukládání výsledných bitmap
-
optická třítlačítková myš s kolečkem a případně tablet
Rastrová reprezentace zpracovávané předlohy i manipulace uvnitř Elephantu, Stylize a EDISONu nesou nároky na operační paměťúměrně (exponenciálně) se zvyšující s velikostí zpracovávaného obrazu. Pro práci s bitmapami větších rozměrů je množství RAM z dopo ručené konfigurace spíše minimem. 4.3
Uživatelské rozhraní
Po vybrání modulu Stylize v programu Elephant a vyvolání nastavení je zobrazen panel s pohledem (náhledem), ovládacími prvky a nástroji. Uživatelské rozhraní sestává z pěti částí, které je možné dále dělit, jak vidíme na na obrázku 4.1. Skupiny ovládacích prvků i jednotlivé nástroje se aktivují/ deaktivují podle zvolené vrstvy a existence potřebných dat. Do skupin nepatří tlačítka Help, které vyvolá nápovědu, a Cancel, které se používá pro ukončení práce s editorem. 4.3.1 Zobrazení a vrstvy Horní lišta s vrstvami a panel View navigator určují zobrazení požadované vrstvy v pohle dovém rámu (dále jen pohledu). Jsou tři typy vrstev. Vrstva s označením Original (Original image) reprezentuje zdrojový obraz a je určena pro porovnávání s výsledky analýzy. Další vrstva, označená Edges (Detected edges) je v liště vždy napravo a je určena pro nalezené hrany. Obě dosud zmíněné vrstvy existují pouze v jediné instanci. Třetí typ vrstvy s označe ním Segm.X (Segmentation layer), kde X značí číslo vrstvy (1-6) a první vrstva je označena 20
4.3. UŽIVATELSKÉ ROZHRANÍ navigátor zobrazení
záložky pro výběr vrstev
nastavení syntézy rám pohledu (náhledu)
ovládání segmentace
ukazatel průběhu
ukládání a načítání
Obrázek 4.1: Přehled uživatelského rozhraní
přívlastkem basic (Bottom), reprezentuje výsledek segmentace obrazu. Základní vrstva je implicitní (a nelze ji zrušit), další vrstvy přidává uživatel a dohromady jich může být nejvíce 6. Dokud vrstva neobsahuje obrazová data, vykresluje se v pohledu nápis vybízející k spuš tění daného procesu analýzy. Ovládací prvky pro přidávání/ubírání vrstev segmentace a zvolení zobrazené vrstvy jsou propojeny a lze použít libovolný ze dvojice. Tlačítka v liště se symboly + a - ( _ J a I ) odpovídají šipkám nahoru a dolů voliče Layer Count v panelu View navigator. Tento panel navíc informuje o rozměrech zpracovávaného obrazu, pozici kurzoru a umožňuje náhled zvětšovat a zmenšovat. Tlačítkem Fit se obrázek v náhledu zmenší tak, že je daná vrstva celá viditelná, tlačítko 1:1 zajistí zobrazení se 100% zvětšením. Kromě tlačítek s ikonou lupy ( ^ 1 a ^\) pro zvětšování/zmenšování pohledu můžeme intuitivněji využít kolečka myši. Při spuštění panelu nastavení a také při přepnutí na jinou vrstvu je automaticky zvolen nástroj ruky pro prohlížení a posouvání náhledu. Taháním myši při stisknutém libovolném tlačítku můžeme posouvat obrazem, pokud se nevejde celý do pohledu. Držením klávesy Alt se funkce tlačítek a kolečka myši dočasně přepíná na funkci nástroje Ruka v případě použití jiného nástroje. Se stisknutým prostředním tlačítkem 21
4.3. UŽIVATELSKÉ ROZHRANÍ myši můžeme s obrazem v pohledu posouvat (a měnit měřítko) v rámci každého nástroje. Mimo komponenty pro přepínání mezi typy vrstev (a jednotlivými vrstvami segmentace) v pravé části, se naspodu nacházejí dva přepínače:
Obrázek 4.2: Lišta s vrstvami a panel pro navigaci Draw mask je aktivní pouze ve vrstvách segmentace a lze jej přepínat pouze pokud má daná vrstva definovanou masku vybraných oblastí. Po každé úpravě masky (kreslení a mazání štětcem, viz část 4.3.3) je zobrazování masky automaticky zapnuto a ta je ihned vykreslena červenou průhlednou barvou. Červeně přebarvená část značí oblasti, které ne chceme do výsledné vizuální formy, oblasti bez barevného překrytí jsou označeny jako důležité. Pro základní vrstvu segmentace tato maska neexistuje, do procesu syntézy se první vrstva zahrnuje celá. Overlay edges se aktivuje po první proběhlé detekci hran a lze jej přepínat pouze mimo vrstvu pro hrany. Určuje, jestli se přes vrstvu pohledu zobrazí detekovaná mapa hran za účelem vizuální kontroly její kvality. Hrany se zobrazují jako řetízky pixelů světle modré barvy. 4.3.2 Ovládání analýzy Ovládací prvky pro analýzu obrazu se nacházejí ve spodní části GUI (viz obr. 4.3 (a)). Levý panel EDISON segmentation ovládá segmentaci, pravý panel EDISON edge detection detekci hran. Panely jsou aktivní podle aktuálně vybrané vrstvy. Při zobrazení pohledu na původní obraz jsou oba neaktivní, při zvolené libovolné segmentační vrstvě je aktivní pouze panel pro ovládání segmentace. Vybraná vrstva nalezených hran aktivuje pouze panel pro ovládání detekce hran. Panel EDISON segmentation obsahuje komponenty pro nastavení parametrů segmen tace. Nastavitelné hodnoty jsou prostorový poloměr (spatial bandwidth, obdoba poloměru fil tru) v poli Bandwidth/Spatial, prahová hodnota barevného rozdílu (range bandwidth) v poli Bandwidth/Range, a minimální velikost akceptované oblasti (minimum region area) v poli Minimum region (pixels). Nelineární posuvník je určen pro rychlejší nastavení posledního parametru, kterému při vyšších hodnotách nevadí hrubá přesnost. V intervalu 5-150 na růstá hodnota po 5, v intervalu 150-2750 po 50 a v intervalu 2750-20000 po 250. Hodnota minimální oblasti je pro usnadnění automaticky předpočítána během přidání nové vrstvy. Přepínač Operation je zde z experimentálních důvodů a umožňuje spouštění filtrování a 22
4.3. UŽIVATELSKÉ ROZHRANÍ spojování oblastí (Mean Shift basedfiltering/Region Fusion) — volba Filter/Fuse jako alterna tivu ke standardní segmentaci — volba Segment (implicitní). Běžně není nutné ho využívat. Trojicí přepínačů (tlačítek) Speed Up se nastavuje míra optimalizace (urychlení) algoritmu. Tlačítko High nastaví vysokou optimalizaci, tlačítko Medium střední a tlačítko None žád nou. Pro počáteční tvorbu vrstev použijeme vysoké urychlení a pro zdokonalení segmentace (po nalezení optimálních parametrů) můžeme použít nižší. Spuštění analýzy provádí tla čítko GO! Zavolá se externí analýza programem EDISON a po provedení se výsledek sám načte do příslušné vrstvy. Během procesu je možné s GUI pracovat, přepínat mezi vrstvami a dokonce spouštět více procesů analýzy najednou. To vede pochopitelně ke zpomalení všech současně běžících procesů, nelze to tedy doporučovat. Při nastavené vysoké optimalizaci jednotlivá segmentace trvá typicky několik sekund, bez urychlení proces trvá v řádu minut (v závislosti na velikosti vstupního obrazu).
Nonmawrna suppression
Type [ŠH Rank 0.500
J '
}
Confidence fj 5QQ Hysteresis High Threshold TťPe [Ěo^ Rank |o.940
Bandwidth: Spatial
7
^ m
Range
Speed Up
(*
|
Segment Filter/Fuse
l-^J
High
T
Basic detection parameters: W i n d o w radius:
|
-^J
Medium None
Minimum region (pixels)
if
Operation:
Minimum length:
r
Confidence rj.ggrj
2 detection-
•EDISON segmentating
J '
Hysteresis Law Threshold Type [Äre Rär|
10
J
k 10.990
'
|
Confidence [0.920
5500 GO!
More...
GO! OK
(a)
I
Cancel I
(b)
Obrázek 4.3: Ovládání analýzy Panel EDISON edge detection obsahuje komponenty pro nastavení parametrů detekce hran. Základní nastavitelné hodnoty jsou poloměr okna gradientního filtru (Gradient Window Radius) v poli Gradient window a délka nejkratší akceptované hrany (Minimum Length) v poli Minimum length. Pro nastavení parametrů potlačení non-maxima a hysterezního
prahování se stiskem tlačítka More... vyvolá samostatné okno More detection parameters s ovládáním těchto parametrů, viz obr. 4.3 (b). U každé ze tří skupin je vždy rolovací menu
Type pro výběr typu křivky (oblouk Are; přímka dle směru — Horizontal line, Vertical line a Line; obdélník Box) pro dané prahování (skupiny Nonmaximum suppression, Hysteresis High Threshold, Hysteresis Low Threshold) a editační pole provázané s posuvníky pro parametry této křivky (Rank a Confidence). Pro manipulaci s těmito parametry je vhodné se nejprve seznámit s literaturou [Meer]. Spuštění detekce hran provádí jako při segmentaci tlačítko GO! Proces detekce hran trvá taktéž typicky několik sekund, v závislosti na velikosti 23
4.3. UŽIVATELSKÉ ROZHRANÍ vstupního obrazu a nastaveném poloměru gradientního filtru. 4.3.3 Nástroje editace Nástroje pro manipulaci s vrstvami se nacházejí v levé části panelu Segm/Edges edit tools - Render settings. Jejich výběr se uskutečňuje osmi tlačítky s ikonami. Nástroj Ruka je vždy k dispozici a jeho funkce je popsána v části 4.3.1 ve vztahu k posouvání a změně měřítka obrazu v pohledu. Při zvolené vrstvě segmentace (vyšší než základní) se aktivují nástroje pro úpravu masky výběru žádoucích oblastí: Zelený Štětec (při kreslení obarvuje podklad světlezelenou barvou) slouží k vy tváření výběru chtěných oblastí. Levým tlačítkem myši masku vytváříme (kreslíme), pravým tlačítkem mažeme, jako při použití červeného štětce. Držením klávesy Ctrl se funkce levého a pravého tlačítka dočasně zamění. Červený Štětec (při kreslení obarvuje podklad červenou barvou) slouží k umazá vání výběru chtěných oblastí. Obě tlačítka myši mají stejnou funkci, držením klávesy Ctrl se funkce obou tlačítek dočasně změní na vytváření masky (zelený štětec). Odpadkový koš jednorázově smaže veškerý výběr chtěných oblastí (celou masku aktuální vrstvy). Tedy žádné oblasti potom nejsou označeny.
Obrázek 4.4: Práce s označovacím nástrojem Posuvník Brush Size nastavuje průměr kruhového štětce a pro efektivnější práci reaguje na otáčení kolečka myši. Velikost štětce tím lze měnit i během kreslení tahu. Ve vrstvách 24
4.3. UŽIVATELSKÉ ROZHRANÍ s určenou maskou je aktivní i tlačítko Preview details, které spustí vygenerování náhledu na vybrané oblasti po ořezání a odstranění neúplných oblastí. Ten se jednorázově zobrazí v pohledu na černém pozadí a při přepnutí na jinou vrstvu zmizí. Zapnutím přepínače Filtered (Slower) je možné před ořezáním provést vyhlazení hranic oblastí jako v případě finální syntézy a náhled se potom zobrazí tak, jak bude při konečném procesu vykreslen na plátno. Přepínač je implicitně vypnut, protože zobrazení náhledu může být značně zpoma lené procesem vyhlazení, jak upozorňuje i popisek tlačítka. Tlačítko Preview edges se aktivuje po prvním nalezení hran a spouští vygenerování černých tahů vykreslovaných na konci syntézy. Ty jsou jednorázově zobrazeny v pohledu a překresleny přes obrazová data zvolené vrstvy (kromě té s původním obrazem). Ve vrstvě nalezených hran je takto možné ověřit, které hrany budou při syntéze vykresleny a které ne. Při zvolené vrstvě nalezených hran se rovněž aktivují nástroje pro úpravu mapy hran: Tužka umožňuje dokreslovat hrany (využitelné za podpory náhledu volbou View
template). Červená guma (při kreslení obarvuje podklad na červeno) slouží k umazávání bodů hran kruhovým štětcem. •
Fialová guma (při kreslení obarvuje podklad na fialovo) slouží k umazávání celých hran (sleduje body v 8-okolí), kterých se dotkne stopa kruhového štětce. Odpadkový koš jednorázově smaže celou mapu hran.
Průměr štětce obou nástrojů umazávání hran se nastavuje opět posuvníkem Brush Size. Volba View template zobrazí ve vrstvě nalezených hran originální obraz jako vzorový podklad při dokreslování a umazávání hran. 4.3.4 Ovládání syntézy Parametry pro syntézu obrazu ovládá pravá část panelu Segm/Edges edit tools - Ren der settings a sestává ze dvou částí (viz obr. 4.5). V horní polovině se definují parametry pro vykreslování aktuálně zobrazené vrstvy segmentace. Přepínač Use in rendering určuje, zdali se má daná vrstva účastnit syntézy, nebo se má během tohoto procesu přeskočit. Vy pnutím u první vrstvy můžeme díky liberálnosti programu dosáhnout zajímavých výstupů, poněvadž oblasti z vyšších vrstev se tak vykreslují na bílou plochu. S adekvátní mapou hran potom lze získat výsledek v podobě skici. Dvojicí polí Smooth filter params se nastavuje jak velikost vyhlazovacího filtru Size (odd) (liché hodnoty v rozmezí 3-49), tak i počet iterací filtru iterations (hodnoty v rozmezí 0-5, implicitně 1). Hodnota velikosti čtvercového okna filtru je automaticky vypočítána při vytvoření vrstvy a po každé změně velikosti minimální oblasti v části pro nastavení parametrů segmentace. Ve spodní polovině Edges render settings se nastavují parametry pro vykreslování černých štětcových tahů podle detekovaných hran. Dvojice polí v levém sloupci Thickness 25
4.3. UŽIVATELSKÉ ROZHRANÍ
Render settings [^
Use in rendering
Smooth filter params: size [odd)
iterations
9 "£j
1 "£j
(a)
Edges render settings: Thickness: Length: min min I3
•!
man In J J [^
|15
•!
man
1500 ^ j
Use antialiasing
(b)
Obrázek 4.5: Ovládání parametria syntézy určuje rozpětí jejich tlouštěk od nejtenčích min (hodnoty v rozmezí 3-7, implicitně 3) po nej silnější max (hodnoty v rozmezí 7-20, implicitně 9). Druhá dvojice v pravém sloupci Length určuje nejmenší délku min (hodnoty v rozmezí 1-99, implicitně 15), a tedy délku nejtenčího vykreslovaného tahu, a největší délku max (hodnoty v rozmezí 100-9999, implicitně 500), tedy délku tahů vykreslených nejsilněji. Delší hrany se silněji nevykreslují. Přepínač Use antialiasing určuje, zdali se použije vyhlazování okrajů kreslených linií. Máme-li vše připraveno pro syntézu výsledného obrazu, stačí spustit tento proces z ovlá dacích prvků editoru Elephant. Pro kontrolu časového průběhu syntézy (a také generování dočasných náhledů na jednotlivé složky syntézy) slouží pruh vpravo dole, jeho rychlost se mění podle aktuálně prováděné operace. Buďte prosím trpěliví, pokud ze začátku (zejména při vyhlazování hranic oblastí velkým filtrem) postupuje velmi pomalu, postupně se vždy zrychlí. 4.3.5 Ukládání a načítání Panel Save/Load obsahuje tlačítka pro uložení (Save work...) a opětovné načtení (Load work...) všech vytvořených vrstev, jejich případných masek a veškerých nastavených pa rametrů na disk a z disku. Uživatel si tak může uchovat rozpracovanou stylizaci obrazu a pokračovat v ní, až bude chtít. V současné verzi (dostupné na přiloženém CD) jsou tato tlačítka neaktivní 2 .
2. Dosud se nepodařilo nalézt optimální způsob uložení/načítání velkého objemu bitmapových dat spolu s nastavením v komprimované podobě, a proto je tato funkce dočasně neaktivní. Aktuální verze bude vysta vena na < h t t p : / / w w w . f i . m u n i . c z / ~ x c e t k o v s / s t y l i z e > , p ř í p a d n ě na < h t t p : / / t h e c e d . w e b z . c z / stylize>.
26
Kapitola 5
Implementace Dynamická knihovna Stylize je napsána v jazyce Object Pascal a byla vytvořena ve vývojo vém prostředí Borland Delphi (Borland Delphi 6 Enterprise). Program sestává z vlastního projektového souboru Stylize ( L i b r a r y S t y l i z e ) a jednotek Settings (Unit S e t t i n g s ) , HystThreshSettings(Unit H y s t T h r e s h S e t t i n g s ) , R u n E D I S O N ( U n i t RunED IS ON), Fil ters (Unit F i l t e r s ) a Compose (Unit Compose). 5.1
Knihovna Stylize
Tento soubor obsahuje exportované funkce a procedury, potřebné pro komunikaci s editorem Elephant: •
G e t F i l t e r N a m e , vracející jméno modulu (filtru);
•
G e t C r e a t o r , předávající informace o autorovi;
•
E x e c F i I t e r , zajištující samotný proces filtru a prolnutí s maskou;
•
C r e a t e S e t t i n g s , vytvářející v paměti prostor pro ukládání nastavení;
•
De s t r o y S e t t i n g s , obsluhující rušení nastavení uložených v paměti;
•
S h o w S e t t i n g D i a l o g P r e v i e w , která umožňuje vyvolání ovládacího panelu editoru;
•
NewlmageLoaded, sloužící k rozpoznání, zda byl otevřen nový obrázek;
•
M i n i m i z e pro reakci na minimalizaci;
•
Re s t o r e pro reakci na obnovení (do polohy před minimalizací);
•
G e t F i l t e r T y p e , vracející typ filtru.
5.2
Jednotka Settings
V jednotce Settings se mimo základní typy pro práci s obrazovými daty nacházejí přede vším definice záznamových typů pro uchovávání nastavení a masky vrstev segmentace ( T S e g m L a y e r S e t t i n g s ) , uchovávání nastavení detekce hran ( T E d g e L a y e r S e t t i n g s ) 27
5.2. JEDNOTKA SETTINGS a definice typu T S e t t i n g s . Jde o záznam obsahující ukazatele na zdrojovou a dočasné bitmapy, pole segmentovaných bitmap s polem ukazatelů na nastavení pro jednotlivé segmentační vrstvy a také ukazatel na nastavení detekce hran. Jednotka obsluhuje komplexní uživatelské rozhraní pomocí třídy T S e t t ingsForm. Třída pro uživatelské rozhraní Třída T S e t t i n g s F o r m obsahuje definici všech ovládacích prvků uživatelského rozhraní a celou řadu metod pro jejich obsluhu. Tyto metody lze rozdělit do několika skupin: •
•
•
•
systémová manipulace s nastavením: -
S e t D e f a u l t s p r o nastavení implicitních parametrů;
-
R e s e t S e t t i n g s pro zrušení obrazových dat vrstev (vyprázdnění nastavení) a smazání dočasných souborů z adresáře Elephantu; volá se při zavírání okna Stylize editoru a při detekci načtení nového obrázku;
-
metody ve vývojovém stadiu: SaveWork a LoadWork pro ukládání a načítání rozpracované stylizace;
zobrazování vrstev a aktivování příslušných ovládacích prvků: -
S e t T o o l s V i s i b i l i t y pro aktivaci/deaktivaci nástrojů a panelů;
-
S e t L a y e r F o c u s pro komplexnější rozhodování, co bude zobrazeno v pohledu, a případné volání metod z další skupiny;
generování složených náhledů: -
DrawEdgesOverlay pro vykreslení mapy hran v pohledu na originální obraz nebo vrstvu segmentace pomocí metody TBitmap. Draw s transparentní barvou;
-
DrawMaskedOverlay pro názorné zobrazení masky vybraných oblastí. V části segmentovaného obrazu nepatřící do výběru (tj. maska má nulovou intenzitu) je potlačena modrá a zelená barevná složka pixelů a zvýrazněna červená. Označená oblast je zobrazena beze změn;
obsluhování uživatelských událostí (čítá více než 60 metod různé důležitosti, takže jsou uvedeny pouze vybrané): -
L a y e r Count Spi nEdi t Change provázaně s metodami RemLayerButtonCl i ck a A d d L a y e r B u t t o n C l i c k přidává a ubírá (s kontrolou prázdnosti proti nechtě nému odebrání) dodatečné vrstvy segmentace a automaticky odhaduje parametry pro analýzu i syntézu (viz část 3.1 a vzorec 3.3.1); 28
5.3. JEDNOTKA HYSTTHRESHSETTINGS ViewImageMouseDown, ViewImageMouseMove a ViewImageMouseUp zajiš ťuje obsluhu událostí pohybu a tažení ukazatele myši. Jedná se b u ď o posouvání obrázku v pohledu nástrojem ruky, vykreslování obrysu štětce (tj. kružnice) při pohybu ukazatele nad rámem pohledu (pro nástroje na označování oblastí a ma zání hran), a nebo tažení (dragging) kurzoru při aktivitě libovolného kreslícího či označovacího nástroje. Během tažení se provádí paralelní kreslení: na plátno, zobrazované v pohledu (ViewImage . Canvas), se vykresluje stopa štětce obarvující obraz pod sebou podle aktuálního nástroje různou barvou. Druhé kreslení se provádí při maskování oblastí (zelený a červený štětec) a mazání celých hran (fialová guma) do dočasné bitmapy Podle použitého nástroje se zaznamenaná stopa interpretuje buď jako určení maximální/minimální intenzity masky, nebo jako oblast pro hledání částí hran k jejich následnému smazání v celém rozsahu 8-spojitosti. Při umazávání bodů hran (červená guma) se maže černou barvou (nulová intenzita) přímo v bitmapě s hranami; FormMouseWheelUp a FormMouseWheelDown zajišťují obsluhu otáčení koleč kem myši nad rámem pohledu podle aktuálně zvoleného nástroje. Jsou možné dvě funkce: ovládání škálování obrazu v pohledu a ovládání velikosti štětce;
5.3
Jednotka HystThreshSettings
Jednotka sestává pouze z třídy T H y s t T h r e s h D i a l o g , která zajišťuje zobrazení dialogu pro podrobnější nastavení detekce hran. Obsahuje definice všech ovládacích prvků a metody pro jejich obsluhu. Po potvrzení zadaných hodnot provede procedura OKButtonCl i c k úpravu nastavení detekce hran (typ T S e t t i n g s . T E d g e L a y e r S e t t i n g s ) . 5.4
Jednotka RunEDISON
Jednotka zajišťuje komunikaci se systémem EDISON. Obsahuje procedury pro generování vstupních dat a skriptů pro analýzu, její spuštění a převzetí jejích výsledků: •
G e n e r a t e I n p u t PPM generuje vstupní bitmapu (ve formátu PPM) pro systém EDISON;
•
G e n e r a t e E d g e D S c r i p t a G e n e r a t e S e g m S c r i p t generují skript (viz 5.4.1) podle požadované analýzy a jejích parametrů;
•
R u n E d i s o n S c r i p t spouští program EDISON s parametrem názvu souboru skriptu a vyčká na průběh analýzy;
•
GetResultPPM a GetResultPGM načítají výsledek analýzy (bitmapy 24-bit formátu PPM se segmentovaným obrazem a 8-bit PGM [Portable GreyMap] s mapou nalezených hran) pro další zpracování ve Stylize; vracejí typ TBitmap.
29
5.5. JEDNOTKA FILTERS Skript pro segmentaci obrazu // EDISON script // generated by Stylize filter // performs image segmentation SpatialBandwidth = 7; RangeBandwidth = 6.5; MinimumRegionArea = 6750; Speedup = HIGH; Load('input.ppm', IMAGE); DisplayProgress ON; Segment; Save('result0.ppm', PPM, SEGM_IMAGE);
Příklad 5.4.1: Ukázka skriptu pro systém EDISON 5.5
Jednotka Filters
Jednotka definuje třídu T F i l t e r a implementuje její jedinou metodu SmoothRegions pro vyhlazování hranic oblastí ve vstupní bitmapě (Ref Img) filtrem o velikosti ( s i z e ) specifikované jako parametr této metody. Algoritmus vyhlazování hranic oblastí: 1. Máme vstupní obraz segmentace, bitmapu I s body I ( x , y ) pro x = [ 0 . .w-1] a y= [ 0 . . h - 1 ] , kde w a h jsou šířka a výška obrazu; výstupní bitmapu J a dále ve likost okna filtru S, z něhož určíme poloměr R=S d i v 2. I [x, y ] reprezentuje barvu daného bodu. 2. Procházíme obraz I po řádcích (vnější for cyklus pro y a vnitřní for cyklus pro x): pro každý obrazový bod I (x, y) procházíme postupně všechny existující (nacházející se v obraze i) pixely I (kx, ky) jádra filtru pro kx= [x-R. . x+R] a ky= [y-R. . y+R] a provádíme následují kroky: (a) zaznamenáváme četnost všech vyskytujících se barev a pokud při hledání nej častější barvy dosáhne frekvence výskytu polovinu hodnoty S x S, přerušíme hledání; (b) v seznamu nalezených barev vyhledáme tu s nejčastějším výskytem; (c) nejčastější barvu zapíšeme jako barvu pixelu ve výstupním obraze J (x, y ) .
30
5.6. JEDNOTKA COMPOSE 5.6
Jednotka Compose
Jednotka Compose obsahuje procedury pro syntézu obrazu, jak je popsána v části 3.3. Jsou to procedury CropMaskedLayer, G e t E d g e s L i s t , D r a w B o l d E d g e s a C o m p o s e l t . Poslední zmiňovaná kombinuje všechny předchozí k získání finálního výstupu. Procedura CropMaskedLayer zajišťuje proces ořezávání vybraných částí vrstvy seg mentovaného obrazu. Využívá se v ní možnosti nastavit transparentní barvu bitmapy při nanášení na jinou bitmapu (TBitmap). Také se využívá semínkového vyplňování. Poža dovaná vrstva pro zpracování se nastavuje argumentem layerNum značícím index vrstvy v rámci pole nastavení S e t t i n g s . S e g m L a y e r S e t t i n g s . Procedura předává výslednou bitmapu argumentem result. Algoritmus ořezávání maskou vybraných oblastí: 1. Máme vstupní obraz segmentace, bitmapu I s b o d y I ( x , y ) (viz předchozí algoritmus) a masku, bitmapu M s body M (x, y ) ; 2. vyhlazujeme oblasti vrstvy pomocí metody T F i l t e r . SmoothRegions tolikrát, ko likrát určuje parametr iterace v nastavení vrstvy; 3. na filtrované oblasti segmentace vykreslíme masku s použitím bílé transparentní barvy, která v masce definuje žádanou část; oblasti ležící mimo ni jsou překresleny černou barvou (nulovou hodnotou intenzity masky); 4. procházíme pixely obrazu I (x, y) po řádcích: (a) pokud je barva I [x, y ] jiná než černá ( c l B l a c k ) , prohledáme sousední pixely; (b) v případě výskytu černé barvy v okolí uložíme souřadnice (x, y) do seznamu (pole) Seeds; 5. pro souřadnice v Seeds [ n ] , n= [0 . . l e n g t h ( S e e d s ) - 1 ] provedeme: (a) zkontrolujeme barvu I [x, y] na souřadnicích v S e e d s [ n ] ; pokud je barva I [x, y ] jiná než černá, voláme semínkové vyplňování ( F l o o d F i l l ) černou bar vou v tomto bodě. Procedura G e t E d g e s L i s t najde v obraze (bitmapě) hran přiléhající body a vytvoří seznam řetězců pixelů jednotlivých hran. Algoritmus pro vytvoření seznamu hran z mapy hran: 1. Vytvoříme si kopii vstupní mapy hran jako dvojrozměrné pole binárních hodnot E a pole P pro ukládání cesty při hledání. 2. prohledáváme po řádcích; pokud najdeme bod hrany (E [x, y ] =1), prohledáme celou hranu až do konce: 31
5.6. JEDNOTKA COMPOSE (a) uložíme první nalezený bod do P a smažeme bod z mapy hran (E [x, y ] : =0); (b) prohledáváme hranu v prvním směru: hledáme body v 8-okolí (nejprve orto gonální a pak diagonální 4-okolí) dokud nenarazíme na první konec hrany a ukládáme do P; mažeme body z E; (c) obrátíme pořadí prvků (reverze) pole P, první bod v poli je tak počátek hrany; (d) prohledáme hranu v druhém směru (od posledního bodu); poté uložíme obsah pole P (pole po sobě jdoucích bodů jedné hrany) do seznamu hran (pole hran, kde každá je reprezentována polem souřadnic svých bodů). Procedura DrawBoldEdges vykreslí do dočasné bitmapy černé zakřivené tahy na zá kladě seznamu hran nalezených předchozí procedurou. Vzhled je určen nastavením pro vykreslování hran. Dílčí kroky tohoto procesu jsou popsány v části 3.3.2, proto zde již ne uvádím schéma algoritmu. Vykreslení tahu proměnlivou tlouštkou spočívá ve vhodném měnění průměru štětce TBitmap. Canvas . Pen, dráhu štětce určují posloupnosti bodů ulo žené v seznamu hran. Parametr Us e An tialiasingv nastavení určuje, jestli se v druhé části procedury použije vyhlazování okrajů černých tahů. Algoritmus pro tento proces spočívá v nalezení „schodů" na úrovni pixelů vykreslených tahů a následném gradientním obarvení podkladu (tj. obrazu s barevnými oblastmi) podél celé délky každého schodu. Konkrétně jde o ztmavení (tahy jsou totiž vykresleny černou barvou), nejsilnější v místě, kde okolní černé pixely tvoří „roh", a nejslabší na konci schodu, započatého tímto rohem. Vyhlazení tedy není realizováno pomocí supersamplování, jak je pro tento proces obvyklé, ale ošetřuje pouze místa, kde se mohou vyskytovat rušivé artefakty. Algoritmus syntézy obrazu Algoritmus syntézy obrazu je tvořen vhodným použitím výše uvedených metod a re alizuje jej procedura Composelt. Produkuje výsledný obraz na základě dat jednotlivých vrstev, předávaných ukazatelem na nastavení S e t t i n g s a vykresluje ho na plátno — bitmapu Canva s Image. Ta se po průběhu syntézy prolíná (ve funkci ExecF i l t e r knihovny S t y l i ze) se zdrojovým obrazem pomocí masky definované v editoru Elephant. Algoritmus syntézy finálního obrazu: 1. jestliže první vrstva obsahuje obrazová data a má povolení účastnit se syntézy (přepí nač UseThisLayer = True), vyhlazujeme ji procedurou SmoothRegions tolikrát, kolikrát určuje parametr iterace (SmoothFilterlter) v nastavení vrstvy; výsledek vykreslíme na plátno Canvas Image jako podklad; pokud vrstva neexistuje nebo se neúčastní syntézy, je pro pozadí plátna použita bílá barva; 2. přidáváme filtrované detaily z vyšších vrstev na plátno — pro každou vrstvu L>1, pokud tato obsahuje obrazová data, data označovací masky a má povolení účastnit se syntézy, provedeme následující: 32
5.6. JEDNOTKA COMPOSE (a) aplikujeme na ni proceduru CropMaskedLayer; (b) zpracovaná vrstva je vykreslena na plátno Can va s Image s použitím černé transpa rentní barvy (vykreslí se jen oblasti celé označené maskou); 3. vykreslíme silné černé tahy na plátno Canvas Image na základě dílčích operací: (a) načteme hrany z mapy do seznamu procedurou G e t E d g e s L i s t ; (b) předáme tento seznam proceduře DrawBoldEdges, která vykreslí hrany na plátno Canvas Image. Rychlost syntézy výsledného obrazu ovlivňují zejména velikost vstupní bitmapy, velikosti vyhlazovacího filtru pro hrubší segmentované vrstvy, množství nalezených hran a použití vyhlazování štětcových tahů.
33
Kapitola 6
Závěr Stylize Editor byl vytvořen pro transformování digitálních fotografických předloh do kresle ného stylu. Abstrakce a stylizace v programu dovoluje uživateli podniknout výrazné kroky k pročištění či obohacení významné vizuální struktury. Program zprostředkovává nejen výtvarně zajímavý výstup, ale dokáže do něj viditelně promítnout uživatelský vklad. Po chopitelně však plně nenahradí ryze manuální práci, při které oko, mysl a ruka grafika či výtvarníka sami určují a vytvářejí stylizovanou vizuální formu. Kvalita výsledku se odvíjí nejen od pochopení a zvládnutí principu tvorby v editoru, ale také od kvality vstupních fotografií z hlediska navržených žádoucích kritérií. Přesto i experimenty mohou přinést zajímavé výstupy. Navržené grafické rozhraní přehledně rozděluje jednotlivé fáze procesu a nabízí snadno ovladatelné nástroje. Ty uživatel používá přímo v okně s obrazovými daty, což je velmi intuitivní. Přehlednosti by přispělo skrývání nastavení vykreslování štětcových tahů a ne aktivních prvků. U práce s nalezenými hranami se nabízí vylepšení nástrojů pro kreslení nových křivek a vylepšení nástrojů retušovacích. Vyřešení možnosti ukládání rozpracované stylizace se ukazuje jako velmi důležité pro kvalitní a cílevědomou práci s editorem. Co se týče schopností syntézy obrazu, a zejména vytváření černých linií, bylo by možné rozšířit vykreslování o modely výtvarného štětce či pera a použít křivkovou reprezentaci drah těchto tahů. Výstup je kvalitní a v rámci rastrové reprezentace bez problémů široce využitelný. Použití vyhlazování černých linií přineslo významné zkvalitnění. Pro další, ale patrně ne tak razantní zlepšení, se nabízí vyhlazování hranic mezi oblastmi. Zpracování stylizované fotografie zde ještě nemusí končit. Kromě retušování drobných artefaktů, které při komplexním procesu syntézy mohou vznikat, se nabízí zejména trasování do vektorové podoby. To umožňuje nejen další kreativní práci (např. obarvování ploch jinými barvami či gradienty), ale např. i použití pro velkoformátový tisk. Přechod na vektorovou datovou reprezentaci při získávání výstupů analýzy by otevřel další možnosti pro obohacení výtvarných kvalit výstupů a dovo lil případné využití poznatků z oborů lidského vnímání a logického rozhodování.
34
Literatura [Chris]
Christoudias, C , Georgescu, B., Meer, P.: Synergism in low level vision, ISBN:0-7695-1695-X, IEEE Computer Society, srpen 2002, . 2.3
[Comanici]
Comaniciu, D., Meer, P.: Mean shift: A robust approach towardfeature space analy sis, IEEE Computer Society, květen 2002, < h t t p : / /www. c a i p . r u t g e r s . e d u / r i u l / r e s e a r c h / p a p e r s / a b s t r a c t / m n s h f t . h t m l > . 2.1
[DeCarlo]
DeCarlo, D., Santella, A.: Stylization and abstraction ofphotographs, ACM Press, 2002,ISBN:1-58113-521-1, < h t t p : //www. c s . r u t g e r s . e d u / ~ d e c a r l o / a b s t r a c t . h t m l > . 1.1,1.3,1.5, 2
[DigZprac]
Kozubek, M.: Digitální zpracování obrazu, květen 2005, < h t t p : / /www. f i . muni.cz/lom/pages/education/DiglmgProc.shtml> . 2
[Gooch]
Gooch, B., Gooch, A.: Non-Photorealistic Rendering, A.K. Peters Ltd., 2001,ISBN:l-56881-133-0, < h t t p : //www. c s . u t a h . e d u / ~gooch/book . h t m l > . 1.2
[Green]
Green, S.: Non-Photorealistic Rendering, ACM Siggraph, 1999, < h t t p : //www.siggraph.org/s99/conference/courses/course_17. h t m l > . 1.2
[Meer]
Meer, P., Georgescu, B.: Edge detection with embedded confidence, IEEE Com puter Society, prosinec 2001, < h t t p : / / w w w . c a i p . r u t g e r s . e d u / r i u l / r e s e a r c h / p a p e r s / a b s t r a c t / e d g e c o n f . h t m l > . 2.2,4.3.2
[NYUmrl]
N.Y. University Media Research Lab: Non-Photorealistic Rendering, květen 2005, < h t t p : / / w w w . m r l . nyu. e d u / p r o j e c t s / n p r / > . 1.2,1.5
[Reynolds]
Reynolds, C: Stylized Depiction in Computer Graphics, květen 2005, < h t t p : //www. r e d 3 d . c o m / c w r / n p r / > . 1.2
[Salova]
Sálová, A.: Nefotorealistický grafickýfiltr,květen 2003, FIMU Brno. 1.2
[Trucco]
Trucco, E., Verri, A.: Introductory Techniques for 3-D Computer Vision, Prentice Hall, 1998, ISBN:0-13-261108-2. 2.1, 2.2
[Vytvlnf]
Staudek, T., Serba, I.: Výtvarná informatika I., květen 2005, < h t t p : / / f o s f o r o s . f i .muni . c z / p v 0 9 7 / > . 1.2,1.4
35
Příloha A
Galerie
Obrázek A.l: Stylizace v podobě skici. Výstup při nepoužití základní vrstvy segmentace. Zdrojový obrázek je možné najít v popisu uživatelského rozhraní.
36
A. GALERIE
ĚSH
- \
^
Obrázek A.2: Stylizace architektury. Fotografie ztrácí úpravou svoji původní barevnost, černé linie ale zaměřují pozornost na tvar a konstrukci budovy.
37
A. GALERIE
i
1
Obrázek A.3: Stylizace fotografie s čistou strukturou. Čistá struktura fotografie s výraznou barevností podporuje estetičnost výsledku úpravy.
38
A. GALERIE
Obrázek A.4: Stylizace fotografie s krajinou. V obraze je značně redukována komplikovaná přírodní textura. Nalezené hrany byly radikálně pročištěny, takže vykreslují v detailech pouze postavu fotografa. Dlouhé hrany podél cesty byly dokresleny ručně v editoru. Menší obrázek vpravo vznikl nepoužitím první vrstvy a zesílením vykreslovaných tahů. Zdrojový obrázek je nahoře vlevo.
39
A. GALERIE
Obrázek A.5: Stylizace zimní fotografie. Jednoduchá, monochromaticky laděná scéna je rovněž vhodná pro čistou stylizaci.
40
A. GALERIE
Obrázek A.6: Experimentální stylizace městské scény. Fotografie plynule přechází ve styli zovanou formu s barevnými plochami, nakonec zůstanou pouze černé linie na bílém pozadí. Výstup vznikl s využitím masky v programu Elephant.
41
Příloha B
Obsah CD Součástí práce je i přiložené CD, kde jsou k dispozici následující data: •
Zdrojový text bakalářské práce ve formátu XML (DTD DocBook) a vložený obrazový materiál
•
Zdrojový text bakalářské práce v LTpX
•
Vysázený text této práce ve formátu PDF
•
Text této práce v HTML a HtmlHelp (CHM)
•
Zdrojový kód editoru Stylize v jazyce Object Pascal
•
Spustitelná verze Stylize v adresáři E l e p h a n t s obsahem: -
Zkompilovaná dynamická knihovna s t y l i z e . d l i , plug-in pro Elephant
-
Program Elephant ( e l e p h a n t . exe)
-
Program EDISON ( e d i s o n . exe), verze pro příkazovou řádku. Implicitně zkom pilovaná ve verzi pro nativní Win32 prostředí a dodatečně pro prostředí CygWin (s přiloženou dynamicky linkovanou knihovnou c y g w i n l . d l l )
-
Soubor s nápovědou s t y l i z e h e l p . chm
42