Interaktive Visualisierung zeitabhängiger Volumendaten
|
|
- Inken Buchholz
- vor 7 Jahren
- Abrufe
Transkript
1 Interaktive Visualisierung zeitabhängiger Volumendaten Diplomarbeit im Fach Informatik vorgelegt von Dario Kardas geb. am 4. Juni 1976 in Nürnberg angefertigt am Institut für Informatik 9 Lehrstuhl für Graphische Datenverarbeitung Friedrich-Alexander-Universität Erlangen-Nürnberg Betreuer: Peter Kipfer Verantwortlicher Hochschullehrer: Prof. Dr. G. Greiner Beginn der Arbeit: 24. März 2003 Abgabe der Arbeit: 23. September 2003
2 ii
3 Inhaltsverzeichnis 1 Grundlagen Statische Daten Zeitabhängige Daten Lattice-Boltzmann Verfahren Navier-Stokes Gleichungen Skalarfelder, Vektorfelder Indirekte Verfahren Direkte Verfahren Lichttransport Ray-Casting Texturbasierte Verfahren Interaktion Zielsetzung Hochladen der Texturen Kompression Graphikhardware Cg GPU-Charakteristiken Herkömmliche Verfahren Wavelets Singulärwertzerlegung VQ-Verfahren Das L3VQ-Format Das BIP-Verfahren Das Delta-Verfahren Das 4D-Verfahren Vergleich der Verfahren Zusammenfassung und Ausblick 59 iii
4 INHALTSVERZEICHNIS INHALTSVERZEICHNIS A Vektorquantisierung 61 A.1 PCA-Split A.2 Verfeinerung B VQPlayer-Applikation 64 Literaturverzeichnis 69 iv
5 Einleitung Ein wichtiger Bereich der wissenschaftlichen Visualisierung ist die Volumenvisualisierung. Dabei werden dreidimensionale Datensätze (meistens Schichtbildaufnahmen eines CT- oder MR-Scanners) durch ein Graphiksystem auf dem Bildschirm dargestellt. Die bisherige Geschichte der Volumenvisualisierung ist von einem anhaltenden Mangel an Hardwareresourcen gezeichnet; die Möglichkeiten, große Datensätze zu beschaffen, waren schon immer größer als die Möglichkeiten, sie zu verarbeiten. Immerhin hat in den letzten Jahren die rasante Entwicklung der Graphikhardware dafür gesorgt, dass statische Volumendatensätze durchschnittlicher Größe (z.b Voxel) schon auf Mainstream- PCs interaktiv dargestellt werden können. Mit den neuen Möglichkeiten moderner Mainstream-Graphikhardware kommen natürlich neue Ideen, wie man diese ausgiebig auszureizen könnte. Eine davon ist die Darstellung zeitabhängiger Volumendatensätze, d.h. es wird nicht nur ein statisches Volumen auf dem Bildschirm angezeigt sondern eine Folge von 3D-Datensätzen abgespielt. Natürlich besteht eine Realisierungsmöglichkeit darin, eine beliebige Anzahl von Volumendatensätzen einfach mit herkömmlichen Mitteln hintereinander auf dem Bildschirm darzustellen. Es liegt aber auf der Hand, dass damit keine großartigen Frameraten erzielt werden können, denn die durchschnittliche Größe eines Zeitschrittes liegt bei etwa 64 Megabytes; mit einer maximalen Busbandbreite von derzeit ca. einem Gigabyte pro Sekunde und dem üblichen Overhead für das Rendern liegt die zu erwartende Framerate bei höchstens 15 Bildern pro Sekunde, wenn man unterstellt, dass die Festplatte die Daten mit diesem Tempo liefern kann. Um die Interaktivität der Darstellung zu steigern ist es also unumgänglich, die Datenmenge mit Hilfe eines geeigneten Kompressionsverfahrens zu verringern. Meine Diplomarbeit besteht im Wesentlichen aus zwei Hauptaufgaben. Zum einen geht es darum, herauszufinden, welche Strategie für das Hochladen der Volumendatensätze in den Texturspeicher der Graphikkarte optimal für die Interaktivität der Darstellung ist. Zum anderen werde ich einige Kompressionsverfahren für zeitabhängige Volumendatensätze vorstellen, die in der Vorverarbeitung angewendet werden, um die Daten zu komprimieren, wobei die Dekompression auf der Graphikkarte während des Renderns stattfindet. Im ersten Kapitel meiner Diplomarbeit werde ich kurz einige Grundlagen der Volumenvisualisierung erläutern. Dazu gehören einige populäre Darstellungsverfahren für statische Volumendatensätze wie z.b. das Ray-Casting oder texturbasierte Verfahren wie Shear- Warp oder 3D-Texturen. Außerdem werde ich kurz zwei numerische Methoden zur Simulation von Strömungsfeldern behandeln ( Navier-Stokes und Lattice-Boltzmann ). 1
6 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Das zweite Kapitel handelt von der Interaktivität der Visualisierung. Dort werden Möglichkeiten untersucht, wie man das Volume-Streaming derart optimieren kann, dass die Darstellung flüssig läuft und die Bandbreite der Systemkomponenten möglichst gut ausgenutzt wird. Die Kompressionsverfahren für Volumendatensätze sind Gegenstand des dritten Kapitels. Dort werde ich zunächst auf die Beschaffenheit der Graphikhardware eingehen, da sich daraus gewisse Einschränkungen für die Implementierung eines Dekompressionsverfahrens ergeben. Danach werde ich die Eignung zweier herkömmlicher Kompressionsverfahren zur Implementierung in GPU-Code diskutieren. Schließlich folgen die im Rahmen dieser Diplomarbeit entstandenen Ansätze: das Delta- und das 4D-Verfahren. Diese basieren auf dem Prinzip der Vektorquantisierung. 2
7 Kapitel 1 Grundlagen der Volumenvisualisierung 3
8 1.1. STATISCHE DATEN KAPITEL 1. GRUNDLAGEN 1.1 Statische Daten Statische Daten zeichnen sich dadurch aus, dass sie nicht zeitabhängig sind; es besteht lediglich eine Auflösung im Ortsraum. Meistens werden statische Daten im Rahmen einer MRT 1 oder CT 2 erhoben. Dabei wird ein Körper schichtweise eingescannt, die Schichtbilder enthalten an jedem Punkt die magnetische Dichte (MRT) oder die Massedichte (CT) des gescannten Volumens. Menschlicher Fuß Menschlicher Schädel Abbildung 1.1: Schichtbilder und deren Visualisierung Die Schichtbilder ergeben, wenn man sie in der richtigen Reihenfolge übereinander legt, ein Abbild des ursprünglich gescannten Körpers (s. Abb. 1.1). 1.2 Zeitabhängige Daten Scannt man mittels MRT oder CT einen beweglichen Körper, so erhält man mehrere Volumendatensätze, die zeitlich voneinander getrennt sind. Ein beliebtes Beispiel aus der Medizin ist der Herzschlag (Abb. 1.2). 1 Magnet-Resonanz-Tomographie 2 Computer-Tomographie 4
9 KAPITEL 1. GRUNDLAGEN 1.2. ZEITABHÄNGIGE DATEN Abbildung 1.2: Herzschlag Die meisten Volumendatensätze (mehr statische als zeitabhängige) wurden bis vor kurzem von der Medizin geliefert. Mit dem rapiden Anstieg der Rechenleistung moderner Computersysteme wurde dieses Prädikat auf den Bereich der Simulation übertragen. Hier werden mathematische Modelle für verschiedene dynamiche Prozesse aus der Natur formuliert und mit numerischen Methoden gelöst. Zwei beliebte Beispiele aus dem Bereich der CFD 3 sind die Boltzmann- [OSY95] und die Navier-Stokes-Gleichung [GR86] Lattice-Boltzmann Verfahren Die Boltzmann-Gleichung (1.1) basiert auf der Dichtefunktion n( r, v, t), die beschreibt, wie wahrscheinlich es ist, einen Flüssigkeitspartikel am Ort r mit Geschwindigkeit v zum Zeitpunkt t zu finden. n t + v n + F vn = n neq r Die linke Seite der Gleichung beinhaltet die zeitliche Veränderung der Partikelverteilung auf Grund ihrer Bewegung und einwirkender Kräfte F, während die rechte Seite die Interaktion der Teilchen untereinander berücksichtigt. n eq ist dabei die Verteilung im Gleichgewichtszustand und r ist ein Relaxationsparameter, der die Schrittweite beim Übergang ins Gleichgewicht steuert. 3 Computational Fluid Dynamics (Strömungsmechanik) (1.1) 5
10 1.2. ZEITABHÄNGIGE DATEN KAPITEL 1. GRUNDLAGEN c 14 c 6 c 5 c 1 c4 c 2 c 3 c 7 c 16 c 15 c 13 c 8 c 17 c 11 c 18 c 12 c 9 c 10 Abbildung 1.3: Lattice-Boltzmann Diskretisierung L3B19 Die numerische Lösung der Boltzmann-Gleichung erfolgt durch die Diskretisierung des Raumes in einem uniformen Gitter (engl. lattice). Die Geschwindigkeitskomponente der Verteilung wird ebenfalls diskretisiert, aber nicht in einem eigenen Gitter sondern als Zerlegung in einige plausible Komponenten, die eine sinnvolle Partikelbewegung im Raum ermöglichen. Demnach sind in jedem Gitterpunkt zum Zeitpunkt t i die entsprechenden Geschwindigkeitskomponenten n j, j = 1... b gegeben. Abbildung (1.3) zeigt eine mögliche Diskretisierung in 3D mit b = 19. Hier sind alle Permutationen c j von (±1, 0, 0) (1 j 6) und (±1, ±1, 0) (7 j 18) und (0, 0, 0) (j = 19) als mögliche Richtungen vorgesehen. Die Zeitschritte werden wie folgt entwickelt: { n j ( r, t) System ist im Gleichgewicht n j ( r + δt c j, t + δt) = n j ( r, t) n i n eq i r sonst Dies entspricht der Akkumulation der Partikeldichte aus den Dichten und Geschwindigkeiten der benachbarten Gitterelemente im vorherigen Zeitschritt Navier-Stokes Gleichungen Ein etwas allgemeinerer Ansatz zur Modellierung des dynamischen Verhaltens von Flüssigkeiten ist die Navier-Stokes Gleichung. Man setzt voraus, dass die Flüssigkeit aus derart vielen infinitesimal kleinen Teilchen besteht, dass die Geschwindigkeit v( r, t), der Druck P( r, t) und die Dichte ρ( r, t) kontinuierliche Größen sind. Basierend auf den Prinzipien von Massen-, Impuls- und Energieerhaltung lässt sich die Navier-Stokes Gleichung wie folgt formulieren: ρ v t + ρ v v = P ρ g + η 2 v + (η + λ) ( v) (1.2) Die linke Seite der Gleichung beschreibt die Bewegung des Teilchens durch das sich ändernde Geschwindigkeitsfeld. Auf der rechten Seite werden die verschiedenen Kräfte berücksichtigt, die auf die Partikel wirken. g steht dabei für das Gravitationsfeld, η und λ sind die dynamische Viskosität bzw. die Volumenviskosität der Flüssikgeit. Eine häufig angewandte Vereinfachung der Navier-Stokes Gleichung geht von einer inkompressiblen Flüssigkeit aus, d.h. die Dichte ρ ist konstant. Diese Annahme ist physikalisch 6
11 KAPITEL 1. GRUNDLAGEN 1.3. SKALARFELDER, VEKTORFELDER durchaus vertretbar, wenn die Geschwindigkeit der Teilchen wesentlich langsamer als die Ausbreitung von Schall in der Flüssigkeit ist. In diesem Fall vereinfacht sich die Navier- Stokes Gleichung wie folgt: v t + v v = P + 1 Re 2 v r r L, v v U, t tu L, P P ρu 2 Durch das Ersetzen von v, r, P und t durch die entsprechenden dimensionslosen Größen v, r, P und t ist die Gleichung ebenfalls dimensionsfrei. Dabei ist L eine typische Länge und U eine typische Geschwindigkeit im betrachteten Problembereich. Die Reynoldszahl beschreibt das Verhältnis zwischen der durch Druck (innere Reibung) und der durch Viskosität verursachten Kräfte in der Flüssigkeit. Für sehr kleine Werte von Re ( 1) ist die Strömung laminar, für sehr große Werte ( Re kritisch ) eher turbulent. Für die Lösung der Navier-Stokes Gleichungen gibt es verschiedene Ansätze (z.b. Finite- Elemente Methoden, s. [GR86]). Fast alle benutzen zur Diskretisierung für die numerische Lösung ein unstrukturiertes 4 Gitter. Um die Ergebnisse mit Mitteln der Volumenvisualisierung darzustellen, müssen diese entlang eines uniformen Gitters neu abgetastet werden (resampling). Die Ergebnisse von Simulationen sind fast ausnahmslos sehr große zeitabhängige Volumendatensätze, die man natürlich interaktiv visualisieren möchte. Die Herausforderung in diesem Zusammenhang ist die Bewältigung der immensen Datenmenge. Bevor ich jedoch mögliche Lösungen für dieses Problem präsentiere, möchte ich auf einige grundlegende Themen der Volumenvisualisierung etwas näher eingehen. Re LρU η 1.3 Skalarfelder, Vektorfelder Neben der Klassifikation der Volumendatensätze in statische und zeitabhängige gibt es eine Reihe weiterer Charakteristiken, anhand deren man eine Unterteilung vornehmen kann. Eine davon ist die Dimensionalität der Datenwerte. Die bisher gezeigten Beispiele (Abb. 1.1, 1.2) sind allesamt Skalarfelder, d.h. jedem Punkt im Volumen ist genau ein Wert zugeordnet. Gleichung (1.3) enthält eine formale Definition für skalare Volumendaten: f (i, j, k, t) = s l i, j, k { N 1} l { M 1} t {0... T} (1.3) Der Parameter t in (Gl. 1.3) steht für den Zeitschritt und kann bei statischen Datensätzen weggelassen werden. Nach dieser Definition ist das Skalarfeld nur an diskreten Gitterpunkten (Voxel 5 -Mittelpunkten) definiert. Das liegt daran, dass der Computer nur begrenzten Speicherplatz zur Verfügung hat (kontinuierliche Daten sind unendlich groß). Das ist aber 4 unstrukturiert ist das Gegenteil von uniform; die Gitterpunkte sind beliebig im Raum verteilt 5 Ein Voxel ist die dreidimensionale Entsprechung eines Pixels 7
12 1.3. SKALARFELDER, VEKTORFELDER KAPITEL 1. GRUNDLAGEN nicht sonderlich schlimm, da zum einen die Auflösung von CT- oder MRT-Scans beschränkt ist, sodass bei der Digitalisierung und der damit verbundenen Diskretisierung der kontinuierlichen Daten nicht viel Information verloren geht. Zum anderen sind die im Rahmen einer numerischen Simulation erzeugten Daten von Natur aus diskret. Um Werte zwischen den Gitterpunkten zu erhalten, muss man interpolieren. Einfache Methoden hierzu sind die Nearest-Neighbour- und die lineare Interpolation [FvDFH90], zu den anspruchsvolleren Techniken gehören beispielsweise die Spline- und die Newton-Interpolation [Sch97]. Eine weitere Gattung der Volumendaten sind Vektorfelder. Die Datenwerte an den Gitterpunkten sind hier keine Skalare sondern Vektoren (z.b. Geschwindigkeiten, Gradienten,...). Die im Rahmen meiner Diplomarbeit entstandenen Verfahren konzentrieren sich allerdings ausschließlich auf das Darstellen von Skalarfeldern, was nicht bedeutet, dass man mit ihnen keine Vektorfelder visualisieren kann. Die Idee besteht darin, einen Vorverarbeitungsschritt auf dem Vektorfeld durchzuführen, bei dem ein repräsentatives Skalarfeld erzeugt wird, das letztendlich dargestellt wird. Ein beliebtes Verfahren hierzu ist die Line Integral Convolution (LIC) [CL93]. Als Basis für das LIC-Verfahren dient ein mit weißem Rauschen gefülltes Volumen. Die Rauschinformation wird entlang der Vektoren des gegebenen Vektorfeldes mit einem geeigneten Filterkern K (z.b. Dreiecksfilter, Sinc-Filter) gefaltet (Abb. 1.4). Abbildung 1.4: 3D-LICs [RSHTE99] Gegeben sind der Input-Datensatz T : R 3 R mit zufällig generiertem Inhalt (weißes Rauschen) und das Vektorfeld V : R 3 R 3. Der Wert des Output-Datensatzes O : R 3 R an der Stelle x (i) wird wie folgt berechnet: O( x (i) ) = 1 si +L K(s s i )T(σ(s))ds = K (T σ) (1.4) 2L s i L Dabei ist σ : R R 3 eine parametrisierte Partikelbahn durch das Vektorfeld mit σ(s i ) = x (i), entlang der die Input-Daten I mit dem Filterkern K gefaltet werden. L ist die Länge der 8
13 KAPITEL 1. GRUNDLAGEN 1.4. INDIREKTE VERFAHREN Partikelbahn in beiden Richtungen um x (i). Anschaulich kann die Faltung als Verschmieren des Rauschens entlang der Partikelbahnen durch das Vektorfeld interpretiert werden. Dabei steuert der Paremeter L die Länge der Schmierer. Das auf diese Weise entstandene Output-Feld O kann nun mit Mitteln der 3D-Skalarfeld-Visualisierung dargestellt werden. Es gibt eine Reihe weiterer Verfahren, die die Visualisierung von Vektorfeldern auf die Darstellung von skalaren Volumendaten zurückführen (z.b. Level-Sets [WJE00]). Aus besagten Gründen seien ab hier immer Skalarfelder im Sinne von (Gl. 1.3) gemeint, wenn von Volumendaten gesprochen wird. In den nächsten Abschnitten werde ich einige grundlegende Techniken zur Visualisierung von Skalarfeldern vorstellen, wobei deren Reihenfolge so gewählt wurde, dass die Relevanz für meine Diplomarbeit ansteigt. 1.4 Indirekte Verfahren Indirekte Verfahren zur Darstellung von Volumendaten transformieren das Skalarfeld f in eine andere Struktur und stellen diese dar. So kann man beispielsweise mit dem Marching Cubes Algorithmus [LC87] eine Isofläche des Skalarfeldes triangulieren und das dabei entstandene Dreiecksnetz mit Standardverfahren und lokaler Beleuchtung rendern (s. Abb. 1.5). Abbildung 1.5: Marching-Cubes Triangulierung Im MC-Algorithmus werden die Datenwerte im Volumen als Eckpunkte von Würfeln betrachtet; der Datensatz besteht demnach aus einer dreidimensionalen Anordnung von Würfeln, die an den Kanten und Seitenflächen aneinander grenzen. Jeder Würfel wird zunächst entsprechend der Relation seiner acht Vertices zur Isofläche klassifiziert. Ist der Datenwert an einem Vertex größer als der Isowert, wird dieser als außerhalb, ansonsten als innerhalb angesehen (Abb. 1.6). 9
14 1.4. INDIREKTE VERFAHREN KAPITEL 1. GRUNDLAGEN v 8 = 10 v 7 = 10 Iso = 9 v 5 = 5 v 6 = 5 v 4 = 10 v 3 = 8 v 1 = 8 v 2 = 8 Iso = innerhalb (1) außerhalb (0) v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 Abbildung 1.6: Klassifikation eines Würfels Aus der Belegung der acht Vertices ergeben sich insgesamt 256 Situationen für den Würfel. Durch Ausschluss von Isometrie werden diese auf lediglich 15 verschiedene Fälle reduziert (Abb. 1.7). Nachdem der Würfel klassifiziert worden ist, können dementsprechend Polygone durch das Innere gelegt werden. Die Positionen der Polygonvertices werden durch lineare Interpolation der Datenwerte entlang der Würfelkanten gewonnen. Abbildung 1.7: Verschiedene Fälle für den Verlauf der Isofläche durch den Würfel Auf diese Weise entsteht durch das Abarbeiten sämtlicher Würfel im Volumen das triangulierte Modell der gewünschten Isofläche. Dieses kann mit Standardverfahren der Computergraphik [FvDFH90] gerendert werden. 10
15 KAPITEL 1. GRUNDLAGEN 1.5. DIREKTE VERFAHREN 1.5 Direkte Verfahren Bei den direkten Verfahren wird das Volumen, wie der Name schon sagt, direkt aus den Daten f visualisiert, ohne dass diese vorher transformiert werden müssen. Zentral für diese Verfahren ist die Interaktion des Volumens mit dem Licht in der Szene Lichttransport n ds I( x + d x, n, f ) dω da I( x, n, f ) Abbildung 1.8: Modell für den Lichttransport Abbildung (1.8) zeigt das zugrundeliegende Modell für den Lichttransport. Dessen Bestandteile bedeuten folgendes: f : Frequenz des Lichts (Farbe) dω : Raumwinkel I( x, n, f ) : Strahlungsenergie im Punkt x in Richtung n mit Frequenz f χ( x, n, f ) : Absorption im Punkt x in Richtung n mit Frequenz f η( x, n, f ) : Emission im Punkt x in Richtung n mit Frequenz f da, ds : Grundfläche und Höhe eines infinitesimal kleinen zylindrischen Volumenelements Die durch das Volumen definierten Größen im Modell sind die Emission η und die Absorption χ, d.h. das Volumen kann sowohl aus eigener Kraft leuchten als auch Licht verbrauchen (z.b. durch Umwandlung in Wärmeenergie). Durch die Abhängigkeit dieser Größen von der Richtung n und der Frequenz f werden Effekte wie Streuung und Spektralzerlegung des Lichts ermöglicht. Die im Sinne dieses Modells korrekte Darstellung eines Volumendatensatzes ergibt sich aus der Lösung der sog. Lichttransportgleichung [Kaj86]: 11
16 1.5. DIREKTE VERFAHREN KAPITEL 1. GRUNDLAGEN {I( x, n, f ) I( x + d x, n, f )}da dω df dt = { χ( x, n, f )I( x, n, f ) + η( x, n, f )}ds da dω df dt (1.5) Die Lichttransportgleichung lässt sich wie folgt in Worte fassen: Die Differenz zwischen der Menge der ausgestrahlten Lichtenergie im Punkt x + d x und der Menge der einfallenden Lichtenergie im Punkt x entspricht der Differenz zwischen der durch Emission erzeugten Energie und der durch Absorption verbrauchten Energie. Wie man sich leicht vorstellen kann, ist das Lösen der Lichttransportgleichung sehr rechenintensiv und daher für die meisten Anwendungen inpraktikabel. Einige vereinfachende Annahmen reduzieren die Komplexität erheblich, ohne die Qualität der Ergebnisse zu sehr zu vermindern, und führen damit zum sog. Ray-Casting Verfahren Ray-Casting Beim Ray-Casting [Lev88] wird das Volumen an Sichtstrahlen 6 entlang äquidistant abgetastet (s. Abb. 1.9). Betrachter Bildschirm (r i, g i, b i, a i ) } {{ } c i Schnittbilder c i a i : Farbwert (r/g/b) des i-ten Samples auf dem Sichtstrahl : Opazität ( [0... 1]) des i-ten Samples auf dem Sichtstrahl Abbildung 1.9: Ray-Casting Jeder Abtastwert enthält einen Farb- und einen Opazitätswert. Der resultierende Farbwert des Fragments 7, durch das der Sichtstrahl verläuft, wird ermittelt, indem die Samples entweder von vorne nach hinten (front-to-back) oder von hinten nach vorne (back-to-front) miteinander kombiniert werden (Abb. 1.10). Eine naheliegende Optimierung im Fall des front-to-back Blending ist die sog. early ray termination. Wie man im Algorithmus (Abb. 1.10) sieht, enthält die Variable A die aktuelle Opazität des Fragments und steigt monoton, da der Term (1 A)a i stets positiv ist. Falls A 6 Sichtstrahlen (Rays) gehen vom Auge des Betrachters aus durch den Bildschirm in die Szene und traversieren das Volumen 7 Bereich des Bildschirms (meist ein Pixel), dessen Farbe aus den Abtastwerten entlang des entsprechenden Sichtstrahls ermittelt wird 12
17 KAPITEL 1. GRUNDLAGEN 1.5. DIREKTE VERFAHREN C := C background ; for i = I last to 0 ; { C := (1 a i )C + a i c i ; } return C ; (back-to-front) A := 0 ; C := 0 ; for i = 0 to I last { C := C + (1 A)c i ; A := A + (1 A)a i ; } C := C + (1 A)C background ; return C ; (front-to-back) c i a i : Farbwert (r/g/b) des i-ten Samples auf dem Sichtstrahl : Opazität ( [0... 1]) des i-ten Samples auf dem Sichtstrahl C : laufend aktualisierter Farbwert (r/g/b) des Fragments A : laufend aktualisierte Opazität des Fragments Abbildung 1.10: Blending der Abtastwerte entlang eines Sichtstrahls einen hinreichend hohen Wert erreicht hat, wird sich im nachfolgenden Verlauf der Rechnung kaum mehr etwas an der Farbe C ändern, sodass man hier die Schleife vorzeitig abbrechen kann. Abbildung (1.11) zeigt den optimierten Algorithmus. Eine erhebliche Zeitersparnis ist bei Volumina zu erwarten, die im vorderen Bereich opak sind. A := 0 ; C := 0 ; i := 0 ; while i < I last and A < A max { C := C + (1 A)c i ; A := A + (1 A)a i ; } C := C + (1 A)C background ; return C ; Abbildung 1.11: front-to-back Blending mit early ray termination Eine weitere Optimierung des Ray-Casting ist das space-leaping. Dabei wird das Volumen 13
18 1.5. DIREKTE VERFAHREN KAPITEL 1. GRUNDLAGEN in Teilvolumina partitioniert, wobei homogene Bereiche zusammengefasst werden (Abb. 1.12). Diese können dann als Ganzes in die Rechnung aufgenommen werden, womit die Anzahl der benötigten Rechenschritte reduziert wird. Abbildung 1.12: Space-leaping Das Ray-Casting ist ein reines Software-Verfahren. Mit der Verfügbarkeit leistungsstarker Graphikhardware entstanden texturbasierte Abwandlungen, die deren Vorzüge ausnutzen Texturbasierte Verfahren Die grundlegenden graphischen Primitive beim Rendern mit OpenGL 8 [ope] sind Polygone. Diese werden durch die Spezifikation ihrer Eckpunkte (Vertices) definiert. Einem Vertex können neben verschiedenen Materialeigenschaften (Farbe, Beleuchtungsparameter, usw.) und geometrischen Attributen (z.b. Oberflächennormale) insbesondere Texturkoordinaten zugewiesen werden. Eine Textur ist ein 2D- oder 3D-Bild im Texturspeicher der Graphikkarte, das den Texturkoordinaten entsprechend auf das Polygon abgebildet wird. Dies geschieht im Rasterisierungsschritt, in dem die Polygone der Szene Zeile für Zeile und Fragment für Fragment gefüllt werden. Für die aktuelle Position jedes Fragments werden baryzentrische Koordinaten [ukas96] bezüglich der Vertices des Dreiecks, in dem es sich befindet, berechnet. Diese werden auf die Texturkoordinaten derselben Vertices angewendet und liefern somit die Position des Fragments in der Textur. Insbesondere ist dieser Vorgang sowohl für 2D- als auch für 3D-Texturen anwendbar; in beiden Fällen entstehen drei baryzentrische Koordinaten und sind von der Dimensionalität der Texturkoordinaten unabhängig. Abbildung (1.13) illustriert den 2D-Fall. 8 API zum rasterisierten Rendern 14
19 KAPITEL 1. GRUNDLAGEN 1.5. DIREKTE VERFAHREN Polygon in der Szene t 0 Textur t 1 t 2 t 0, t 1, t 2 : Texturkoordinaten der Vertices Abbildung 1.13: 2D-Texture-Mapping Die Essenz der hardwarebasierten Volumenvisualisierung ist die Definition des Volumendatensatzes als Textur. Eine Schwierigkeit ergibt sich aus der Tatsache, dass die graphischen Primitive keine Volumina sondern planare Polygone sind. Wie man dennoch zur Darstellung eines Volumens kommt, werde ich im folgenden anhand zweier weit verbreiteter Verfahren erklären. Shear-Warp Die Projektion des Volumens auf die Bildschirmebene beim Ray-Casting lässt sich in eine Scherung der Slices des Volumendatensatzes (Shear) und eine anschließende 2D-Korrektur (Warp) zerlegen [LL] (Abb. 1.14). Die texturbasierte Entsprechung dieses Ansatzes definiert die Schichtbilder des Volumens als 2D-Texturen und rendert diese ihrer Ausrichtung entsprechend auf den achsenparallelen Schnitten (object-aligned slices) durch den Standardwürfel (Abb. 1.15). Ein Problem dieses Ansatzes ist der Blickwinkel auf das Volumen. Prinzipiell lässt es sich derart im Raum drehen, dass die Slices senkrecht zur Bildschirmebene stehen. Der Betrachter würde in diesem Fall zwischen den Schichtbildern hindurchsehen. Um dies zu vermeiden, wird der komplette Datensatz dreifach im Texturspeicher gehalten; einmal für jede mögliche Orientierung der Slices. Während des Renderings wird gemäß der Blickrichtung zwischen den Kopien umgeschaltet. Ein weiteres Problem dieses Verfahrens ist die Schrittweite bei der Abtastung. Während diese beim Ray-Casting konstant gewählt werden kann, da die Werte im Inneren der Voxel trilinear interpoliert werden, wird bei Shear-Warp immer nur innerhalb eines Schichtbildes abgetastet und bilinear interpoliert. Abbildung (1.16) zeigt die Auswirkung der fehlenden trilinearen Interpolation auf die visuelle Qualität der Bilder. 15
20 1.5. DIREKTE VERFAHREN KAPITEL 1. GRUNDLAGEN Ray-Casting Shear & Scale Project Warp (2D) Viewplane Viewplane Abbildung 1.14: Shear-Warp Faktorisierung der Viewing-Transformation Betrachter Bildschirm gerenderte Slices Modell Schnittbilder Schnittflächen Abbildung 1.15: Volume-Rendering mit 2D-Texturen 3D-Texturen Im Gegensatz zum eben beschriebenen Shear-Warp-Ansatz kann das Volumen, wenn es die Graphikkardware unterstützt, als 3D-Textur in den Speicher der Graphikkarte geladen werden. Die Darstellung des Volumens erfolgt nun, indem die zur Bildschirmebene parallelen Schnittflächen (view aligned slices) des Standardwürfels nacheinander gerendert und in geeigneter Weise übergeblendet werden [CCF94] (Abb. 1.17). Der Inhalt dieser Flächenstücke wird dabei aus der 3D-Textur der Volumendaten erzeugt. Die an der Bildschirmebene ausgerichteten Slices werden aus der Model-View Transformation T MV gewonnen. Diese transformiert Modellkoordinaten in das Koordinatensystem der Kamera, aus deren Perspektive die Szene dargestellt wird. Zunächst wird die gemeinsame Normale aller Slices berechnet. Dazu ist es nötig, die Model-View Transformation zu invertieren. Die Normale n ergibt sich dann aus folgender Gleichung ( ˆm i, j seien die Einträge 16
21 KAPITEL 1. GRUNDLAGEN 1.5. DIREKTE VERFAHREN Shear Warp Ray Casting Bilinear Trilinear Abbildung 1.16: Fehlende trilineare Interpolation bei Shear-Warp Betrachter Bildschirm gerenderte Slices Modell Schnittbilder Schnittflächen Abbildung 1.17: Volume-Rendering mit 3D-Texturen von M 1 MV ): n H = M 1 MV M 1 MV n temp = 1 n = 1 n temp n temp ˆm 4,3 ˆm 1,3 ˆm 2,3 ˆm 3,3 1 ˆm 4,4 ˆm 1,4 ˆm 2,4 ˆm 3,4 Die Normale n definiert eine zur Bildschirmfläche parallele Ebene durch den Ursprung in Modellkoordinaten. Diese wird mit sämtlichen Kanten des Standardwürfels geschnitten, womit der erste Slice entsteht. Die übrigen Slices lassen sich aus dem ersten berechnen, 17
22 1.5. DIREKTE VERFAHREN KAPITEL 1. GRUNDLAGEN indem die bereits vorhandenen Schnittpunkte dem Sliceabstand entsprechend entlang der Würfelkante verschoben werden (Abb. 1.18). d 1 d 3 d 2 d 1 d 2 d 3 d 1 Ursprungs-Slice Abbildung 1.18: Berechnung der view-aligned slices Die Inkremente d zur Verschiebung der bereits vorhandenen Schnittpunkte ergeben sich aus dem gewünschten Sliceabstand D: d = D n 2 /n 1 D n 2 /n 2 D n 2 /n 3 Es werden so lange Slices produziert, bis erstmals alle berechneten Koordinaten entlang der Würfelkanten im Betrag größer sind als 1, womit man die Kanten des Standardwürfels verlassen hat. Dieses Vorgehen muss man nur in einer Richtung vom zentralen Slice ausgehend durchmachen; die Schnittflächen in die andere Richtung ergeben sich aus der Punktsymmetrie zum Ursprung. Die Vorteile dieses auf 3D-Texturen basierenden Verfahrens gegenüber Shear-Warp sind zum einen die nicht vorhandene Notwendigkeit, den Datensatz dreifach im Texturspeicher zu halten. Zum anderen wird die trilineare Interpolation für 3D-Texturen hardwareseitig unterstützt, sodass hier keine Qualitätsverluste (vgl. Abb. 1.16) zu beobachten sind. Auf einigen Graphikkarten werden jedoch keine 3D-Texturen angeboten oder sind wesentlich langsamer als 2D-Texturen. In diesen Fällen bleibt nichts anderes übrig, als mit Shear-Warp zu arbeiten. 18
23 Kapitel 2 Interaktion 19
24 2.1. ZIELSETZUNG KAPITEL 2. INTERAKTION 2.1 Zielsetzung Ein Schwerpunkt meiner Diplomatbeit ist die Interaktivität der Darstellung zeitabhängiger Volumendaten. Ob ein Volume-Playback als interaktiv angesehen werden kann ist mehr eine subjektive Entscheidung als ein formal definierbares Kriterium. Deshalb will ich, meinen persönlichen Anforderungen entsprechend, eine Darstellung als interaktiv klassifizieren, wenn sie mindestens zehn Bilder pro Sekunde liefert; damit sollte sicher gestellt sein, dass das System auf Benutzereingaben verzögerungsfrei reagiert. Die zentralen Begebenheiten, die sich auf die Interaktivität auswirken, sind a priori die Datensatzgröße und die Leistungsfähigkeit der Hardware, auf der die Visualisierung durchgeführt wird. Aus Gründen, die im nächsten Kapitel ausführlich diskutiert werden, wurden handelsübliche Mainstream-PCs 1 mit Graphik-Hardware, die Fragment-Programme 2 ab Version 2.0 unterstützt, als Zielplattform für meine Diplomarbeit festgelegt (s. Abschnitt 3.1). Die Implementierung des Volume-Playbacks soll auf solchen Systemem interaktive Frameraten für Datensätze der momentan geläufigen Größe von Voxeln realisieren. 2.2 Hochladen der Texturen Die Wahl des Renderingverfahrens zur Darstellung der Volumendatensätze fällt auf den in Abschnitt (1.5.3) vorgestellten auf 3D-Texturen basierten Ansatz. Dieser profitiert von der Graphikhardware, da diese insbesondere das Texture-Mapping unterstützt. Das interessante Problem im Bezug auf die Interaktivität ist das kontinuierliche Versorgen des Texturspeichers mit Volumendaten. Die optimale Strategie hierfür hängt von einigen Faktoren ab: Busbandbreite zwischen Hauptspeicher des PCs und Texturspeicher der Graphikkarte Asynchronität des Hochladens Interne Bandbreite der Graphikhardware Texturgröße Das Verhalten der Hardware bezüglich der oben genannten Punkte wird nicht offiziell von den Herstellern dokumentiert, sodass eine sinnvolle Strategie nur durch geeignete Experimente bestimmt werden kann. Abbildung (2.1) zeigt hierfür den grundlegenden Algorithmus. Die Strategien für das Hochladen ergeben sich aus den verschiedenen Belegungen der Variablen m und n: m : Anzahl der Volumina (Zeitschritte), die in einer Textur abgelegt sind n : Anzahl der Texturen 1 Intel Pentium IV oder Athlon Prozessor ab 2 Gigahertz, 1 GB Hauptspeicher 2 Derzeit unterstützt von der Geforce FX-Reihe von nvidia und ab Radeon 9700 von ATI 20
25 KAPITEL 2. INTERAKTION 2.2. HOCHLADEN DER TEXTUREN Erzeuge n Texturen der Größe m for (i := 0 ; i < n ; i++) initialisiere Textur T i mit Volumendaten i := 0 j := 0 while (Messung) rendere alle m Frames in Textur T imodn i++ bis (i mod n/2 == 0) lade m neue Datensätze in Textur T jmodn j++ bis (j == i) Abbildung 2.1: Algorithmus für das Experiment Es wird also zum einen das Verhältnis zwischen der Anzahl der Texturen und deren Größe untersucht (n = 2, m variabel). Zum anderen ist interessant zu erfahren, ob es günstiger ist, wenn mehrere Texturen direkt hintereinander hochgeladen werden oder wenn zwischendurch gerendert wird (m konstant, n > 2). Im ersten Experiment soll der Datendurchsatz zwischen dem Hauptspeicher des PCs und dem Texturspeicher der Graphikkarte untersucht werden. Tabelle (2.1) zeigt eine Messreihe, die auf einem Pentium IV-System mit 2.4 GHz, 1 GB Hauptspeicher und einer NVidia Quadro FX 1000-Graphikkarte durchgeführt wurde. Die Volumina hatten eine Auflösung von 64 3 und drei Farbkanäle (RGB). Die Größe der Datensätze (jeweils 768 Kilobyte) wurde deshalb so gering gewählt, damit genügend Freiraum für die Parameter m und n im Algorithmus bleibt (die Graphikkarte hatte 128 Megabyte RAM). Leider wird eine Textur nicht unbedingt in den Texturspeicher der Graphikhardware übertragen, wenn nicht daraus gerendert wird. Dieser Umstand ist ärgerlich, da das Rendering seinerseits Rechenzeit verbraucht und damit die Messung des Durchsatzes am AGP-Bus verfälscht. Aus diesem Grund wurde im Experiment immer nur ein Slice pro Zeitschritt gerendert und das Volumen selbst aus großer Distanz dargestellt, um eine unendlich große Füllrate zu simulieren. Außerdem wurden immer wieder dieselben Daten hochgeladen, da ansonsten die Ladezeit von der Festplatte bzw. die Generierung der Textur ebenfalls die Messergebnisse verfälscht hätte. Die gemessenen Werte (Tab. 2.1) zeigen, dass sich verschiedene Strategien durchaus auf den Datendurchsatz auswirken. Dem Experiment zufolge ist die einfache Strategie mit m = 1 und n = 2 die Vielversprechendste. Auch aus Speicherplatzgründen ist diese Strategie die günstigste, da sie am wenigsten verbraucht, was sehr großen Datensätzen zugute kommt. Trotz allem liegt die höchste in diesem Experiment gemessene Transferrate bei 163 Frames/s 768 Kilobytes 122 Megabytes pro Sekunde. Das ist nur ein kleiner Bruchteil von den 2 21
26 2.2. HOCHLADEN DER TEXTUREN KAPITEL 2. INTERAKTION n fps n fps m = 1 m = n fps n fps m = 4 m = 8 n fps n fps m = 16 m = 32 2 Tabelle 2.1: Gemessene Bildraten für verschiedene n und m Gigabyte pro Sekunde am AGP 8x Bus, die von den Herstellern propagiert werden. Das zweite Experiment soll über die Asynchronität des Hochladens Aufschluss geben. Dazu wird der Algorithmus aus dem ersten Experiment herangezogen und mit dem Wert n = 2 fest belegt, m ist variabel. Die Strategie verfügt also über zwei Textur-Slots, aus denen gerendert wird. In der Initialisierung werden beide Slots hochgeladen, in der Hauptschleife werden die Slots abwechselnd gerendert und gleich wieder hochgeladen. Theoretisch sollte es also möglich sein, eine Textur zu übertragen, währenddessen aus der anderen gerendert wird. Abbildung (2.2) zeigt die gemessene Dauer, wie lange das System im Befehl für das Hochladen von Texturen 3 verschiedener Größen verweilt. Die Anzahl der Slices sowie die Größe der Darstellung wurden abermals klein gehalten, damit sich die interne Bandbreite der Graphikkarte nicht störend auf die Messung auswirkt. Die lineare Abhängigkeit gibt Anlass zur Annahme, dass der Upload synchron stattfindet. Diese Beobachtung allein reicht jedoch nicht aus, um Asynchronität auszuschließen, denn diese muss ja nicht unbedingt am Upload-Befehl festgemacht sein. 3 gltexsubimage3d() 22
27 KAPITEL 2. INTERAKTION 2.2. HOCHLADEN DER TEXTUREN msec m Abbildung 2.2: Verweilzeit des Hochladebefehls für verschiedene m Um die Asynchronität letztendlich nachzuweisen, wird in der nächsten Messung die Anzahl der gerenderten Slices variiert, die Datensatzgröße bleibt konstant. Die obere linke Kurve in Tabelle (2.2) zeigt die verstrichene Zeit zwischen Aufruf und Rückkehr des Ladebefehls an. Die verblüffende Tatsache, dass diese proportional zur Slice-Zahl ist, führt zu der Vermutung, dass das Rendering der Szene im Hintergrund stattfindet, während die andere Textur hochgeladen wird. Die obere rechte Kurve in Tabelle (2.2) unterstützt diese Schlussfolgerung, denn die Zeit für das Absetzten der Zeichenbefehle ist konstant gering; für 257 Slices wurden gerade mal 0.14 Millisekunden benötigt, was auf eine Framerate von 7142 bei synchronen Zeichenbefehlen schließen ließe. Tatsächlich waren es aber nur 8.5 Frames pro Sekunde (s. untere linke Kurve in Tabelle (2.2)). Der Nachweis der Asynchronität wird wie folgt erbracht. Die unteren beiden Kurven in Tabelle (2.2) zeigen, dass sich die Framerate bei geringer Slicezahl kaum ändert. In diesem Bereich ist der Durchsatz offenbar durch die Bandbreite am AGP-Bus beschränkt. Da wir wissen, dass der Ladebefehl gemäß Messung (tab. 2.2) synchron arbeitet, dauert das Hochladen eines Datensatzes mindestens 5.8 Millisekunden. Da die Ladeanweisung bei 257 Slices Millisekunden bis zur Rückkehr braucht, ergibt das eine reine Renderingzeit von = Millisekunden für 257 Slices, wenn man voraussetzt, dass alle Vorgänge sequentiell ablaufen. Demnach ist eine Framerate von über 9 Bildern pro Sekunde bei 257 Slices zu erwarten, wenn das Hochladen abgeschaltet wird. Wie man in Abbildung (2.3) sieht, ist dies nicht der Fall. Die Framerate bei großer Slicezahl ist unabhängig vom Upload, was zwangsläufig bedeutet, dass Hochladen und Rendering simultan laufen. Die gefundene Strategie für das Hochladen der Texturen dient lediglich der Optimierung der Kontinuität des Volume-Playbacks. Eine weitere Steigerung der Interaktivität ist durch eine geeignete Texturkompression möglich, da dadurch weniger Daten durch den Flaschenhals am AGP-Bus übertragen werden müssen. 23
28 2.2. HOCHLADEN DER TEXTUREN KAPITEL 2. INTERAKTION 120 # msec Slices Verweildauer des Ladebefehls msec # msec Slices Zeitaufwand für Zeichenbefehle msec # msec msec Slices Framerate # MByte KByte/s Übertragungsrate Slices Tabelle 2.2: Timings mit variierender Anzahl gerenderter Slices # msec msec Slices Abbildung 2.3: Abhängigkeit zwischen Framerate und Anzahl Slices ohne Hochladen 24
29 Kapitel 3 Kompression 25
30 3.1. GRAPHIKHARDWARE KAPITEL 3. KOMPRESSION 3.1 Graphikhardware Zeitabhängige Volumendatensätze (s. Abschnitt 1.2) sind von Natur aus sehr groß. Um diese interaktiv mit einem Slice-basierten Ansatz (s. Abschnitt 1.5.3) zu visualisieren, muss der Zugriff auf die Texturen entsprechend effizient sein. Auf einigen Highend-Workstations teilen sich zu diesem Zweck CPU und GPU den gemeinsamen Hauptspeicher des Rechners. Im Bereich der Mainstream-PCs setzt sich diese Architektur nur schleppend durch 1, sodass sich standardmäßig die Graphikhardware samt Texturspeicher auf einer Erweiterungskarte befindet, die über den AGP-Bus mit dem Rest des Systems verbunden ist. Während die Graphikkarten in den letzten Jahren enorm an Leistung zugenommen haben, wurde im Vergleich dazu die Transferrate des AGP-Bus nur schwach verbessert (s. Messungen in Tab. 2.1). Dieser unglückliche Umstand scheint der Aussicht auf Interaktivität bei der Visualisierung zeitabhängiger Volumendaten erheblich im Wege zu stehen. Ein Grund, weshalb die Wahl der Hardware für die Belange meiner Diplomarbeit trotzdem auf Mainstream-PCs gefallen ist, liegt in dem Bestreben jedes vernünftigen Entwicklers, so wenig Hardwareresourcen zu fordern wie möglich. Immerhin kostet ein derzeit handelsüblicher Standard-PC mit 2-Gigahertz-CPU, 1 Gigabyte Arbeitsspeicher und Fragment- Shader 2.0 fähiger Graphikkarte ca Euro, während Highend-Graphik-Workstations locker in den fünf- bis sechsstelligen Bereich kommen. Desweiteren gibt es vielversprechende Aspekte aktueller PC-Graphikkarten, die die Misere mit dem AGP-Bus kompensieren könnten. Diese sind eher historisch motiviert. In den Anfangsjahren der Graphikhardware für den breiten Markt wollte die Spieleindustrie immer komplexere Szenen in Echtzeit darstellen. Dafür war es nötig, die Polygon- und die Füllrate explosionsartig zu steigern. Nach einiger Zeit wurden diese Bedürfnisse gesättigt; aktuelle Spiele liefen mit über 300 Bildern pro Sekunde. Es gab also keinen Grund mehr, die interne Bandbreite der Graphikkarten derart massiv zu verbessern. Stattdessen setzten die Spielemacher verstärkt auf die Qualität der Darstellung und auf Spezialeffekte, sodass sich der Trend in die Weiterentwicklung der GPU-Programmierbarkeit gewandelt hat. Aus dieser Trendwende ergibt sich die Idee, anstelle von rohen Datensätzen komprimierte Volumina in den Texturspeicher zu laden, womit sich die benötigte Bandbreite am AGP-Bus verringert. Ein entsprechendes GPU-Programm dekomprimiert die Daten intern auf der Graphikkarte und stellt diese dar. Im Verlauf dieses Kapitels werden einige Verfahren hierzu vorgestellt. Im nächsten Abschnitt werde ich näher auf die Programmierung der Graphikhardware eingehen und erläutern, mit welchen Möglichkeiten und Einschränkungen diese verbunden ist Cg Abbildung 3.1 zeigt das Modell einer programmierbaren GPU. Die beiden programmierbaren Einheiten sind der Vertex Processor und der Fragment Processor. Die darin ausgeführten 1 Einziges Beispiel für eine PC-Architektur mit gemeinsamen Speicher für CPU und GPU ist derzeit der nforce2 Chipsatz von nvidia in der Variante, in der die GPU in der Northbridge integriert ist 26
31 KAPITEL 3. KOMPRESSION 3.1. GRAPHIKHARDWARE Abbildung 3.1: Modell einer programmierbaren GPU (aus [NVI03]) Programme werden dementsprechend Vertex-Shader und Fragment-Shader genannt. In der 3D-API (OpenGL oder Direct3D) werden Polygone durch ihre Eckpunkte (Vertices) spezifiziert. Dazu gehören neben der Position weitere Eigenschaften wie Oberflächennormalen, Texturkoordinaten und ähnliches. Der Vertex-Shader erzeugt daraus Outputs, die an den Rasterizer geschickt werden (z.b. transformierte Texturkoordinaten, Farben,...). Dieser generiert daraus Fragmente. Dabei werden die Outputs des Vertex-Shaders interpoliert und dem Fragment-Shader als Inputs zur Verfügung gestellt. Weitere, vom Vertex-Shader unabhängige Inputs für den Fragment-Shader sind beispielsweise Texturen oder frei wählbare uniforme Parameter 2. Eine typische Aufgabe für den Vertex-Shader ist die Model-View-Transformation [FvDFH90]. Dafür werden zwei Inputs benötigt: die Position in Modellkoordinaten (z.b. mittels glvertex3f() in OpenGL) und die momentane Model-View Matrix. Einziger Output ist die neue Position der Vertices in normalisierten View-Koordinaten. Ein weit verbreiteter Fragment-Shader ist die Implementierung des Phongschen Beleuchtungsmodells [FvDFH90]. Da die komprimierten Volumendaten als 3D-Texturen in den Texturspeicher der Graphikkarte geladen werden und da das Texture-Mapping durch den Fragment-Processor erfolgt, wird ein Fragment-Shader für die Dekompression der Volumendaten verantwortlich sein. Es gibt zwei Möglichkeiten, einen Vertex- oder Fragment-Shader zu programmieren: entweder direkt in GPU-Code oder in der Sprache Cg 3. Während der GPU-Code stark dem Assembler-Code für CPU-s ähnelt und dessen Programmierung sehr mühsam ist, bekommt man mit Cg eine an C angelehnte Sprache, die wesentlich einfacher zu beherrschen und dennoch sehr flexibel ist. Aus diesem Grund wurden die Verfahren, die in dieser Diplomarbeit entstanden sind, in Cg implementiert. 2 Uniforme Parameter sind Werte, die für alle Fragmente eines Polygons gleich sind (z.b. phongscher Beleuchtungskoeffizient) 3 C for Graphics, eine von NVidia entwickelte High-Level Sprache für das Programmieren von Vertex- und Fragment-Shadern. Cg-Programme werden vorab oder während der Laufzeit zu GPU-Code compilliert. 27
32 3.2. HERKÖMMLICHE VERFAHREN KAPITEL 3. KOMPRESSION Zu den Vorzügen der GPU-Programmierung zählen die zahlreichen Matrix- und Vektoroperationen. Skalare Operationen werden, wenn einer der Operanden ein Vektor ist, parallel auf jede einzelne Komponente des Vektors angewendet. Dazu kommen viele mathematische Operationen sowie Zugriffsfunktionen für Texturen usw. (eine komplette Übersicht über Cg findet man in [NVI03]) GPU-Charakteristiken Trotz allem darf die Programmierbarkeit einer GPU nicht mit der Programmierbarkeit einer CPU verglichen werden, da es einige Einschränkungen gibt, die zu beachten sind. Ein Fragment-Shader wird für jedes Fragment des gezeichneten Polygons komplett ausgewertet. Deshalb verfügen moderne Graphikkarten gleich über mehrere Fragment-Shader- Units, die parallel arbeiten und damit den Fragmentdurchsatz erheblich erhöhen. Diese Art von Parallelität bringt aber auch einige Nachteile mit sich: Die Reihenfolge, in der die Fragmente ausgewertet werden, ist nicht bekannt Die Auswertung eines Fragments darf nicht von der Auswertung eines anderen abhängig sein Innerhalb eines Fragment-Shaders kann nur das eine Fragment verändert werden, für das der Shader gerade ausgeführt wird Bei den meisten momentan aktuellen Graphikchips kommen weitere Einschränkungen hinzu. Dort müssen alle aktiven Shader absolut synchron laufen. Das bedeutet, dass bei alternativen Sprüngen im Code in jedem Fall die übersprungenen Regionen ihrer Länge entsprechend Taktzyklen verbrauchen. Schleifen werden stets aufgerollt und können bei variabler Wiederholungszahl ebenfalls zu Einbußen in der Performance führen. Außerdem ist die Länge von GPU-Programmen sehr beschränkt (Programm- und Texturspeicher sind voneinander getrennt). All diese Eigenarten der GPU-Programmierung müssen bei der Entwicklung eines Verfahrens zur Dekompression von Volumendaten berücksichtigt werden. Eine Lauflängencodierung beispielsweise ist unter diesen Bedingungen nicht effizient implementierbar. 3.2 Herkömmliche Verfahren In diesem Abschnitt werde ich einige herkömmliche Verfahren zur Kompression von Volumendaten behandeln. Dabei werde ich besonders auf die Implementierbarkeit der Dekompression als Fragment-Shader eingehen Wavelets Die Wavelet-Transformation beruht auf der Darstellung eines Signals bezüglich einer bestimmten Menge von Basisfunktionen. In unserem Fall ist das Signal der diskrete Volumen- 28
33 KAPITEL 3. KOMPRESSION 3.2. HERKÖMMLICHE VERFAHREN datensatz. Ich werde das Prinzip zunächst in 1D erklären, als Basisfunktionen bieten sich die einfachen Haar-Wavelets an. Sei eine beliebige Zahlenfolge der Länge 2 n gegeben, z.b. (9, 7, 6, 2) für n=2. Das ursprüngliche Signal lässt sich trivial bzgl. der Level n Haar-Basis darstellen: Level 2 Nun wird das Signal in Zweiergruppen aufgeteilt. Für jede Gruppe wird der Mittelwert und die Differenz zum Mittelwert berechnet: Gruppe 1 Gruppe 2 Ausgangssignal Mittelwerte 8 4 Differenzen 1 2 Die Mittelwerte können als grobe Repräsentation der Originaldaten mit halber Auflösung aufgefasst werden, während die Differenzen die fehlende Detailinformation enthalten. Die zugehörige Basis (Level 1) zur Rekonstruktion des ursprünglichen Signals sieht wie folgt aus: Level 1 Die entstandenen Mittelwerte werden als neues Signal aufgefasst und rekursiv durch Mittelwert- und Differenzbildung weiterentwickelt, bis nur noch ein Mittelwert übrig ist (Level 0). Im Beispiel: Mittelwert = 1 2 (8 + 4) = 6, Differenz = 8 6 = 6 4 = 2, Level 1 bleibt wie gehabt Level 0 Am Ende des Vorgangs bleiben ein Mittelwert und 2 n 1 Detailwerte übrig. In den homogenen Bereichen des Ausgangssignals sind die Differenzen entweder sehr klein oder sogar gleich Null, sodass sie nicht gespeichert werden müssen (darin besteht letztendlich die Kompression). Bei der Rekonstruktion werden an deren Stelle Nullen eingesetzt. 29
34 3.2. HERKÖMMLICHE VERFAHREN KAPITEL 3. KOMPRESSION Im Falle eines Volumendatensatzes müssen Differenz- und Mittelwertbildung in jedem Schritt entlang der drei Achsen separat durchgeführt werden (s. Abb. 3.2). Originaldaten Mittelwerte Differenzen Abbildung 3.2: Haar-Transformation in 3D Der Vorteil der Wavelet-Transformation liegt darin, dass sowohl im Orts- als auch im Frequenzraum eine Auflösung besteht, während bei anderen Transformationen (z.b. Fourier, DCT) nur der Frequenzraum aufgelöst ist. Das Verfahren kann durch das Heranziehen anderer Basen oder durch verschiedene Strategien für das Weglassen von Details variiert werden [PCW96]. In der Praxis wurden im Vergleich zu DCT-basierten Verfahren höhere Kompressionsraten bei besserer Bildqualität erzielt. Die Originaldaten lassen sich aus der transformierten Form effizient zurückgewinnen, wenn ein Level nach dem anderen komplett rekonstruiert wird. Auf der Graphikhardware besteht diese Möglichkeit nicht, da die Zwischenergebnisse bei der Auswertung eines Fragments nicht für die Auswertung eines anderen zur Verfügung stehen. Ein als Shader implementierter Wavelet-Decoder müsste also für jedes einzelne Fragment die komplette Level-Hierarchie immier wieder aufs Neue durchrechnen; das ist sicherlich inpraktikabel. Ein anderes Problem besteht in der adaptiven Datenreduktion. Es wird kaum ein ganzer Detail-Level aus dem Datensatz herausgenommen, denn das entspräche einem einfachen Downsampling. Vielmehr sind die homogenen Bereiche eher unregelmäßig geformt, sodass man reduzierte Regionen mit komplexen Datenstrukturen beschreiben muss. Diese müssen mit Schleifen oder gar Rekursion ausgewertet werden; leider sind beide Konzepte in Cg nicht effizient und einheitlich verfügbar. Schleifen werden noch von den meisten GPUs aufgerollt, Rekursion ist bislang in Cg verboten. 30
Interaktive Visualisierung zeitabhängiger Volumendaten
Interaktive Visualisierung zeitabhängiger Volumendaten Diplomarbeit von Dario Kardas graphische datenverarbeitung, universität erlangen-nürnberg Skalare Volumendaten Volumen besteht aus Schichtbildern
MehrVisualisierung und Volumenrendering 2
Institut für Computervisualistik Universität Koblenz 06.07.2012 Inhaltsverzeichnis 1 Literatur 2 Wiederholung 3 DVR Volumen Literatur Real-Time Volume Graphics Volumenrendering CG Shader Beispiele Volumen
MehrVolumenverarbeitung und Optimierung II
Volumenverarbeitung und Optimierung II Praktikum Medizinische GPU Verfahren Susanne Fischer sanne@uni-koblenz.de Institut für Computervisualistik Universität Koblenz-Landau 9. Dezember 2006 Susanne Fischer
MehrVolumen Visualisierung
Volumen Visualisierung Seminar Interaktive Visualisierung (WS 06/07) Fabian Spiegel und Christian Meß Fabian Spiegel und Christian Meß 1 Übersicht Anwendungsbeispiele Volumendaten Entstehung Repräsentation
Mehr(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU
(7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung
MehrComputergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche
MehrParallele Algorithmen in der Bildverarbeitung
Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrRST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck
RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme
MehrTexture Based Direct Volume Rendering
Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order
MehrEchtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM
Echtzeitfähige hige Verfahren in der Computergrafik Prof. Dr. Rüdiger R Westermann Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM Lehr- und Forschungsinhalte Visualisierung Darstellung
MehrProbelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering
Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten
MehrDynamisches Huffman-Verfahren
Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über
MehrUniversität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen
Universität Trier Fachbereich IV Wintersemester 2004/2005 Wavelets made easy Kapitel 2 Mehrdimensionale Wavelets und Anwendungen Thomas Queckbörner 16.11.2004 Übersicht des Kapitels: 1. Einführung 2. Zweidimensionale
MehrMichael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER
Michael Bender Martin Brill Computergrafik Ein anwendungsorientiertes Lehrbuch 2., überarbeitete Auflage HANSER Inhaltsverzeichnis Vorwort XI 1 Einleitung 1 1.1 Die Entwicklung der Computergrafik 1 1.2
MehrComputergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis
Computergrafik Michael Bender, Manfred Brill Ein anwendungsorientiertes Lehrbuch ISBN 3-446-40434-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40434-1 sowie
Mehrcomputer graphics & visualization
Entwicklung und Implementierung echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs Motivation
MehrKapitel 4: Schattenberechnung
Kapitel 4: Schattenberechnung 1 Überblick: Schattenberechnung Motivation Schattenvolumen Shadow Maps Projektive Schatten 2 Motivation Wesentlich für die Wahrnehmung einer 3D-Szene Eigentlich ein globaler
MehrBeleuchtungsmodelle und Shading
Beleuchtungsmodelle und Shading Andreas Spillner Computergrafik, WS 2018/2019 Ziel der Modellierung von Beleuchtung Baut auf dem Kapitel zu Licht und Farben auf. In die 3D-Szene werden Lichtquellen eingebracht.
MehrShader. Computer Graphics: Shader
Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger
Mehr3D - Modellierung. Arne Theß. Proseminar Computergraphik TU Dresden
3D - Modellierung Arne Theß Proseminar Computergraphik TU Dresden Gliederung Darstellungsschemata direkte Constructive Solid Geometry (CSG) Generative Modellierung Voxelgitter indirekte Drahtgittermodell
MehrPG 471: Beyond Graphics. Strömungssimulation in der GPU
Strömungssimulation in der GPU Betreuer: Claus-Peter Alberts, LS VII Dominik Göddeke, LS III (Mathematik) Normale Nutzung von Grafikkarten Normale Nutzung von Grafikkarten STATTDESSEN: GPGPU! Anwendungsfall:
MehrÜbungsstunde 8 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 14. und 15. Januar 2013 Inhaltsverzeichnis 1 Wiederholung - Beleuchtung Gouraud-Shading Phong-Shading Flat-Shading Vergleich 2 - Idee in OpenGL Texturfilterung
MehrÜbungsblatt 10: Klausurvorbereitung
Übungsblatt 10: Klausurvorbereitung Abgabe: Dieses spezielle Übungsblatt hat keine Abgabefrist und wird auch nicht korrigiert. Die Lösung gibt es wie immer auf der Homepage der Vorlesung oder in den Übungen
Mehr5. Gitter, Gradienten, Interpolation Gitter. (Rezk-Salama, o.j.)
5. Gitter, Gradienten, Interpolation 5.1. Gitter (Rezk-Salama, o.j.) Gitterklassifikation: (Bartz 2005) (Rezk-Salama, o.j.) (Bartz 2005) (Rezk-Salama, o.j.) Allgemeine Gitterstrukturen: (Rezk-Salama, o.j.)
MehrGrundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 8: Hardware Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch (Raytracing,
Mehr. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:
Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge
MehrRheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit
Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer
MehrProjekt Systementwicklung
Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit
MehrMesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze
Mesh-Visualisierung Von Matthias Kostka Übersicht Einführung Streaming Meshes Quick-VDR Rendering virtueller Umgebung Rendering mit PC-Clustern Zusammenfassung 2 Mesh Untereinander verbundene Punkte bilden
MehrEntwicklung eines hardwarebeschleunigten direkten Volumenvisualisierers für große Datensätze
Entwicklung eines hardwarebeschleunigten direkten Volumenvisualisierers für große Datensätze Joachim Staib Nach: GigaVoxels: Ray-Guided Streaming for Efficient and Detailed Voxel Rendering Cyrill Crassin,
MehrGPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit
GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit Ingrid Scholl 1, Nicole Schubert 1, Pascal Ziener 1, Uwe Pietrzyk 2 1 Fachbereich für Elektrotechnik und Informationstechnik,
MehrAufgabe 1 - Tricks mit linearen Gleichungen
Institut für Informatik Visual Computing Prof. Dr. Michael Wand & M.Sc. Sebastian Brodehl Sommersemester 2018 Modellierung I Übungsblatt 4: LGS, Vektorräume und Inverse Probleme Letzte Änderung: 10:20
MehrComputergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-04 Kapitel VIII: Per Primitive Operations Primitive I 3 Primitive II Elementare grafische Grundform Besteht in OpenGL aus Folge von 1-3 Vertices
MehrPraktische Übungen zu Computertechnik 2. Versuchsprotokoll
Praktische Übungen zu Computertechnik 2 Versuchsprotokoll Versuch: C2 Parallelrechner Versuchsdatum und -zeit: Donnerstag, 03. Juni 2010, 10-13 Uhr Betreuer: Adrian Knoth Name, Studiengang, Mat.-Nr.: Ralf
MehrChristina Nell. 3D-Computergrafik
Christina Nell 3D-Computergrafik Was ist 3D-Computergrafik? 3D graphics is the art of cheating without getting caught. (unbekannte Quelle) Folie 2/52 Inhalt Beleuchtung Shading Texturierung Texturfilterung
MehrSS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION
SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung
Mehr3.5 Methode des gleitenden Horizonts
3.5 Methode des gleitenden Horizonts Für Flächen die durch eine Gleichung F (x, y, z) = 0 gegeben sind, lässt sich die Methode des gleitenden Horizonts anwenden. Dabei werden die sichtbaren Teile der Schnitte
MehrGPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1
GPGPU Basiskonzepte von Marc Kirchhoff 29.05.2006 GPGPU Basiskonzepte 1 Inhalt Warum GPGPU Streams, Kernels und Prozessoren Datenstrukturen Algorithmen 29.05.2006 GPGPU Basiskonzepte 2 Warum GPGPU? Performance
MehrAdaptives Displacement Mapping unter Verwendung von Geometrieshadern
Fakultät Informatik Institut für Software- und Multimediatechnik, Professur für Computergraphik und Visualisierung Adaptives Displacement Mapping unter Verwendung von Geometrieshadern Diplomarbeit Timo
Mehr(1) Geometrie. Vorlesung Computergraphik 3 S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU
(1) Geometrie Vorlesung Computergraphik 3 S. Müller KOBLENZ LANDAU KOBLENZ LANDAU Organisatorisches Vorlesung CG 2+3 Die Veranstaltung besteht aus 2 Teilen, wobei in der Mitte und am Ende eine Klausur
MehrMathematischer Vorkurs für Physiker WS 2009/10
TU München Prof. Dr. P. Vogl, Dr. S. Schlicht Mathematischer Vorkurs für Physiker WS 29/ Vorlesung 9, Freitag vormittag Linienintegrale und Potential Wir betrachten einen Massenpunkt, auf den die konstante
MehrGPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni
GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment
MehrLandau-Theorie. Seminar zur Theorie der Teilchen und Felder. Daniel Schröer
Landau-Theorie Seminar zur Theorie der Teilchen und Felder Daniel Schröer 1.Einleitung Um ein Problem der Statistischen Physik zu lösen, wird ein relevantes thermodynamisches Potential, wie beispielsweise
MehrSpiegelgasse 1 CH 4051 Basel. Vorführung der laufenden Programme im Tutorium Woche 3 (Abgabe ).
UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Spiegelgasse 1 CH 4051 Basel Patrick Kahr (patrick.kahr@unibas.ch) Clemens Büchner (clemens.buechner@unibas.ch) Computer
MehrDiplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker
Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02
MehrMathematische Grundlagen der dynamischen Simulation
Mathematische Grundlagen der dynamischen Simulation Dynamische Systeme sind Systeme, die sich verändern. Es geht dabei um eine zeitliche Entwicklung und wie immer in der Informatik betrachten wir dabei
MehrAlgorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen
Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen Rekonstruktion kontinuierlicher Daten Interpolation multivariater Daten Ulrich Rüde Lehrstuhl für Systemsimulation Sommersemester
Mehr3D Rendering mit PHP. Die neue PEAR-Klasse Image_3D bietet die Möglichkeit nur mit PHP5 3DGrafiken zu rendern
3D Rendering mit PHP Die neue PEAR-Klasse Image_3D bietet die Möglichkeit nur mit PHP5 3DGrafiken zu rendern Speaker Kore Nordmann Studiert Informatik an der Universität Dortmund Arbeitet als Software
MehrVolumenakquise. Vortrag von Benjamin Gayer
10.11.11 1 Volumenakquise Vortrag von Benjamin Gayer Einführung Bildquelle: http://www.medical.siemens.com/siemens/de_de/rg_marcom_fbas/files/patienteninformationen/ct_geschichte_technologie. pdf 10.11.11
MehrRotation. Versuch: Inhaltsverzeichnis. Fachrichtung Physik. Erstellt: U. Escher A. Schwab Aktualisiert: am 29. 03. 2010. Physikalisches Grundpraktikum
Fachrichtung Physik Physikalisches Grundpraktikum Versuch: RO Erstellt: U. Escher A. Schwab Aktualisiert: am 29. 03. 2010 Rotation Inhaltsverzeichnis 1 Aufgabenstellung 2 2 Allgemeine Grundlagen 2 2.1
MehrAngewandte Mathematik am Rechner 1
Michael Wand Institut für Informatik. Angewandte Mathematik am Rechner 1 SOMMERSEMESTER 2017 Kapitel 5 Grundlagen Analysis Kontinuierliche Mengen Vollständige Mengen Folgen Iterative Berechnungen Grenzwert:
MehrLABORÜBUNG MATLAB/OCTAVE
LABORÜBUNG MATLAB/OCTAVE 1. Riemannsche Summen mit MATLAB/Octave Riemannsche Summen lassen sich sehr einfach mit MATLAB/Octave berechnen. Das Vorgehen ist das folgende: (i) die Breite x der Teilintervallen
MehrDirekte Volumenvisualisierung
Universität Stuttgart Direkte Volumenvisualisierung Seminar Medizinische Visualisierung SS06 Alexander Lauser Struktur des Vortrags Motivation Grundlagen Volume Render-Algorithmen Raycasting Volume-slicing
MehrIhre Punkt + Sonderp. = Summe Ihre Note:
Hochschule Darmstadt Nachname: Fachbereich Informatik Vorname: Björn Frömmer, Prof. Dr. E. Hergenröther Matr. Nr.: Ihre Punkt + Sonderp. = Summe Ihre Note: Aufgabe : RGB-Farbmodell Punkte: / 6 % Unten
MehrPerlen der Informatik I Wintersemester 2012 Aufgabenblatt 6
Technische Universität München WS 2012 Institut für Informatik Prof. Dr. H.-J. Bungartz Prof. Dr. T. Huckle Prof. Dr. M. Bader Kristof Unterweger Perlen der Informatik I Wintersemester 2012 Aufgabenblatt
MehrTransformation - Homogene Koordinaten. y + b )
Transformation - Homogene Koordinaten In der "üblichen" Behandlung werden für die Verschiebung (Translation) und die Drehung (Rotation) verschiedene Rechenvorschriften benutzt - einmal Addition von Vektoren
MehrFreispeicherverwaltung Martin Wahl,
Freispeicherverwaltung Martin Wahl, 17.11.03 Allgemeines zur Speicherverwaltung Der physikalische Speicher wird in zwei Teile unterteilt: -Teil für den Kernel -Dynamischer Speicher Die Verwaltung des dynamischen
MehrHigh Performance Computing Blatt 7
Dr. Andreas Borchert Institut für Numerische Mathematik Prof. Dr. Stefan Funken Universität Ulm Prof. Dr. Karsten Urban Sommersemester 03 Markus Bantle, Kristina Steih High Performance Computing Blatt
MehrHochleistungsrechnen auf dem PC
Hochleistungsrechnen auf dem PC Steffen Börm Christian-Albrechts-Universität zu Kiel Ringvorlesung Informatik, 26. Juni 2014 S. Börm (CAU Kiel) Hochleistungsrechnen auf dem PC 26. Juni 2014 1 / 33 Übersicht
MehrBildsegmentierung mit Snakes und aktiven Konturen
Bildsegmentierung mit Snakes und aktiven Konturen 5. Dezember 2005 Vortrag zum Seminar Bildsegmentierung und Computer Vision Übersicht 1 2 Definition der Snake Innere Energie S(c) 3 Statisches Optimierungsproblem
MehrPaging. Einfaches Paging. Paging mit virtuellem Speicher
Paging Einfaches Paging Paging mit virtuellem Speicher Einfaches Paging Wie bisher (im Gegensatz zu virtuellem Speicherkonzept): Prozesse sind entweder ganz im Speicher oder komplett ausgelagert. Im Gegensatz
MehrModellierung. Oliver Hartmann
Modellierung Oliver Hartmann oliver.hartmann@uni-ulm.de Inhalt Boolesche Operationen Splines B-Splines Bezier-Kurven NURBS Anwendung Sculpting Volumengrafik Marching Cubes Ray Casting Texture Mapping Boolesche
MehrView-Dependent Simplification. Computer Graphics
View-Dependent Simplification in Computer Graphics Metovic Sasa - Mustafa Fettahoglu Salzburg, am 30.01.2003 INHALTSVERZEICHNIS EINFÜHRUNG ANSICHT ABHÄNGIGE VEREINFACHUNG AUFBAU EINES MESHES EDGE COLLAPSE
MehrMarching Cubes - Erstellung von Polygonmodellen aus Voxelgittern
Marching Cubes - Erstellung von Polygonmodellen aus Voxelgittern Matthias Kirschner Advanced Topics in Computer Graphics - WS06/07 Marching Cubes - Erstellung von Polygonmodellen aus Voxelgittern Matthias
MehrSchwache Lösung der Stokes-Gleichungen für nicht-newton'sche Fluide
Daniel Janocha Aus der Reihe: e-fellows.net stipendiaten-wissen e-fellows.net (Hrsg.) Band 1064 Schwache Lösung der Stokes-Gleichungen für nicht-newton'sche Fluide Weak solution of the Stokes equations
MehrWir erinnern zunächst an die verschiedenen Arten von Funktionen, die uns bisher begegnet sind: V : r 0 3 V ( r) 0 3
3 1. Mathematische Grundlagen Zur Vorbereitung fassen wir in diesem ersten Kapitel die wichtigsten mathematischen Konzepte zusammen, mit denen wir in der Elektrodynamik immer wieder umgehen werden. 1.1.
MehrComputer Graphics Shader
Computer Graphics Shader Sven Janusch Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2 Fixed Function Pipeline T&L Pipeline (Transformation and Lighting)
MehrGeometrie 2. Julian Fischer Julian Fischer Geometrie / 30
Geometrie 2 Julian Fischer 6.7.2009 Julian Fischer Geometrie 2 6.7.2009 1 / 30 Themen 1 Bereichssuche und kd-bäume 1 Bereichssuche 2 kd-bäume 2 Divide and Conquer 1 Closest pair 2 Beispiel: Points (IOI
MehrGraphische Datenverarbeitung und Bildverarbeitung
Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Antialiasing Graphische DV und BV, Regina Pohle, 5. Antialiasing 1 Einordnung in die Inhalte der Vorlesung Einführung mathematische
Mehr11. Vorlesung Wintersemester
11. Vorlesung Wintersemester 1 Ableitungen vektorieller Felder Mit Resultat Skalar: die Divergenz diva = A = A + A y y + A z z (1) Mit Resultat Vektor: die Rotation (engl. curl): ( rota = A Az = y A y
Mehrkünstliches Objekt, dargestellt durch Anzahl von Punkten in Raum und Zeit (bei bewegten, animierten Objekten).
Computergrafik / Animation künstliches Objekt, dargestellt durch Anzahl von Punkten in Raum und Zeit (bei bewegten, animierten Objekten). Punkte, werden auch "Kontrollpunkte" genannt Wesentlicher Punkt:
MehrComputergrafik / Animation. künstliches Objekt, dargestellt durch Anzahl von Punkten in Raum und Zeit (bei bewegten, animierten Objekten).
Computergrafik / Animation künstliches Objekt, dargestellt durch Anzahl von Punkten in Raum und Zeit (bei bewegten, animierten Objekten). Punkte, werden auch «Kontrollpunkte» genannt Wesentlicher Punkt:
MehrVisualisierung und Volumenrendering I
Institut für Computervisualistik Universität Koblenz 05.07.2012 Inhaltsverzeichnis 1 Motivation 2 Volumendaten 3 Pipeline 4 Transferfunktionen 5 Gradienten 6 Volumenvisualisierung 7 IVR 8 DVR Wissenschaftliche
MehrComputergrafik. Ein anwendungsorientiertes Lehrbuch. Bearbeitet von Michael Bender, Manfred Brill
Computergrafik Ein anwendungsorientiertes Lehrbuch Bearbeitet von Michael Bender, Manfred Brill 1. Auflage 2003. Taschenbuch. 528 S. Paperback ISBN 978 3 446 22150 5 Format (B x L): 16,9 x 24,1 cm Gewicht:
MehrSeminar Ausgewählte Themen der medizinischen Visualisierung
1 Ausgewählte Themen der medizinischen Visualisierung Institut für Informatik 08.07.2011 Arbeitsgruppe Visualisierung und Computergrafik (VisCG) Organisatorisches Veranstalter: Prof. Dr. Klaus Hinrichs,
MehrMathematischer Vorkurs für Physiker WS 2012/13 Vorlesung 7
TU München Prof. P. Vogl Mathematischer Vorkurs für Physiker WS 2012/13 Vorlesung 7 Definition: Ein Skalarfeld ordnet jedem Punkt im dreidimensionalen Raum R 3 eine ahl () zu. Unter einem räumlichen Vektorfeld
MehrSimulationstechnik V
Simulationstechnik V Vorlesung/Praktikum an der RWTH Aachen Numerische Simulation von Strömungsvorgängen B. Binninger Institut für Technische Verbrennung Templergraben 64 6. Teil Die Berechnung des Geschwindigkeitsfeldes
MehrGeneral Purpose Computation on GPUs
General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht
Mehr9. Vorlesung Wintersemester
9. Vorlesung Wintersemester 1 Die Phase der angeregten Schwingung Wertebereich: bei der oben abgeleiteten Formel tan φ = β ω ω ω0. (1) ist noch zu sehen, in welchem Bereich der Winkel liegt. Aus der ursprünglichen
MehrPartitionierungsstrategien für Data Vault
ierungsstrategien für Data Vault Dani Schnider Trivadis AG Zürich/Glattbrugg, Schweiz Einleitung Während das Laden von Tabellen in Data Vault in der Regel nicht zeitkritisch ist, stellt uns das effiziente
MehrMultimediatechnik / Video
Multimediatechnik / Video Video-Kompression Zusammenfassung http://www.nanocosmos.de/lietz/mtv 2009 1 Motivation: Video-Kompression Unkomprimierte Datenmengen sind zu groß! TV: 20 MB/s = 72 GB/h (720x576x2x25)
MehrEinleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7
Sonja Hunscha - Koordinatensysteme 1 Inhalt Einleitung 2 1 Koordinatensysteme 2 1.1 Kartesisches Koordinatensystem 2 1.2 Polarkoordinaten 3 1.3 Zusammenhang zwischen kartesischen und Polarkoordinaten 3
MehrComputergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.
Computergrafik SS 2012 Probeklausur 1 06.07.2012 Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Aufgabe 1 (19 Punkte) Beantworten Sie die folgenden Fragen prägnant.
MehrAnalytische Lösung algebraischer Gleichungen dritten und vierten Grades
Analytische Lösung algebraischer Gleichungen dritten und vierten Grades Inhaltsverzeichnis 1 Einführung 1 2 Gleichungen dritten Grades 3 3 Gleichungen vierten Grades 7 1 Einführung In diesem Skript werden
MehrI.1.3 b. (I.7a) I.1 Grundbegriffe der Newton schen Mechanik 9
I. Grundbegriffe der Newton schen Mechanik 9 I..3 b Arbeit einer Kraft Wird die Wirkung einer Kraft über ein Zeitintervall oder genauer über die Strecke, welche das mechanische System in diesem Zeitintervall
MehrLösung II Veröffentlicht:
1 Momentane Bewegung I Die Position eines Teilchens auf der x-achse, ist gegeben durch x = 3m 30(m/s)t + 2(m/s 3 )t 3, wobei x in Metern und t in Sekunden angeben wird (a) Die Position des Teilchens bei
MehrVolumenrendering mit CUDA
Volumenrendering mit CUDA Arbeitsgruppe Visualisierung und Computergrafik http://viscg.uni-muenster.de Überblick Volumenrendering allgemein Raycasting-Algorithmus Volumen-Raycasting mit CUDA Optimierung
MehrBildbearbeitung und Texturierung
Ulf Döring, Markus Färber 07.03.2011 1. Anti-Aliasing (a) Wodurch entsteht der Aliasing-Effekt bei der Rasterisierung einer Linie? (b) Wie kann der Aliasing-Effekt durch Supersampling mit nachträglichem
MehrKapitel 2: Mathematische Grundlagen
[ Computeranimation ] Kapitel 2: Mathematische Grundlagen Prof. Dr. Stefan M. Grünvogel stefan.gruenvogel@fh-koeln.de Institut für Medien- und Phototechnik Fachhochschule Köln 2. Mathematische Grundlagen
Mehr3. Analyse der Kamerabewegung Video - Inhaltsanalyse
3. Analyse der Kamerabewegung Video - Inhaltsanalyse Stephan Kopf Bewegungen in Videos Objektbewegungen (object motion) Kameraoperationen bzw. Kamerabewegungen (camera motion) Semantische Informationen
MehrPP Physikalisches Pendel
PP Physikalisches Pendel Blockpraktikum Frühjahr 2007 (Gruppe 2) 25. April 2007 Inhaltsverzeichnis 1 Einführung 2 2 Theoretische Grundlagen 2 2.1 Ungedämpftes physikalisches Pendel.......... 2 2.2 Dämpfung
Mehr4.7 Globale Beleuchtungsmodelle
Erinnerung: - Ein lokales Beleuchtungsmodell berücksichtigt nur das direkt einfallende Licht einer Lichtquelle - Nur lokale Beleuchtung + konstante ambiente Beleuchtung, um reflektiertes und gebrochenes
Mehr) (1 BE) 1 2 ln 2. und somit
1 Aufgaben aus dem Aufgabenpool 1 1.1 Analysis A1_1 Eine Funktion f ist durch 1 x f(x) e 1, x IR, gegeben. Ermitteln Sie die Nullstelle der Funktion f. ( ) b) Die Tangente an den Graphen von f im Punkt
MehrEinführung. Ablesen von einander zugeordneten Werten
Einführung Zusammenhänge zwischen Größen wie Temperatur, Geschwindigkeit, Lautstärke, Fahrstrecke, Preis, Einkommen, Steuer etc. werden mit beschrieben. Eine Zuordnung f, die jedem x A genau ein y B zuweist,
Mehr3D-Rekonstruktion aus wenigen Röntgenprojektionen auf Grafikhardware
3D-Rekonstruktion aus wenigen Röntgenprojektionen auf Grafikhardware Ulrich Heil 1 Daniel Groß 1 Ulrich Schwanecke 3 Ralf Schulze 2 Elmar Schömer 1 1 Institut für Informatik, Johannes Gutenberg-Universität
MehrSimulationstechnik V
Simulationstechnik V Vorlesung/Praktikum an der RWTH Aachen Numerische Simulation von Strömungsvorgängen B. Binninger Institut für Technische Verbrennung Templergraben 64 7. Teil Die Impulsgleichungen
MehrInteraktives Wasser in 3D. Jörn Loviscach Hochschule Bremen
Interaktives Wasser in 3D Jörn Loviscach Hochschule Bremen Ringwellen (Kapillar- und Schwerewellen) Kelvin-Schiffswellen Reflexionen von Himmel (Frensel-Effekt) und Sonne Kaustiken mit korrekten Schatten
MehrPartikelvisualisierung
Partikelvisualisierung Visualisierung großer Datensätze Oleg Martin 12. Mai 2011 Inhaltsverzeichnis 1. Einführung Was ist Datenvisualisierung? Ziele der Partikelvisualisierung Geschichtliche Entwicklung
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
Mehr