Warping FOD and tck files to MNI template


I am trying to register both an FOD.mif file (obtained using the dwi2fod command) and its relative tractography result (.tck file) to the MNI template with 1mm resolution. The data are from the Human Connectome Project so the deformation field is already provided (standard2acpc_dc.nii.gz and acpc_dc2standard.nii.gz).

I have already tried to follow the procedure suggested in this post:

but it yields strange results. First, the resulting tracts do not match the MNI template. Moreover, when applying exactly the same method on the FOD image (but using “mrtransform” instead of “tcktransform”), the image is being deformed but it still doesn’t match the template and the resolution is 2mm.

I was wondering if there is any standard procedure that should be followed to register FOD data, as well as tracts, to the MNI template with 1mm resolution.

Thank you very much for your help!


There are a few issues to get right here before this can work:

  • the displacement field provided in the HCP is not quite in the right format for our tools. We expect a deformation field, which stores the x,y,z positions in the target space, rather than the displacement field containing the x,y,z, translations of each voxel. So the first step is to convert the displacement field to a deformation field. This was what the first step in the post you linked to was about:

    warpconvert standard2acpc_dc.nii.gz -type displacement2deformation warp_subj2MNI.nii.gz
  • the process to warp the streamlines relies on the forward transform from subject to template space (i.e. an image in subject space giving corresponding locations in template space), and this should just work:

    tcknormalise tracks_subject.tck warp_subj2MNI.nii.gz tracks_MNI.tck
  • The FODs can also be warped, but they rely on the inverse transform from template to subject (i.e. an image in template space giving corresponding locations in subject space). Thankfully, the HCP provides the inverse displacement field, so you can convert it to the required deformation field as above:

    warpconvert acpc_dc2standard.nii.gz -type displacement2deformation warp_MNI2subj.nii.gz

    You should then be able to use that with mrtransform:

    mrtransform FOD.mif -warp warp_MNI2subj.nii.gz FOD_template.mif

    If you’re after a specific resolution for the target space, the simplest thing is to provide the additional -template option with an image of the desired resolution in the template space. The data will then be regridded directly onto the grid of that template image.

Note that there is plenty of scope for confusion as to which displacement/deformation is forward or inverse. Since image regridding invariably relies on the inverse mapping (i.e. an image in the target space from which locations in the source space can be derived), it’s quite possible for that warp to be labelled as ‘source2target’ – indeed, that is what you would use to warp an image from source to target space. I note my terminology here differs from that used in the HPC, but hopefully that won’t introduce too much confusion…

If this doesn’t work, you could try swapping the warps around, there’s a chance that might work, depending on whether I’ve got my forwards and inverses mixed up…