Difference between revisions of "Handling deformable transforms in Slicer meeting minutes"
From NAMIC Wiki
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 === | ||
− | * | + | * 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 minutesOperations
- 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:
- Instead of the data being moved outside of all transforms, a "copy" of the data will be moved outside of all transforms.
- 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
- pixel lattice - stays the "same"
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
- Application level: module can register itself as the capable of hardening certain types of data.
- 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
- Frame of reference