→ Slide 1

Einführung in die Computergrafik und Bildverarbeitung

Dr. Raphael Wimmer Sommersemester 2023

→ Slide 2

Konzept

Dieser Kurs ist ein Experiment. Manches wird gut klappen, manches weniger gut. Feedback nehme ich gerne an. Manche Details passe ich während des Semesters an.

Anstelle einer klassischen Vorlesung mit Übung gibt es:

→ Slide 3

Organisatorisches

→ Slide 4

Leistungsnachweis

→ Slide 5

Materialien

Sie erhalten von mir:

→ Slide 6

Feedback vom letzten Mal

Aufwendiger Kurs, aber sehr praktisch weswegen es auch Spaß macht und die Zeit die man dafür aufwendet auch schnell verfliegt.
Interessante Vorlesung, die mir neue Themen und Anwendungsmöglichkeiten beigebracht hat. Die Einführungen in die OpenGL und OpenCV waren spannend und mir davor nur vom hören bekannt. Die Studienleistungen ließen sich auch gut bearbeiten. Waren am Anfang etwas überfordernd (da es bei mir kaum/kein Vorwissen gab), aber ließen sich meistens doch ganz gut durcharbeiten.
Sehr interessante Vorlesung, die viel praktisches Wissen mit sich bringt
Sehr interessant, aber man muss am Ball bleiben
Die Studienleistungen waren sehr interessant und anspruchsvoll, haben aber auch Spaß gemacht. Hab mir teilweise etwas schwer getan, auch weil mir die Erfahrung mit Python gefehlt hat. Vor allem bei Modern Opengl für Python (also mit GLSL) gab es einige Schwierigkeiten, da [...] Mit OpenGL Immediate Mode war die SL jedoch mit den vorhandenen Mitteln gut zu bearbeiten. Die Aufzeichnungen der Vorlesung waren teils etwas spät. Ansonsten sehr interessante und coole Veranstaltung, bei der man auch viel selber herumprobieren durfte (v.a. bei Studienleistungen) und gut erklärte Beispiele bekommen hat.
→ Slide 7

Zeitplan

↓ Slide 8

18. April 2023 - Einführung, Überblick

Klassische frontale Vorlesung zum Einstieg.

Themen heute:

Danach eine Übung mit:

↓ Slide 9

Ausblick: 25. April 2023 (asynchron) - Wiederholung Grundlagen, Praxis Rastergrafik

→ Slide 10

Advance Organizer

(kommt noch)

→ Slide 11

Einführung Python

Material:

→ Slide 12

Python IDEs

→ Slide 13

PEP 8 - Style Guide für Python

→ Slide 14

Paketmanagement in Python

Es gibt drei verbreitete Möglichkeiten, Python-Module zu installieren:

Um für jede Anwendung separate Module zu installieren: virtual environments

↓ Slide 15

Paketmanagement durch Betriebssystem

↓ Slide 16

Paketmanagement mit pip

↓ Slide 17

Paketmanagement mit conda

↓ Slide 18

Virtual Environments

→ Slide 19

2. Mai 2023 - Grauwerttransformationen, Filter, Studienleistung 1

→ Slide 20

Studienleistung 1: Bitmap-Grafik (1)

Entwickeln Sie eine Anwendung Mini-Gimp, mit der man (destruktiv) Bilder bearbeiten kann. Bilder liegen als RGB- oder Graustufenbild vor und können mit Pillow eingelesen und geschrieben werden. Ansonsten sollen alle Bildoperationen selbst geschrieben werden.

Abgabe: Di, 16. Mai 2023 (5 Bonuspunkte - pro angefangener weiterer Woche 1 Punkt weniger)

→ Slide 21

Studienleistung 1: Bitmap-Grafik (2)

Verpflichtende Features:

→ Slide 22

Studienleistung 1: Bitmap-Grafik (3)

Wahlpflichtfeatures (3 Features):

→ Slide 23

Studienleistung 1: Bitmap-Grafik (4)

→ Slide 24

Ausblick 9. Mai - Vektorgrafik

↓ Slide 25

Voraussetzungen für Teilnahme am nächsten Termin

→ Slide 26

9. Mai - Vektorgrafik

↓ Slide 27

Einführung Abhängigkeitsgraph

Siehe https://graphit.ur.de/wiki/Courses/CGBV

↓ Slide 28

Wiederholung: Vektorgrafik / Matrixoperationen

Siehe GRIPS

→ Slide 29

16. Mai - Vektorgrafik

→ Slide 30

23. Mai - entfällt krankheitsbedingt

→ Slide 31

30. Mai - entfällt wegen Pfingstmontag

→ Slide 32

6. Juni - Wrap-Up Vektorgrafik, Studienleistung 2

↓ Slide 33

Überblick

↓ Slide 34

Graph heute

↓ Slide 35

Ziele heute

↓ Slide 36

Ausblick

→ Slide 37

Studienleistung 2: Vektor-Grafik

↓ Slide 38

Aufgabenstellung

Entwickeln Sie eine Zeichenanwendung mini-draw.py, mit der man Vektorgrafiken erstellen und bearbeiten kann. Die Funktionsweise soll gängigen Vektorgrafikprogrammen wie z.B. Inkscape ähneln. Die Anwendung soll einen tkinter.Canvas verwenden, in dem über die create_rect()-Methode einzelne Pixel gesetzt werden. Alle weiteren Zeichenoperationen sollen auf dieser Basis implementiert werden. Abgabe: Di, 20.6. 2023 (5 Bonuspunkte - pro angefangener weiterer Woche 1 Punkt weniger)

↓ Slide 39

Verpflichtende Features

↓ Slide 40

Wahlpflichtfeatures (3 Features)

→ Slide 41

3D-Grafik: Rendering-Pipeline (13.6.2023)

Folien dieses Mal als PDF in GRIPS

→ Slide 42

Gastvortrag Jakob Troidl (20.6.2023)

→ Slide 43

3D-Grafik: OpenGL (27.6.2023)

Folien in GRIPS

→ Slide 44

Studienleistung 3: 3D-Grafik

↓ Slide 45

Aufgabe 3a: 3D-Szenegraph

Entwickeln Sie eine Anwendung, die eine 3D-Welt, organisiert in einem Szenengraph, darstellt. Sie können zur Implementierung den OpenGL Immediate Mode verwenden.

Verpflichtende Features

Wahlpflichtfeatures (3 Features)

↓ Slide 46

Aufgabe 3b: GLSL

Entwickeln Sie eine Anwendung, die ein non-triviales 3D-Objekt darstellt (z.B. eine Vase). Verwenden Sie zur Implementierung GLSL in Python.

Verpflichtende Features

Wahlpflichtfeatures: keine

↓ Slide 47

Regeln

→ Slide 48

3D-Grafik: SDFs und Shader (4.7.2023)

↓ Slide 49

Heute

↓ Slide 50

Graph heute

↓ Slide 51

Signed Distance Functions

↓ Slide 52

ShaderToy

↓ Slide 53

Fragment Shaders

↓ Slide 54

Vertex Shaders

↓ Slide 55

Beispiele Shading

↓ Slide 56

Was wir nicht mehr behandeln

→ Slide 57

Ausblick 11. Juli 2023