Animation I/II Videokompression: Motion Compensation Virtual Reality Video-Kompressionstechniken: Motion Compensation (Fortsetzung) • • • Die Kompression von Bildern basiert im Wesentlichen auf der Korrelation zwischen Pixeln. Die Kompression von Video-Sequenzen beruht neben der Korrelation von Pixeln in einem einzelnen Bild auch auf der Korrelation zwischen aufeinander folgenden Bildern (Frames). Grundsätzlich werden zwei Arten von Redundanz beseitigt: – räumliche Redundanz, die in jedem einzelnen Bild (Frame) existiert; – temporale Redundanz, die im Unterschied eines Bildes zu seinen unmittelbaren Nachbarn besteht. 1. • • • • • • Bewegungskompensation (Motion Compensation) =Technik zur Beseitigung temporaler Redundanz in Video-Sequenzen. Grundgedanke: Zwei aufeinander folgende Frames einer Sequenz sind üblicherweise sehr ähnlich – enthalten somit viel (temporal) redundante Informationen. Redundante Informationen müssen aber nicht mit jedem Frame neu abgespeichert werden. Motion Compensation berücksichtigt daher für die Redundanzreduktion die Veränderungen in den Bewegungen einzelner, gleicher Bildkomponenten. Die Veränderungen werden als Bewegungsvektoren (motion vector) gespeichert. Somit können die Bildinformationen eines aktuellen Frames durch einen Vergleich mit einem vorherigen Referenzframe über die Bestimmung der Bewegungsvektoren festgehalten werden (Resultat= P-Frame). Werden auch Informationen aus einem folgenden Frame zur Kodierung der Bildinformationen des aktuellen Frames hinzugezogen, entsteht ein bidirektional kodiertes Frame (B-Frame). (Ax – Bx, Ay – By) = (Δx, Δy) 1.1 • • • • • Blockbasierte Bewegungskompensation (Block Motion Compensation) Framefragmentierung/ Blockvergleich Bei dier blockbasierten Motion Compensation wird das Frame zunächst in Blöcke zerlegt (Frame Segmentation). MPEG-Standard: Blöcke à 16x16 Pixel. Jeder Block des aktuellen Bildes wird mit dem entsprechenden Block des Vorgängers verglichen. Abhängig von einem Schwellenwert (Search Threshold) der die Ähnlichkeit der Blöcke repräsentiert, wird bei nahezu identischen Blöcken (Unterschied unterhalb des Schwellenwerts) vom Kodierer angenommen, dass keine Bewegung vorliegt. Wird der Schwellenwert überschritten, so startet ein Blocksuchalgorithmus. Die Blockgröße hat wesentlichen Einfluss auf die Wirksamkeit der Kompression: Zu große Blöcke vermindern die Chance identische Blöcke zu finden, zu kleine können zur Generierung vieler Bewegungsvektoren führen. Blocksuche (Block Search) • • • • • Ein Algorithmus sucht nach der bestmöglichen Übereinstimmung eines Blocks des momentanen Frames mit einem des Referenzframes. Mögliche Vergleichsgrößen (distortion measure): z.B. Mittelwert der absoluten oder quadrierten Differenz, Integralprojektion. Die Suche wird in der Regel auf einen eng begrenzten Bereich (search area) im vorherigen Frame begrenzt. Aufgrund der Annahme, dass von Frame zu Frame die Bewegung eines Objektes (also die räumliche Verschiebung) gering ist, kann der Suchbereich relativ stark eingegrenzt werden. Dies muss auch so sein, denn Block search ist zeitintensiv: Schon ein Suchbereich von 48x48 Bildpunkten ergibt max. 2304 Möglichkeiten. Suboptimale Suchstrategien • Um die Rechenzeit bei der Blocksuche zu verringern können, werden in der Regel „ungenauere“ Suchmethoden eingesetzt. Z.B.: – Signature Based Methods: Im ersten Schritt werden alle in Frage kommenden Blocks mit einfachen Blocksuch-Methoden (z.B. Mittelwert der absoluten Differenz) auf die Ähnlichkeit überprüft. In den nächsten Schritten werden genauere Methoden nur auf die Blöcke mit den besten Ergebnissen aus Schritt 1 angewendet. – Distance-Diluted Search: Alle nahe am Ursprungsblock liegenden Blöcke werden verglichen, immer weniger aber mit zunehmender Distanz . – Locality-Based Search: Zunächst wird über räumlich relativ weit verteilte Blocks gesucht; der „beste Treffer“ ist Ausgangsbasis für eine intensivierte Suche um diesen Treffer herum: Hier besteht die hohe Wahrscheinlichkeit, einen besseren/ den besten Block zu finden. - Abhängigkeitsbestimmte Algorithmen • Da sich bewegende Objekte innerhalb eines Frames in der Regel größer sind als einzelne Blocks, kann man annehmen, dass benachbarte Blocks korrelierende Bewegungsvektoren aufweisen. • Diese Annahme wird von Algorithmen, die Abhängigkeitsverhältnisse zu Grunde legen (dependent algorithms) genutzt. • In einem Algorithmus, der räumliche Abhängigkeit zu Grunde legt, werden benachbarte Blocks von Block X benutzt, um den Bewegungsvektor von X vorherzusagen. • Natürlich kann man für die Berechnung nur Nachbarblocks benutzen, deren Vektoren bereits errechnet wurden. • Die meisten Blocks haben acht Nachbarn, aber alle acht zu vergleichen ist ineffektiv. Die beste Variante ist vier symmetrische Nachbarblöcke zu nehmen. • • • • Drei Schritte sind erforderlich für die Überprüfung von jeweils vier symmetrisch angeordneten Nachbarn: Zuerst wird in der ersten und danach in jeder zweiten Reihe für jeden zweiten Block der Vektor berechnet. Im zweiten Schritt wird in den bisher unberücksichtigten Zeilen versetzt für jeden zweiten Block der Vektor berechnet. Hier können bereits vier symmetrisch angeordnete Blöcke zum Vergleich herangezogen werden. Im dritten Schritt werden alle restlichen Vekoren berechnet. Bewegungsvektorberechnung und -Korrektur • • Nachdem ein „passender“ Block im Referenzframe gefunden wurde, wird der Bewegungsvektor als Differenz zweier lokal identischer Punkte der Blöcke berechnet. Verschiedene Faktoren können eine Optimierung des berechneten Bewegungsvektors notwendig machen (z.B. suboptimaler Suchalgorithmus). Schätzfehler-Kodierung • Die zwei korrespondierenden Blöcke sind normalerweise nicht absolut identisch, es existiert ein Schätzfehler. Durch Speicherung der Differenz zwischen unkomprimierten und komprimierten Block kann der Decoder eine Verbesserung erreichen. Kodierung von Bewegungsvektoren • • Da ein großer Teil des jeweils aktuellen Bildes in Bewegungsvektoren konvertiert werden kann, ist die Kodierung der Ergebnisse von hoher Bedeutung. Bewegungsvektoren sollten verlustfrei kodiert werden. Kodierung von Bewegungsvektoren • • • Da ein großer Teil des jeweils aktuellen Bildes in Bewegungsvektoren konvertiert werden kann, ist die Kodierung der Ergebnisse von hoher Bedeutung. Bewegungsvektoren sollten verlustfrei kodiert werden. Zwei Eigenschaften von Bewegungsvektoren helfen dabei: – sie korrelieren miteinander: Wenn ein Bild Block für Block verglichen wird, sind die Bewegungsvektoren nebeneinander liegender Blöcke meist nicht sehr unterschiedlich, sie korrelieren miteinander. – ihre Verteilung ist ungleichmäßig: Die Bewegungsvektoren weisen außerdem nicht in alle möglichen Richtungen, sondern in eine oder zwei bevorzugte. Sie sind ungleichmäßig verteilt. • • Bisher hat sich keine Kodierungsmethode als die ideale herausgestellt, aber einige als sehr wirksam. Besonders gut haben diese Methoden funktioniert: – Schätzung des Bewegungsvektors aufgrund der vorhergehenden Blöcke in derselben Zeile und Spalte eines Bildes. Berechnung der Differenz zwischen der Schätzung und dem tatsächlichen Vektor. Huffman-Kodierung (MPEG-1) – Gruppierung der Bewegungsvektoren zu Blocks. Sind alle Vektoren im Block identisch, wird der Vektor einmal für den gesamten Block kodiert. Andere Blocks werden nach Methode 1 kodiert. Teilschritte der Motion Compensation Blockzerlegung Blockvergleich Blocksuche Bewegungsvektorermittlung Bewegungsvektorkorrektur Schätzfehlerkodierung Bewegungsvektorkodierung MPEG-1/ MPEG-2 - Syntax Datenstrukturen werden in MPEG-1/ -2 in einer Hierarchie (Layer) defniert: • • • • • • Block-Layer: kleinste Organisationseinheit, 8x8 Pixel. Macro Block- Layer: Aggregation mehrerer Blöcke (4x) Slice- Layer: Aufeinanderfolge von Makroblöcken; Fehlerkorrekturverbesserung Picture- Layer: Primäre Kodierungseinheit; Farbmodell: Luminanz/Chrominanz (YCbCr) Group of Pictures (GOP)- Layer: Jede Sequenz enthält eine Serie von Bilder; GOP beginnen ebenfalls mit einem Header Sequence- Layer: Eine Sequenz fasst eine oder mehrere GOP zusammen; der Header-Teil der Sequenz beinhaltet allgemeine Informationen wie z.B. Bildformat, Übertragungsrate u.a. • Kompression in MPEG Es werden eine Reihe von Kompressionstechniken kombiniert angewandt, um eine hohe Kompressionsrate zu erzielen, insbes. DCT, Motion Compensation, Huffman, RLE. 2. Virtuelle Realität 2.1 • • • • Was ist Virtual Reality? Unter Virtual Reality versteht man alle Konzepte, die unsere natürliche audiovisuelle und räumliche Wahrnehmung im Computer simulieren (Däßler). VR umfasst Methoden zur räumlichen Darstellung von Objekten, für die räumliche Klangausbreitung und für eine Reihe von Interaktionsmöglichkeiten. Über Trackingsysteme können Bewegungen des Menschen in die synthetische Umgebung übertragen werden, über Sensoren kann man wie in der Realität Objekte der künstlichen Welt beeinflussen. 2.2 Anwendungsbereiche der VR • Architektur: Walk throughs • Städteplanung • Industrielle Fertigung: Montagesimulation, Entwurf von Fertigungsanlagen • Design: Automobilindustrie: Prototypisierung • Ausbildung und Training : Flugsimulation • Medizin (Analyse medizinischer Datensätze, Planung und Training von Operationen) • Kulturelles Erbe: Simulationen in der Archäologie (Ausgrabungssimulation) 2.3 Zentrale Aspekte der VR 2.3.1 VR-Systeme • VR-Systeme bilden die Schnittstelle zwischen dem Benutzer und der Virtuellen Welt. • Man unterscheidet: – Desktop-VR: Der Benutzer schaut von einem Standpunkt ausserhalb auf die zweidimensionale Darstellung der Virtuelle Welt. – Stereo Vision: Durch stereoskopische Sichtsysteme (z.B. Shutterbrille) entsteht trotz zweidimensionaler Darstellungsform ein realer dreidimensionaler Eindruck. – Immersive Systeme: Der persönliche Blickpunkt des Betrachters liegt vollständig in der Virtuellen Welt. Dies wird z.B. durch einen HMD (Head Mounted Device) erreicht. 2.3.2 Immersion • Der Grad, inwieweit ein Benutzer die virtuelle Welt als eigene Realität wahrnimmt, wird als Immersionsgrad (Immersion= „Eintauchen“) eines VRSystems bezeichnet. • Werden alle Sinne konsistent angesprochen oder wird die reale Welt nicht mehr wahrgenommen, so liegt ein maximaler Immersionsgrad vor. Der Immersionsgrad kann also über die Abschirmung von der realen Welt oder die Anzahl der angesprochenen Sinne bestimmt werden. 2.3.3 Rendering • Als Rendern bezeichnet man den Prozess, für eine Bewegung in einer Szene die gesamte Szene mit allen Objekten neu zu berechnen und darzustellen. • Wie kann eine Szene optimal gerendert werden? 2.4 • • • Räumliche Modellierung von Objekten Die Grundlage jeder räumlichen Modellierung ist ein 3D-Koordinatensystem. Die Gestalt eines beliebigen Objekten wird durch Punkte im Koordinatensystem beschrieben. Verbindet man die Punkte miteinander, entsteht ein Drahtmodell. • • Das Drahtmodell alleine erlaubt keine eindeutige Identifikation der Raumorientierung des Objekts. Die eindeutige Raumorientierung erreicht man mit Perspektive und Verdeckung. Polygondarstellung • Reale Objekte besitzen im Gegensatz zu einem Drahtmodell Oberflächen mit physikalischen Eigenschaften. • In der Computergrafik verwendet man dazu die Polygondarstellung. • Polygone sind kleine Flächeneinheiten, aus denen sich beliebige regelmäßige oder unregelmäßige Oberflächen zusammensetzen lassen. • Die Orientierung jedes Polygons im Raum wird durch einen gedachten Normalvektor beschrieben, der senkrecht auf dem Flächenstück steht. • Da sich in der Praxis nur eine begrenzte Zahl an Polygonen darstellbar ist, kann man sich realen Objekten mit der Polygondarstellung lediglich annähern. Oberflächeneigenschaften • Eine Szene, die nur in der Polygondarstellung gerendert wurde, erscheint trotz Perspektive und Verdeckung flach und unwirklich. • Realistische Darstellung von künstlichen Objekten wird erst durch Oberflächeneffekte erzielt. • Oberflächeneffekte kommen durch Beleuchtung einer Szene und die charakteristischen Schattenverläufe einer Oberfläche zustande. 2.5 • Vom Programmskript zur virtuellen Welt: Die 3D-Grafikpipeline Der gesamte Weg den 3D-Daten hin zum 2D-Frame durchlaufen vom Modell über mathematische Beschreibung einer Szene bis hin zur gerasterten Darstellung - wird als (3D-) Grafikpipeline (oder oft auch 3D-Rendering Pipeline) bezeichnet. • • • • Die Grafikpipeline besteht aus zwei Hauptteilen: – Geometrie-Teil – Rendering-Teil Die Routinen im Geometrieteil ermitteln aus dem vorgegebenen Modell des Entwicklers eine dem jeweiligen Blickwinkel des Betrachters angepasste Szene. Die Rendermaschine berechnet daraus für jede neue Einstellung die digitalen Bilder, die dann auf dem dem Bildschirm sichtbar sind. API-Beispiele für Grafikpipelines: DirectX, OpenGL Transformationen • • • • • • • • Die Modellkoordinaten werden in den Koordinatenraum der Anwendung, das sog. Weltkoordinatensystem, überführt. Verschiebungsmatrizen beschreiben die Übersetzung. Die Transformation enthält verschiedene Einzelschritte: Translation: Einfache Objekt- (Punkt-)Verschiebung im Raum Skalierung: Vergrößern/ Verkleinern von Objekten (Polygonen) um einen bestimmten Faktor. Rotation: Rotation eines Körpers um einen bestimmten Punkt. Shearing: Verzerrung eines Körpers. Clipping: Abschneiden von Objektteilen, die ausserhalb des Blickwinkels des Beobachters der Szene oder ganz ausserhalb des Beobachtungsfensters liegen. Transformationen(Fotsetzung) • Clipping: Abschneiden von Objektteilen, die ausserhalb des Blickwinkels des Beobachters der Szene oder ganz ausserhalb des Beobachtungsfensters liegen. • Projektionen: Perspektivische Ausrichtung der Szene auf eine Projektionsebene. Transformationsschritte können durch Matrizenmultiplikation zusammengefasst werden, wodurch der Rechenaufwand sinkt. • Beleuchtung • Berechnung des Einflusses verschiedener Lichtquellen auf die Objekte. • Der Standpunkt des Beobachters ist wie auch in der realen Welt ausschlaggebend für die Szenenbeleuchtung. Tesselation • Zerlegung nichtregulärer Polygone in reguläre Formen, die besser von der Rendermaschine verarbeitet werden können. Schattierung • • • Mit Hilfe des Flat-Shading-Verfahrens werden die regulären Flächenelemente mit einem Helligkeitswert belegt, der sich aus der Winkeldifferenz zwischen einfallendem Licht und dem Polygonnormal errechnet. Das Flat-Shading erfordert nur geringe Rechenleistung, liefert aber auch nur grobe Schattierungen. Beim Gouraud-Shading-Verfahren werden Farbabstufungen durch die Interpolation der Farbwerte benachbarter Polygone auf den einzelnen Flächenelementen berechnet. Phong-Shading verwendet eine Technik die Überlagerungen verschiedener Lichtarten berücksichtigt. Textur-Mapping • Als Textur bezeichnet man Muster oder Bilder, die wie eine Haut über die Oberfläche eines Drahtmodells gezogen werden. • Mit Texturen können Raumeffekte vorgetäuscht werden, die sonst sehr aufwendig mit Polygonen modelliert werden müssten. • Die Zahl der Polygone einer Szene kann so reduziert werden. • Textur-Mapping ist eine wichtige Technik zur Erhöhung der realistischen Darstellung Mip Mapping • beim Mip Mapping werden gleichzeitig mehrere Versionen (Rasterbilder) einer Textur gespeichert (Mip Map), die sich in ihrem Detailliertheitsgrad, d.h. in der Auflösung, unterscheiden (Mip= Multum in parvo). • Durch Mip Mapping kann die Qualität der Textur bei der Skalierung (also Vergrößerung oder Verkleinerung) eines Objektes mit einer Texturoberfläche beibehalten werden. Alpha Blending • Alpha Blending • ist ein Verfahren zur Kontrolle der Transparenz eines Objektes. • Damit lassen sich lichtdurchlässige Oberflächen wie Glas oder Wasser simulieren. • Auch athmosphärische Effekte wie Nebel oder Depth Cueing, bei denen ein Objekt mit zunehmender Distanz an Deutlichkeit verliert, können simuliert werden. Antialiasing • Antialiasing ist ein Verfahren zur Glättung von Kanten und zur Vermeidung von unerwünschten Treppenmustern. • Der Effekt wird durch Reduzierung des Kontrastes zwischen der Kante des Objektes und dem Hintergrund erreicht. • Nachteilig ist, dass Linien sich verbreitern und Kanten an Kontrast verlieren. Aufgaben 1) Wiederholen Sie den Stoff dieser Sitzung bis zur nächsten Sitzung (siehe dazu den Link zur Sitzung auf der HKI-Homepage). Informieren Sie sich zusätzlich durch eigene Literaturrecherche! 2) Beantworten Sie die Fragen aus der Sammlung „beispielhafte Klausurfragen“ zum Bereich Animation (soweit in dieser Sitzung behandelt).