Kapitel 1: Einführung
Visual Computing gliedert sich in Computergrafik (Synthese: algorithmisches Einfärben von Pixeln) und Bildverarbeitung (Analyse: algorithmisches Auswerten von Pixeln). Verbindendes Element ist das Pixel. Rendering geschieht per Rasterisierung oder Raytracing; die Methoden der Bildanalyse reichen von einfachen Faltungen (Kernel bzw. Filter) bis hin zu Convolutional Neural Networks (CNN, Deep Learning).
Überblick
Diese Vorlesung "Visual Computing" behandelt grafische Objekte und deren Programmierung. Der Kern lautet: Es geht "(fast) immer um Pixel". Ein Pixel (pixel, picture element) ist das kleinste Bildelement und wird durch seine RGB-Anteile beschrieben.
Roter Faden:
- Visual Computing (visual computing) ist der Oberbegriff fuer Computergrafik und Bildverarbeitung.
- Computergrafik / Bildsynthese (computer graphics / image synthesis): Richtung Bildbeschreibung -> Bild, also algorithmisches Einfaerben der Pixel.
- Bildverarbeitung / Bildanalyse (image processing / image analysis): Richtung (reales) Bild -> Beschreibung des Bildinhalts, also algorithmisches Analysieren der Pixel. Umgekehrte Richtung zur Computergrafik.
- Zwei Render-Wege: Rasterisierung (rasterization) und Raytracing (ray tracing).
- Bildanalyse: von Faltungen (convolutions) ueber Faltungsmatrizen (kernels) bis zu Convolutional Neural Networks (CNN).
Praktisch teilt sich die Vorlesung in zwei Werkzeugketten: (1) Computergrafik mit OpenGL / C++ / GLSL-Shadern und (2) Bildverarbeitung mit OpenCV in Python.
Hinweis (nicht klausurrelevant / spaeteres Kapitel): Die Farbmodelle RGB und HSV werden in diesem Foliensatz NICHT im Detail behandelt. Das einzige konkrete Farbbeispiel ist die RGB-Pixel-Darstellung des Smileys (siehe Beispiel 1). Die ausfuehrliche RGB/HSV-Theorie folgt in einem spaeteren Kapitel ("Visualisierungstechniken: Farben" bzw. "Bildverarbeitung: Farbmodelle").
Synthese vs. Analyse
Die zentrale Grafik der Einfuehrung zeigt zwei Kaesten: links die Bildbeschreibung (image description, Modellierung/Beschreibung des Bildinhalts), rechts das Bild (realistisches bzw. reales Bild). Zwei Pfeile verbinden sie:
- Pfeil nach rechts: Computergrafik (Synthese) = algorithmisches Einfaerben der Pixel (von Beschreibung zu Bild).
- Pfeil nach links: Bildverarbeitung (Analyse) = algorithmisches Analysieren der Pixel (von Bild zu Beschreibung).
Wichtige Abgrenzung: Bildbearbeitung (image editing) ist einfache Manipulation (z. B. ein Bild heller machen), waehrend Bildverarbeitung (image processing) Information aus einem Bild extrahiert (Analyse).
Computergrafik: Modellierung des Bildinhaltes
Die Modellierung des Bildinhaltes (scene modeling) legt die Bestandteile einer 3D-Szene fest:
- dreidimensionale Geometrien,
- Lichtquellen,
- Texturen,
- eine virtuelle Kamera (virtual camera).
Die virtuelle Kamera definiert:
- viewpoint = Augpunkt / Blickpunkt / Projektionszentrum,
- viewing frustum = pyramidenstumpffoermiger sichtbarer Raum (Sichtvolumen),
- viewplane = Bildebene, auf der die Szene abgebildet wird.
Raeumliche Anordnung: viewpoint -> viewplane -> frustum -> Szene. Ziel: die Pixel der viewplane anhand der aufgenommenen Szene einfaerben.
Dreiecksgitter
Die Formen der Objekte werden durch dreidimensionale Dreiecksgitter (triangle mesh) angenaehert (approximiert). Grundbaustein aller grafischen Objekte: Punkte, die mit Kanten zu Dreiecken verbunden werden. Je feiner das Gitter, desto glatter die Annaeherung (z. B. eine Drahtgitter-Kugel).
Rendering-Wege: Rasterisierung und Raytracing
Vom Dreiecksgitter zur gerenderten Darstellung fuehren zwei Wege.
Rasterisierung (rasterization)
Vertex-basiert / objekt-basiert. Zwei Schritte:
- Projektion: Eckpunkte des Dreiecks (vertices) auf Pixel der Bildebene (viewplane) abbilden. Ein 3D-Dreieck wird ueber ein "center of projection" auf ein 2D-Dreieck auf dem "Screen (pixels)" projiziert.
- Fuellen (fill): anhand der Pixel der Eckpunkte die restlichen Dreieckspixel bestimmen und einfaerben.
Nebeneffekt: Aliasing (aliasing, Treppeneffekt) an schraegen Kanten.
Raytracing (ray tracing)
Pixel-/bildbasiert. Statt von den Eckpunkten aus zu rendern, verfolgt man Sehstrahlen (view rays), die von der virtuellen Kamera ausgehen, durch die Bildebene in die Szene. Trifft ein View Ray ein Szenenobjekt, wird ein Shadow Ray (Schattenstrahl) zur Lichtquelle geschickt, um Schatten zu bestimmen.
Path Tracing
Path Tracing ist eine Variante des Ray Tracing.
- Vorteile: realistische Spiegelungen (reflections), indirekte Beleuchtung (indirect illumination).
- Nachteile: leichte, verfahrensbedingte Unschaerfe (Sampling-Rauschen) und hoher Hardware-Anspruch.
- Beispiel: NVIDIA GeForce RTX / Cyberpunk 2077.
Merksatz: Rasterisierung geht von den Objekt-Eckpunkten aus (vorwaerts, Objekt -> Pixel); Raytracing geht vom Auge/Pixel aus (rueckwaerts, Pixel -> Szene). Raytracing/Path Tracing liefert physikalisch realistischere Beleuchtung, ist aber rechenintensiver.
Computergrafik-Algorithmen
Umfassen: Erzeugung von Geometrien, "Interaktion" mit Geometrien, Visualisierung (inkl. Beleuchtungsberechnung, Texturen) und Shader-Technologie. In der Vorlesung: OpenGL v3.3+, Shader-Sprache GLSL (OpenGL Shading Language).
Bildverarbeitung: Faltungen
Die einfachste Moeglichkeit, Bilder zu analysieren, ist die Faltung (convolution). Eine kleine Matrix (Filter / Kernel / Faltungsmatrix, convolution matrix) wird ueber das Bild geschoben; je nach Kernel entstehen Effekte wie Kantenerkennung, Schaerfen oder Weichzeichnen.
Formal (2D-Faltung):
- = Ausgabepixel (output pixel)
- = Eingabebild (input image)
- = Faltungskern (kernel), hier
Normierungsfaktoren wie (Box blur) oder (Gaussian blur) sorgen dafuer, dass die Kernel-Summe 1 ergibt und die Bildhelligkeit erhalten bleibt.
Reale Anwendungsbeispiele: Kratzer auf einem Carbonfaserteppich erkennen (Defekt-Segmentierung), Bakterienstaemme unter dem Mikroskop zaehlen.
Faltungsmatrizen (Kernel-Tabelle, sehr klausurrelevant)
| Operation | Filter (Kernel) | Wirkung |
|---|---|---|
| Identity | Original unveraendert | |
| Edge detection (Variante 1) | Kantenerkennung | |
| Edge detection (Variante 2, Laplace) | Kantenerkennung | |
| Edge detection (Variante 3, Laplace) | Kantenerkennung | |
| Sharpen | Schaerfen | |
| Box blur | Weichzeichnen (normalisiert) | |
| Gaussian blur | Weichzeichnen (Naeherung) |
Merke: Die Summe der Blur-Kernel ist 1 (Helligkeitserhalt). Die Laplace-artigen Kantenfilter ("-4"- und "8"-Kernel) haben Nachbargewichte mit negativem Vorzeichen und eine Gesamtsumme von 0; sie heben Kanten hervor und liefern in homogenen Flaechen ~0.
Convolutional Neural Networks (CNN)
Ein Convolutional Neural Network (CNN, auch ConvNet) ist ein Netzwerk aus gelernten Faltungsmatrizen. Es erkennt komplexe Objekte in Bild/Video (Objekterkennung, z. B. mehrere Objekte gleichzeitig samt Wahrscheinlichkeit: car 1.000, horse 0.993, person 0.992, ...).
Architektur (ConvNet)
Pipeline von links nach rechts:
Eingabebild
-> Convolution + ReLU -> Pooling \
-> Convolution + ReLU -> Pooling } Feature Extraction from Image
-> Fully Connected -> Fully Connected \
-> Output Predictions } Classification
(z. B. Dog 0 / Cat 0 / Boat 1 / Bird 0)
- Feature Extraction (Merkmalsextraktion): der Convolution/Pooling-Teil.
- Classification (Klassifikation): der Fully-Connected-Teil.
- ReLU = Aktivierungsfunktion (activation function).
- Pooling = Verkleinerung / Abstraktion (Unterabtastung).
Durch die Faltungsschichten werden Eingabebilder schrittweise in eine abstrakte Beschreibung ueberfuehrt; aehnliche Bilder haben aehnliche abstrakte Beschreibungen. CNNs funktionieren auch fuer 3D-Objekte (z. B. 3D-Net Verkehrsueberwachung).
CNN-Fehler (loss)
- = Gesamtfehler des Netzes (summierter quadratischer Fehler, sum of squared errors)
- = Sollwert / gewuenschte Ausgabe (ground-truth label, z. B. Boat = 1)
- = tatsaechliche Ausgabe des Netzes (prediction)
- = Summe ueber alle Ausgabeneuronen
- Der Faktor vereinfacht die Ableitung beim Training (Backpropagation), da beim Ableiten von der Faktor 2 wegfaellt.
Worked Examples
Beispiel 1: RGB-Pixel lesen (Smiley)
- Gegeben: Pixel mit R 90 %, G 90 %, B 0 %.
- Schritt 1: RGB ist additiv - fehlendes Blau (0 %) heisst, nur Rot und Gruen leuchten.
- Schritt 2: Rot + Gruen (in gleicher, hoher Intensitaet) ergibt additiv Gelb.
- Ergebnis: Das Pixel ist gelb.
Analog aus dem Smiley-Beispiel: ergibt (helles) Grau; waere Schwarz, waere Weiss. Merksatz: bei RGB entsteht Gelb aus Rot + Gruen.
Beispiel 2: Faltung anwenden (Kantenerkennung)
- Ziel: Kanten in einem Graustufenbild finden.
- Schritt 1: Kernel waehlen, z. B. Laplace .
- Schritt 2: Kernel ueber jedes Pixel schieben, elementweise mit der -Nachbarschaft multiplizieren und aufsummieren (Faltungsformel oben).
- Schritt 3: In homogenen Flaechen ist die Summe ~0 (dunkel), an Kanten stark positiv/negativ (hell) -> Kanten treten hervor.
- Alternative Weichzeichnung: Box blur Einsen-Matrix verwenden (mittelt die Nachbarschaft, Helligkeit bleibt erhalten, da Kernel-Summe = 1).
Prüfungsrelevanz
- Abgrenzung Computergrafik (Synthese) vs. Bildverarbeitung (Analyse) samt Richtung (Beschreibung <-> Bild) und Definition "algorithmisches Einfaerben/Analysieren der Pixel".
- Rasterisierung vs. Raytracing: Prinzip, wer von wo ausgeht (Objekt-Eckpunkte vs. Kamera-Sehstrahlen); Aliasing bei Rasterisierung; Shadow Rays bei Raytracing.
- Faltungsmatrizen: Kernel zuordnen (Identity, Edge detection, Sharpen, Box blur, Gaussian blur) und ihre Wirkung erklaeren; Normierung (Summe = 1) verstehen.
- CNN-Architektur: Reihenfolge Convolution+ReLU / Pooling / Fully Connected; Zweiteilung Feature Extraction vs. Classification; Fehlerformel.
Typische Fehler
- Synthese und Analyse (bzw. deren Richtungen) verwechseln.
- Glauben, Raytracing gehe von den Objekt-Eckpunkten aus - falsch: die Strahlen gehen von der Kamera aus (Rasterisierung ist eckpunkt-/objektbasiert).
- Blur-Kernel-Normierung vergessen (Bild wird zu hell/dunkel, wenn Kernel-Summe != 1).
- Reihenfolge im CNN vertauschen oder Pooling/Convolution verwechseln.
Glossar
| Deutsch | English |
|---|---|
| Computergrafik | computer graphics |
| Bildsynthese / Synthese | image synthesis |
| Bildverarbeitung / Bildanalyse | image processing / image analysis |
| Bildbearbeitung | image editing |
| Pixel | pixel (picture element) |
| Bildbeschreibung | image description |
| Modellierung des Bildinhalts | scene modeling |
| virtuelle Kamera | virtual camera |
| Augpunkt / Blickpunkt | viewpoint |
| Sichtvolumen / sichtbarer Bereich | viewing frustum |
| Bildebene | viewplane (image plane) |
| Dreiecksgitter | triangle mesh |
| Eckpunkt | vertex (Plural: vertices) |
| Rastergrafik / Rasterisierung | raster graphics / rasterization |
| Treppeneffekt | aliasing |
| Raytracing | ray tracing |
| Sehstrahl | view ray |
| Schattenstrahl | shadow ray |
| Lichtquelle | light source |
| Path Tracing | path tracing |
| Spiegelung | reflection |
| indirekte Beleuchtung | indirect illumination |
| Shader | shader (GLSL) |
| Faltung | convolution |
| Faltungsmatrix / Faltungskern | convolution matrix / kernel / filter |
| Kantenerkennung | edge detection |
| Schaerfen | sharpen |
| Weichzeichnen / Unschaerfe | blur (box blur, Gaussian blur) |
| Faltungsneuronales Netz | Convolutional Neural Network (CNN / ConvNet) |
| Merkmalsextraktion | feature extraction |
| Klassifikation | classification |
| Aktivierungsfunktion | activation function (ReLU) |
| Buendelung / Unterabtastung | pooling |
| vollverknuepfte Schicht | fully connected layer |