Difference between revisions of "Handling deformable transforms in Slicer meeting minutes"

From NAMIC Wiki
Jump to: navigation, search
 
Line 21: Line 21:
 
* Should we maintain a link between the original and hardened data?
 
* Should we maintain a link between the original and hardened data?
 
* Should only the hardened version be available for visualization?
 
* Should only the hardened version be available for visualization?
 +
** Probably yes, but display a warning on hardening
 
* Can you clone and harden part of the transform hierarchy?
 
* Can you clone and harden part of the transform hierarchy?
 
*: Harden just the non-linear portions
 
*: Harden just the non-linear portions
Line 32: Line 33:
  
 
=== Design ===
 
=== Design ===
* Module can register itself as the capable of hardening certain types of data.
+
* Level of performing the hardening
** For now the modules containing the algorithms (BRAINSResample, Resample Scalar/Vector/DWI Volume) will be known by the class performing the hardening
+
** Application level: module can register itself as the capable of hardening certain types of data.
 +
*** For now the modules containing the algorithms (BRAINSResample, Resample Scalar/Vector/DWI Volume) will be known by the class performing the hardening
 +
** Logic level
 
* Need to know the inverse of each transform
 
* Need to know the inverse of each transform
 
** to transform the models and fiducials
 
** to transform the models and fiducials
Line 39: Line 42:
 
*** need to back transform all the edge/face voxels to find the bounding box in the world space
 
*** need to back transform all the edge/face voxels to find the bounding box in the world space
 
* Three options presented to the user
 
* Three options presented to the user
** Resample in source lattice
+
** Resample in source lattice (still cloned)
 
** Resample into lattice that bounds the warping of the edge/face voxels
 
** Resample into lattice that bounds the warping of the edge/face voxels
 
** Resample into a target volume
 
** Resample into a target volume
Line 46: Line 49:
 
** Transforms module: display tree, and add a 'Harden' button to the panels
 
** Transforms module: display tree, and add a 'Harden' button to the panels
 
** Subject Hierarchy right-click -> apply transform to branch
 
** Subject Hierarchy right-click -> apply transform to branch
 +
* Look at the logic of handling transforms in DICOM
  
 
=== Subject hierarchy ===
 
=== Subject hierarchy ===

Latest revision as of 15:31, 18 June 2013

Home < Handling deformable transforms in Slicer meeting minutes

Operations

  • Harden transform
    Harden transform* is an existing capability that collapses linear transforms in a transform hierarchty. Hardening is available as a context menu on a (data) node in the Data module. When hardened, the data object is moved in the Data module to be outside all transformations with the effect of the transform hierarchy applied. *Harden transform* is only available for transform hierarchies involving linear transforms.
  • Clone and harden
    Clone and harden* differs from the current *Harden transform* capability in two ways:
    1. Instead of the data being moved outside of all transforms, a "copy" of the data will be moved outside of all transforms.
    2. All transform types, linear and deformable, will be part of the hardening.

Proposed data type support

  • Scalar volumes
  • Vector volumes
    • RGB
    • Vector
    • Displacement field
  • Tensor volumes
  • Models
  • Fiducials and annotations
  • Multivolume

Questions

  • Should we maintain a link between the original and hardened data?
  • Should only the hardened version be available for visualization?
    • Probably yes, but display a warning on hardening
  • Can you clone and harden part of the transform hierarchy?
    Harden just the non-linear portions
  • Which tools do we use for each type of data to harden/warp the data?
  • When hardening applied, the user would be presented with a list of modules that can harden each type of data?
  • What happens to
    • pixel lattice - stays the "same"
      • create an axis-aligned bounding box in the world space, the number of pixels along each dimension will change
    • spacing - affected by the transform
    • orientation - affected by the transform

Design

  • Level of performing the hardening
    • Application level: module can register itself as the capable of hardening certain types of data.
      • For now the modules containing the algorithms (BRAINSResample, Resample Scalar/Vector/DWI Volume) will be known by the class performing the hardening
    • Logic level
  • Need to know the inverse of each transform
    • to transform the models and fiducials
    • to figure out how to define an appropriate lattice
      • need to back transform all the edge/face voxels to find the bounding box in the world space
  • Three options presented to the user
    • Resample in source lattice (still cloned)
    • Resample into lattice that bounds the warping of the edge/face voxels
    • Resample into a target volume
  • Where?
    • Tie into the drag and drop of the Data module and prompt the user to harden the transform.
    • Transforms module: display tree, and add a 'Harden' button to the panels
    • Subject Hierarchy right-click -> apply transform to branch
  • Look at the logic of handling transforms in DICOM

Subject hierarchy

  • Transforms resulting from registration point back to the fixed and moving images. This information is stored in the *attributes* of the hierarchy node.
  • Should we use the DICOM frame of reference concepts (frame of reference UID).
  • Transform map between two frames of references.
  • Currently, Slicer combines two concepts:
    • Frame of reference
      • Everything "under" a transform is in the same frame of reference
    • Transform that maps between two frames of references
      • The two frames of reference are implicitly defined by the transform hierarchy