Difference between revisions of "Handling deformable transforms in Slicer meeting minutes"
From NAMIC Wiki
(Page created) |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | * | + | === 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: |
| − | ** Should we maintain a | + | *# 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 | ||
| + | |||
| + | === 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? | * Where? | ||
| − | ** Data module | + | ** Tie into the drag and drop of the Data module and prompt the user to harden the transform. |
| − | ** Transforms module | + | ** 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 === | |
| − | |||
| − | + | * 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 | ||
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