Non-isotropic voxels; What to do and why
A recent question came up on the forum that was concerned with isotropic versus non-isotropic voxel sizes:
Hi, I am trying to process some DTI data using FSL for TBSS or Voxel based comparison. I am following the basic guideline from http://www.cabiatl.com/Resources/Course/tutorial/ html/dti.html and this works good.
However, I found my DTI data set is not isotrophic, about 0.9 x 0.9 x 3 mm.
My question is
- Does the DTI voxel size matter for TBSS or VBM? Can I run those statistical using this asymmetric voxel data?
- If it matters, how can I overcome the problem? I have FSL on my macbook and Matlab.
- How about the effect of this asymmetric voxel for tractography?
My response:
That is a great question, I think it is indeed important to use isotropic voxels for DTI. You can run VBM and TBSS on non-isotropic voxels, interpolation will not likely alter your results, although isotropic acquisition might have.
It is a different story for tractography, where it will be important to interpolate to isotropic voxels. Non-isotropic voxels can negatively influence fiber tracking results, eg. you are less likely to find specific smaller/bendier tracts. My personal experience when running different tests, is that higher (isotropic) resolution (even when through interpolation) will improve tractography results. Although you'll have to keep an eye on your computing power, it is easy to "break" your processor/RAM by going overboard with higher voxel resolution which will make visualizations tedious (although that doesn't become a problem till 0.5mm^3 and higher resolutions).
I tried to find some references to support this, and although I know they must be out there, I couldn't quickly find any conclusive quotes. Somehow in most simulations that I found the authors assume isotropic voxels, while most clinical articles use non-isotropic voxels. Which is unfortunate.
Some quotes:
"FA values that are measured in regions containing crossing fibers are underestimated when using nonisotropic DTI."http://www.ajnr.org/content/28/6/1102.short
"The use of isotropic voxels is recommended to ensure that the accuracy of the tractography scheme is independent of fiber direction."http://onlinelibrary.wiley.com/doi/10.1002/1522-2594( 200010)44:4%3C625::AID-MRM17% 3E3.0.CO;2-O/full
"When selecting the acquisition parameters, one should strive for isotropic resolution since different in-plane and between-plane resolutions would lead to differential averaging of fiber orientations, leading to complicated modeling requirements if this is to be accounted for."http://www.ncbi.nlm.nih.gov/pubmed/22846632
In addition to the above references Alexander Leemans directed my attention to this work:
What to do:
These answers however do not address how you can alter you voxel size if you indeed would like to change your voxel dimensions to be more isotropic. Sam Hurley gave the great suggestions of using FSL's FLIRT to make this change. The nice thing about this tool is that you can stay within the FSL environment, but the down side it that it assumes you have a suitable reference image available with the correct dimensions. If you do not, you can instead decide to use other tools, like for example the ones developed by Gary Zhang for DTI-TK; SVResample and TVResample. The first will be able to resample scalar images (eg. the DWI images), while the latter is able to resample tensor images. Which tool you should use depends on what phase the data is in and when you want to alter the voxel dimensions.
The trick with either tool is to be considerate of the fact that resampling any dimension of your voxel space will inadvertently influence the size of the brain within the specified dimensions of the image. If you increase the voxel size, e.g. in the x direction from 1mm to 0.5mm, the space occupied by the brain will include twice as many slices. So where your image dimension used to be 248 slices it should now be 512. If you do not accommodate for this change the brain might get chopped off at the edges of the image.
Below is an worked out example of how to calculate the correct image dimension when altering specific image dimensions:
x = (256x1)/1 = 512
y = (256x1)/0.5 = 512
z = (64x4)/0.5 = 512
The below code is just an example, there are more options available both within this tool and the TVResample tool that you can explore further:
SVResample -in 019_bravo.nii.gz -out 019_final.nii.gz -xs 512 -ys 512 -zs 512 -xv 0.5 -yv 0.5 -zv 0.5
SVResample -in 019_bravo.nii.gz -out 019_final.nii.gz -xs 512 -ys 512 -zs 512 -xv 0.5 -yv 0.5 -zv 0.5