Difference between revisions of "2011 Winter Project Week:DTIRegistrationWizard"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(6 intermediate revisions by one other user not shown)
Line 7: Line 7:
 
* UIowa: Hans Johnson, Mark Scully
 
* UIowa: Hans Johnson, Mark Scully
  
 +
[[Image:DTIReg_GUI.png|Example GUI of DTI registration module]]
 +
[[Image:DTIreg_flowchart.png‎|registration strategy]]
 
<div style="margin: 20px;">
 
<div style="margin: 20px;">
 
<div style="width: 27%; float: left; padding-right: 3%;">
 
<div style="width: 27%; float: left; padding-right: 3%;">
Line 33: Line 35:
 
<h3>Progress</h3>
 
<h3>Progress</h3>
 
*One issue is that output of one module call is input of other call, i.e. not all inputs are defined a priori when module is launched.
 
*One issue is that output of one module call is input of other call, i.e. not all inputs are defined a priori when module is launched.
*possible mechanism: new CLM with merged XML and .cxx code. Then prune extraneous options
+
*possible mechanism: new CLM with merged XML and .cxx code. Then prune extraneous options -> requires new .cxx that copies efforts and violates modular design
*possible mechanism: BatchMakeWrapper: XML wrapper to call module multiple times -> modify to call pipeline
+
*possible mechanism: BatchMakeWrapper: XML wrapper to call module multiple times -> difficult to adapt to input/output dependencies
*possible mechanism: Python Scriptable Module
+
*possible mechanism: Chain Module functionality -> no longer supported
 +
*'''possible mechanism: Python Scriptable Module -> currently best bet'''
 
</div>
 
</div>
 
</div>
 
</div>
Line 42: Line 45:
  
 
== Progress ==
 
== Progress ==
 
+
*example Python implementation
 +
  parameters = {}
 +
    parameters['inputVolume1'] = self.inputNode1
 +
    parameters['inputVolume2'] = self.inputNode2
 +
    parameters['inputVolume3'] = self.inputNode3
 +
    parameters['outputVolume'] = self.outputNode
 +
    parameters['draft'] = self.draftCheckBox.checked
 +
  # get the registration module and run the cli
 +
  aRegister = slicer.modules.BRAINSfit
 +
  self.CLINode = slicer.cli.run(BRAINSfit, self.CLINode, parameters)
  
 
==References==
 
==References==
 
*[[2011_Winter_Project_Week#Projects|back to AHM_2011 project list]]
 
*[[2011_Winter_Project_Week#Projects|back to AHM_2011 project list]]
*[http://www.slicer.org/slicerWiki/index.php/Modules:BRAINSFit BRAINSfit documentation]
+
*[https://www.slicer.org/wiki/Modules:BRAINSFit BRAINSfit documentation]
*[http://www.slicer.org/slicerWiki/index.php/Modules:ResampleDTIVolume-Documentation-3.6 DTI resample documentation]
+
*[https://www.slicer.org/wiki/Modules:ResampleDTIVolume-Documentation-3.6 DTI resample documentation]
  
 
</div>
 
</div>

Latest revision as of 17:25, 10 July 2017

Home < 2011 Winter Project Week:DTIRegistrationWizard


DTI Registration & Resampling Wizard

Key Investigators

  • BWH: Dominik Meier, Francois Budin
  • UIowa: Hans Johnson, Mark Scully

Example GUI of DTI registration module registration strategy

Objective

This project intends to build a dedicated module/wizard for the common case of registering and resampling a DTI image set to a structural reference scan, commonly a high-resolution T1.

Approach, Plan

The algorithms for the necessary processing (registration, sub/supersampling, DTI estimation, DTI resampling) already exist within Slicer. But the parameters and GUIs of the individual modules are non-intuitive and not readily accessible to the clinician researcher. We therefore seek a wizard module that compiles the main pipeline and default settings into a single GUI. This is a "DTI registration light" that will not offer the full range of customization available in the individual modules and hence is not expected to work on the full spectrum of possible case scenarios.

  • input: DWI volume or DTI volume incl. baseline and mask
  • output: Affine+BSpline registration transform, resampled DTI volume
  • use the BRAINSfit module for registering the DTI baseline to the T1 directly
  • use the masking option avail. in BRAINSfit. Masks for the moving image is derived from the DTI estimation; mask for the fixed image from the same image sent through a preliminary affine registration
  • resampling of the DTI is done via the main algorithm in the Resample DTI Volume module


Progress

  • One issue is that output of one module call is input of other call, i.e. not all inputs are defined a priori when module is launched.
  • possible mechanism: new CLM with merged XML and .cxx code. Then prune extraneous options -> requires new .cxx that copies efforts and violates modular design
  • possible mechanism: BatchMakeWrapper: XML wrapper to call module multiple times -> difficult to adapt to input/output dependencies
  • possible mechanism: Chain Module functionality -> no longer supported
  • possible mechanism: Python Scriptable Module -> currently best bet

Progress

  • example Python implementation
  parameters = {}
   parameters['inputVolume1'] = self.inputNode1
   parameters['inputVolume2'] = self.inputNode2
   parameters['inputVolume3'] = self.inputNode3
   parameters['outputVolume'] = self.outputNode
   parameters['draft'] = self.draftCheckBox.checked
  # get the registration module and run the cli
  aRegister = slicer.modules.BRAINSfit
  self.CLINode = slicer.cli.run(BRAINSfit, self.CLINode, parameters)

References