Voxel Based Morphometry at the BIC

By Brook Thorndycraft and Jason Lerch

This page is slowly becoming out of date: please go here instead: http://wiki.bic.mni.mcgill.ca/index.php/VoxelBasedMorphometry

Voxel-based morphometry is a computational approach to neuroanatomy that measures differences in local concentrations of brain tissue, through a voxel-wise comparison of multiple brain images (Ashburner and Friston, 2000). The value of VBM is that it allows for comprehensive measurement of differences, not just in specific structures, but throughout the entire brain.

This site provides an example of the most common use of VBM, which allows a voxel-by-voxel comparison of the local concentrations of grey matter, between MR images of two groups of subjects.

The images must be put in talairach space and corrected for intensity non-uniformity. Each voxel is then classified as white matter, grey matter, cerebrospinal fluid, or background. The classification is based on the intensity of the voxel combined with the spatial probability of that voxel being white, grey, CSF, or background. After the classification, the image can be segmented, so that only one tissue type appears. Next, the image is smoothed using a Gaussian kernel, which gives a weighted average of tissue density in a defined area surrounding the selected voxel. Regression analysis using the general linear model can be conducted to compare the density of grey matter in the two groups, in order to identify differences in the concentration of grey matter that are related to specific variables under study. The output of this method is a statistical map that demarcates regions in which there is a significant difference in the concentration of grey matter between compared groups (Ashburner and Friston 2000).


The native file from the scanner will be called "MRI_image.mnc" Examples of new file names are in quotations.

1) Create a transform to talairach space
  mritotal MRI_image.mnc "talairach_transform.xfm"

2) Correct for non-uniformity
  nu_correct MRI_image.mnc "native_corrected.mnc"

3) Use talairach_transform.xfm to transform the image into talairach space
  mincresample -like /usr/local/mni/data/ICBM/icbm_template_1.00mm.mnc -transform talairach_transform.xfm native_corrected.mnc "talairach_corrected.mnc"

4) Classify each voxel as white, grey, CSF, or background
  classify_clean talairach_corrected.mnc "classified.mnc"

5) Use hack, which sets some environment variables to access programs not on the default path.
  source ~jason/estro/quarantine/environment

6) Mask the skull and dura from the brain, so that they do not interfere with the data.
  cortical_surface classified.mnc "cortical_mask.obj 1.5"

7) Use that mask to remove the skull and dura from classified.mnc
  surface_mask2 classified.mnc cortical_mask.obj "classified_masked.mnc"

8) Select one type of tissue (White=3, Grey=2, CSF=1), and blur it with a kernel of a certain size.

ex: for grey matter (-fwhm= full width at half max, ie, the size of the kernel in cubic mm)
  smooth_mask -binvalue 2 -fwhm 10 classified_masked.mnc "smooth_grey.mnc"


1) Create a text file that looks like so:
/full/path/subject1_smooth_grey.mnc 1 15
/full/path/subject2_smooth_grey.mnc 1 17
/full/path/subject3_smooth_grey.mnc 1 17

Where 1 = intercept term
Where 15|17 = variable to regress against.

2) Save this file as a .glim file
  ex: "regression.glim"

3) To run the statistics, and create a minc file that can be viewed:
  glim_image -t_stat "statistical_results.mnc" t_stat voxel column 2 regression.glim

Where column = the column to test against, i.e. 15|17 in above example.


1) Take an average of the original corrected scans
  mincaverage *_talairach_corrected.mnc "average_talairach_corrected.mnc"

2) Mask the skull and dura from the glim file prepared for the analysis
  surface_mask2 statistical_results.mnc /usr/local/mni/data/avg305/average_305_mask.obj "statistical_results_masked.mnc"

3) Highlight the important points
  find_peaks -neg_threshold -3.5 -pos_threshold 3.5 statistical_results_masked.mnc "statistical_results_masked_peaks.tag"

Where the thresholds represent the markers of significant differences.

4) View the results with register
  register statistical_results_masked_peaks.tag average_talairach_corrected.mnc statistical_results_masked.mnc