This has been puzzling me for quite some time: what is the ‘best’ or ‘correct’ way to run distortion correction on BOLD data using FSL’s topup in conjunction with opposing spin echo images (R>L and L>R). There seem to be a few different recommendations after running topup itself:
- Use
applytopupas per FSL documentation on the BOLD images. -
Create rad/s and magnitude images instead of applytopup. Steps to do this are outlined here. However, an approach without FEAT is unclear (my guess would be to somehow use the fieldmap options in
flirt, or usefugue?) -
Create a shiftmap, which then gets converted into a deformation field using
convertwarp. I could not find any information on what aconvertwarpcommand here would actually look like, however. I know this was ages ago, @oesteban, but do you remember what you did here? - HCP applies some conversion to
topup'sdfout, which then can be used to warp the image of interest, followed by additional Jacobian modulation. My impression is that this is basically whatapplytopupdoes, just in a different set of commands. Is theconvertwarpcommand here (lines 305, 317) reflective of what should be used above for (3)? Note that they also compute rad/s and magnitude images like in (2).
When I do run applytopup on my BOLD images, there is still some residual distortion that I can clean up nicely with ANTs (SyN). For this reason, one of the approaches above that generates a warp field is ideal, because I could combine transforms for one-step resampling.
I’d be curious to know peoples’ thoughts and how they’ve used topup successfully!