DWI preprocessing

From Hodaie Lab
Jump to: navigation, search
By David Qixiang Chen
October 5, 2010

Step 1. Eddy current correction

Motion and eddy-current correction as Nifti

Recommended, as it offers gradient vector corrections.

Eddy-current using NRRD and TEEM

Deprecated, no motion correction, and no gradient vector corrections.

Loading the DTI scan into Slicer

Loading the scan into Slicer is simple.

  1. Go to Modules->Volumes.
  2. Under Load, click on Select Volume File and browse to your eddy corrected output.nhdr.

Optional steps:

  1. Set Image Origin to Centered.
  2. Set Image Orientation to IJK.
  3. Click Apply.

Reorient and Isovoxels

Sometimes the head of the scan is tilted in the viewport. In that case we need to reorient it. We may also want to convert the scan to isovoxel dimensions. Both operations require us to resample the volume.


  1. Go to Modules->Transforms and create a new transform node.
    We do this by Clicking on the “Create New Transform Node” drop down menu in the Transform Editor.
  2. Go to Modules->Data and drag the scan volume onto the transform node.
    In my case they are called “eddycor.nhdr” and “LinearTransform”. Now you should see that the scan volume is branched under the Transform node.
  3. Go back to Modules->Transforms.
    Under Rotation, enter a number into the rotation axis that you want.
    DO NOT drag the slider. For example, the head is tilted sideways, so I want to rotate it along the PA ( posterior-anterior) axis by about 6 degrees. Enter the angle in small increments and you’ll see the resulting transform being updated on screen dynamically. Experiment with the values until you are satisfied.


Caution, the validity of resampling a DWI volume to isovoxel is debatable.

Now we want to apply the transformation and define output parameters to resample the volume.

Go to Modules->Filtering->Resample Scalar/Vector/DWI Volume

  • Input Volume: Select our eddycor.nhdr
  • Reference Volume: Same as Input Volume
  • Output Volume: Select Create New DiffusionWeightedVolume
  • Under Transform Parameters
    Select the LinearTransform node that we created.
    Expand Interpolation Type
    Click on “bs” for B-Spline interpolation.
  • Under OutputParameters
    If you don’t care for changing voxel dimensions, you can ignore this part, otherwise press on.
    • Under Space, enter the voxel dimension you want. For example, for 1x1x1mm voxels, enter “1,1,1”.
    • Under Size: This is the total dimension of the scan volume. You will need to calculate this to match your original scanning dimension.
      For example, if my original voxel size is 0.97x0.97x3, my scan dimension if 256x256x55. Then my new dimension will be 1x1x1 and 240x240x165.
      Tip: You can find out your scan’s dimensions under the info tab in Volumes.

Leave the rest of the settings alone and press Apply. After a while, you now have your DWI scan ready for DTI process.

Calculate DTI Tensor

Now that we have prepared our DWI volume, we can now use it to calculate the DTI tensors.

Before we can do that, we need to correct the Gradient table. This is a bug in the current Slicer builds, hopefully it’ll be corrected in the future.

  1. Go to Module->Volume
  2. Under Active Volume, select the resampled DWI volume.
  3. Expand Diffusion Editor Tab.
  4. Check “Enable Textbox” under Gradients.
    Notice the line:
    DWRI gradient 0000: -nan –nan –nan
    Change it to:
    DWRI gradient 0000: 0 0 0
    The gradient textbox will automatically close and you should see “Gradients: VALID” underneath.

Estimate Tensors

Find the Module Diffusion tensor Estimation.

In Slicer 3.6, it’s under Modules->Diffusion->Utilities. In earlier builds, the location is different.

  • Input DWI Volume: resampled volume
  • Output DTI Volume: Create New
  • Output Baseline Volume: Create New
  • Otsu Threshold Mask: Create New (We won’t use this for anything, but it’s required for the module to work properly)

Under Estimation Parameters:

  • estimation Parameters: LS
    • NOTE it's better to use Weighted least-square (WLS) for tensor estimation, however Slicer's WLS implementation is extremely slow.
  • Shift Negative Eigenvalues: check

If you want to mask out non-brain areas, then do:

  • Remove Islands: Check
  • Apply Mask: Check

Click on Apply

Beautiful DTI display

  • Go to Module->Volumes.
  • Select the new DTI tensor volume.

Expand Display.

  • ScalarMode: ColorOrientation

Now when you view the DTI tensor volume in the viewports, it’ll be in color-by-orientation mode, and ready for additional process.