• Keine Ergebnisse gefunden

Medizinische Visualisierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Medizinische Visualisierung"

Copied!
35
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Vorlesung 6

05.12.2012, Universität Koblenz-Landau

Dr. Matthias Raspe SOVAmed GmbH

Medizinische Visualisierung

(2)

Agenda

• Grundlagen GPU-Programmierung

• Evolution

• Moderne OpenGL-Programmierung

• Shaderprogrammierung (GLSL)

• Visualisierung 1

• Volumenrendering-Verfahren im Überblick

• Visualisierungspipeline im Detail

• Indirektes Volumenrendering

• Transferfunktionen

(3)

Wiederholung/Grundlagen

GPU-Programmierung (Dank an Niklas Henrich)

(4)

Wiederholung OpenGL

• Open Graphics Library

• Low-Level Bibliothek zur Darstellung von 3D Objekten

• Herstellerunabhängiges System

• Konsequentes „state-machine“-Konzept

• Aktuelle Version: OpenGL 4.3

• Bisher: fixed-function pipeline

• fest definierte Einheiten

• zum Teil parametrisierbar

• Parallelisierung durch fehlende Abhängigkeiten möglich

(5)

Moderne OpenGL Pipeline

• zunehmende Flexibilität und Effekte durch Programmierbarkeit

• nicht nur parametrisierbar, sondern programmierbar

• Mini-Programme (“Shader”) laufen auf Prozessoreinheiten der Grafikhardware

• je nach Typ und Sprache/Sprachversion unterschiedliche Befehle und Möglichkeiten

• zahlreiche Erweiterungen, wesentlich für MedVis sind

• Fragmentshader: z.T. historisch bedingt, viel Texturoperationen

• Vertex- und Geometryshader: je nach Anwendung (Glyphen, Geometrien etc.)

(6)

Shadersprachen

• Damals...

• reine Maschinensprache

• fehlende Modularisierung

• Heute:

• zahlreiche Hochsprachen zur Programmierung

• Compiler übersetzt in Maschinensprache

• Übliche Sprachen:

• Cg (Nvidia)

• GLSL (OpenGL)

• HLSL (DirectX)

• für GPGPU-Anwendungen:

CUDA, Brook, Sh, OpenCL

(7)

Architektur-Unterschiede Cg/GLSL

Cg Translator

Application

Cg source code

Cg Translator

OpenGL or DirectX Driver

Assembler assembly

program

OpenGL or DirectX API

Assembly source code (source or binary)

Graphics hardware

executable code

Provided by application developer

Provided by Nvidia Provided by graphics hardware vendor

Application Application

Shader source code

OpenGL Driver

Linker Program

Object

OpenGL API

Shader source code

Graphics hardware

executable code

Provided by application developer

Provided by graphics hardware vendor

Compiler Shader

Object compiled code

• Cg

• kompatibel zu OpenGL und DirectX

• externer Compiler → manuelle Optimierung

• GLSL

• OpenGL/OpenCL-kompatibel

• Compiler in OpenGL-Treiber integriert

(8)

Historische Entwicklung

• Erste Generation (ca. 2001, DX 8.0/SM 1.1)

• programmierbare Vertexshader (VS)

• sehr eingeschränkte Fragmentshader (FS)

• Zweite Generation (ca. 2002, DX 9.0/SM 2.x)

• erweiterte Programmierbarkeit für VS+FS (Flusskontrolle usw.)

• Einführung von Hochsprachen (Cg, HLSL, später GLSL)

• Dritte Generation (ca. 2004, DX 9.0c/SM 3.0)

• mehr Erweiterungen (z.B. Vertex-Texturen, höhere Grenzen)

• Vierte Generation (ca. 2007, DX 10.0/SM 4.0)

• Einführung der Geometry-Shader, Konzept der Unified Shader

• Erweiterungen (Integertexturen, bitweise Operationen usw.)

(9)

Vertexprogramm

• Arbeitet nur auf einem Eckpunkt

• keine Information über Topologie (andere Eckpunkte)

• keine Punkte erzeugen oder löschen

• wahlfreier Zugriff auf Texturspeicher

• Typische Aufgaben:

• Eckpunkttransformationen (Welt- in Kamerakoordinaten, kanon. Volumen)

• Normalentransformation

• Beleuchtung (in Kamera- Koordinaten)

• Nicht in Vertexprogramm:

• Clipping, persp. Division

(10)

Fragmentprogramm

• Arbeitet am Ende der Pipeline

• für jedes zu zeichnende Fragment ausgeführt

• arbeitet nur auf aktuellem Fragment im Framebuffer

• wahlfreier Zugriff auf Texturspeicher

• Typische Aufgaben:

• Farbe des Pixels berechnen

• Texturzugriffe und -operationen

• Effekte wie Nebel integrieren

• Nicht in Fragmentprogramm:

• Tiefen-/Stenciltest

• Alpha-Blending

(11)

OpenGL Shading Language (GLSL)

• Teil des OpenGL 2.0 Standards

• Syntax orientiert sich an C / C++

• Funktionen

• Einfache Datentypen (float, int, bool)

• Strukturen

• Arrays

• Bedingungen

• Schleifen

• Aber: keine Zeiger

• Beliebige Länge der Shader-Programme

• detaillierte Informationen:

• “Orange Book”

• www.khronos.org/files/opengl-quick-reference-card.pdf

(12)

Grundlegender Ablauf

(1) Shader Objekt erzeugen (2) Sourcecode laden

(3) Shader compilieren

(4) Shader Program Objekt erzeugen

(5) Shader Program mit Shadern belegen

(6) Program linken

(7) Program benutzen

(8) Programm(e) ausführen

(9) Zurück zur OpenGL Fixed- Function Pipeline

shader = glCreateShader(TYPE);

glShaderSource(shader,&sourcePtr,0);

glCompileShader(shader);

program = glCreateProgram();

glAttachShader(program, vertexShader);

glLinkProgram(program);

glUseProgram(program);

renderObjects();

glUseProgram(0);

(13)

Minimal GLSL-Shader

• Vertexprogramm

• Fragmentprogramm

void main() {

gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;

// alternativ: gl_Position = ftransform();

gl_FrontColor = gl_Color;

}

void main()

{ gl_FragColor = gl_Color;

}

(14)

Kommunikation mit Shadern

• Verschiedene Arten des Datenaustauschs möglich:

uniform-Variablen:

• innerhalb von Shadern nur Lesezugriff

• Wert konstant für Grafikprimitiv

• viele vordefiniert (z.B. gl_ModelViewMatrix, gl_LightSource[0])

attribute-Variablen:

• benutzerdefinierte Attribute pro Vertex

• vordefiniert (z.B. Farbe, Normale usw.)

varying-Variablen:

• Kommunikation zwischen den Shadern

• automatische Interpolation von VS -> FS

• Texturen

• verschiedene Typen und Dimensionen

• üblich für sehr große Datenmengen

(15)

Volumenvisualisierung 1

Einführung, Indirektes Volumenrendering

(16)

Volumenvisualisierung

• Kategorien von Volumenrendering-Verfahren

Volume Rendering

Indirect Direct

Software Hardware

Image-space Object-space Other

Fourier Shear-Warp

Image-space Object-space

Ray casting Texture-based

view-parallel volume-parallel Ray casting Splatting

(17)

®

Visualisierungspipeline

Transferfunktion

Compositing

Integration zu Endbild

Darstellung Akquisition

der Daten

Bildgebende Verfahren (z.B. CT, MR), Simulationen

Applikation/Hardware Externe Systeme

Sampling

Anzahl/Abstand der Slices oder Samples

entlang Sehstrahl

Filterung

Interpolation der vorhandenen Daten für Samples

Klassifikation

Zuweisung von Farbe und Opazität/

Transparenz

Shading

Auswertung von Beleuchtungs-

modellen

(18)

®

Darstellung von Volumendaten

• Eine Form der Visualisierung ist die Hervorhebung gleicher Werte mit geometrischen Primitiven

• Isolinien (auch „Höhenlinien“, Konturlinien)

• Isoflächen (Konturflächen)

• In dieser Form gehören sie zu den indirekten

Visualisierungsmethoden

• direkte Methoden

→ später…

(19)

MedVis - Vorlesung 6 05.12.2012 Dr. Matthias Raspe, SOVAmed GmbH

®

Darstellung von Volumendaten

• Diese können mit weiteren Attributen erweitert dargestellt werden, z.B.

• Isolinien für bestimmte Höhen eines Geländes

• Farbe/Sättigung für Vorzeichen/Betrag des Gradienten

• Steile Anstiege → intensives Rot

• Flache Gefälle → leichtes Blau

• Isolinien und vor allem Iso- flächen spielen in vielen

Anwendungsgebieten eine sehr große Rolle

19

106 CHAPTER 5. NON-PHOTOREALISTIC VOLUME RENDERING

concept of deferred computations is that it reduces their complexity from being proportional to object space, e.g., the number of voxels in a volume, to the complexity of image space, i.e., the number of pixels in the final output image. Naturally, these computations are not limited to shading equations per se, but can also include the derivation of additional information that is only needed for visible pixels and may be required as input for shading, such as differential surface properties.

In this section, we describe deferred shading computations for rendering isosurfaces of volumetric data. The computations that are deferred to image space are not limited to actual shading, but also include the derivation of differential implicit surface properties such as the gradient (first order partial derivatives), the Hessian matrix (second order partial derivatives), and principal curvature information.

Figure 5.5 illustrates a pipeline for deferred shading of isosurfaces of volume data, and figure 5.6 shows example images corresponding to the output of specific image space rendering passes. The input to the pipeline is a single floating point image storing ray-surface intersec- tion positions of the viewing rays and the isosurface. This image is obtained via either slicing the volume, or first hit ray casting, as outlined above and illustrated in figure 5.4.

From this intersection position image, differential isosurface properties such as the gradient and additional partial derivatives such as the Hessian matrix can be computed first. This

Figure 5.6: Example image space rendering passes of deferred isosurface shading. Surface properties such as (a) the gradient (here color-coded in RGB), (b) principal curvature magni- tudes (here: ), and (c) principal curvature directions can be reconstructed. These properties

(20)

®

• Beim bisherigen (Oberflächen-)Rendering waren die Normalen gegeben oder konnten berechnet werden

• Für Volumendaten (genauer: 3D-Skalarfelder) gibt es jedoch keine Normalen im eigentlichen Sinn...

• Guter Ersatz: der Gradientenvektor

• entspricht der Normale auf Isofläche

• analog zu Gradient in Bildverarbeitung (vgl. Kantendetektion)

• Der Gradientenvektor ist die erste Ableitung eines 3D-Skalarfeldes , d.h

• Wird oft durch Zentraldifferenzen berechnet, z.B. in x-Richtung:

Exkurs: Gradient

(

f

) f ( x , y , z )

( f ) = ( f

x

, f

y

, f

z

) = f

x , f

y , f z

|| ⇥ ( f ) || = f

x2

+ f

y2

+ f

z2

f

x

( x, y, z ) = f ( x + 1, y, z ) f ( x 1, y, z ) mit x, y, zN

(21)

®

Marching Cubes

• Wie können Isoflächen automatisch aus Volumendaten generiert werden?

• Marching Cubes (Lorensen et al., 1987)

• Übliches Verfahren zur Konstruktion von Isoflächen aus 3D-Skalarfeldern (d.h. Volumen)

• Auch allgemein definiert auf anderen Daten

• Bei höherdimensionalen Daten (Vektorfelder etc.) wird eine entsprechende Ordnungsrelation benötigt, z.B.

• Betrag des Vektors

• Gradient (auch bei Skalaren)

• Zunächst im 2D: Marching Squares

(22)

®

Marching Squares

• Ausgangsdaten: Skalare an Gitterpunkten

• Annahmen:

• Isowert wird höchstens einmal zwischen zwei Gitterpunkten angenommen → ausreichend hohe Auflösung

• Werte (und damit die Konturen) verlaufen linear

• Vorgehen:

• Bestimme für jeden Gitterpunkt, ob er innerhalb/außerhalb liegt → Bitcode

• Ermittle beteiligte Kante aus unterschiedlichen Bitcodes

• Bestimme Punkt auf dieser Kante durch lineare Interpolation

• Verbindung dieser Punkte zu Linien

(23)

®

Marching Squares

• Beispiel Graustufenbild, Isolinie für C = 3

• Skalarfeld der Dimension 2

• Gitterpunkte = Pixelmitte

• Ergebnis ähnlich zu Kanten-

detektion, aber: Kante ≠ Isolinie

0 2

2

1 2 1

2 1

2 4 4 6

6

4

4 6

6 4

4 3

5 6 5 2

4

6

4 2

4 4

4 5 2 2 1 2

: ≤ C („innerhalb“) : > C („außerhalb“)

(24)

®

Marching Squares

• Betrachtet man sich eine Gitterzelle genauer, gibt es nur eine begrenzte Zahl von Kombinationen, wie die Linie grundsätzlich verlaufen kann

• Insgesamt 24 = 16 Möglichkeiten:

• Anzahl läßt sich deutlich reduzieren:

• Durch Komplementbildung 8 Möglichkeiten

• Durch Rotation und Symmetrie 4 Möglichkeiten

• Es gibt aber dennoch eine Mehrdeutigkeit…

(25)

®

Marching Cubes

• Die Erweiterung des Marching Squares Ansatzes führt zu Marching Cubes

• Prinzipiell gleicher Ablauf

• Statt (Iso-)Linien werden Isoflächen erzeugt

• Ausgangsdaten sind hier wieder Skalare in einer regulären

Gitterstruktur (Voxelzelle)

(26)

®

Marching Cubes

• Die Anzahl der möglichen Kombinationen beträgt in einer Voxelzelle insgesamt 28

= 256

• Durch Anwendung der gleichen Prinzipien (Komplement, Symmetrie) lassen sich die Fälle auf die folgenden 15 Kombinationen reduzieren:

• Auch hier gibt es Mehrdeutig- keiten, die sich jedoch teilweise nicht auflösen lassen

→ Löcher in Isofläche…

• Mögliche Lösungen

• Zusätzliche Komplemente

• Gradienten berücksichtigen

• Alternative Verfahren (z.B. Marching Tetraeder, Shirley et al, 1990)

Loch in Isofläche

(27)

®

• Allgemeines Vorgehen bei Marching Cubes:

• Betrachtung von Würfeln aus je 4 Voxeln der Schicht k und k+1

• Bestimmung der Codes für Eckpunkte (innerhalb/außerhalb)

• Ermittlung der beteiligten Kanten

• Ermittlung von Punkten auf diesen Kanten durch lineare Interpolation

• Verbindung der Punkte zu Dreiecken

• Zusätzlich:

• Zusammenfassung der Dreiecke/Dreiecksnetze zu möglichst effizienten Meshes (Triangle Strips usw.)

• Bestimmung von Gradienten, z.B. für Shading

• Speicherung der Vektoren in Textur (RGB+A)

• exakter, aber teurer: on-the-fly Berechnung

Marching Cubes

(28)

®

Zusammenfassung MC

• Marching Cubes als Methode zur Generierung von Isoflächen aus einem Voxelgitter

• Mehrdeutigkeiten, begrenzte Anzahl von Kombinationen

→ Optimierung möglich:

• Bitcodes

• Lookup-Tabelle

• Benötigt jedoch hohe Auflösung des Gitternetzes für ausreichende Qualität

• Problematisch wegen erhöhter Datenmenge und Laufzeit

• Ideal: adaptive Verfahren

(29)

Volumenvisualisierung 1

Transferfunktionen

(30)

®

Darstellung der Daten

• Darstellung der skalaren Werte in Farben üblicherweise mit Hilfe von Farbtabellen („color maps“)

• Realisierung als einfache Lookup-Tabelle

• Direkt in Hardware verfügbar:

glColorTableEXT → als Palette in fixed-function-pipeline

glTexImage1D → als Textur, z.B. für eigene Shader

9.789.65 9.228.79 8.68

3.012.32 1.92

11.23 10.11 9.78 9.65 9.22 8.79 8.68

3.01 2.32 1.92 1.01 0.78

Werte werden „geclamped“

Werte werden „geclamped“

(31)

®

Transferfunktionen

• Transferfunktionen sind eine Abbildung von der Menge der Attribute in die Menge der visuellen Eigenschaften

• Farbtabelle = diskretisierte Form der allgemeineren Transferfunktion

• Bei der Abbildung muss einem Eingabedatum eindeutig ein Wert zugeordnet werden können…

• Typische Abbildungen sind:

• Skalare in Grauwerte

• Skalare in RGB-Farben

• Richtungsvektoren in RGB-Farben

f : R → R

f : R → R

3

f : R

3

→ R

3

(32)

®

Transferfunktionen

• Genauer:

• Die Transferfunktion (TF) ist aus mathematischer Sicht eine Funktion und keine Relation

• Je nach Dimension der Wertemenge können aber mehrere Ausgabewerte einem Eingabewert zugeordnet sein

• Beispiele:

Kontinuierliche TF

Skalar

Helligkeit

Diskrete, abschnittsweise

definierte TF Kontinuierliche TF

für RGB-Kanäle Keine gültige TF,

da Relation

(33)

®

• In der Praxis ist die Bestimmung einer

“guten” Transferfunktion aufwendig

• eindimensionale TFs ermöglichen nur einfache Abbildungen

• Idee: zusätzliche Informationen wie Gradienten, Abstände etc.

mit einbeziehen

• Abgrenzung sonst gleicher Strukturen möglich

• aber: TF wird dadurch mehrdimensional

• große Datenmengen

• Kontrolle/User-Interface?

Transferfunktionen

Cascada: 1D-TF

(34)

MedVis - Vorlesung 6 05.12.2012 Dr. Matthias Raspe, SOVAmed GmbH

®

• Es existieren sehr viele unterschiedliche Ansätze, jedoch keine universelle Lösung

• „High-Level User Interfaces for Transfer Function Design with Semantics“, Rezk- Salama et al., 2006

• „The Transfer Function Bake-Off“, Pfister et al., 2001

• Med. Workstations bieten oft Kombination aus TF-

Bibliothek und manueller Steuerung (1D-TF) an

Transferfunktionen

34

Transfer Functions

Each transfer function has been designed for a specific purpose, e.g. to enhance vessels or to reveal the kidneys. Accordingly, the transfer functions might have a lesser effect on a different dataset.

Figure 3.9: Transfer Functions in syngo

Siemens Medical Inc.

(35)

®

Zusammenfassung TF

• Transferfunktionen weisen Volumendaten optische Eigenschaften zu, zum Beispiel:

• Dichtewert → Opazität

• Windrichtung → RGB-Wert

• verschiedene Dimensionen möglich, jedoch zunehmend komplexer

• kein universelles Verfahren

• Unterscheidung nach Automatisierung

• stark abhängig von Modalität (CT: einfach, MR: schwierig)

• aktives Forschungsgebiet

Referenzen

ÄHNLICHE DOKUMENTE

How does the scale factor evolve in time, if the universe is dominated by dust, photons or vacuum

How does the scale factor evolve in time, if the universe is dominated by dust, photons or vacuum

Científicas, 41092 Seville, Spain; h Department of Genetics, Evolution, & Environment, Centre for Biodiversity & Environment Research, University College London, London

Depending on the cellular context and receptor species (apparent affinity of human EPO for huEPOR was about three times as high as that for rodent EPOR), EPO bound at 10 to 200

A deoxyribodipyrimidine photolyase family protein 559 showed highest induction in both origins after the 2 °C UVR treatment, 560 X-ray repair cross-complementing protein 6

To match the market stochasticity we introduce the new market-based price probability measure entirely determined by probabilities of random market time-series of the

Studien der letzten Jahre haben jedoch verdeutlicht, dass Kolloid nicht gleich Kolloid ist, da jede Substanz durch ein spezifisches pharmakologisches Wirkprofil charakte- risiert

Our combined geochemical data reveal for the 838 fi rst time depleted compositions in igneous samples from the Beata 839 Ridge besides common LIP-like and enriched