Motion correction between four repeated multiple sets of DWI

Hi MRtrix3 experts,

I’m comparing two acquisition schemes to evaluate the quality of the reconstructed FA maps between these two schemes.
case 1) DWI_15 (2b0 + 15 diffusion-weighted images) repeat 4 times.
For TopUp correction, additional reversed phase encoding b0 image is acquired.
case 2) DWI (7b0 + 60 diffusion-weighted images).
For TopUp correction, additional reversed phase encoding b0 image is acquired

For 1), I planned to run dwipreproc for four individual DWI_15 scans individually. FA will be reconstructed from the DWI images averaged over all four scans. The idea behind this is that: to fit the DTI model, DWI volumes of 1) (higher SNR, fewer DW directions) might generate a more accurate FA than using the DWI volumes of 2) ( lower SNR but more DW directions). However, I need to take care of the motion between scan sets for case1.

To take care of the motion between four sets of DWI_15, should I run rigid registration? (If so, should I Run registration before dwipreproc or after dwipreproc?) Or should I try to combine four sets of DWI_15 into one matrix (2b0 + 15DW) x4 and run dwipreproc on this combined matrix?

Thank you for your help in advance.



Hi Yixin,

If you want to substantially simplify the requisite processing for your experiment:

  1. Concatenate all data (not only the four repeats from case 1, but also data from case 2) into a single large 4D image using mrcat.

  2. Run dwipreproc.

  3. Extract the volumes that you want to treat as individual datasets using mrconvert -coord.

By doing all image pre-processing together, all image volumes would be aligned across both cases, and so no further registration between datasets would be required. The experiment would then only be looking at the influence of DWI volume selection on FA estimation, and would not include any potential differences in image pre-processing caused by selection of the DWI gradient table.

Bigger picture though I think this is already fairly well established. The “total SNR” of cases 1 and 2 is actually identical. Case 1 is only described as “high SNR” if the volumes corresponding to equivalent diffusion sensitisation directions are explicitly averaged; not only is this discouraged as it affects the noise distribution, but it also only refers to the “SNR within that volume”, which is not really of interest. Case 2 contains greater angular resolution than case 1, and does not have any detrimental attributes compared to case 1 to compete against such, and so is almost universally the better choice. The only situation where case 1 may be advantageous is if actually looking at individual DWI volumes, and explicitly averaging to “improve SNR”.


Similarly, I have three repeated scannings using the same acquisition sequence. My question is how to perform motion correction between the 3 scans, so as to average the 3 repeated 4D volumes to improve SNR?

Hi @LiuYuchen,

Firstly, I should note that the original question in this thread from @Yixin_Ma was explicitly about testing the efficacy of different acquisition / concatenation / averaging strategies, and wanting to perform the pre-processing in such a manner as to best facilitate such comparisons. In your case however it sounds like you simply want to process the data that you have acquired in the best manner possible.

As such, I would suggest firstly looking at the dwicat command, which aims to address the question of whether or not there are global signal intensity fluctuations between acquisitions. It may or may not be required for your data, but it’s worth running once to see whether the intensity balancing factors it derives deviate substantially from unity.

Secondly, when it comes to utilisation of repeated scans, I would refer to my recent response in another thread; note in particular the comment on concatenating rather than averaging data (which also “improves SNR” as far as the overall reconstruction is concerned, even if it doesn’t involve “increasing SNR” in individual DWI volumes through explicit averaging).