Projektive Erweiterte Realität für die Unterstützung offener chirurgischer Operationen - Arbeitstitel ProjeCT?
Student Project (SEP),
MarkusMann
This is a joint project with the
Workgroup for Minimally Invasive Therapy and Intervention (MITI) of the Klinikum Rechts der Isar.
Kurzbeschreibung
Zur Unterstützung offener chirurischer Operationen sollen präoperative Planungsdaten intraoperativ mittels geeigneter Projektionsverfahren auf den Operationssitus überlagert werden.
Ziel des Projekts ist weniger die konkrete Umsetzung eines speziellen klinischen Sachverhalts als vielmehr die Untersuchung der grundsätzlichen Möglichkeiten einer solchen Projektion. Die zu entwickelnde Technik soll in verschiedenen Szenarios prototypisch eingesetzt werden.
Anhand eines Prototyps sollen der Nutzen und die prinzipielle Machbarkeit einer solchen Augmentierung evaluiert werden. Die hierbei zu untersuchenden Fragestellungen reichen von der Kalibrierung des Gesamtsetups über die Verwendung unterschiedlicher Trackingkonfigurationen bis hin zu Fragen der Projektion auf unregelmäßige Oberflächen und der Kalibrierung eines solchen Systems.
Benötigte Hardware
- Beamer (MITI)
- Phantom inkl. CT-Datensatz (MITI)
- Externes Optisches Tracking (CAMP)
- Arbeitsplatzrechner (MITI)
Skizze des Hardwaresetups
Use Case Study
Folgendes ist nur ein Versuch ein enormes Gedankengebilde einigermassen kondensiert auf papier (bzw. wiki) zu bringen, und ist keinesfalls UML standard - auch wenns so aussieht.
Farbkonventionen
- Grün: Vorhanden
- Gelb: Phase 1
- Lila: Phase 2
- Blau: Phase 3
- Ocker,Lachs: Goodies, Gimmicks / Spare time
Actors
- Extern
- Intern
- Tracking Preprocessor
- Widget Engine
- Main System
- Render Engine
Extern
Tracking Preprocessor
Der "Tracking Preprocessor" dient als Schnittstelle zum ART System. Er empfängt die Daten über UDP und verarbeitet sie weiter (parsing, etc.). Ausserdem dient er als einfacher Event Manager für die Widgets.
Die Widget Engine registriert "Hotspots" und "Hot Areas" beim Tracking Preprocessor, dieser überprüft in jedem Schritt ob die Widgets von einem Marker getroffen werden und führt gegebenenfalls einen callback aus.
Es können auch Gesten erkannt und verarbeitet werden (erkennung über libstroke).
Widget Engine
Registriert Ihre Widgets beim Tracking Preprocessor und tauscht Steuerinformationen mit "Main System" aus. Zeichnet Widgets über die Render Engine.
Main System
Benützt die Daten des Trackings für Kalibration/Registrierung/etc. Zeichnet und verwaltet Models (CT-Datensatz, teile eines CT-Datensatzes, aber auch Flächen auf denen Widgets existieren können)
Render Engine
Random Thoughts
Commoncpp als Library (Threads, XML, Sockets, gutes design)?
Libstroke als Gesten-erkennungs-Library. Wenn noch Zeit übrig bleibt wäre das ein cooles feature.