Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann...

26
Projektpraktikum Medizinische Visualisierung

Transcript of Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann...

Page 1: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

ProjektpraktikumMedizinische Visualisierung

Page 2: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Einführung

Projektleitung: Matthias Biedermann

Projektassistenz: Andreas Langs

Projektteilnehmer: Marcus Berlage

Martina Brümmer

Johannes Hamecher

Jan Hermes

Thomas Höllt

Christian Isleib

Sören Kewenig

Carsten Meffert

Das Team

Page 3: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

• Visualisierung von medizinischen Volumendaten, die zum Beispiel von CT oder MRI

geliefert werden• im Gegensatz zum Oberflächen Rendering werden hierbei mehrschichtige oder

transparente Informationen dargestellt, zum Beispiel das Innere eines Körpers

EinführungDie Thematik

Page 4: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

• bislang nur 8 bit Datensätze unterstützt• hauptsächlich CPU-Rendering • maximal interaktive Performance

EinführungEigenschaften von bekannten Systemen

Page 5: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

EinführungZiele des Projektpraktikums

• Einarbeitung in den Bereich der medizinischen Visualisierung • Schwerpunkt: Visualisierung• Entwicklung eines Programmes zur Visualisierung von Volumendaten• Entwicklung einer Benutzeroberfläche • für möglichsten großen Lerneffekt: wurde auf keine bestehende Software zurückgegriffen [Ausnahme DICOM-Reader]

Page 6: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

EinführungZiele des Projektpraktikums

• Verarbeitung von Volumendaten: DICOM, PGM• Rendern auf CPU und GPU• Ein- und Ausgabegeräte (Maus, (Spacemaus, Phantom))• Stereodisplay

Page 7: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

EinführungOrganisation des Praktikums

• Zeitraum des Praktikums: 1.Oktober 2005 bis 31.März 2006• Organisation

– Vorbereitungsphase: Vorträge– Übungsphase: Übungsaufgabe– 1. Programmierphase: CPU-Raycasting– 2. Programmierphase: GPU-Raycasting– Audit

Page 8: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

VorbereitungsphaseVorträge und Entscheidungen

Raycasting

Studienarbeit

Selbstentwicklung

CG, GLSL

wxWidgets, QT

• Grundlagen der Volumenvisualisierung• Renderingverfahren• Transferfunktion• Optimierungsmöglichkeiten• existierende API's• GPU-Programmierung• GUI-Programmierung• Haptik

Page 9: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

VorbereitungsphaseSystemanforderungen

• Windows-PC (entwickelt und getestet unter Windows XP) • aktuelle Grafikhardware mit Unterstützung für Shader-Model 3.0 (empfohlen: Nvidia, ab NV4x) • je nach Datensatz ausreichend Arbeitsspeicher (mind. 512 MB) • Bibliotheken:

•Boost(version),•wxWidgets(), •cg 1.4, •glew(),•Opengl•DICOM Parser

Page 10: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Datenverarbeitung

Programmierphase 1Teamaufteilung

Projektleiter

GUI-WorkflowCPU-Rendering

-CPU Raycasting -Raw/PGM lesen/schreiben-Filter (Mean /Gauss/Median)

-Basisoberfläche

Page 11: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 1Module und Daten

GUI DatenhaltungDateien

CPUVolumen

Kamera und Transferfunktion fest

Page 12: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 1Probleme und Lösungen

• Integration der einzelnen Komponenten nur anhand des Klassendiagramms– zu kurze Planungsphase --> direktes Implementieren warf Probleme auf – Schnittstellen waren nicht genau genug spezifiziert– Änderungen wurden bis zur Integrationspahse nicht an andere weitergegeben– Dokumentation aktuell halten und mehr Wissensaufbau (?)

• Entwicklung des Raycasters in Kommandobox, ohne GUI– besser direkt integrieren

Page 13: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 1Ergebnisse

• CPU rendert erste Bilder (ein Bild ca. 45 Sek.)• Filter implementiert• Lesen und schreiben von Dateien möglich• GUI besteht aus Grundgerüst (keine Interaktion)

Page 14: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 1Ergebnisse

CPU – Raycaster Maximum Intensity

Page 15: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 1Ergebnisse

CPU – Raycaster Mean Value

Page 16: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

GlueCode

Programmierphase 2Teamaufteilung

Projektleiter

GUI-DesignGPU-Shader

-Echtzeitfähiges Raycasting(dual NV40) -Verschiedene Shader-12 bit

-Shader und GUI verbinden-Kamerasteuerung

-Code komplett integrieren-Transferfunktion-Dicom-Spacemouse

Page 17: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Module und Daten

GUI

Datenhaltung

Gluecode GPU

Dateien

Kamera, Shader,Transferfunktion

Shader,Texturuniformvariablen

Volumen

CPUVolumen

Kamera, Transferfunktion

Page 18: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Probleme und Lösungen

• Struktur des GlueCodes• Laden der Shader und zur Verfügungstellen der Parameter• Integration der Komponeten stellte sich als schwierig heraus

– unbekannte Nebeneffekte Texturen– Kapselung problematisch: keiner wusste genau was wo anders gemacht wurde

Page 19: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Probleme und Lösungen

• fehlende Testumgebung für die Shader– GlueCode-Erstellung dauerte länger als Shaderprogrammierung

• einfache Optimierungverfahren führten nicht zu Performancesteigerung • mehr als 256 steps führen zu Bildfehlern• Cg reagierte nicht vorhersehbar• Instabilitäten in der GUI• unerwartete Auswirkungen von einem Programmteil auf einen Anderen

Page 20: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

• Verschiedene Shader implementiert • 12 bit fähig• Transferfunktion für CPU und GPU• Kamerasteuerung per Mouse (Maya)• Funktionalitäten über GUI ansteuerbar• Outputfenster für Statusausgaben• DICOM lesen

Page 21: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

GPU - Torso mit linearer Transferfunktion

Page 22: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

GPU - Torso mit veränderter Transferfunktion

Page 23: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

Emission - Absorbtion Slice Viewer

Page 24: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

Mean Value Maximum Intensity

Page 25: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

Programmierphase 2Ergebnisse

CPU - Raycaster

Page 26: Projektpraktikum Medizinische Visualisierung. Einführung Projektleitung:Matthias Biedermann Projektassistenz:Andreas Langs Projektteilnehmer:Marcus Berlage.

FazitEindrücke und Ausblicke

• Das Projekt wurde als Erfolg gewertet• Die Hauptziele wurden erreicht (bis auf Spacemouse)• Mehr Softwaretechnische Planung wäre sinnvoll gewesen• Unbekanntes Problemfeld macht planen schwierig• GLSL statt CG vielleicht besser• Boost war im Nachhinein überflüssig• Audit war hilfreich (vielleicht früher)• Mögliche Erweiterungen: Haptik, Stereodisplay, Shader(Optimierung)