IGSTK Architecture Overview
description
Transcript of IGSTK Architecture Overview
IGSTKArchitecture Overview
Luis IbáñezKitware, Inc
The Toolkit in a Nutshell
Open Source Toolkit BSD-like License Written in C++ Based on ITK and VTK Designed for a Critical Application
Layer Architecture
ITK VTK
OpenGLVNL GDCM Threads, XML,…
IGSTK
GUI: FLTK / Qt / MFC
IGS - APPLICATION
Main Categories of Components
Infrastructure
Trackers Viewers
Geometry &Representation
Images & Readers
Infrastructure
State Machine Time Stamp Pulse Generator Events Transforms Logger
Trackers
Tracker (base class)– PolarisTracker– AuroraTracker
Support– SerialCommunication
SerialCommunicationForWindows SerialCommunicationForPosix
– NDICommandInterpreter
Object Representation SpatialObject
– Ellipsoid– Cylinder– Images– Mesh– Tube– TubeGroup– Group– Box ?– Cone ?
SpatialObjectRepresentation– Ellipsoid– Cylinder– Images– Mesh– Tube– Box ?– Cone ?– VascularNetwork SO ??– AirwaysNetwork SO ??– Surgical Tools ??
Viewers
View– View2D– View3D
VTK Based GUI / VTK hybrid class
Images and Readers Image
– CTImage– MRImage– FluoroscopicImage
Readers (DICOM)– CTImageReader– MRImageReader– Fluoroscopy (video input)
Dynamics Architecture
GUI
General Interactions
View1
View2
View3
View4
ObjectRepresentation Spatial
Object
Tracker
TrackerTool 1
TrackerTool 2
TrackerTool 3
ObjectRepresentation
ObjectRepresentation
Tracking Interactions
ObjectRepresentation
SpatialObject
Tracker
TrackerTool 3
ObjectRepresentation
Tick
TransformEvent
T
T =
T
T
T
Event Class
ITK Event
TransformEvent
TimeStampEvent
StringEvent
IGSTK Event
Event Class
Transform
Transform Class
Vector
Versor
TimeStamp
Error
Transform Class
Transform Event Class
Pulse Generator
Action
Action
How not to miss pulses ?
GUI
Timing Control
View1
View2
View3
View4
ObjectRepresentation Spatial
Object
Tracker
TrackerTool 1
TrackerTool 2
TrackerTool 3
ObjectRepresentation
ObjectRepresentation
Tick
Tick
Quality Control
Testing Platforms Windows
– Visual Studio 6.0– Visual Studio 7.1
Linux– gcc 3.2– gcc 3.3– gcc 3.4
Cygwin – Windows– gcc 3.4– gcc 3.3
Testing
Goal – 100 % Code Coverage– 100 % State Machine Transitions Testing
Current Code Coverage– IGSTK 93.6 % ( untested 321 / 4714 lines )– Sandbox 92.4 % ( untested 4 / 49 lines )
Dynamic Testing Platforms
Valgrind on Linux– gcc 3.3– gcc 3.4
Valgrind on Cygwin ( setup pending ) Purify (too expensive)
End