Difference between revisions of "Modules:MRIBiasFieldCorrection-Documentation-3.6"
Sylvainjaume (talk | contribs) (add figures to illustrate the module) |
Sylvainjaume (talk | contribs) |
||
(17 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
{| | {| | ||
− | |[[Image: | + | |[[Image:MRI_Bias_Field_Correction_Slicer3_close_up.png|thumb|500px|MRIBiasFieldCorrection corrects for the intensity inhomogeneity in 3D MRI images. |
− | + | Left image: input image with intensity inhomogeneity from lower corner to higher corner. | |
+ | Right image: output image where the intensity inhomogeneity has been corrected.]] | ||
|} | |} | ||
− | |||
== General Information == | == General Information == | ||
Line 21: | Line 21: | ||
===Authors, Collaborators & Contact=== | ===Authors, Collaborators & Contact=== | ||
+ | {| | ||
+ | | | ||
* Sylvain Jaume: MIT CSAIL | * Sylvain Jaume: MIT CSAIL | ||
− | * Nicolas Rannou: ISEN ( | + | * Nicolas Rannou: ISEN IRISA |
− | * Ron Kikinis: | + | * Nicholas Tustison: UPenn (N3 and N4) |
− | * Contact: sylvain at csail.mit.edu | + | * Ron Kikinis: Harvard Medical School SPL |
+ | * Contact: [http://people.csail.mit.edu/sylvain sylvain at csail.mit.edu] | ||
+ | |[[Image:MIT_NAMIC_Logo.png|thumb|380px|This work was presented at the MIT NAMIC Week in 2009.]] | ||
+ | |} | ||
+ | |||
+ | ===Module Description=== | ||
+ | MRIBiasFieldCorrection corrects for the intensity inhomogeneity due to MRI gain field distortion. | ||
+ | It first estimates the bias field and then 'subtract' it from the image. | ||
+ | This module implements the so called methods 'N3' and 'N4' (see references at the bottom of this page). | ||
+ | |||
+ | == Usage == | ||
{| | {| | ||
− | |[[Image: | + | | |
− | + | * '''Step 1/24. To open the input image, click on 'File' and then 'Add Volume':''' | |
− | + | ** '''Input Image:''' input image | |
− | + | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | |
− | + | ** '''Output Volume:''' corrected image | |
− | + | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_01.png|thumb|280px|Step 1/24. Add the input volumes]] | |
− | |||
− | |||
− | |||
|} | |} | ||
− | + | {| | |
− | The | + | | |
+ | * '''Step 2/24. Select the input image and click Apply:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_02.png|thumb|280px|Step 2/24. Select the input image]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 3/24. The input image appears in the axial-sagittal-coronal views:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_03.png|thumb|280px|Step 3/24. Image displayed in the orthogonal views]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 4/24. Select the mask image. Check the box 'Label Map' and click Apply:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_04.png|thumb|280px|Step 4/24. Select the mask image as a label map]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 5/24. The label map is overlaid on the axial-sagittal-coronal views:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_05.png|thumb|280px|Step 5/24. Label map overlaid on the input image]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 6/24. Click on Modules and scroll-down the menu:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_06.png|thumb|280px|Step 6/24. List of Slicer 3.6 modules]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 7/24. Select 'Filtering' and then 'MRIBiasFieldCorrection':''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_07.png|thumb|280px|Step 7/24. Select MRIBiasFieldCorrection in Filtering]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 8/24. The User Interface of MRIBiasFieldCorrection appears:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_08.png|thumb|280px|Step 8/24. User interface of MRIBiasFieldCorrection]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 9/24. Select the input image in the list of loaded volumes:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_09.png|thumb|280px|Step 9/24. Select input among loaded volumes]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 10/24. Select the mask image in the list of loaded volumes:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_10.png|thumb|280px|Step 10/24. Select mask among the loaded label maps]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 11/24. Create a new node for the output in Slicer MRML tree:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_11.png|thumb|280px|Step 11/24. Create node in MRML tree for output]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 12/24. Click 'Apply' to run the N3 algorithm (default):''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_12.png|thumb|280px|Step 12/24. Run the N3 algorithm]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 13/24. 'Status Running' means the algorithm is running. Note 'Running...' in lower bar:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_13.png|thumb|280px|Step 13/24. Status info when algorithm is running]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 14/24. 'Status Completed' means the algorithm is done. Note 'Completed' in lower bar:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_14.png|thumb|280px|Step 14/24. Status info when algorithm is done]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 15/24. Click on the lower left tab to disable the overlay of the mask image:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_15.png|thumb|280px|Step 15/24 Remove the mask overlay]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 16/24. Switch to 'None' to remove the overlay. The output image appears in the orthogonal views:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_16.png|thumb|280px|Step 16/24. Switch to 'None']] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 17/24. Disable the overlay for the sagittal and coronal views:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_17.png|thumb|280px|Step 17/24. Disable all overlays]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 18/24. Click on the 'closed eye' icon to display the output image in the 3D rendering window:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_18.png|thumb|280px|Step 18/24. Click on the 'closed eye' icon]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 19/24. Click on the other 2 'closed eye' icons to display the 3 orthogonal slices in the 3D window:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_19.png|thumb|280px|Step 19/24. Click on the other 2 'closed eye' icons]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 20/24. Hold down your mouse in the 3D window and move to rotate and zoom out:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_20.png|thumb|280px|Step 20/24. Hold down and move your mouse in the 3D window]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 21/24. Go to 'File' and 'Save' to save the output volume:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_21.png|thumb|280px|Step 21/24. Click 'File' and then 'Save']] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 22/24. Select the files you want to save. By default the XML description and the output volume are selected:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_22.png|thumb|280px|Step 22/24. Select the files you want to save]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 23/24. Click on the output directory to save to a different directory:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_23.png|thumb|280px|Step 23/24. Click on the directory name]] | ||
+ | |} | ||
+ | |||
+ | {| | ||
+ | | | ||
+ | * '''Step 24/24. For more information, click on the Help tab. The blue link will send you to this page:''' | ||
+ | ** '''Input Image:''' input image | ||
+ | ** '''Mask Image:''' label map providing an approximative segmentation of the ROI | ||
+ | ** '''Output Volume:''' corrected image | ||
+ | |[[Image:MRIBiasFieldCorrection_Slicer3.6_Documentation_24.png|thumb|280px|Step 24/24. Click on the Help tab]] | ||
+ | |} | ||
− | == | + | == Cheat Sheet == |
* Load the input dataset (Main menu: Add Volume) | * Load the input dataset (Main menu: Add Volume) | ||
* Create a Mask Volume using the Editor (Modules > Editor) (the Threshold tool should give a good result) | * Create a Mask Volume using the Editor (Modules > Editor) (the Threshold tool should give a good result) | ||
Line 51: | Line 264: | ||
* Modify the parameter values if desired (default values gave good results during our experiments) | * Modify the parameter values if desired (default values gave good results during our experiments) | ||
* Click on Apply. | * Click on Apply. | ||
+ | |||
+ | {| | ||
+ | |[[Image:MRI_Bias_Field_Correction_Slicer3_close_up.png|thumb|560px|Close-up of the above screenshot showing the image before and after correction. | ||
+ | Note that the intensity inhomogeneity visible in the input image (left) has been corrected in the output image (right).]] | ||
+ | |} | ||
It took 32 min to process a 512x512x30 MRI volume on a MacBook laptop. | It took 32 min to process a 512x512x30 MRI volume on a MacBook laptop. | ||
Line 92: | Line 310: | ||
===Acknowledgment=== | ===Acknowledgment=== | ||
− | This work | + | This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149 (PI: Ron Kikinis). |
− | ===References=== | + | ===References for algorithms implemented in this module=== |
* A Nonparametric Method for Automatic Correction of Intensity Nonuniformity in MRI Data, J.G. Sled, A.P. Zijdenbos, and A.C. Evans, IEEE Transactions on Medical Imaging, 17(1):87–97, Feb 1998. | * A Nonparametric Method for Automatic Correction of Intensity Nonuniformity in MRI Data, J.G. Sled, A.P. Zijdenbos, and A.C. Evans, IEEE Transactions on Medical Imaging, 17(1):87–97, Feb 1998. | ||
− | * | + | * [http://dx.doi.org/10.1109/TMI.2010.2046908 N4ITK: Improved N3 Bias Correction], N.J. Tustison, B.B. Avants, P.A. Cook, Y. Zheng, A. Egan, P.A. Yushkevich, J.C. Gee, IEEE Transactions on Medical Imaging, Vol 99, April 2010. |
− | * [http://hdl.handle.net/10380/3053 N4ITK: Nick's N3 ITK Implementation | + | * [http://hdl.handle.net/10380/3053 N4ITK: Nick's N3 ITK Implementation for MRI Bias Field Correction], N. Tustison, J. Gee, Insight Journal, 2009. |
+ | |||
+ | ===References for related algorithms=== | ||
+ | * Parametric Estimate of Intensity Inhomogeneities Applied to MRI, M. Styner, C. Brechbhuler, G. Szekely, and G. Gerig, IEEE Transactions on Medical Imaging, 19(3):153–165, Mar 2000. |
Latest revision as of 20:14, 6 May 2010
Home < Modules:MRIBiasFieldCorrection-Documentation-3.6Return to Slicer 3.6 Documentation
Module Name
MRIBiasFieldCorrection
General Information
Module Type & Category
Type: CLI
Category: Filtering
Authors, Collaborators & Contact
|
Module Description
MRIBiasFieldCorrection corrects for the intensity inhomogeneity due to MRI gain field distortion. It first estimates the bias field and then 'subtract' it from the image. This module implements the so called methods 'N3' and 'N4' (see references at the bottom of this page).
Usage
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cheat Sheet
- Load the input dataset (Main menu: Add Volume)
- Create a Mask Volume using the Editor (Modules > Editor) (the Threshold tool should give a good result)
- Select the MRIBiasFieldCorrection module (Modules > Filtering > MRIBiasFieldCorrection)
- In the left panel, select the Input Volume
- Select the Mask Volume
- In the Preview Volume menu , select 'Create New Volume'
- Do the same for the Output Volume menu
- Modify the parameter values if desired (default values gave good results during our experiments)
- Click on Apply.
It took 32 min to process a 512x512x30 MRI volume on a MacBook laptop. To visualize the result:
- Deselect the Overlay volume,
- Select the input as Background volume and the output as Foreground volume.
- Go to Modules > Volumes
- Select the input volume, and write down the values for Window and Level
- Select the output volume, and apply the same values
- Move the lower left cursor in 'Manipulate Slice Views' between B (background) and F (foreground)
Tests
On the Dashboard, these tests verify that the module is working on various platforms:
- MyModuleTest1 MyModuleTest1.cxx
- MyModuleTest2 MyModuleTest2.cxx
Known bugs
Links to known bugs in the Slicer3 bug tracker
Usability issues
Follow this link to the Slicer3 bug tracker. Please select the usability issue category when browsing or contributing.
Source code & documentation
Links to the module's source code:
Source code:
Doxygen documentation:
More Information
Acknowledgment
This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149 (PI: Ron Kikinis).
References for algorithms implemented in this module
- A Nonparametric Method for Automatic Correction of Intensity Nonuniformity in MRI Data, J.G. Sled, A.P. Zijdenbos, and A.C. Evans, IEEE Transactions on Medical Imaging, 17(1):87–97, Feb 1998.
- N4ITK: Improved N3 Bias Correction, N.J. Tustison, B.B. Avants, P.A. Cook, Y. Zheng, A. Egan, P.A. Yushkevich, J.C. Gee, IEEE Transactions on Medical Imaging, Vol 99, April 2010.
- N4ITK: Nick's N3 ITK Implementation for MRI Bias Field Correction, N. Tustison, J. Gee, Insight Journal, 2009.
- Parametric Estimate of Intensity Inhomogeneities Applied to MRI, M. Styner, C. Brechbhuler, G. Szekely, and G. Gerig, IEEE Transactions on Medical Imaging, 19(3):153–165, Mar 2000.