Počítačová grafika, vidění a vývoj her

Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).

Garantující pracoviště: Katedra softwaru a výuky informatiky Koordinátor specializace: RNDr. Josef Pelikán

Specializace Počítačová grafika, vidění a vývoj her je určena studentům se zájmem o vizuální obory informatiky – syntézu obrazu, analýzu obrazu a programování počítačových her. V magisterském studiu potom mohou navázat studiem oboru Vizuální výpočty a vývoj počítačových her, kde se budou věnovat svému oboru ještě více do hloubky. Již absolvování bakalářské specializace však postačí k dobrému uplatnění v praxi (podle jednotlivých zaměření):

Návrh a vývoj grafických aplikací, například vizuálních efektů nebo fotorealistické visualizace (postprodukční týmy, architektonické visualizace, vývoj realistických herních enginů a shaderů, apod.)
Uplatnění všude tam, kde se využívá digitální zpracování obrazu a počítačové vidění (strojírenský a elektrotechnický průmysl, vývoj robotických systémů, medicína, ochrana a bezpečnost, automatická kontrola, dálkový průzkum Země, apod.)
Vývoj počítačových her na mnoha úrovních (programátor herního engine, GPU programátor /shadery/, nástroje pro přípravu obsahu hry, logika hry, programování a konfigurace herní umělé inteligence, příprava dat /levelů/ hry, apod.)

Studijní specializace Počítačová grafika, vidění a vývoj her nabízí následující zaměření:

Počítačová grafika
Počítačové vidění
Vývoj počítačových her

Pro všechna zaměření platí stejné podmínky studia, stejné povinné a povinně volitelné předměty a společné tři zkušební okruhy bakalářské státní závěrečné zkoušky (jedná se o okruhy 1. až 3. – viz níže). Jednotlivá zaměření pak mají odlišné zkušební okruhy přizpůsobené požadavkům svých disciplin.

Povinné předměty programu Informatika

Povinné předměty společné pro všechny specializace jsou uvedeny v předchozí části.

Povinné předměty specializace

kódPředmětKredityZSLS
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NMAI055Matematická analýza 2 52/2 Z+Zk
NPRG041Programování v C++ 52/2 Z+Zk
NPRG035Programování v jazyce C# 52/2 Z+Zk

Povinně volitelné předměty

Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 43 kreditů za povinně volitelný předměty. Konkrétní výběr předmětů by měl být prováděn na základě zaměření, ke kterému studium směřuje. Zkušební okruhy u státních zkoušek jsou totiž dalším vodítkem při rozhodování, které předměty je třeba studovat.

kódPředmětKredityZSLS
NPGR025Introduction to Colour Science 32/0 Zk
NPGR002Digitální zpracování obrazu 43/0 Zk
NPGR035Strojové učení v počítačovém vidění 52/2 Z+Zk
NPGR037Praktikum z Matlabu 30/2 Z
NCGD003Programování herních mechanik 52/2 Z+Zk
NCGD006Praktikum z vývoje počítačových her v limitovaném čase120/1 Z0/1 Z
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk
NPGR020Geometrie pro počítačovou grafiku 32/0 Zk
NPGR036Počítačové vidění 52/2 Z+Zk
NPGR038Základy vývoje počítačových her 52/2 Z+Zk
NSWI200Operační systémy 52/2 KZ
NAIL028Úvod do robotiky 52/2 Z+Zk
NMAI073Pravděpodobnost a statistika 2 52/2 Z+Zk
NMAI056Matematická analýza 3 52/2 Z+Zk
NPRG051Pokročilé programování v C++ 52/2 Z+Zk
NPRG038Pokročilé programování v jazyce C# 52/2 Z+Zk
NPRG005Neprocedurální programování 52/2 Z+Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 KZ
NPRG042Programování v paralelním prostředí 62/2 KZ
NMAI042Numerická matematika 52/2 Z+Zk
NDBI045Vyhledávání ve videu 52/2 Z+Zk
NOPT046Diskrétní a spojitá optimalizace 52/2 Z+Zk

1 Předmět Praktikum z vývoje počítačových her je vyučován v obou semestrech a smí se zapisovat opakovaně (za každý absolvovaný semestr jsou dva kredity). Studentům zaměření Vývoj počítačových her doporučujeme absolvovat ho minimálně jednou.

NDMI011Kombinatorika a grafy 1 52/2 Z+Zk— NTIN071Automaty a gramatiky 5—2/2 Z+Zk NMAI059Pravděpodobnost a statistika 1 5—2/2 Z+Zk NPRG045Ročníkový projekt 4—0/1 Z NAIL062Výroková a predikátová logika 52/2 Z+Zk— NDBI025Databázové systémy 52/2 Z+Zk— NSZZ031Vypracování a konzultace bakalářské práce 6—0/4 Z NTVY016Tělesná výchova III510/2 Z— NTVY017Tělesná výchova IV51—0/2 Z NJAZ091Anglický jazyk — zkouška pro bakaláře41—0/0 Zk Reference for optional stuff: ============================= NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z— NJAZ090Anglický jazyk pro středně pokročilé IV31—0/2 Z –>

Doporučený průběh studia

Doporučený průběh studia zahrnuje všechny povinné předměty a některé další povinně volitelné nebo volitelné předměty – tzv. profilující předměty – pro jednotlivá zaměření.

Protože mají tři různá zaměření různé požadavky ke státním zkouškám, uvádíme zde příklady tří průběhů studia. Pro úplnost byly vytvořeny kompletní průběhy včetně volitelných předmětů. Formálně povinné předměty jsou v tabulkách vyznačeny tučně, povinně volitelné běžným písmem a volitelné kurzívou.

Volitelnost předmětů by se však mohla chápat více prakticky – vůči konkrétnímu zaměření. To znamená, že některá přednáška může být obecně pro celou specializaci povinně volitelná, ale pro konkrétní zaměření může být důležitá (profilující), protože znalosti jsou potřeba ke státním zkouškám. V jiném zaměření však poslouží třeba jen jako výběrový předmět, protože ke státním zkouškám potřeba není.

V následujících ukázkách průchodů se k naznačení důležitosti předmětu používají poznámky pod čarou: profilující předměty (znalosti ke státním zkouškám) jsou označeny jedničkou1, předměty doporučované dvojkou2. Pokud není předmět vysázený tučně ani nemá jednu z těchto poznámek1,2, je pro dané zaměření úplně volitelný a lze ho libovolně nahradit.

1. rok studia

Společné pro všechny specializace, viz předchozí část.

2. rok studia – počítačová grafika

kódPředmětKredityZSLS
NTIN061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMI011Kombinatorika a grafy 1 52/2 Z+Zk
NMAI055Matematická analýza 2 52/2 Z+Zk
NPRG041Programování v C++ 52/2 Z+Zk
NPRG035Programování v jazyce C# 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIN071Automaty a gramatiky 52/2 Z+Zk
NMAI059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR004Fotorealistická grafika152/2 Z+Zk
NMAI056Matematická analýza 3252/2 Z+Zk
NPRG051Pokročilé programování v C++252/2 Z+Zk
NMAI042Numerická matematika 52/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk — zkouška pro bakaláře410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – počítačová grafika

kódPředmětKredityZSLS
NAIL062Výroková a predikátová logika 52/2 Z+Zk
NDBI025Databázové systémy 52/2 Z+Zk
NPGR025Introduction to Colour Science132/0 Zk
NPGR002Digitální zpracování obrazu243/0 Zk
NMAI073Pravděpodobnost a statistika 2252/2 Z+Zk
NPGR037Praktikum z Matlabu 30/2 Z
NSWI200Operační systémy 52/2 KZ
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NPGR020Geometrie pro počítačovou grafiku132/0 Zk
NPGR036Počítačové vidění252/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 KZ
NOPT046Diskrétní a spojitá optimalizace 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk

1 Profilové předměty k danému zaměření. Okruhy státních zkoušek jsou na jejich znalosti založené.

2 Další doporučované předměty pro dané zaměření. Formálně Vás nic nenutí si je zapsat, my bychom Vám to však doporučovali. Předměty, které nejsou povinné a nemají žádnou poznámku, lze libovolně nahradit jinými podle Vašeho zájmu.

3 Výuka anglického jazyka NJAZ070, NJAZ072, NJAZ074, NJAZ090 v rozsahu 0/2 v každém semestru je určena pro středně pokročilé a pokročilé. Pro začátečníky a mírně pokročilé jsou určeny předměty NJAZ071, NJAZ073, NJAZ075, NJAZ089 s rozsahem výuky 0/4 v každém semestru.

4 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.

5 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016 a NTVY017 je možné si zapsat letní výcvikový kurz NTVY018 nebo zimní výcvikový kurz NTVY019. Tyto kurzy může student absolvovat kdykoli v průběhu bakalářského studia.

2. rok studia – počítačové vidění

kódPředmětKredityZSLS
NTIN061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMI011Kombinatorika a grafy 1 52/2 Z+Zk
NMAI055Matematická analýza 2 52/2 Z+Zk
NPRG035Programování v jazyce C# 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NPGR002Digitální zpracování obrazu143/0 Zk
NPGR037Praktikum z Matlabu230/2 Z
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIN071Automaty a gramatiky 52/2 Z+Zk
NMAI059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR036Počítačové vidění152/2 Z+Zk
NPGR020Geometrie pro počítačovou grafiku232/0 Zk
NMAI056Matematická analýza 3252/2 Z+Zk
NOPT046Diskrétní a spojitá optimalizace252/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk — zkouška pro bakaláře410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – počítačové vidění

kódPředmětKredityZSLS
NAIL062Výroková a predikátová logika 52/2 Z+Zk
NDBI025Databázové systémy 52/2 Z+Zk
NPRG041Programování v C++ 52/2 Z+Zk
NPGR035Strojové učení v počítačovém vidění152/2 Z+Zk
NAIL028Úvod do robotiky252/2 Z+Zk
NMAI073Pravděpodobnost a statistika 2252/2 Z+Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NMAI042Numerická matematika252/2 Z+Zk
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 KZ

2. rok studia – vývoj počítačových her

kódPředmětKredityZSLS
NTIN061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMI011Kombinatorika a grafy 1 52/2 Z+Zk
NMAI055Matematická analýza 2 52/2 Z+Zk
NPRG035Programování v jazyce C# 52/2 Z+Zk
NPRG041Programování v C++ 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIN071Automaty a gramatiky 52/2 Z+Zk
NMAI059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR019Realtime grafika na GPU152/2 Z+Zk
NPGR038Základy vývoje počítačových her152/2 Z+Zk
NPRG038Pokročilé programování v jazyce C#252/2 Z+Zk
NPRG051Pokročilé programování v C++252/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk — zkouška pro bakaláře410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – vývoj počítačových her

kódPředmětKredityZSLS
NAIL062Výroková a predikátová logika 52/2 Z+Zk
NDBI025Databázové systémy 52/2 Z+Zk
NCGD003Programování herních mechanik252/2 Z+Zk
NCGD006Praktikum z vývoje počítačových her v limitovaném čase220/1 Z0/1 Z
NAIL028Úvod do robotiky 52/2 Z+Zk
NSWI200Operační systémy 52/2 KZ
NPGR002Digitální zpracování obrazu 43/0 Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NPGR020Geometrie pro počítačovou grafiku132/0 Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR036Počítačové vidění 52/2 Z+Zk

Požadavky znalostí ke státní závěrečné zkoušce

Některá témata studijního oboru Informatika jsou požadována ve všech specializacích, viz první část.

Pro studenty specializace Počítačová grafika, vidění a vývoj her jsou pro další okruhy 1. až 3. souvisejícími předměty NMAI055 Matematická analýza 2 a NPGR003 Základy počítačové grafiky.

1. Matematická analýza
Diferenciální a integrální počet ve více rozměrech. Riemannův integrál. Extrémy funkcí více proměnných. Metrický prostor, otevřené a uzavřené množiny, kompaktnost.

2. Základy 2D počítačové grafiky
Základy lidského vidění, barvy, jejich vnímání a reprezentace na počítači, barevné systémy RGB, CMY a HSV. HDR grafika. Průhlednost (alfa-kanál). Rastrová a vektorová grafika, příklady rastrových a vektorových formátů a jejich použití. Základy rasterizace (vykreslování tvarů do 2D rastru).

3. Základy 3D počítačové grafiky
Systémy 3D souřadnic a transformací, Skládání praktických složitějších transformací, reprezentace orientace. Projekce pro zobrazování 3D scén. Základy GPU knihovny OpenGL. Architektura GPU, formáty dat posílané do GPU, princip programování shaderů. Reprezentace 3D scén v počítači, hierarchické reprezentace, základy stínování a princip rekurzivního sledování paprsku.

Požadavky pro jednotlivá zaměření

Studenti jednotlivých zaměření se musí dále připravit na zkušební okruhy vycházející z příslušných profilových předmětů.

Požadavky pro zaměření Počítačová grafika

Pro zkušební okruhy 4. až 6. jsou souvisejícími předměty NPGR004 Fotorealistická grafika, NPGR025 Introduction to Colour Science a NPGR020 Geometrie pro počítačovou grafiku.

4. Fotorealistická grafika
Rekurzivní sledování paprsku: vlastnosti naivního algoritmu. Výpočet průsečíků paprsku s 3D scénou a jeho urychlování. Modely odrazu světla na povrchu těles: empirické a fyzikálně věrnější přístupy. Textury, modelování přírodních fenoménů, spojité šumové funkce. Anti-aliasing v paprskově založených metodách, vzorkovací algoritmy, distribuované sledování paprsku. Moderní Monte-Carlo přístupy v realistickém zobrazování.

5. Základy vědy o barvách
Fundamental causes of colour, human eye and function of its parts. Colour spaces and colour collections, gamuts, color mixing, color matching experiments. Examples of Colour ordering systems (Munsell, Pantone). Colour measurement devices. Printing technology, ICC profiles.

6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu. Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP. Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí ze snímků.

Požadavky pro zaměření Počítačové vidění

Pro zkušební okruhy 7. až 9. jsou souvisejícími předměty NPGR002 Digitální zpracování obrazu, NPGR036 Počítačové vidění a NPGR035 Strojové učení v počítačovém vidění.

7. Digitální zpracování obrazu
Vzorkování a kvantizace obrazu, Shannonova věta. Základní operace nad obrázky, histogram, změny kontrastu, redukce šumu, zvyšování ostrosti. lineární filtrace obrazu v obrazovém a spektrálním prostoru. Konvoluce a Fourierova transformace. Detekce hran a rohů. Matematické modelování degradace obrazu. Potlačování základních zkreslení obrazu (rozmazání pohybem, rozostření), inverzní a Wienerův filtr.

8. Počítačové vidění
Pořizování obrazu, vlastnosti digitálního obrazu. Matematická morfologie. Segmentace obrazu. Registrace a porovnávání obrazu. Popis plošných objektů – základní principy. Invarianty pro rozpoznávání 2D objektů. Detekce, popis a párování lokálních příznaků. Významné oblasti v obraze. Detekce a Sledování objektů, optický tok.

9. Strojové učení
Výběr a předzpracování příznaků. Bayesovská teorie rozhodování, kritérium minimální chyby. Rozhodovací stromy. Diskriminační analýza, lineární klasifikátor. Rozpoznávání objektů, klasifikátory s učitelem (k-NN, lineární, Bayes). Support Vector Machines (SVM). Shluková analýza, iterační a hierarchické metody. Hodnocení kvality klasifikace.

Požadavky pro zaměření Vývoj počítačových her

Pro zkušební okruhy 10., 11. a 6. jsou souvisejícími předměty NPGR038 Základy vývoje počítačových her, NPGR019 Realtime grafika na GPU a NPGR020 Geometrie pro počítačovou grafiku.

10. Vývoj počítačových her
2D hry: sprite-based animace, 2D kostra, parallax scrolling, dlaždicové systémy, pixel art. 3D hry: 3D scény, modely, kosterní animace, rigging. 3D rendering: shadery, stíny, částicové systémy, billboards, screenspace efekty. Zvuk: zvukové efekty, 3D zvuk, sound engine, kompozice zvuku. Návrh architektury herního kódu, návrhové vzory pro počítačové hry. Herní design: definice, historie, taxonomie hráčů. Úvod do architektury herních engine, engine Unity. Řízení vývoje počítačových her a životní cyklus herního projektu.

11. GPU grafika
Princip fungování programovatelné rasterizační pipeliny na GPU. Buffery, constant buffery, efektivní předávání dat do GPU. Textury a texturovací jednotky, funkce jednotlivých druhů shaderů. Vyšší programovací jazyky shaderů (GLSL, HLSL). Řešení osvětlení ve scéně (materiály, výpočet stínů). Stencil buffer a jeho použití. Víceprůchodový rendering, deffered shading a screen-space efekty. Realtime raytracing. GPGPU – masivně paralelní algoritmy na GPU, základy CUDA/OpenCL.

6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu. Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP. Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí ze snímků.