Hi all,
I'd really appreciate your help with this head-scratcher of a registration problem. I've been working with a thigh muscle MRI dataset, consisting of DT-MRI data, higher-res Dixon structural images, and a set of ROIs drawn on those structural images. I ultimately want to transform the ROIs from the Dixon image space to the DT-MRI image space, as follows:
First, I register the Dixon images to the DT-MRI images using rigid, affine, and B-spline registrations in sequence - applied in a single elastix 5.0 command. This appears to work pretty well - see example below from FSL's 'slicer' tool (DT-MRI data in greyscale, transformed Dixon in red).
When I apply exactly the same series of transformations to the ROIs ('transformix -in roi.nii.gz -out results -tp TransformParameters.2.txt') there appears to be a big offset in the slice direction, and perhaps in other dimensions. See fig below, where ROIs that should start in the most distal slices of the DT-MRI (top) appear only in the most proximal slices (bottom)... With the registration result above I would have expected the ROIs to stretch comfortably across the whole DT-MRI volume.
This large offset also appears if I apply only the 'TransformParameters.1.txt' or 'TransformParameters.0' transformations as well - avoiding the B-spline step. I've also tried an earlier version of elastix (4.9), to no avail. And lastly, I've examined the Nifti headers in detail - I've been using Jimmy Shen's Nift Tools for data i/o in Matlab and I thought there might be a problem there. No luck.
Any ideas what might be going wrong here, or suggestions for further troubleshooting? I'd be really grateful for any tips and tricks.
With gratitude,
Donnie Cameron
Radiology, LUMC