Verdeckungsrechnung 2 Ladies & gentleman The title of my talk is :

Slides:



Advertisements
Ähnliche Präsentationen
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Advertisements

Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
• • • • • 3.2 Die projektive Erweiterung des E³
Das LCA – Problem in Suffixbäumen
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Kollisionen erkennen Kollisions- und Schnittpunkttests auf Dreieckbasis Kollisions- und Schnittpunkttests auf Viereckbasis Einsatz von achsenausgerichteten.
Search and Intersection
Graphische Datenverarbeitung IV Dr. Markus Heitz.
Gliederung Motivation / Grundlagen Sortierverfahren
4. Sichtbarkeitsverfahren
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Geometrisches Divide and Conquer
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Java3d „Licht und Material“
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Displacement Mapping Dynamische Generierung detaillierter Geometrien
Special Effects Realistischeres Rendern einer Scene.
Theorie und Praxis geometrischer Algorithmen
BSP Binary Space Partitioning
Tetraederzerlegung Ina Ehmann Tetraederzerlegung.
FHP - Fachbereich Bauingenieurwesen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
Collision Detection.
4.1 Farbmodelle Farbe ist ein wesentlicher Bestandteil realistischer Computer- grafik. Dieses Unterkapitel beschreibt die quantitativen Aspekte von Farbe,
Don`t make me think! A Common Sense Approach to Web Usability
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
What do you see? Looks like President Clinton and Vice President Gore, right? Wrong... It's Clinton's face twice, with two different haircuts.
Computergraphische Visualisierungs- verfahren für 3D-Stadtmodelle
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Geometrie : Rekonstruktion
Medizinische Visualisierung
Beleuchtung, inkl. Schatten, Reflexionen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Geometric Representation
Die Fragen Wörter Wer? Was? Wann?.
Multimedia und Virtual Reality Vorlesung am Martin Kurze Multimedia in 3D.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Binärbäume.
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Spärliche Kodierung von Videos natürlicher Szenen Vortragender: Christian Fischer.
Erkennung von Fassaden
Seminar im Fach Geoinformation IV
Diskrete Mathematik II
DG9 - Angittern Regelmäßige quadratische Pyramide, Grundfläche in
Punkt-in-Landkarte II
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
Befehle, Anweisungen, Vorschläge, und Wünsche
- moodle – a internet based learning platform
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Verdeckungsrechnung 2 Ladies & gentleman The title of my talk is : This work was done in collaboration with Volker Blanz and at the MPI bla bla… The paper summarizes our work of the last 3 or 4 years on the analysis and synthesis of images of human faces. For those who had the chance to hear the one hour tutorial given by Volker on Tuesday, I might not be able to add much new information, However, for all the other I hope I can change their view on face processing in images. So what are we after?

Objektbezogen versus Bildbezogen Eine Szene bestehe aus n Objekten (Dreiecke). A) für alle Objekte n { bestimme alle sichtbaren Teile; zeichne die sichtbaren Teile; } B) für jeden Bildpunkt p { bestimme das zum Beobachter nächste Objekt; zeichne den Bildpunkt; } etwa n·n Operationen etwa p · n Operationen

Letzte Vorlesung Back-face-Culling Min/Max Test Painters-Algorithm Z-Buffer Scan-Line-Algorithm (Watkins) A-Buffer

Was heißt schon effizient?

Was heißt schon effizient? Es muß ganz klar unterschieden werden: Wird eine Szene nur einmal gerendert, oder müssen permanent neue Ansichten der gleichen Szene erzeugt werden. Bisherige Überlegungen (letzte Vorlesung) haben mehrmaliges Rendern nicht berücksichtigt.

Ein idealer Algorithmus müßte ...? A) verdeckte Teile schnell aussortieren. B) die zeitliche und räumliche Kohärenz nutzen. z.B. Z-Buffer: A - - - B + + Wir benötigen eine Repräsentation der räumlichen Organisation von Szenen!

Eine Motivation: Rendern durch „Ray Casting“ Die Farbe eines jeden Pixels in der Bildebene ist hängt von der Abstrahlung der sichtbaren Oberfläche ab.

„Ray Casting“ Für jeden Abtastpunkt: 1. Konstruiere Strahl vom Auge durch die Bildebene. 2. Suche die vorderste Fläche die der Strahl trifft. 3. Berechne die Farbe. Zwei Probleme: 1. Wenn viele Objekte ( z.B. Urwald, Haare... ) vorhanden sind, kann die Verdeckungsrechnung sehr aufwändig sein! 2. Bei globalen Beleuchtungsmodellen müssen die Strahlen weiterverfolgt werden (Ray Tracing).

„Ray Casting“ Einfache Implementierung: Image RayCast ( Camera camera, Scene scene, int wdth, int height) { Image image = New Image(width , heigth) for (int i = 0; i < width; i++) { for (int j = 0; j < heigth; j++) { Ray ray = ConstructRayThroughPixel(camera, i,j ); Intersection hit = FindIntersection(ray,scene); image[i][j] = GetColor(hit); } return image;

Strahl - Szene - Schnittpunkt Suche den vordersten Schnittpunkt mit allen Objekten ( Dreiecke ) Intersection FindIntersection ( Ray ray, Scene scene) { min_t = infinity; min_primitive = Null; for each primitive in scene { t = Intersect(ray, primitive); if ( t < min_t ) then { min_primitive = primitive; min_t = t; } return Intersection(min_t, min_primitive); A E C D B F

Strahl - Szene - Schnittpunkt Schnittpunkt mit geometrischen Grundbausteinen Kugel Dreieck Gruppen von Bausteinen >> Beschleunigungsverfahren Hierarchie von Begrenzungsvolumina Raumaufteilung gleichmäßige Raster BSP trees Octrees

Schnitt von Strahl mit Kugel Ray: P = P0 + t V r O Kugel: | P –O |2 – r 2 = 0 P´ P V P0

Schnitt von Strahl mit Kugel Ray: P = P0 + t V Algebraische Methode Kugel: | P – O |2 – r 2 = 0 P ersetzen: | P0 + t V – O |2 – r 2 = 0 P0 P´ P V r O Löse Quadratischegeleichung at2 + bt + c = 0 mit a = 1 b = 2V ( P0 – O ) c = | P0– O |2 – r 2 => P= P0 + t V

Schnitt von Strahl mit Kugel Ray: P = P0 + t V Geometrische Methode Kugel: | P – O |2 – r 2 = 0 L = O – P0 tca tca = L •V P P´ If (tca < 0) return 0 V thc d r P0 L d2 = L • L - tca2 if (d2 > r2 ) return 0 O thc = sqrt(r2 – d2 ) t = tca – thc und tca + thc => P= P0 + t V

Schnitt von Strahl mit Kugel Normalen am Schnittpunkt werden für die Beleuchtung benötigt N = (P– O) / || P– O || N P V r P0 O

Schnitt von Strahl mit Dreieck Schneide Strahl mit Ebene Prüfe, ob Schnittpunkt innerhalb des Dreiecks liegt Strahl: P = P0 + t V P V P0

Schnitt von Strahl mit Ebene Strahl: P = P0 + t V Ebene: P • N + d =0 P einsetzen: ( P0 + t V ) • N + d = 0 P Lösung t = -(P0 • N + d ) / (V • N) P = P0 + t V N V P0

Schnitt von Strahl mit Dreieck I Prüfe, ob Schnittpunkt innerhalb des Dreiecks liegt T3 For each side of triangle V1 = T1 – Po V2 = T2 – Po N1 = V2 x V1 ( normiere N1 ) if ( (P - Po) • N1 < 0 ) return FALSE; end; P T1 T2 V1 V2 N1 P0

Schnitt von Strahl mit Dreieck II Prüfe, ob Schnittpunkt innerhalb des Dreiecks liegt T3 Berechne a, b: P = a (T2-T1) + b (T3-T1) P Prüfe ob der Punkt innerhalb des Dreiecks liegt 0  a  1 und 0  b  1 a + b  1 a b T1 T2 V P0

Begrenzungsvolumen Bestimme zuerst den Schnittpunkt mit einfachen Formen Wenn der Strahl das Begrenzungsvolumen nicht schneidet, dann auch nicht seinen Inhalt!

Hierarchie von Begrenzungsvolumina Erzeuge ein Hierarchie von Volumina Volumenknoten enthält alle Kindervolumina 1 2 C 3 3 2 E D F A E B D F C A B

Hierarchie von Begrenzungsvolumina Nutze die Hierarchie zur Beschleunigung des Strahl-Szene-Schnitts Schnitt mit Knoteninhalt nur wenn Begrenzung geschnitten wird 2 C 3 A E B D F 1 A E C D B F 1 3 2

Hierarchie von Begrenzungsvolumina Nutze die Hierarchie zur Beschleunigung des Strahl-Szene-Schnitts Schnitt mit Knoteninhalt nur wenn Begrenzung geschnitten wird 2 C 3 A E B D F 1 1 2 C C B

Gleichförmiges Raster Konstruiere ein gleichförmiges Raster über der Szene Indiziere Objekte entsprechend ihrer Überlappung mit den Rasterzellen A E C D B F Verfolge die Strahlen durch das Raster Schnell, es müssen nur die Zellen beachtet werden die mit den Objekten überlappen.

Gleichförmiges Raster Eventuell ein Problem: was ist die richtige Rasterauflösung ? Zu grob: geringer Nutzen der Rasterung! Zu fein: hohe Kosten! A E C D B F

Strahl - Szene - Schnittpunkt Schnittpunkt mit geometrischen Grundbausteinen Kugel Dreieck Gruppen von Bausteinen >> Beschleunigungsverfahren Hierarchie von Begrenzungsvolumina Raumaufteilung gleichmäßige Raster BSP trees Octrees

„Binary Space Partition (BSP) Tree“ Einfacher rekursiver Algorithmus 1 3 5 E 2 E C F D 4 A B C A B

„Binary Space Partition (BSP) Tree“ Einfache Suche eines Punktes C A E D B F 1 3 2 4 5 1 3 P

Rendern von BSP-Trees C A E D B F 1 2 4 5 1 2 4 P 3 Back to Front Sorting (Painters Algorithm) Front to Back Rendering ( Ray tests, Z-buffer ) C A E D B F 1 3 2 4 5 1 2 4 P 3

Repräsentation der Raumüberdeckung Zerlegung des Raumes in seine Rasterfelder. 1 2 3 4 5 6 Nicht effizient, da meist große Raumbereiche leer sind! Wenig Information über die Struktur des Objekts!

Raumzerlegungen (Octrees) Hierarchische Zerlegung des Raumes durch binäre Unterteilungen. Quadtrees 3D Octrees 2D

Quadtrees Es werden nur die Quadranten weiter unterteilt, deren innere Struktur nicht homogen ist. Alle Raumpixel (Voxel) Quadtree 1 2 3 4 5 6 1 2 3 4 5 6 Nicht jede Numerierung der Segmente ist sinnvoll =====================>

Quadtrees: Datenstruktur Segmente haben 3 Zustände: Voll Leer Gemischt G Jeder Quadranten besitzt 4 Segmente. 2 3 1 Jeder Level n besitzt 4 n Segmente. n 1 2 0 1 2 3 G v L G v L v

Arbeiten mit Quadtrees (Octrees) Boolsche Operationen lassen sich einfach implementieren. Die Operationen werden für jeden Knoten durchgeführt. v L G A) B)

Nachbarschaften in Quadtrees (Octrees) Nachbarn: 8 an den Seiten 4 an den Ecken 4 26 6 8 an den Kanten - 12 Wie finde ich die Nachbarn innerhalb den Datenstrukturen ?

Nachbarschaften in Quadtrees (Octrees) Welches Segment grenzt oben an A? v L G B A Formal: 1. Gehe zurück zum gemeinsamen Knoten. 2. Suche aus allen Nachfolgern den Nachbar. Je nach Kante und Ecke des Segments unterscheidet sich das Suchverhalten. Die einzelnen Suchschemata können in einer LUT gespeichert werden und müssen dann rekursiv kombiniert werden.

Octrees und polygonale Daten 1. Setze maximale Anzahl der Polygone pro Octreesegment. 2. Teile die gesamte Szene bis alle Würfel die Maximalzahl unterschreiten. 3. Falls bei der Teilung eines Würfels Objekte die Trennebenen schneiden, werden diese zu dem Würfel in der gröberen Auflösungsstufe assoziiert. ===> somit können kleine Polygone große Würfel belegen.

Octrees zur Verdeckungsrechnung 1. Octrees in Blickrichtung projizieren. 2. Projektion des Octrees auf einen Quadtree in der Bildebene. Sortiere für jedes Quadtreesegment die projizierten Octree- segmente der Tiefe nach. 3. Alle sich überlagernden Segmente des Octrees abarbeiten, meist von vorn nach hinten. === > alle Objekte rendern !!!!! Mit welcher Methode ====>

Polygone in Octrees rendern Zwei gängige Methoden: A) Ray-casting 1.) Bestimme für jeden Pixel den Sehstrahl und das vorderste Octreesegment. 2.) Schneide Strahl mit allen Objekten des Segments. 3a) Falls der Strahl ein Objekt trifft, bestimmt das vorderste den Wert des Pixels und für diesen Strahl existiert kein näheres Objekt. 3b) Falls der Strahl kein Objekt trifft, muss im nächst weiter entfernten Octreesegment gesucht werden Nachteil ?

Polygone in Octrees rendern. Zwei gängige Methoden: B) Z-buffer & scan-conversion 1.) Sortiere alle Octreesegmente eines Quadtreesegments der Tiefe nach. 2.) Rendern der Octreesegmente von vorn nach hinten. 3a) Falls die Z-Position des Octreesegmente im Z- Buffer verdeckt ist, muß der Inhalt des Segments nicht gerendert werden. 3b) Falls nicht, werden alle Polygone des Segments gerendert (scan-convertiert)

Polygone in Octrees rendern. (3) Z-buffer & scan-conversion Wie läßt sich zeitliche Kohärenz ausnutzen ? Annahme: Von Bild zu Bild ändern sich weniger die Objekte als ihre Position!! ===> Die meisten sichtbaren Objekte des alten Bildes werden auch im neuen Bild wiederum sichtbar sein! ===> Diese Objekte werden zuerst gerendert! Warum?