IGSTK Architecture Overview Luis Ibáñez Kitware, 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 IGS - APPLICATION GUI: FLTK / Qt / MFC IGSTK ITK VTK VNL GDCM Threads, XML,… OpenGL
Main Categories of Components Infrastructure Geometry & Representation Trackers Images & Readers Viewers
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 Readers (DICOM) CTImage MRImage FluoroscopicImage Readers (DICOM) CTImageReader MRImageReader Fluoroscopy (video input)
Dynamics Architecture
General Interactions Tracker GUI TrackerTool 1 View1 TrackerTool 2 Object Representation View2 TrackerTool 3 View3 Object Representation Spatial Object View4 Object Representation
Tracking Interactions Tracker Tick T TrackerTool 3 Object Representation T Spatial Object Object Representation T Transform Event T =
Event Class ITK Event IGSTK Event TransformEvent TimeStampEvent StringEvent
Event Class
Transform Class Transform Vector Versor TimeStamp Error
Transform Class
Transform Event Class
Pulse Generator Action Action How not to miss pulses ?
Timing Control Tick Tick Tracker GUI TrackerTool 1 View1 TrackerTool 2 Object Representation TrackerTool 3 View2 Object Representation View3 Spatial Object View4 Object Representation
Quality Control
Testing Platforms Windows Linux Cygwin – Windows Visual Studio 6.0 gcc 3.2 gcc 3.3 gcc 3.4 Cygwin – Windows
Testing Goal Current Code Coverage 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