Reslicing P3 REQ

From IGSTK

Jump to: navigation, search

Contents

Links to Discussions Notes

  1. Strategic Planning Meeting Notes
  2. Patrick's suggestions
  3. SINTEF suggestions
  4. Old Design description

ImageReslice Definitions

ImageReslice Requirements

  1. Provide capability for reslicing based on both:
    1. Manual / Preop. / Mouse mode
    2. Automatic / Intraop. / Tracker mode
  2. Provide capability for displaying slices in both 2D and 3D views:
    1. 2DImageResliceRep
    2. 3DImageResliceRep
  3. Provide capability for both orthogonal and oblique reslicing
    1. Orthogonal slices ( Axial, Sagital and Coronal = ACS )
    2. Off-orthogonal slices ( Perpendicular view , Off-Sagital and Off-Axial with reslicing position at the center )
    3. Oblique slices ( PlaneOrientationWithZAxesNormal, PlaneOrientationWithYAxesNormal and PlaneOrientationWithXAxesNormal relative to the tool (6DOF) )
  4. Accept and handle both six DOF and five DOF tracker tools
    1. Six DOF tracker tools provide all the necessary orientation and postion information
    2. With five DOF tracker tools, additional information is required. These includes
      1. Coordinate axis of the image volume(for off-axial, off-sagittal views)
      2. Projection up vector (Similar to endoscope fly through view)
      3. Surgical path ( Similar to needle biopsy applications )
  5. Ability to autoreslice by observing Tracker tool transform modified event
    1. Question: do we need capability to auto-reslice based on spatial object position/orientation
  6. Ability to automatically change the camera view parameters to best display the resliced image
  7. Ability to synchronize multiple ResliceReps / Views
    1. Reslice synchronization

ImageReslice Design

The IGSTK reslicing component will provide support for three types of reslicing operations

  1. Orthogonal: Reslicing plane position is defined by the tool spatial object and the input image coordinate system defines the three orthogonal orientations
  2. Oblique: All the parameters of the reslcing plane are defined by the tool spatial object ( The tool should be of 6DOF tracker tool type )
  3. OffOrthogonal : The parameters of the reslicing plane are defined by the tool spatial object and the input image/

Each mode has three orientation types

  1. Orthogonal : Axial, Coronal and Sagital as defined by the input image coordinate system.
  2. Oblique : PlaneOrientationWithXAxesNormal, PlaneOrientationWithYAxesNormal and PlaneOrientationWithZAxesNormal as defined by the tracker tool spatial object.
  3. OffOrthogonal : Perpendicular, Off-Axial and Off-Sagital

The reslice operation will be implemented using the following two classes

  1. igstkImageReslicePlaneSpatialObject  : Generates the reslicing plane equation
  2. igstkImageResliceSpatialObjectRepresentation : Reslice the input image using the reslicing plane equation and generate the resliced plane image representation

Note: The motivation behind having a reslice plane spatial object

  1. If needed, one can connect the view directly to the reslicing plane spatial object
  2. The reslicing plane computation will be part of IGSTK time synchronization pipeline
  3. To keep a consistent design with the rest of the toolkit( spatialObject->SpatialObjectRepresentation connection)
  4. Multiple image reslice representation images can be connected to a single reslicing plane spatial object.


igstkImageReslicePlaneSpatialObject

This class generates reslicing plane equation

Interface design

Enum definition for reslicing mode ( Orthogonal, Oblique, OffOrthogonal ) Enum definition for Orientation types ( Axial, Sagital, Coronal, Perpendicular, Off-Axial, Off-Sagital )

To generate reslicing cutting plane function, the following inputs are required

  1. Input image spatial object
  2. Input tool spatial object
  3. Orientation type
  4. Reslicing mode

void RequestSetImageSpatialObject( const ImageSpatialObjectType * iso)   
void RequestSetReslicingMode( ReslicingMode mode)
void RequestSetOrientationType ( OrientationType orientation)
void RequestSetToolSpatialOBject( SpatialObjectType * toolSpatialObject ) 
void RequestComputeReslicePlane();
void RequestGetReslicePlane();

igstkImageResliceSpatialObjectRepresentation

This class generates resliced image representation.

Interface design

Two inputs are required

  1. Image spatial object
  2. Image reslicing plane spatial object

void RequestSetImageSpatialObject( const ImageSpatialObjectType * iso)
void RequestSetImageReslicePlaneSpatialObject ( ImageReslicePlaneSpatialObjectType plane)

Oblique Reslicing mode

Image:ReslicingBlockDiagram.png

Miscellaneous

  1. Reslicing transform time stamp should be composed of the time stamp of the tool spatial object transform and image spatial object.
  2. Usage of image orientation (Axial, Sagital and Coronal) should be removed from the View. That will be handled by orthogonal image spatial object representation
  3. API will be provided in ImageReslicePlaneSpatialObject class to handle slider-driven and mouse-driven reslicing operations.
  4. igstk::View class contains vtkCamera and a coordinate system. In analogy, vtkCamera corresponds to the lens of a physical camera and the cooridnate system corresponds to the film in the camera. Hence, we will have to maintain an identity transform relationship between vtkCamera and Coordinate system inside igstk::View
  5. vtkImageReslice Vs vtkCutter
    1. http://public.kitware.com/pipermail/igstk-developers/2005-November/000507.html
  6. For oblique mode reslicing, the three orientations are defined assuming the tool-axis is oriented in the direction of z-axis ( Needle pointed in the direction of positive z-axis ).
    1. The appropriate calibration transform has to be specified to the tracker tool to re-orient the tool-axis point in the z direction
    2. Different tracking devices follow different coordinate system convention for the tools/markers and calibration transform should be set accordingly.
    3. As a guideline, we can provide users calibration transforms that align the tool-axis in the z direction for the tracker types supported in IGSTK.
Personal tools
TOOLBOX
LANGUAGES