Spickzettel (A4, 2 Seiten)
Maximal verdichtete Klausurhilfe Visual Computing: Formeln, Fakten und Fallen aus Kap. 5-12. Fachbegriffe mit English gloss, KaTeX fuer Kernformeln.
Seite 1
Transformationen (Kap. 5)
- Punkt = Spaltenvektor (column vector), homogene Koordinate (homogeneous coord.) . Rotation/Skalierung wirken nur um den Ursprung.
- Verkettung ist nicht kommutativ (non-commutative): . Zuerst angewandte Transformation steht rechts (direkt an ). Code-Reihenfolge ist umgekehrt zur Matrixreihenfolge.
- Die 5 pruefungsrelevanten 4x4-Matrizen:
- . Merkfalle: bei steht oben rechts, unten links (spiegelverkehrt zu ).
- Referenzpunkt (reference point) : .
- Homogenisierung (perspective divide): , .
- Szenegraph (scene graph): Kind erbt Eltern-Transformation; Wurzel steht ganz links: .
- Falle: Skalierung eines Objekts abseits des Ursprungs skaliert auch den Abstand (Position aendert sich mit).
Kamera und Projektion (Kap. 7)
- Idee: nicht Kamera, sondern Szene bewegen. Ziel: Kamera im Ursprung, Blick entlang (rechtshaendig).
- View-Matrix (view matrix): . Rotationsteil = Kamera-Achsen als Zeilen in Weltkoordinaten; Translation um .
lookAt(c, a, u): Kamerazentrum (camera center), Betrachtungspunkt (look-at/target), up-Vektor (Rotation um Blickachse/Roll).- Perspektive aus Strahlensatz (intercept theorem): (analog ). Division durch = perspektivische Verkleinerung.
- Orthografisch (orthographic): parallele Strahlen, Quader, keine Verkleinerung. Perspektivisch (perspective): Fluchtpunkt (vanishing point), Frustum (Pyramidenstumpf).
glm::frustum(l,r,top,bottom,n,f)-> auch asymmetrisch.glm::perspective(theta, aspect, n, f)-> nur symmetrisch. Falle: frustum-Reihenfolge top vor bottom (anders alsglOrthobottom vor top).- Nicht klausurrelevant: die perspektivische Projektionsmatrix selbst; relevant ist ihre Wirkung (x,y perspektivisch, z nichtlinear -> mehr Praezision nahe der Kamera, z-fighting bei fernem far/nahem near).
Rendering-Pipeline und Interpolation (Kap. 8)
- Bloecke: Vertex Processor Rasterizer Fragment Processor Output Merging.
- 4 Shaderstufen: Vertex (Pflicht), Tesselation (opt.), Geometry (opt.), Fragment (Pflicht). Optionale = Tradeoff Speicher vs. Performance.
- Fragment Pixel: Fragment ist Vorstufe; z-Buffer verwirft, Transparenz kann mehrere Fragmente je Pixel liefern.
- Raeume: Local World Camera Clip NDC Screen. Bis NDC aufloesungsunabhaengig; Viewport macht geraeteabhaengig.
- NDC-Wuerfel . Grenze: Local->Clip im Vertex-Shader; ab Homogenisierung/NDC automatisch auf GPU.
- Viewport: .
- Lineare Interpolation (Kante, 1D): . Falle: Gewicht von ist , nicht . Bilinear = Flaechen (2D).
- Baryzentrisch im Dreieck: , , . Flaeche .
- Tiefentest (depth test):
glEnable(GL_DEPTH_TEST),glDepthFunc(GL_LESS)-> kleinerer z gewinnt,glClearDepth(1.0). Ohne Tiefentest: Painter's Algorithm (reihenfolgeabhaengig, versagt bei sich schneidenden Polygonen). z-Buffer: pro Fragment min. z, kein globales Sortieren.
Shader-Kette (Kap. 6/7/9)
- Eine Zeile:
gl_Position = projection * view * model * vec4(vertex,1.0);wirkt rechts nach links (model zuerst, projection zuletzt). Output = homogen, vor perspektivischer Division. #version 330,layout(location=N) in,uniform,in/out(VS-outkommt interpoliert als FS-inan).
Seite 2
Phong-Beleuchtung (Kap. 9)
Vektoren am Punkt P, alle normiert: Normale, zur Lichtquelle, reflektiert, zur Kamera. diffus, spekular.
- Diffus (Lambert): . Spekular: ; grosses = kleiner, harter Glanzpunkt (shininess).
- Ambient ist richtungsunabhaengig (kein ), steht ausserhalb der Summe. Emission unabhaengig von Lichtquellen.
- Farbe = komponentenweise (Hadamard) Material Licht, kein Skalarprodukt.
- Lambert-Begruendung: gleiche Photonenzahl auf projizierte Flaeche (nicht "weniger Licht").
- Normalmatrix (normal matrix): =
transpose(inverse(view*model))(noetig bei nicht-uniformer Skalierung). Herleitung nicht klausurrelevant, Anwendung schon. - Falle Phong-Shading Phong-Reflexionsmodell: Modell = was (ambient+diffus+spekular); Shading = wo/wie oft: Flat (Flaechennormale), Gouraud (Eckennormale, bilinear interp., Glanzlicht in Dreiecksmitte geht verloren), Phong (Pixelnormale, teuer, korrekte Highlights).
- Normal Mapping: nur Normalen (als RGB-Textur) angepasst, Geometrie bleibt flach.
- GLSL:
N=normalize(normal); L=normalize(lightDir);(interpolierte Normalen sind nicht mehr Einheitsvektoren ->normalizeim Fragment-Shader).reflect(-L,N)(builtin erwartet einfallenden Vektor).viewDir=-P.xyz(Kamera im View-Space im Ursprung).cosBetak=pow(max(0.0,dot(R,V)),shininess). - Lichtquellen: directional (parallel), point (Punkt, alle Richtungen), spotlight (Winkel), Lichtabschwaechung (attenuation) mit Entfernung.
Farbraeume (Kap. 3/10)
- Hardwareorientiert: RGB, RGBA, CMY, CMYK. Wahrnehmungsorientiert: HSV, YCbCr, CIE XYZ, CIELab (trennen Chrominanz/Helligkeit).
- RGB additiv (Licht/Display, R+G+B=Weiss); CMY subtraktiv (Druck/Pigment). . CMYK-Schwarz . Unbuntgerade = Grau.
- HSV aus RGB, Werte in : ; (0 falls ); = Farbwinkel: Rot, Gruen, Blau.
- (Grau); . Kanalbild-Leseregel: weiss=hoher Wert (max), schwarz=niedrig (min). H-Kanal: harter Sprung im Rot.
- Luma/Grauwert-Gewichtung (exakt 0,299/0,587/0,114, Koeffizienten nicht klausurrelevant). YCbCr: Cb=Blau-Gelb, Cr=Rot-Gruen; JPEG/MPEG; 4:1:1-Subsampling = 50% Kompression ( Werte).
- CIELab: L*=Helligkeit, a*=Rot-Gruen, b*=Gelb-Blau; geraeteneutral, wahrnehmungslinear (Distanz Farbunterschied). Gamut: CIE RGB(HSV,YCbCr) CMY.
Punktoperatoren (Kap. 11)
- Punktoperator: neuer Grauwert nur aus eigenem Pixel (keine Nachbarn). Lineare Grauwerttransf. (LGT): .
- Kontrastspreizung : .
- gg'-Diagramm: oberhalb Diagonale=heller, unterhalb=dunkler, negative Steigung=invertiert, Steigung =kontrastaermer, =kontrastreicher.
- Inversion . Gamma: ; Exponent ist . hellt auf, dunkelt ab.
- Verfaelschung: zwei Eingangswerte auf denselben Ausgangswert = Informationsverlust. Kontrastspreizung meist verfaelschungsfrei; Gamma verfaelscht (nicht in sensiblen Daten). Falle: (im Bild) vs. (darstellbar); Clipping auf .
- Kontrast = Spannweite ; Dynamik = Anzahl verschiedener Grauwerte; Helligkeit = Mittelwert. Histogramm ist kein Mass fuer Bildinhalt.
Lokale Operatoren (Kap. 12)
Faltung (convolution) 3x3: . Kernelgroesse ungerade (eindeutiges Zentrum). Zero-Padding am Rand (z.B. ).
- Gauss 5x5 Normierung . Differenz-/Sobel-Rueckabbildung: (Bereich ).
-
- Ableitung: Differenz , Sobel -> Peak an Kante; Sobel hat Pufferzeile (rauschrobust, mehrere Pixel breit) vs. Differenz (1 Pixel, rauschanfaellig).
-
- Ableitung: Laplace , isotrop, Nulldurchgang an Kante (zero crossing). Sharpen = inv. Laplace; -> Summe 1 (helligkeitserhaltend).
- Rangordnung (rank-order, nicht-linear, Strukturelement): sortiere . Median (Impulsrauschen weg, Kanten scharf), Dilatation =max (hell waechst), Erosion =min (dunkel waechst). Opening = Erosion dann Dilatation (Rauschen weg); Closing = Dilatation dann Erosion (Luecken zu); Reihenfolge ergebnisrelevant.
- ZHK (Zusammenhangskomponenten / connected components): N4 (4 direkte Nachbarn, kreuzfoermig) vs. N8 (+Diagonalen). N8 verschmilzt diagonal beruehrende Pixel -> gleich viele oder weniger Komponenten als N4.
- Zentrale Regel: Vorder- und Hintergrund mit entgegengesetzter Nachbarschaft (VG N4 HG N8, und umgekehrt), sonst topologisch inkonsistent. Flood Fill = rekursives Fluten, jede ZHK bekommt eine Marke.
- Hough-Transformation braucht 1 Pixel breite Kanten (sonst doppelte Geraden); Canny duennt aus.
Prio-Tipp: Groesste Punktebringer sind (1) Phong-Formel + GLSL + Shading-Verfahren, (2) HSV-Umrechnung und Farbmodell-Zuordnung, (3) LGT/Kontrastspreizung rechnen und (4) Faltungskerne + ZHK-Zaehlung (N4/N8). Transformationsmatrizen (-Vorzeichen!) und die Kette sicher parat haben.