Motion correction for foot movement in an MRI foot

3 views (last 30 days)
Hi all,
I have a dynamic 3D MRI image of a foot where the subject has moved intermittently throughout the scan. I have tried to use imregister to correct for this but it doesn't seem to have done very much and I wondered if anyone can suggest a better code to help with my problem!
I've used the following code - using parallel processing to speed up the process as the size of my image array is 128 x 64 x 51 x 649, where the third dimension is number of slices and 4th dimension is number of dynamics.
parpool;
imFixed = im4D(:,:,:,1); %Using the first dynamic as the fixed image
[optimizer,metric] = imregconfig("monomodal");
registeredRigid = zeros(size(im4D)); %Preallocating object
parfor dyns = 1:size(im4D,4) %Looping through all dynamics
regRigidSlice = imregister(im4D(:,:,:,dyns),imFixed,"rigid",optimizer,metric);
registeredRigid(:,:,:,dyns) = regRigidSlice;
end
Thanks!

Answers (1)

William Rose
William Rose on 5 Sep 2024
Please upload a subset of the data array, im4d. For example, the first 10 time points, i.e. a 128x64x51x10 array. Maybe you can upload it as a dicom, so that others could view it in one of the online free dicom image viewers. If you upload a dicom, make sure first that Matlab's dicomread() successfully extracts the 4D image data into a 4D numeric array.
If the foot movement is within the foot - for example, movement at the metatarsophalangeal joints or at the tarsometatarsal jopints - then you are probably out of luck, since the parts of the foot are moving with respect to one another during image ascquisition.
If the movement is more proximal, such as inversion/eversion at the ankle, then you may have success.
Does your code run without error? If so, how did you decide the results are unaceptable?
I would first try adjusting image contrast, to see if, with a different contrast, imregister will produce better results.
If imregister still does not work, then you can experiment with programmatic identification of 3 landmarks in each image. For example, you could try the distal end of the distal phalanx of hallux, the proximal/lateral tip of the 5th metatarsal, and the superior point of the talus. Or some other combination of three landmarks. The more non-collinear they are, the better. (Three non-collinear landmarks is the minimum you need; four would be preferable.) Then you do a translation and rotation of the image at that time point to align the landmarks with the landmark positions at the initial time.
Once you have the estimated the positions of the landmarks at a given time, the code to do the translation and rotation is complicated, but doable. See here for the homogeneous matrix that incorporates translation and rotation. Although the transformation matrix is 4x4, there are only 6 unknown quantities you must estimate at each time point: the 3-element translation vector, and the 3 angles of rotation. The alignment will never be perfect, because the relative 3D locations of the landmarks will never be exactly the same, from frame to frame. Therefore you can use singular value decomposition to find the translation and rotation that give the best (in a least squares sense) transformation. See here for details.
The hard part, in my opinion, will be the automatic identification of 3 or 4 landmarks at each time point.
This is going to be a significant effort. Is it worth it? MRI scans are not cheap, but your time is also valuable. Can you do another data collection, with substantially less movement?
  2 Comments
Trixie
Trixie on 9 Sep 2024
Hi @William Rose, thanks for your response. Yes unfortunately the movement is within the foot, mainly at the MTPJ and at the toes.
The code runs without error and I am checking the results by plotting the registered and unregistered image side by side and running through the dynamics to see if there is improvement in the images following registration.
Your alternative option seems more complicated than my current Matlab skills may permit! I've uploaded a subset array (tried to include dynamics which show some of the movement ) as a .mat file.
William Rose
William Rose on 9 Sep 2024
Since the movement is within the foot, at toes and MTP joint, my complicated alternative would not work very well anyway. Thank you for posting the data.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!