Anatomical registration between sessions


I am currently working on a reproducibility study, and I scan the same subject 1-2 weeks apart. For my study, I need to create a cervical spinal cord ROI that is the same for both scans. To do this, I am trying to register the t2 image from the first scan to the t2 image from the second scan and then segment the registered images.

I have been playing around with different parameter arguments and have gotten okay registration results using labels but it’s still not perfect. The command that I am currently using is as follows:

sct_register_multimodal -i 2_t2.nii.gz -d t2.nii.gz -iseg 2_t2_seg.nii.gz -dseg t2_seg.nii.gz -ilabel 2_t2_seg_labeled.nii.gz -dlabel t2_seg_labeled.nii.gz -m mask_t2.nii.gz -param step=0,type=label,dof=Tx_Ty_Tz_Rx_Ry_Rz:step=1,type=seg,algo=affine

I was just wondering if anyone had any suggestions on parameter arguments that would make this registration better.

Here is the necessary data.

Thank you!

Hi @acronin96,

Thank you for your question!

Before giving a full answer, I just wanted to mention that the data archive above seems to be missing the file “mask_t2.nii.gz” (as referenced in the command above). Could you please share this file as well?

Thank you kindly,


Oh no, sorry about that! Here is the data folder that also includes the “mask_t2.nii.gz ” file.


1 Like

Sorry for the late reply. While working on a solution, we discovered this bug, which is now fixed. So, to be able to use the proposed solution below, you will need to install the development version of SCT (“master” branch). If you are already working with the development version, you just need to go in SCT’s repository and run:

git pull

So, here is the proposed solution. The idea to register two scans that are acquired at two different sessions is to use the disc labels as a first ‘approximate’ registration, and then use the spinal cord segmentations for the refined registration. Here is the command:

sct_register_multimodal -i scan1/t2.nii.gz -iseg scan1/t2_seg.nii.gz -ilabel scan1/t2_seg_labeled_discs.nii.gz -d scan2/2_t2.nii.gz -dseg scan2/2_t2_seg.nii.gz -dlabel scan2/2_t2_seg_labeled_discs.nii.gz -param step=0,type=label,doi=Tx_Ty_Tz_Rx_Ry_Rz:step=1,type=seg,algo=centermassrot

When running with flag -v 2, it outputs intermediate registration results. An interesting one is the label-based registration, showing the source (red), destination (green cross) and registered (blue) disc labels:

Here is the result of the registration for the data you shared:

And here are some QC reports, showing some of the commands I tried (the first one is the “winner”).

Great, thank you so much for taking the time to look at this!