Interaktive Visualisierung zeitabhängiger Volumendaten

Größe: px
Ab Seite anzeigen:

Download "Interaktive Visualisierung zeitabhängiger Volumendaten"

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 Interaktive Visualisierung zeitabhängiger Volumendaten Diplomarbeit von Dario Kardas graphische datenverarbeitung, universität erlangen-nürnberg Skalare Volumendaten Volumen besteht aus Schichtbildern

Mehr

Visualisierung und Volumenrendering 2

Visualisierung 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

Mehr

Volumenverarbeitung und Optimierung II

Volumenverarbeitung 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

Mehr

Volumen Visualisierung

Volumen 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 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

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik 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

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele 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

Mehr

Grafikkarten-Architektur

Grafikkarten-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

Mehr

RST-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 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

Mehr

Texture Based Direct Volume Rendering

Texture 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

Mehr

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

Echtzeitfä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

Mehr

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Probelektion 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

Mehr

Dynamisches Huffman-Verfahren

Dynamisches 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

Mehr

Universitä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 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

Mehr

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

Michael 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

Mehr

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

Computergrafik. 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

Mehr

computer graphics & visualization

computer 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

Mehr

Kapitel 4: Schattenberechnung

Kapitel 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

Mehr

Beleuchtungsmodelle und Shading

Beleuchtungsmodelle 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.

Mehr

Shader. Computer Graphics: Shader

Shader. 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

Mehr

3D - Modellierung. Arne Theß. Proseminar Computergraphik TU Dresden

3D - 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

Mehr

PG 471: Beyond Graphics. Strömungssimulation in der GPU

PG 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

Ü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 Ü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

Mehr

5. Gitter, Gradienten, Interpolation Gitter. (Rezk-Salama, o.j.)

5. 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.)

Mehr

Grundlagen der Spieleprogrammierung

Grundlagen 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:

. 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

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-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

Mehr

Projekt Systementwicklung

Projekt Systementwicklung Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit

Mehr

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze

Mesh-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

Mehr

Entwicklung eines hardwarebeschleunigten direkten Volumenvisualisierers für große Datensätze

Entwicklung 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,

Mehr

GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit

GPU-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,

Mehr

Aufgabe 1 - Tricks mit linearen Gleichungen

Aufgabe 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

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik 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

Mehr

Praktische Übungen zu Computertechnik 2. Versuchsprotokoll

Praktische Ü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

Mehr

Christina Nell. 3D-Computergrafik

Christina 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

Mehr

SS08, 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 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

Mehr

3.5 Methode des gleitenden Horizonts

3.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

Mehr

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

GPGPU 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

Mehr

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Adaptives 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 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

Mehr

Mathematischer Vorkurs für Physiker WS 2009/10

Mathematischer 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

Mehr

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

GPU 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

Mehr

Landau-Theorie. Seminar zur Theorie der Teilchen und Felder. Daniel Schröer

Landau-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

Mehr

Spiegelgasse 1 CH 4051 Basel. Vorführung der laufenden Programme im Tutorium Woche 3 (Abgabe ).

Spiegelgasse 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

Mehr

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Diplomarbeit. 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

Mehr

Mathematische Grundlagen der dynamischen Simulation

Mathematische 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

Mehr

Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen

Algorithmik 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

Mehr

3D 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 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

Mehr

Volumenakquise. Vortrag von Benjamin Gayer

Volumenakquise. 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

Mehr

Rotation. Versuch: Inhaltsverzeichnis. Fachrichtung Physik. Erstellt: U. Escher A. Schwab Aktualisiert: am 29. 03. 2010. Physikalisches Grundpraktikum

Rotation. 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

Mehr

Angewandte Mathematik am Rechner 1

Angewandte 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:

Mehr

LABORÜBUNG MATLAB/OCTAVE

LABORÜ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

Mehr

Direkte Volumenvisualisierung

Direkte Volumenvisualisierung Universität Stuttgart Direkte Volumenvisualisierung Seminar Medizinische Visualisierung SS06 Alexander Lauser Struktur des Vortrags Motivation Grundlagen Volume Render-Algorithmen Raycasting Volume-slicing

Mehr

Ihre Punkt + Sonderp. = Summe Ihre Note:

Ihre 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

Mehr

Perlen der Informatik I Wintersemester 2012 Aufgabenblatt 6

Perlen 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

Mehr

Transformation - Homogene Koordinaten. y + b )

Transformation - 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

Mehr

Freispeicherverwaltung Martin Wahl,

Freispeicherverwaltung 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

Mehr

High Performance Computing Blatt 7

High 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

Mehr

Hochleistungsrechnen auf dem PC

Hochleistungsrechnen 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

Mehr

Bildsegmentierung mit Snakes und aktiven Konturen

Bildsegmentierung 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

Mehr

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Paging. 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

Mehr

Modellierung. Oliver Hartmann

Modellierung. 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

Mehr

View-Dependent Simplification. Computer Graphics

View-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

Mehr

Marching Cubes - Erstellung von Polygonmodellen aus Voxelgittern

Marching 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

Mehr

Schwache Lösung der Stokes-Gleichungen für nicht-newton'sche Fluide

Schwache 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

Mehr

Wir erinnern zunächst an die verschiedenen Arten von Funktionen, die uns bisher begegnet sind: V : r 0 3 V ( r) 0 3

Wir 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.

Mehr

Computer Graphics Shader

Computer 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)

Mehr

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30

Geometrie 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

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische 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

Mehr

11. Vorlesung Wintersemester

11. 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

Mehr

künstliches Objekt, dargestellt durch Anzahl von Punkten in Raum und Zeit (bei bewegten, animierten Objekten).

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:

Mehr

Computergrafik / 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). 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:

Mehr

Visualisierung und Volumenrendering I

Visualisierung 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

Mehr

Computergrafik. Ein anwendungsorientiertes Lehrbuch. Bearbeitet von Michael Bender, Manfred Brill

Computergrafik. 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:

Mehr

Seminar Ausgewählte Themen der medizinischen Visualisierung

Seminar 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,

Mehr

Mathematischer Vorkurs für Physiker WS 2012/13 Vorlesung 7

Mathematischer 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

Mehr

Simulationstechnik V

Simulationstechnik 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

Mehr

General Purpose Computation on GPUs

General 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

Mehr

9. Vorlesung Wintersemester

9. 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

Mehr

Partitionierungsstrategien für Data Vault

Partitionierungsstrategien 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

Mehr

Multimediatechnik / Video

Multimediatechnik / 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)

Mehr

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

Einleitung 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

Mehr

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.

Computergrafik 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.

Mehr

Analytische Lösung algebraischer Gleichungen dritten und vierten Grades

Analytische 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

Mehr

I.1.3 b. (I.7a) I.1 Grundbegriffe der Newton schen Mechanik 9

I.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

Mehr

Lösung II Veröffentlicht:

Lö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

Mehr

Volumenrendering mit CUDA

Volumenrendering mit CUDA Volumenrendering mit CUDA Arbeitsgruppe Visualisierung und Computergrafik http://viscg.uni-muenster.de Überblick Volumenrendering allgemein Raycasting-Algorithmus Volumen-Raycasting mit CUDA Optimierung

Mehr

Bildbearbeitung und Texturierung

Bildbearbeitung 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

Mehr

Kapitel 2: Mathematische Grundlagen

Kapitel 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

Mehr

3. Analyse der Kamerabewegung Video - Inhaltsanalyse

3. 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

Mehr

PP Physikalisches Pendel

PP 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

Mehr

4.7 Globale Beleuchtungsmodelle

4.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 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

Mehr

Einführung. Ablesen von einander zugeordneten Werten

Einfü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,

Mehr

3D-Rekonstruktion aus wenigen Röntgenprojektionen auf Grafikhardware

3D-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

Mehr

Simulationstechnik V

Simulationstechnik 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

Mehr

Interaktives Wasser in 3D. Jörn Loviscach Hochschule Bremen

Interaktives 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

Mehr

Partikelvisualisierung

Partikelvisualisierung Partikelvisualisierung Visualisierung großer Datensätze Oleg Martin 12. Mai 2011 Inhaltsverzeichnis 1. Einführung Was ist Datenvisualisierung? Ziele der Partikelvisualisierung Geschichtliche Entwicklung

Mehr

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. 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