Difference between revisions of "Projects:RegistrationLibrary:RegLib C34"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(2 intermediate revisions by one other user not shown)
Line 16: Line 16:
  
 
=== Modules ===
 
=== Modules ===
*'''Slicer 3.6.1 recommended modules:'''  [http://www.slicer.org/slicerWiki/index.php/Modules:BRAINSFit '''BrainsFit'''],  [http://www.slicer.org/slicerWiki/index.php/Modules:SkullStripperModule '''Fast Marching Segmentation'''],  [http://www.slicer.org/slicerWiki/index.php/Modules:N4ITKBiasFieldCorrection-Documentation-3.6 '''Histogram Matching''']
+
*'''Slicer 3.6.1 recommended modules:'''  [https://www.slicer.org/wiki/Modules:BRAINSFit '''BrainsFit'''],  [https://www.slicer.org/wiki/Modules:FastMarchingSegmentation-Documentation-3.6 '''Fast Marching Segmentation'''],  [https://www.slicer.org/wiki/Modules:HistogramMatching-Documentation-3.6 '''Histogram Matching'''],  [https://www.slicer.org/wiki/Modules:ModelMaker-Documentation-3.6 '''Model Maker'''],
  
 
===Objective / Background ===
 
===Objective / Background ===
Line 33: Line 33:
  
 
===Input Data===
 
===Input Data===
*reference/fixed: DTI  baseline: 2.5 x 2.5 x 2.5 mm, 128 x 112 x 44
+
*reference/fixed MRI: 0.08 x 0.08 x 0.09 mm, 256 x 340 x 128
*reference/fixed: DTI tensor: : 2.5 x 2.5 x 2.5 mm, 128 x 112 x 44 x 9 (tensor), original: DWI 256 x 256 x 41 x 36 directions
+
*moving MRI: 0.08 x 0.08 x 0.09 mm, 256 x 340 x 128
*moving : T1 , 1x1x1.1 mm voxel size, 256 x 256 x 193
 
  
 
===Registration Challenges===
 
===Registration Challenges===
Line 42: Line 41:
  
 
===Key Strategies===
 
===Key Strategies===
*'''Slicer 3.6.1 recommended modules:  [http://www.slicer.org/slicerWiki/index.php/Modules:BRAINSFit BrainsFit]
+
*'''Slicer 3.6.1 recommended modules:  [https://www.slicer.org/wiki/Modules:BRAINSFit BrainsFit]
  
 
=== Procedures ===
 
=== Procedures ===
*'''Phase I: LOAD DATA'''
+
*'''Phase I: Histogram Normalization and Datatype conversion'''
#download example dataset
+
#The original images have intensities ranging from -0.0007 to 0.003, which causes trouble with many modules that round this to zero
#load into 3DSlicer 3.6.1 (Load Scene)
+
#we first shift the intensity range to integer range [0,1000] and convert to unsigned short or something equivalent
:Note that the main data package does not contain the DWI. Please load separately from the second Data download package.
+
#one way to accomplish this in slicer is to perform a histogram matching with a reference volume that has a usable dynamic range
*'''Phase II: Bias Correction of T1'''
+
#Load a reference volume and then use the [https://www.slicer.org/wiki/Modules:HistogramMatching-Documentation-3.6 '''Histogram Matching'''] module to adjust the dynamic range
#open Filtering : ''N4ITK MRI Bias Field Correction'' module
+
#use the [https://www.slicer.org/wiki/Modules:CastImage-Documentation-3.6 '''Cast module'''] to convert the datatype to unsigned short.
##Input: T1
+
#save the new volumes
##use presets or choose the following settings: Input Volume: T1_bc ; Brain Mask: create new, rename to "T1_mask"; Subdivisions: 20, Dilation Radius: 1
+
*'''Phase II: Brain Segmentation'''
*'''Phase IVa: Manual Initial Alignment'''
+
#to obtain a usable mask for both images we first need to segment the two brains
#the two datasets in this case have very large initial misalignment and also a clipped FOV, which makes it difficult for an automated initializer to find the proper position. This increases the likelihood for the automated registration to go awry. To avoid this we adjust the main (translational) misalignment manually. You may skip this step if your data has closer initial alignment
+
#go to the [https://www.slicer.org/wiki/Modules:FastMarchingSegmentation-Documentation-3.6 '''Fast Marching Segmentation'''] module
 +
#select 2-3 fiducials within the brain (see example dataset .fcv files), set a target size of ~ 0.8 ml and click Apply.
 +
#save the two labelmaps for the MD1 and MD2 segmentations. These will serve as masks for registration and a guides for initial alignment
 +
*'''Phase III: Manual Initial Alignment'''
 +
#if two datasets have large initial misalignment and also different image content and unusual intensities, this makes it difficult for an automated initializer to find the proper position. This increases the likelihood for the automated registration to go awry. To avoid this we adjust the main (translational) misalignment manually. You may skip this step if your data has closer initial alignment
 +
#for complex geometries a 3D model can be very helpful in judging alignment. Both VolumeRendering and surface models are viable options. Since we already have two brain segmentations we use these to build 2 surface models:
 +
# use the [https://www.slicer.org/wiki/Modules:ModelMaker-Documentation-3.6 '''Model Maker'''] module to build two models for MD1 and MD2 brain segmentation
 
#Go to the ''Data'' module, right-click on the "Scene" node and select "Insert Transform Node"
 
#Go to the ''Data'' module, right-click on the "Scene" node and select "Insert Transform Node"
#select the new transform node and then rename it to "Xf0_ManualInit_T1-DTI", in the ''MRML Node Inspector" (press return after typing)
+
#select the new transform node and then rename it to "Xf1_ManualInit", in the ''MRML Node Inspector" (press return after typing)
#place the DTI_base image in the background and the T1_bc image in the foreground
+
#in the ''Data'' module, move the MD2 volume (and model) inside the new transform node
 +
#place the MD1 in the background and the MD2 image in the foreground
 
#move the fade slider halfway to the middle so that you can see both volumes
 
#move the fade slider halfway to the middle so that you can see both volumes
#go to the ''Transforms'' module, move the translation sliders to move the T1 image on top of the DTI, or enter -20 for both LR and IS translation
+
#go to the ''Transforms'' module, move the translation & rotation sliders to get the two images/modules into approximate alignment. Since this serves as initialization only, alignment need not be perfect.
#in the BRAINSfit module below, select this initialization as starting transform.
 
 
*'''Phase IV: Affine Registration'''
 
*'''Phase IV: Affine Registration'''
 
#you may be able to skip this step and perform affine + nonrigid registration in one step, however the stepwise approach gives you more insight and control
 
#you may be able to skip this step and perform affine + nonrigid registration in one step, however the stepwise approach gives you more insight and control
 
#Go to the ''BRAINSFit'' module
 
#Go to the ''BRAINSFit'' module
 
## enter the following settings:
 
## enter the following settings:
##Fixed Image: DTI_base, Moving Image: T1_bc
+
##Fixed Image: MD1, Moving Image: MD2
##Registration phases: from ''Initialize with previously generated transform', select "Xf0_ManualInit" node created before.
+
##Registration phases: from ''Initialize with previously generated transform', select "Xf1_ManualInit" node created before.
 
##Registration phases: check boxes for  ''Include Rigid registration phase'', ''Include Scale Versor3D registration phase''  ''Include Affine registration phase''. To combine with Phase V below also check the ''Include BSpline phase'' box.
 
##Registration phases: check boxes for  ''Include Rigid registration phase'', ''Include Scale Versor3D registration phase''  ''Include Affine registration phase''. To combine with Phase V below also check the ''Include BSpline phase'' box.
##Output: Slicer Linear transform: create new, rename to "Xf1_T1-DTI_masked"
+
##Output: Slicer Linear transform: create new, rename to "Xf2_Affine_masked"
 
##Registration Parameters: increase ''Number Of Samples'' to 200,000
 
##Registration Parameters: increase ''Number Of Samples'' to 200,000
##Control Of Mask Processing Tab: check ''ROI'' box, ''Input Fixed Mask'' : DTI_mask; ''Input Moving Mask'': T1_mask
+
##Control Of Mask Processing Tab: check ''ROI'' box, ''Input Fixed Mask'' : MD1_fmseg; ''Input Moving Mask'': MD2_fmseg
 
##Leave all other settings at default
 
##Leave all other settings at default
##click apply; runtime ca. 1-2 min.
+
##click apply
#go to ''Data'' module. You should see the "T1_bc " volume moved inside the "Xf1.." transform node
+
#go to ''Data'' module. You should see the "MD2" volume moved inside the "Xf2.." transform node
#select T1_bc as background and DTI_base as foreground and check the alignment via the toggle switch
 
 
*'''Phase V: Nonrigid Registration'''
 
*'''Phase V: Nonrigid Registration'''
 
#Go to the ''BRAINSFit'' module
 
#Go to the ''BRAINSFit'' module
 
##enter the following settings:
 
##enter the following settings:
##Fixed Image: DTI_base, Moving Image: T1_bc
+
##Fixed Image: MD1, Moving Image: MD2
##Registration phases: from ''Initialize with previously generated transform', select "Xf1_..." node created before.
+
##Registration phases: from ''Initialize with previously generated transform', select "Xf2_..." node created before.
 
##Registration phases: check boxes for  ''Include BSpline registration phase''
 
##Registration phases: check boxes for  ''Include BSpline registration phase''
##Output: Slicer BSpline transform: create new, rename to "Xf2_T1-DTI_BSpl"
+
##Output: Slicer BSpline transform: create new, rename to "Xf3_BSpline_masked"
##Output Image Volume:  create new, rename to "T1_bc_Xf2"; ''Pixel Type'': "short"
+
##Output Image Volume:  create new, rename to "MD2_Xf3"; ''Pixel Type'': "short"
##Registration Parameters: increase ''Number Of Samples'' to 200,000; ''Number of Grid Subdivisions'': 3,3,3
+
##Registration Parameters: increase ''Number Of Samples'' to 200,000; ''Number of Grid Subdivisions'': 5,5,5
##Control Of Mask Processing Tab: check ''ROI'' box, ''Input Fixed Mask'' : DTI_mask; ''Input Moving Mask'': T1_mask
+
##Control Of Mask Processing Tab: check ''ROI'' box, ''Input Fixed Mask'' : MD1_fmseg; ''Input Moving Mask'': MD2_fmseg
 
##Leave all other settings at default
 
##Leave all other settings at default
##click apply; runtime ca. 1-2 min.
+
##click apply
*The result volume "T1_bc_Xf2" is the one we want, since the DTI remains stationary, there is no additional resampling required. Note that the final transform "Xf2_T1-DTI_BSpl" contains both the affine and nonrigid BSpline portions.
+
#Extend of nonrigid alignment will depend on the application. For better match the gridsize can be increased to 9x9x9 and higher, along with the number of sample points. Because larger grid sizes bear the risk of unstable and unfeasible deformations, an iterative approach with increasing DOF is recommended. Since the current version (3.6.1) of Slicer does not yet support concatenation of nonrigid transforms, such a stepwise approach implies multiple resampling of the moving volume and associated interpolation blurring.
#To check alignment, go to the ''Volumes'' module, select the newly produced ''DTI'' volume
 
#under the ''Display'' tab, select ''Color Orientation'' from the ''Scalar Mode'' menu
 
#set ''DTI'' as background and the new  "T1_bc_Xf2" volume as foreground
 
#Set fade slider to see DTI overlay onto the SPGR image, you should see alignment similar to the result shown below.
 
 
 
 
=== Registration Results===
 
=== Registration Results===
 
[[Image:RegLib_C34_AGif_Model.gif‎ |200px|Surface model of original unregistered brains]] original, not registered<br>
 
[[Image:RegLib_C34_AGif_Model.gif‎ |200px|Surface model of original unregistered brains]] original, not registered<br>

Latest revision as of 18:07, 10 July 2017

Home < Projects:RegistrationLibrary:RegLib C34

Back to ARRA main page
Back to Registration main page
Back to Registration Use-case Inventory

v3.6.1 Slicer3-6Announcement-v1.png Slicer Registration Library Case #34: Mouse Brain MRI

Input

MRI baseline lleft MRI follow-up
fixed image 1/target
MRI mouse 1
moving image
MRI mouse 2

Modules

Objective / Background

Aim is to register the brain of a 5 days old mouse (Post Natal Day 5, PND5) with an atlas.

Download

Keywords

MRI, brain, mouse, masking, non-human, non-rigid,

Input Data

  • reference/fixed MRI: 0.08 x 0.08 x 0.09 mm, 256 x 340 x 128
  • moving MRI: 0.08 x 0.08 x 0.09 mm, 256 x 340 x 128

Registration Challenges

  • The original images have very unusual dynamic range which can cause problems with modules that expect a minimal dynamic range in absolute terms
  • target image content is of lower intensity than the surrounding tissue, making masking essential

Key Strategies

Procedures

  • Phase I: Histogram Normalization and Datatype conversion
  1. The original images have intensities ranging from -0.0007 to 0.003, which causes trouble with many modules that round this to zero
  2. we first shift the intensity range to integer range [0,1000] and convert to unsigned short or something equivalent
  3. one way to accomplish this in slicer is to perform a histogram matching with a reference volume that has a usable dynamic range
  4. Load a reference volume and then use the Histogram Matching module to adjust the dynamic range
  5. use the Cast module to convert the datatype to unsigned short.
  6. save the new volumes
  • Phase II: Brain Segmentation
  1. to obtain a usable mask for both images we first need to segment the two brains
  2. go to the Fast Marching Segmentation module
  3. select 2-3 fiducials within the brain (see example dataset .fcv files), set a target size of ~ 0.8 ml and click Apply.
  4. save the two labelmaps for the MD1 and MD2 segmentations. These will serve as masks for registration and a guides for initial alignment
  • Phase III: Manual Initial Alignment
  1. if two datasets have large initial misalignment and also different image content and unusual intensities, this makes it difficult for an automated initializer to find the proper position. This increases the likelihood for the automated registration to go awry. To avoid this we adjust the main (translational) misalignment manually. You may skip this step if your data has closer initial alignment
  2. for complex geometries a 3D model can be very helpful in judging alignment. Both VolumeRendering and surface models are viable options. Since we already have two brain segmentations we use these to build 2 surface models:
  3. use the Model Maker module to build two models for MD1 and MD2 brain segmentation
  4. Go to the Data module, right-click on the "Scene" node and select "Insert Transform Node"
  5. select the new transform node and then rename it to "Xf1_ManualInit", in the MRML Node Inspector" (press return after typing)
  6. in the Data module, move the MD2 volume (and model) inside the new transform node
  7. place the MD1 in the background and the MD2 image in the foreground
  8. move the fade slider halfway to the middle so that you can see both volumes
  9. go to the Transforms module, move the translation & rotation sliders to get the two images/modules into approximate alignment. Since this serves as initialization only, alignment need not be perfect.
  • Phase IV: Affine Registration
  1. you may be able to skip this step and perform affine + nonrigid registration in one step, however the stepwise approach gives you more insight and control
  2. Go to the BRAINSFit module
    1. enter the following settings:
    2. Fixed Image: MD1, Moving Image: MD2
    3. Registration phases: from Initialize with previously generated transform', select "Xf1_ManualInit" node created before.
    4. Registration phases: check boxes for Include Rigid registration phase, Include Scale Versor3D registration phase Include Affine registration phase. To combine with Phase V below also check the Include BSpline phase box.
    5. Output: Slicer Linear transform: create new, rename to "Xf2_Affine_masked"
    6. Registration Parameters: increase Number Of Samples to 200,000
    7. Control Of Mask Processing Tab: check ROI box, Input Fixed Mask : MD1_fmseg; Input Moving Mask: MD2_fmseg
    8. Leave all other settings at default
    9. click apply
  3. go to Data module. You should see the "MD2" volume moved inside the "Xf2.." transform node
  • Phase V: Nonrigid Registration
  1. Go to the BRAINSFit module
    1. enter the following settings:
    2. Fixed Image: MD1, Moving Image: MD2
    3. Registration phases: from Initialize with previously generated transform', select "Xf2_..." node created before.
    4. Registration phases: check boxes for Include BSpline registration phase
    5. Output: Slicer BSpline transform: create new, rename to "Xf3_BSpline_masked"
    6. Output Image Volume: create new, rename to "MD2_Xf3"; Pixel Type: "short"
    7. Registration Parameters: increase Number Of Samples to 200,000; Number of Grid Subdivisions: 5,5,5
    8. Control Of Mask Processing Tab: check ROI box, Input Fixed Mask : MD1_fmseg; Input Moving Mask: MD2_fmseg
    9. Leave all other settings at default
    10. click apply
  2. Extend of nonrigid alignment will depend on the application. For better match the gridsize can be increased to 9x9x9 and higher, along with the number of sample points. Because larger grid sizes bear the risk of unstable and unfeasible deformations, an iterative approach with increasing DOF is recommended. Since the current version (3.6.1) of Slicer does not yet support concatenation of nonrigid transforms, such a stepwise approach implies multiple resampling of the moving volume and associated interpolation blurring.

Registration Results

Surface model of original unregistered brains original, not registered
original unregistered brains original, not registered
affine registered brains affine registered
registered brains after 5x5x5 nonrigid BSpline alignment registered brains after 5x5x5 nonrigid BSpline alignment]