MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
£ %\—*¥/ &
Tvorba ilustrací pomocí rychlé distribuce kreslicích primitiv BAKALÁŘSKÁ PRÁCE
Josef Sedlačík
Brno, jaro 2007
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: Doc. Ing. Jiří Sochor, CSc. 11
Poděkování Rád bych poděkoval vedoucímu práce doc. Ing. Jiřímu Sochorovi za cenné rady a pomoc při řešení práce.
Shrnutí Cílem práce bylo nastudovat metodu nefotorealistického vykreslování a porovnat ji s jinými podobnými přístupy. V praktické části pak implementovat jednoduchou aplikaci, která by umožnila vytvářet ilustrace popsanou metodou. V první části práce je popsána metoda pro ilustraci pomocí rychlé distribuce kreslících primitiv. V druhé části pak uvádím přehled několika dalších metod používaných pro ilustraci.
IV
Klíčová slova grafická primitiva, hustota pravděpodobnosti, distribuční funkce, histogram
v
Obsah 1
2
3 4
5 6
7 A
Úvod do problematiky 1.1 Co je nefotorealistické zobrazovaní 1.2 Ilustrace se vzhledem perokresby Základní pojmy 2.1 Histogram 2.2 Náhodná veličina 2.3 Hustota pravděpodobnosti 2.4 Distribuční funkce Odvození PDF z obrazu Generování náhodných bodů 4.1 Pomocí ID PDF 4.2 Pomocí 2D PDF Algoritmus 5.1 Kreslící styly Další NPR metody 6.1 Image-space ilustrace se vzhledem perokresby pro textury 6.2 Ilustrace stromů se vzhledem perokresby 6.3 Perokresba pro parametrické povrchy 6.4 Automatické NPR odstraněním měkkých stínů Závěr Obsah přiloženého CD
2 2 2 3 3 3 3 4 5 6 6 6 8 8 9 9 10 11 11 13 15
1
Kapitola 1
Úvod do problematiky 1.1
Co je nefotorealistické zobrazování
Metody v počítačové grafice, které se snaží vytvářet fotorealistický obraz virtuální trojroz měrné scény, se označují jako „fotorealistické". Myslí se tím míra podobnosti obrazu virtuální scény s fotografií. Nefotorealistické zobrazování (angl. non-photorealistic rendering, zkratka NPR) je pak oblastí počítačové grafiky, která se o f otorealismus nesnaží. NPR je inspirováno uměleckými styly jako malba, kresba, technická ilustrace... Mnohdy je mnohem výhodnější místo fotorealistikého zobrazení použít nefotorealistické zobrazení, které zachycuje jen důležité rysy scény. Současné NPR metody lze rozdělit do několika oblastí. Každá z těchto oblastí řeší odlišný okruh problémů - simulace tradičních malířských technik, simulace kreseb a rytin, metody pro názornější zobrazení scény... 1.2
Ilustrace se v z h l e d e m perokresby
Metody snažící se napodobit vzhled perokresby, můžeme rozdělit do dvou kategorií: imagespace a object-space metody. Někdy odkazované v literatuře jako image precision a object precision. Metoda object-space provádí výpočty na jednotlivých objektech scény, porovnává jednot livé objekty mezi sebou Metoda image-space bere v úvahu viditelnost jednotlivých pixelů každého objektu ve scéně. Problémem je tvorba ilustrací kreseb. Pokud jsou grafická primitiva umístňována ná hodně, při animování scény vzniká šum. Je tedy nutné zaručit koherenci umístění primitiv. Jednou možností je držet primitiva na místě relativně k obrazu. Je tak zaručena určitá ko herence, ale tyto animace trpí tzv. „shower-door" efektem - animace působí dojmem, že se odehrává za nepohyblivým reliéfním sklem. Lepší dojem zanechávají techniky, které se snaží držet primitiva na místě relativně k jednotlivým objektům scény.
2
Kapitola 2
Základní pojmy 2.1
Histogram
Histogram H je vektor absolutních četností jednotlivých intenzit zastoupených v rastrovém obraze. Hodnota H (i) histogramu H určuje, kolik pixelů v obraze má intenzitu i. Pro jedmax
norozměrný histogram pak platí vztah Yl H (i) = m.n, kde m je počet sloupců a n je počet řádků v obraze. x 10*
2.5
2
1.5
1
0.5
0
(
Obrázek 2.1: Histogram
2.2
Náhodná veličina
Znak, který nabývá různých hodnot s určitou pravděpodobností. Spojitá náhodná veličina nabývá všech hodnot z nějakého intervalu. 2.3
Hustota pravděpodobnosti
V angl. probability density function - PDF. oo
Jako hustotu označujeme každou funkci f(x) s vlastnostmi f(x) > 0, x G R a J
f(x)dx.
—oo
3
2. ZÁKLADNÍ POJMY
J-
ľ A J
/
1
/
1^
zč
(a) ID PDF
(b) ID CDF
/
/
/
,
/
/
/
-
(c) ID CDF a její vzorkování
Obrázek 2.2: Ukázka redistribuce bodů podle ID PDF.
2.4
Distribuční funkce
V angl. cumulative distribution function - CDF. Tyto zkratky budou používány ve zbytku práce. Nechťx je náhodná veličina. Definujme Fx : R —• [0,1] jako Fx(x) = Pr(X < x) pro všechna x. Funkci Fx(x) nazýváme distribuční funkcí. Každá CDF splňuje následující vlastnosti: 1.
lim Fx(x)
= 0 a lim Fx(x)
=1
2.
Fx je monotónní neklesající funkce
3.
Fx je spojitá zprava
4.
P r ( a < X < b) = Fx(b) -
Fx(a) X
Pro spojitou náhodnou veličinu X pak Fx(x)
= j fx(y)dy,
kde fx je PDF.
4
Kapitola 3
Odvození PDF z obrazu Nejdříve uvážíme jednoduché případy, kdy všechny primitiva pokrývají jediný pixel. Nechť I(XÍ) je intensita základního obrazu v pixelu XÍ a její hodnota je v rozmezí 0 a 1. Jelikož v aplikaci uchovávám většinu hodnot v poli, je třeba jednotlivé hodnoty přepočítat, aby byly v daném rozmezí. Poznamenejme, že poloha pixelu v 2D v případě použití primitiv jako samotných pixelů nehraje žádnou roli. Například vezmeme-li množinu N náhodně distibuovaných pixelů a M celkový počet pixelů. V tomto případě můžeme použít jednoduchý předpis pro rozlišení pixelů. Kreslící proces by měl vytvořit binární obraz, kde pravděpodobnost, že pixel XÍ je vykres len, je identická k intensitě odpovídajícímu pixelu v originálním obraze, tj. p(xi = 1) = I(XÍ). Navíc bychom chtěli nezávisle umístit vzorky pro generování tohoto binárního obrazu. Po třebujeme najít PDF q(x), která by mohla být použita algoritmem z kapitoly 5. Po umístění N vzorků podle PDF q(x) je pravděpodobnost, že pixel XÍ není nastaven, (1 — q(xi))N. Využijeme ale opačného jevu, kdy pixel XÍ je vykreslen. (1 - q(xi))N = p(xi = 1) q(xi) = 1 - yi-p(xi
= l)
(1)
pro všechna i = l...n, kde n je počet pixelů v obraze. Potřebujeme, abychom integrací q{xi) získali jedničku a dodrželi tak definici CDF. Kombinací těchto omezení a předchozí rovnice získáme n
n
J2q(xt) = l^...<^J2 í=i
y/l-P(xi = l)=n-l
(2)
í=i
Tato nelineární rovnice může být přímo řešena jen pro neměnnou intensitu obrazu I{XÍ) = IQ. Pro obecné obrazy nemůže být tento systém rovnic řešen přímo, ale je zapotřebí použít něja kou numerickou metodu, např. binární hledání. V praxi ovšem binární hledání nemusí být počítáno přes celou sumu. Každý term v sumě závisí pouze na pravděpodobnosti pixi = 1) každého pixelu, která závisí na intensitě IÍXÍ) vstupního obrazu, která je obvykle kvantifiko vána, např. pro 256 odstínů šedé. Jestliže označíme kvantifikované odstíny jako Ij,j = 1...K a histogram vstupního obrazu jako H(Ij), můžeme rovnice 1 a 2 přepsat jako q(Ij) = 1 -
N
VT^T3
(3)
a K
J2H(I3)VT^T3=n-l
(4)
3= 1
které zahrnují sumu jen přes K odstínů a nikoliv přes n pixelů. 5
Kapitola 4
Generování náhodných b o d ů 4.1
Pomocí I D PDF
Je dána jednodimenzionální PDF p(x),x G [0,1] a množina rovnoměrně distribuovaných náhodných vzorků XÍ nad [0,1]. Vzorky můžeme rozdistribuovat podle p(x). Ukázka ID PDF je na obrázku 2.2(a). Spočítáme distribuční funkci
C(x)
p(ť)dt
jak ukazuje obrázek 2.2(b). Poté můžeme C(x) invertovat a transformovat jednotlivé vzorky l X% TíSL XA = C (xi). Graficky je to znázorněno na obrázku 2.2(c) jako mapování množiny vzorků na ose y na osu x. Množina XÍ znázorněná jako kolečka na ose x na obrázku 2.2(c) jsou distribuovány podle původní PDF p(x). Počítání inverze CDF není úplně přímé, jsou-
05
(a) PDF
1
0.5
(b) CDF
1
05
I
(c) Inverse 4.1(b)
Obrázek 4.1: Ukázka transformace s nulovými oblastmi v PDF. Obr. 4.1(c) není funkce
li totiž v PDF místa s nulovou pravděpodobností, integrují se v CDF na stejnou hodnotu. Obrázek 4.1 ukazuje daný problém. V této části pak neexistuje inverze a je třeba na to dávat pozor. Tyto místa nebudou ve výsledém obraze vykresleny.
4.2
Pomocí 2D PDF
Je dána dvoudimenzionální PDF p(x) ,x G [0,1]2 a množina rovnoměrně distribuovaných ná hodných bodů pi nad [0, l] 2 . Body můžeme rozdistribuovat podle p(x) užitím transformační metody. 6
4. GENEROVÁNÍ NÁHODNÝCH BODŮ
Obrázek 4.2: 2D PDF a pravděpodobnost pro jednotlivé řádky (vpravo) a ID PDF řádku (nahoře)
K nalezení y-souřadnice q\ redistribuovaného bodu qí spočítáme distribuční funkci M(y) = / m(ť)dt, kde m(y) = / p(x)dx a získáme Qi = M _ 1 (p^). Funkce M(y) je monotónní, ale ne striktně monotónní, jestliže ně které řádky mají nulovou intenzitu. M~l(y) tedy existuje téměř vždy až na místa isolovaných bodů. Máme-li spočteno qj, můžeme určit x-ové souřadnice qf podle PDF, respektive podle řádky. Matematicky můžeme daný vztah vyjádřit jako podmíněnou PDF c(x\q.%y)
_ P(x, qi>y) m(q,%yj
a její CDF C(x\q %yj
c(s\qity)ds
Stejně jako předtím, x-ová souřadnice nového bodu je dána inverzní funkcí qf = C~l (pf \q\). Pro diskrétní PDF qix), stejně jako při odvození z obrazu, můžeme M(y) a C(x\y) jednoduše předpočítat jako ID a 2D pole. Jednoduchým hledáním v poli pak můžeme najít hledané souřadnice. Obrázek 4.2 ukazuje 2D PDF, kde tmavé oblasti jsou mapovány na nízké pravdě podobnosti a světlé oblasti na vysoké pravděpodobnosti. Vpravo je marginální funkce m(y) získaná integrací jednotlivých řádků. Nahoře je jedna z mnoha řádkových PDF, c(x\y) pro nějaké y znázorněné černou čarou v obrázku. 7
Kapitola 5
Algoritmus Shrnutím předchozí teorie můžeme přepsat algoritmus do 7 základních kroků. 1.
Načtení vstupního obrazu, možné i z 3D modelu.
2.
Vytvoření histogramu intezit obrazu.
3.
Nalezení N, počtu primitiv, které se budou vykreslovat, použitím rovnice 4.
4.
Spočtení q(Ij),j = 1...K , kde K je počet úrovní intenzit, použitím rovnice 3.
5.
Integrace řádků a invertování na formu
6.
Integrace a invertování na formu C~l.
7.
Distribuce N primitiv podle M~l a C~l.
5.1
Kreslící styly
M~l.
Tento algoritmus může být použitý k rozdílným kreslícím stylům. V základním návrhu po třebuje algoritmus na vstupu jen šedotónní obraz, aby se vygenerovalo PDF. Nejjednodušším stylem je použití samostatných bodů - point stippling, který nepotřebuje žádné dodatečné informace. Jako další styl můžeme zmínit např. šrafovaní. K tomuto stylu jsou ale zapotřebí další informace, které určí orientaci jednotlivých čar. K naprogramování aplikace byl použit programovací jazyk Java a rozhranní Java 3D API pro zobrazování 3D scén. K načítání 3D modelu jsem použil volně dostupnou knihovnu Loader3DS. Model je zobrazen bez všech textur a původních barevných nastavení jen se základním nastavením stínování a světla.
Obrázek 5.1: Výsledná ilustrace po aplikování algoritmu
8
Kapitola 6
Další NPR metody V této kapitole uvádím přehled několika dalších NPR metod a jemný nástin na způsob, jakým přistupují ke zpracování obrazové informace. U každé z těchto metod jsem se snažil zobrazit ukázky ilustrující postupné zpracování jednotlivými metodami. 6.1
Image-space ilustrace se v z h l e d e m perokresby pro textury
Systém se dělí dle formátu vstupu na 2 rozsáhlé kategorie: geometry-based systém, který má na vstupu informace ze 3D scény, a image-space systém - vstupem obraz v úrovních šedi. Zatímco u algoritmu popsaného v předchozích kapitolách, druh vstupu nehraje roli. Podle
Obrázek 6.1: Jednotlivé vrstvy zleva stín, směr a množina vzorků. Vpravo výsledná ilustrace získaná složením komponent.
druhu vstupu se v této metodě zpracovává signál jiným způsobem. U 2D vstupu se výsledný produkt složí kombinací tří komponent. Sedotónní obraz - definuje stíny pro ilustraci. Směr definuje orientaci textury v bodech. A množina vzorků, kterými se vykreslí konečná podoba ilustrace. Ukázka na obrázku 6.1. Uživatel si ale musí nadefinovat jednotlivé komponenty ručně. Narozdíl od 3D scény zvládá tato metoda u 2D vstupu ilustrovat i složitější modely jako srst zvířat či lidský obličej. Podrobněji v [9]. Stejně jako u metody v první části práce, lze pro vstup použít jak 3D model, tak i 2D obraz. Jediným rozdílem je, že zde musí být vstupní obraz v odstínech šedi, zatímco u předchozí metody lze přímo zpracovat i barevné obrazy. Barevný obraz na vstupu můžeme použít jen za předpokladu, že bychom jej ještě před přímým zpracováním touto metodou převedli na sedotónní obraz. Pro výsledné zpracování potřebujeme nadefinovat tři „obrazy". Do tvorby těchto částí ale musí zasáhnout uživatel. Je to jediný systém, kde musí během vytváření ilustrace zasahovat uživatel. Všechny ostatní metody zde popsané generují ilustrace bez vnějšího zásahu. Kromě toho zde potřebujeme dva stejně velké buffery jako originální obraz a jeden menší, do kterých 9
6. DALŠÍ N P R METODY
(a) Model stromu
(b) Ilustrace kmene
(c) Ilustrace s prahováním 1000
(d) S prahováním 2000
Obrázek 6.2: Ukázka ilustrace metodou 6.2
bychom mohli uložit jednotlivé vrstvy, z kterých se pak složí výsledná ilustrace. Ta by stejně tak mohla být podle mého názoru výstupem algoritmu z kapitoly 5, pokud by se rozšířil o některý z kreslících stylů. 6.2
Ilustrace stromů se v z h l e d e m perokresby
Tato metoda byla navrhnutá pro ilustraci stromů. Ke zpracování potřebuje model stromu, vytvořeného např. systémem Xfrog[7]. Konečný model z tohoto systému je předzpracován a jsou vytvořeny dva soubory. V prvním je uložena geometrie kostry stromu. Ve druhém souboru jsou uloženy informace o listech - pozice a normálové vektory. V původním modelu stromu se většinou nachází velké množství listů, které je třeba zredukovat kvůli složitosti výpočtu. Kmen a větve jsou jsou v ilustraci vykresleny známými NPR technikami. Mohli bychom proto použít i algoritmus z kapitoly 5. Jelikož se listí výrazně liší od zbývajících povrchů, musí být zpracováno odděleně od zbytku scény. Každý list je vykreslen grafickými primitivy. Seřazením primitiv podle hloubky ve scéně se pak určí, které se ve výsledku vykreslí. Pro zjištění hloubky umístění primitiv je používán hloubkový buffer. Pro každý pixel se spočítá rozdíl se všemi okolními pixely. Jako výsledek se bere největší pozitivní rozdíl. Tato hodnota určuje, jak daleko před okolními pixely je daný pixel. Pro konečné vykreslení se pak použije prahování[10]. Všechny pixely, které mají rozdíl hloubky vetší než daný práh, jsou použity k záverečnému vykreslení. Okolní vegetace může být vykreslena stejným způsobem. Podrobnější popis této metody je popsán v [9]. Pro tvorbu ilustrací touto metodou je jediným možným vstupem 3D model. Což je podle mě celkem nevýhoda. Buď potřebujeme mít k dispozici soubory s 3D modely stromů nebo si je musíme vytvořit pomocí nějakého programu pro tvorbu rostlin. Uvítal bych, pokud by se dala metoda upravit a použít i pro 2D vstup. Nevýhodou je podle mého názoru způsob zpracování listí, který celý algoritmus nejspíše hodně zpomaluje. I když se podaří množství listů zredukovat, jsou všechny zbývající listy vykresleny jako nějaký polygon. V takto vzniklém obraze pak navíc porovnávám každý pixel se všemi okolními pixely. Pro větší obrázky to opět může celý postup zpracování rapidně zpomalit. Jelikož jsem si daný systém nemohl nikde vyzkoušet, můžu se jen dohadovat, jak rychlá tato metoda ve skutečnosti je. Uvážím-li kolik operací je potřeba vykonat při zpracování listí, 10
6. DALŠÍ NPR METODY
tak nebude tato metoda patřit mezi nejrychlejší. 6.3
Perokresba pro parametrické povrchy
Metoda pro automatické generování ilustrace se vhledem perokresby pro mnohostěnné mo dely. Moc se neliší od tradičních fotorealistických metod. Vstupem je 3D model, jedno nebo více světel a nastavení kamery. Výpočet se zahájí zjištěním viditelných povrchů a polygonů se stínem použitím 3D BSP stromu. Podrobnější informace o BSP stromech jsou v [11]. Vý sledkem tohoto procesu je množina konvexních polygonů seřazených podle hloubky. Ty jsou pak použity k sestavení 2D BSP stromu a rovinné mapy prezentující viditelné povrchy scény. Poté se můžou vykreslit jednotlivé oblasti rovinné mapy použitím textury tvořené čarami. Jediným možným vstupem pro tuto metodu je 3D model. Pro 2D vstup by se tato metoda upravit nedala, protože bychom tak přišli o důležité informace, pomocí kterých se počítá výsledná ilustrace. Zjištění viditelných částí je řešeno jednoduchým způsobem za pomoci BSP stromu. Pokud modelem nemanipulujeme, je třídění pomocí BSP stromu rychlé. Tuto metodu bych označil jako za nejsložitější ze všech, které v této práci zmiňuji. Složitostí bych ji nejspíše mohl srovnávat s tradičními fotorealistickými metodami.
Obrázek 6.3: Ukázka ilustrace metodou 6.3
6.4
Automatické NPR odstraněním měkkých stínů
Tato metoda narozdíl od ostatních zmiňo vaných v této práci negeneruje binární ob raz, ale barevný. Odstraňuje měkké stíny a přidává černé kontury podél objektů. První část zaměřená na odstranění stínů je založena na rozdělení původního ob razu. Na obraz s jasovou složku a dva barevné obrazy, které odpovídají barev ným kanálům červená-zelená (RG) a modrážlutá(BY). Původní RGB obraz se pře vede na LMS prostor (kde L,M,S jsou dlouhé, střední a krátké vlnové délky). Obrázek 6.4: Originální obrázek a obrázek Pomocí LMS prostoru se původní ba upravený metodou 6.4 revný obraz převede na dané tři ob razy. Dále jsou nalezeny hrany v RG a BY obrazech a provedena jejich kombinace pomocí logického součtu. V dalším kroku se odvodí obraz klasifikovaný podle hran nalezených v předcházejícím kroku. 11
6. DALŠÍ NPR METODY
Následuje vrácení barev do obrazu, ale už s odstraněnými měkkými stíny. Jako poslední krok se k tomuto obrazu přidají kontury objektů. Výsledný efekt je lépe vidět na obrázku 6.4. Je to jediná metoda v této práci, která generuje barevný obraz. Ke zpracování po užívá 2D obraz, ale mohli bychom použít i ALGORITHM 3D model a vyrenderovat z něj 2D obraz. Je ůftgrioi mag« likož se jedná o NPR metodu pro generování barevného obrazu, tak oproti všem zde zmi ňovaným přístupům používá všechny ba * * revné kanály. Vzdáleně bych ji mohl přirov nat k metodě z kapitoly 6.1, která výsledný .J\I it obraz také skládá z několika rozdílných vrs tev získaných z původní předlohy. Na obrázku vpravo je zobrazeno schéma zpracování touto metodou.
1
3
ľne í í j !• Yiaqe
Í
c a r r ' e c aoccic iq 1G tie sqn ' o a i l mígtm laund.
^
-naqe
TTpar'-iíj tne ccqe •CTlGJT TlTC v: Tfcq-clac TC(5C
•b: Tloq'atTq ' 1TC íj-!- p a n e ;
San p i d c o a rte •anceicc -naqc
Obrázek 6.5: Postupné zpracování metodou 6.4. 12
Kapitola 7
Závěr Při zpracovávání této práce jsem zíslal základní znalosti o jedné z mnoha metod pro nefotorealistické zobrazování, na jejichž základě jsem byl schopen vytvořit jednoduchou aplikaci pro tvorbu ilustrací. Dále jsem měl v rámci práce příležitost porovnat tuto metodu s několika dal šími. Zadaná metoda se mi na rozdíl od ostatních metod zmiňovaných v této práci, zdála asi jako nejjednodušší. Některé z NRP metod bych mohl složitostí přirovnat i k fotorealistickým metodám zobrazování. Výslednou aplikaci bychom mohli dále rozšiřovat. Jako rozšíření bych mohl uvést např. kreslící metody popsané v [1] nebo i jiné, krátce zmiňované v této práci. Jako další možnost vývoje by se dalo uvažovat o barevné ilustraci založené na algoritmu z kapitoly 5. Ukázky výstupu z aplikace jsou na přiloženém CD ve složce obr.
13
Literatura [1] A. Secord, W. Heidrich, L. Streit Fast Primitive Distribution for Illustration (2002) [2] Montgomery, D. Applied statistics and probability for engineers [3] http://66.102.9.104/search?q=cache:NLV07JJbEAIJ:netra.felk.cvut.cz/Zope/cgg/ people/PhD/zenkarl/thesis/zenka-npr-thesis.pdf [4] http://www.root.cz/clanky/opengl-imaging-subset-histogram/ [5] http: //en.wikipedia.org/wiki/Probability.density.function [6] Michael P. Salisbury, Michael T. Wong, John F. Hughes, David H. Salesin Orientable Textures for Image-Based Pen-and-ink Illustration [7] Greenworks GbR. Domovská stránka systému xfrog http://www.greenworks.de [8] Adrian Joseph Secord Random Marks on Paper Non-Photorealistic Rendering with Small Primitives [9] Oliver Deussen*, Thomas Strothotte Computer-Generated Pen-and-ink Illustration of Trees [10] http://cs.wikipedia.org/wiki/Prahovani [11] Jiří Žára, Bedřich Beneš, Jiří Sochor, Petr Felkel Moderní počítačová grafika (2. vydání) [12] Georges Winkenbach David H. Salesin Rendering Parametric Surfaces in Pen and Ink [13] A. Olmos and F. A. A. Kingdom Automatic non-photorealistic rendering through softshading removal: a colour-vision approach
14
Příloha A
Obsah přiloženého CD •
Zdrojový kód bakalářské práce ve formátu pro KTgXa samotná práce ve formátu pdf.
•
Zdrojové kódy aplikace
•
Ukázkový výstup aplikace
•
Potřebné knihovny potřebné ke spuštění aplikace
•
Zkompilovaná verze aplikace pro operační systém Windows.
15