Difference between revisions of "2013 Summer Project Week:Deformable transforms"

From NAMIC Wiki
Jump to: navigation, search
Line 35: Line 35:
 
<h3>Progress</h3>
 
<h3>Progress</h3>
  
* Questions
+
* Should it be handled
** Should it be handled on the MRML level (Transformable, VolumesLogic?) or in a CLI (BRAINSResample, Resample Scalar/Vector/DWI Volume)
+
** on the MRML level (Transformable, VolumesLogic?)
** Invertability / reversibility
+
** '''or in a CLI (BRAINSResample, Resample Scalar/Vector/DWI Volume)''' - Subject Hierarchy would know what module can transform what objects using what transforms and use them
*** Should it create clones of the 'hardened' objects?
+
* Invertability / reversibility
*** Should we maintain a history in the hardened nodes?
+
** '''Should it create clones of the 'hardened' objects?''' - in Subject Hierarchy
*** Harden option on drop (I can't display but can resample)
+
** Should we maintain a history in the hardened nodes?
** Plugin mechanism for registering non-linear transforms
+
** '''Harden option on drop (I can't display but can resample)''' - in Data and Transforms modules
*** Modules register themselves in the fashion "I can apply X type of transform to Y type objects"
+
* Plugin mechanism for registering non-linear transforms
**** The application could call these algorithms (from the modules) at first (instead of registering from outside)
+
** Modules register themselves in the fashion "I can apply X type of transform to Y type objects"
*** GUI decision if hardened
+
*** The application could call these algorithms (instead of registering from outside)
** Where?
+
** GUI decision if hardened
*** Data module
+
* Where?
*** Transforms module (display tree, and add a 'Harden' button to the panels)
+
** Data module
** Harden all the way up or until all the parents are linear or just one level a time?
+
** Transforms module (display tree, and add a 'Harden' button to the panels)
** Subject Hierarchy right-click -> apply transform to study
+
** Subject Hierarchy right-click -> apply transform to branch
 
+
* Harden all the way up or until all the parents are linear or just one level a time?
 
* Extend to contain bounding box
 
* Extend to contain bounding box
 
** In case of non-linear transforms, go down the edges to specify the output bounding box
 
** In case of non-linear transforms, go down the edges to specify the output bounding box
 
** Options: resample in source lattice (still cloned), the one above, rsample in target volume
 
** Options: resample in source lattice (still cloned), the one above, rsample in target volume
  
 +
Ideas
 
* Look at the DICOM transform logic
 
* Look at the DICOM transform logic
 
** Make frame of reference concept explicit in Slicer?
 
** Make frame of reference concept explicit in Slicer?
  
TODO: Clean this list up
 
 
</div>
 
</div>
 
</div>
 
</div>

Revision as of 21:08, 17 June 2013

Home < 2013 Summer Project Week:Deformable transforms

Key Investigators

  • Queen's: Csaba Pinter, Andras Lasso
  • Isomics: Alex Yarmarkovich, Steve Pieper
  • GE Research: Jim Miller

Objective

Enable handling of deformable transforms in the Transforms module, very similarly to the way linear transforms are handled.

  • Drop TransformableNodes under deformable transform (possible already but ignored and hardening for rendering not enabled)
  • Harden deformable transform on
    • Models (should be straightforward)
    • Volumes (confirmation popup window, resampling on choosing yes)

Approach, Plan

The approach is to enhance the Transform node (and Transforms module) to be able to use deformable transform nodes as parents to transformable objects and harden them

The plan for the project week is to discuss the best way to implement it, and start the implementation.

Progress

  • Should it be handled
    • on the MRML level (Transformable, VolumesLogic?)
    • or in a CLI (BRAINSResample, Resample Scalar/Vector/DWI Volume) - Subject Hierarchy would know what module can transform what objects using what transforms and use them
  • Invertability / reversibility
    • Should it create clones of the 'hardened' objects? - in Subject Hierarchy
    • Should we maintain a history in the hardened nodes?
    • Harden option on drop (I can't display but can resample) - in Data and Transforms modules
  • Plugin mechanism for registering non-linear transforms
    • Modules register themselves in the fashion "I can apply X type of transform to Y type objects"
      • The application could call these algorithms (instead of registering from outside)
    • GUI decision if hardened
  • Where?
    • Data module
    • Transforms module (display tree, and add a 'Harden' button to the panels)
    • Subject Hierarchy right-click -> apply transform to branch
  • Harden all the way up or until all the parents are linear or just one level a time?
  • Extend to contain bounding box
    • In case of non-linear transforms, go down the edges to specify the output bounding box
    • Options: resample in source lattice (still cloned), the one above, rsample in target volume

Ideas

  • Look at the DICOM transform logic
    • Make frame of reference concept explicit in Slicer?

Delivery Mechanism

This work will be delivered to the NA-MIC Kit as an enhancement in Slicer core.

References