Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Christiane Weisel Geändert vor über 10 Jahren
1
Projektpraktikum Medizinische Visualisierung
2
Einführung Das Team 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
3
Einführung Die Thematik
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
4
Einführung Eigenschaften von bekannten Systemen
bislang nur 8 bit Datensätze unterstützt hauptsächlich CPU-Rendering maximal interaktive Performance Ein GPU Renderer in Wien entstanden,
5
Einführung Ziele 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] Ziele siehe Wiki!
6
Einführung Ziele des Projektpraktikums
Verarbeitung von Volumendaten: DICOM, PGM Rendern auf CPU und GPU Ein- und Ausgabegeräte (Maus, (Spacemaus, Phantom)) Stereodisplay Ziele siehe Wiki!
7
Einführung Organisation 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
8
Vorbereitungsphase Vorträge und Entscheidungen
Grundlagen der Volumenvisualisierung Renderingverfahren Transferfunktion Optimierungsmöglichkeiten existierende API's GPU-Programmierung GUI-Programmierung Haptik Raycasting Studienarbeit Selbstentwicklung CG, GLSL wxWidgets, QT Renderingverfahren-> direktes Rendering Wxwidgets-> plattformunabhängig und OpenSource Boost -> GLSL oder CG --> keine allgemeine Treiberunterstützung für GLSL (?) Namenssuche -> Galenus
9
Vorbereitungsphase Systemanforderungen
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
10
Programmierphase 1 Teamaufteilung Projektleiter CPU-Rendering
Datenverarbeitung GUI-Workflow Ziele der ersten Projektphase erwähnen Vielleicht Gruppenstärke -CPU Raycasting -Raw/PGM lesen/schreiben -Filter (Mean /Gauss/Median) -Basisoberfläche
11
Programmierphase 1 Module und Daten GUI Datenhaltung CPU Dateien
Volumen GUI Datenhaltung CPU Moduldiagramm vielleicht besser!!!! Ablauf des Programmes erklären Kamera und Transferfunktion fest
12
Programmierphase 1 Probleme 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 Problme bei der Schnittstellenabsprache
13
Programmierphase 1 Ergebnisse
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) Soweit alle Ziele der Projektphase erreicht. GUI renderte ununterbrochen (ein Bild 45 Sek.) Noch keine Camerasteuerung Transferfunktion war Hardgecodet für CPU Dicom in arbeit Kurz vor Weihnachten erst fertig Pgm lesen/schreiben und Raw schreiben aus Übung 3 übernommen
14
Programmierphase 1 Ergebnisse CPU – Raycaster Maximum Intensity
Soweit alle Ziele der Projektphase erreicht. GUI renderte ununterbrochen (ein Bild 45 Sek.) Noch keine Camerasteuerung Transferfunktion war Hardgecodet für CPU Dicom in arbeit Kurz vor Weihnachten erst fertig Pgm lesen/schreiben und Raw schreiben aus Übung 3 übernommen CPU – Raycaster Maximum Intensity
15
Programmierphase 1 Ergebnisse CPU – Raycaster Mean Value
Soweit alle Ziele der Projektphase erreicht. GUI renderte ununterbrochen (ein Bild 45 Sek.) Noch keine Camerasteuerung Transferfunktion war Hardgecodet für CPU Dicom in arbeit Kurz vor Weihnachten erst fertig Pgm lesen/schreiben und Raw schreiben aus Übung 3 übernommen CPU – Raycaster Mean Value
16
Programmierphase 2 Teamaufteilung Projektleiter GPU-Shader GlueCode
GUI-Design GleuCode: Daten an Shader geben, opengl code, shader verwalten(laden, binden) Die verschieden shader (emabs, Mean, firstlokalmax, Mip) -Echtzeitfähiges Raycasting (dual NV40) -Verschiedene Shader -12 bit -Shader und GUI verbinden -Kamerasteuerung -Code komplett integrieren -Transferfunktion -Dicom -Spacemouse
17
Programmierphase 2 Module und Daten GUI CPU Datenhaltung Gluecode GPU
Kamera, Transferfunktion CPU Dateien Datenhaltung Volumen Volumen Kamera, Shader, Transferfunktion Die Generalisierung in Shader war im Nachhinnein sinnlos ( Vererbung war nicht einsetzbar , beide mussten komplett separat gehalten werden ) Nur Vererbung der Klassensignatur Gluecode Shader,Textur uniformvariablen GPU
18
Programmierphase 2 Probleme 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 Hinweis: übernehmen der Funktionen wie sie im Dummy geschrieben waren, war nicht ohne weiteres möglich GUI warf auch Probleme auf --> Texturen Kapselung: Bsp. GUI, Nebeneffekte wurden erst viel später klar, nach Einarbeitung so wusste Johannes nicht wie es beim GlueCode funktioniert wird und andersrum --> bessere Dokumentation, Planung, Ablaufdiagramme, usw. GlueCode wurde zweimal geplant (Klassenstruktur) und trotzdem nicht perfekt.
19
Programmierphase 2 Probleme 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 Hinweis: übernehmen der Funktionen wie sie im Dummy geschrieben waren, war nicht ohne weiteres möglich GUI warf auch Probleme auf --> Texturen, klicken in Transferfunktion vor laden der Volumen führte zum Absturtz Kapselung: Bsp. GUI, Nebeneffekte wurden erst viel später klar, nach Einarbeitung so wusste Johannes nicht wie es beim GlueCode funktioniert wird und andersrum --> bessere Dokumentation, Planung, Ablaufdiagramme, usw. Neues opengl Fenster in der GUI führte zu falschen Zuweisungen der Texturen cg: unterschiedliche Anordnung von Methoden führte zu unterschiedlichen Ergebnissen, uniforms wurden teilweise nicht korrekt übergeben,
20
Programmierphase 2 Ergebnisse 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 mehfaches laden, verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf
21
Programmierphase 2 Ergebnisse
mehfaches laden, verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf GPU - Torso mit linearer Transferfunktion
22
Programmierphase 2 Ergebnisse
mehfaches laden, verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf GPU - Torso mit veränderter Transferfunktion
23
Programmierphase 2 Ergebnisse Emission - Absorbtion Slice Viewer
mehfaches laden, verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf Emission - Absorbtion Slice Viewer
24
Programmierphase 2 Ergebnisse Mean Value Maximum Intensity
mehfaches laden, verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf Mean Value Maximum Intensity
25
Programmierphase 2 Ergebnisse CPU - Raycaster mehfaches laden,
verschiedene shader, GPU/CPU wechsel, Steps, opacity Mouse dreht sich auch über den Kopf CPU - Raycaster
26
Fazit Eindrü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) Zusammenfassung des Projekts, Team, Stimmung Vorteil kleine Gruppe, gute Zusammenarbeit, homogene Gruppe… Boost: bei Dateihaltung hinderlich, Multithreading wäre mit wxsWidgets gelaufen Klassendiagramme nicht aktuell, hätten einmal festgelegt werden müssen Viele Ergänzungen im Nachhinein
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.