→ Slide 1

Einführung in die Computergrafik und Bildverarbeitung

Dr. Raphael Wimmer Sommersemester 2024

→ Slide 2

Konzept

Anstelle einer klassischen Vorlesung mit Übung gibt es:

→ Slide 3

Organisatorisches

→ Slide 4

Leistungsnachweis

→ Slide 5

Materialien

Sie erhalten von mir:

→ Slide 6

Feedback der letzten beiden Male

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. [...] 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

16. April 2024 - Einführung, Überblick

Klassische frontale Vorlesung zum Einstieg.

Themen heute:

Danach eine Übung mit:

↓ Slide 9

Ausblick: 23. April 2024 - Wiederholung Grundlagen, Praxis Rastergrafik

→ Slide 10

Wichtige Veranstaltungen diese Woche

→ Slide 11

Advance Organizer

(kommt noch)

→ Slide 12

Einführung Python

Material:

↓ Slide 13

Voraussetzungen für Teilnahme am nächsten Termin

→ Slide 14

GraphIT

https://graphit.ur.de/wiki/Courses/CGBV_SS24

↓ Slide 15

Graph heute

→ Slide 16

Überblick: 23. April 2024 - Wiederholung Grundlagen, Praxis Rastergrafik

↓ Slide 17

Graph heute

→ Slide 18

Python IDEs

→ Slide 19

PEP 8 - Style Guide für Python

→ Slide 20

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 21

Paketmanagement durch Betriebssystem

↓ Slide 22

Paketmanagement mit pip

↓ Slide 23

Paketmanagement mit conda

↓ Slide 24

Virtual Environments

→ Slide 25

30. April 2024 - Bildfilter, Studienleistung 1

↓ Slide 26

Unser Graph heute

↓ Slide 27

Wiederholung: Bildfilter

→ Slide 28

Studienleistung 1: Bitmap-Grafik (1)

Entwickeln Sie eine Anwendung filtertool, 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, 14. Mai 2024, 23:59 Uhr (5 Bonuspunkte - pro angefangener weiterer Woche 1 Punkt weniger)

→ Slide 29

Studienleistung 1: Bitmap-Grafik (2)

Verpflichtende Features:

→ Slide 30

Studienleistung 1: Bitmap-Grafik (3)

Wahlpflichtfeatures (3 Features):

→ Slide 31

Studienleistung 1: Bitmap-Grafik (4)

→ Slide 32

7. Mai - Image Filters, Tk-GUIs

↓ Slide 33

Überblick

↓ Slide 34

Kommandozeilenparameter parsen

python3 app.py --mode simple -a file.txt

Mehrere Möglichkeiten in Python:

→ Slide 35

14. Mai 2024 - Vektorgrafik I

↓ Slide 36

Überblick

→ Slide 37

28. Mai 2024 - Vektorgrafik II

↓ Slide 38

Überblick

↓ Slide 39

Warum 259

→ Slide 40

Studienleistung 2: Vektor-Grafik

↓ Slide 41

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, 18.6. 2024 (5 Bonuspunkte - pro angefangener weiterer Woche 1 Punkt weniger)

↓ Slide 42

Verpflichtende Features

(Wenn nichts vorgegeben ist, einfach eine sinnvolle Lösung wählen)

↓ Slide 43

Wahlpflichtfeatures (3 Features)

→ Slide 44

4. Juni 2024 - Vektorgrafik

↓ Slide 45

Themen heute

↓ Slide 46

Unser Graph heute

↓ Slide 47

Signed Distance Functions

  • Kombination von individuellen SDFs über Boolsche Operationen:
  • ↓ Slide 48

    Signed Distance Functions: Übung

    Eure Aufgabe jetzt zu zweit:

    → Slide 49

    11. Juni 2024 - Einführung 3D-Grafik, OpenGL, Szenengraphen

    ↓ Slide 50

    Themen heute

    ↓ Slide 51

    Unser Graph heute

    ↓ Slide 52

    Rückblick Grundlagen 3D-Grafik

    ↓ Slide 53

    Eine simple 3D-Engine

    ↓ Slide 54

    OpenGL

    ↓ Slide 55

    Immediate Mode vs. Retained Mode

    ↓ Slide 56

    OpenGL Basics

    ↓ Slide 57

    Beispiel: Immediate Mode

    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1.0, 1.0, 1.0)
    glLoadIdentity()
    gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
    glScalef(1.0, 2.0, 1.0)
    glRotatef(45, 0, 1, 0)
    glBegin(GL_QUADS)
    glVertex3f(0.0, 0.0, 0.0)
    glVertex3f(0.0, 1.0, 0.0)
    glVertex3f(0.0, 1.0, 1.0)
    glVertex3f(0.0, 0.0, 1.0)
    glEnd()
    glFlush()
    ↓ Slide 58

    Hands-On: OpenGL zum Laufen bringen

    → Jupyter-Notebook simple_cube_immediate_mode.ipynb

    ↓ Slide 59

    Nächste Schritte

    → Slide 60

    18. Juni 2024 - GLSL, Fragment-Shader, Vertex-Shader

    ↓ Slide 61

    Themen heute

    ↓ Slide 62

    Recap: Signed Distance Functions

    ↓ Slide 63

    GLSL

    ↓ Slide 64

    ShaderToy

    ↓ Slide 65

    Fragment Shaders

    ↓ Slide 66

    Vertex Shaders

    ↓ Slide 67

    Geometry Shaders

    ↓ Slide 68

    Eure Aufgaben

    ↓ Slide 69

    Beispiele Shading in GLSL

    ↓ Slide 70

    Shaders in PyOpenGL

    gemeinsame Analyse von https://github.com/nvalis/DemoTool/

    ↓ Slide 71
    → Slide 72

    25. Juni 2024 - 3D-Grafik III - Raytracing

    ↓ Slide 73

    Themen heute

    ↓ Slide 74

    Weiterführende Links

    → Slide 75

    Studienleistung 3: 3D-Grafik

    ↓ Slide 76

    Aufgabe 3a: 3D-Welt

    Entwickeln Sie eine Anwendung, die eine 3D-Welt basierend auf Meshes darstellt. Sie können zur Implementierung den OpenGL Immediate Mode oder das DemoTool verwenden.

    Verpflichtende Features

    Wahlpflichtfeatures (3 Features)

    ↓ Slide 77

    Aufgabe 3b: WebGL / ShaderToy

    Entwickeln Sie einen Shader in ShaderToy, der eine hübsche Animation erzeugt

    Verpflichtende Features

    Wahlpflichtfeatures: keine

    ↓ Slide 78

    Aufgabe 3c: Raytracer

    Erweitern Sie das Raytracing-Notebook um eines der folgenden Features:

    Verpflichtende Features

    ↓ Slide 79

    Regeln

    → Slide 80

    2. Juli 2024 - Grundlagen Computer Vision

    ↓ Slide 81

    Themen heute

    ↓ Slide 82
    → Slide 83

    9. Juli 2024 - Praxis Computer Vision

    ↓ Slide 84

    Themen heute

    → Slide 85

    16. Juli 2024 - Zusammenfassung, Studienleistung, Abschluss

    ↓ Slide 86

    Themen heute

    ↓ Slide 87

    Zusammenfassung CGBV

    https://graphit.ur.de/w/images/thumb/Tafel-smaller.jpg/1170px-Tafel-smaller.jpg

    ↓ Slide 88

    Klausur

    ↓ Slide 89

    Material / Links

    → Slide 90

    Studienleistung 4: Computer-Vision

    ↓ Slide 91

    Aufgabenstellung (1)

    ↓ Slide 92

    Aufgabenstellung (2)

    ↓ Slide 93

    Verpflichtende Features

    (Wenn nichts vorgegeben ist, einfach eine sinnvolle Lösung wählen)

    ↓ Slide 94

    Wahlpflichtfeatures (1 Feature)