Menu

Coregistering clinical scans with thick slices

2020-04-14
2020-04-14
  • Stephen Wilson

    Stephen Wilson - 2020-04-14

    I am using ANTS to coregister clinical acute stroke DWI scans with other modalities obtained at the same time on the same patient, e.g. FLAIR. As expected, there is significant geometric distortion of the echo-planar DWI sequences. I'm hoping ANTS can correct this to some extent. I'm using the antsRegistration binary with a rigid body step (in case there is patient movement between sequences) followed by SyN to deal with the distortion. Results so far are not as good as I hoped for.

    Critically, the DWI scans as well as the FLAIR scans (and other possible targets) all have thick axial slices (5mm). In-plane resolution is good (~1mm) though there is sometimes motion artifact.

    I am wondering if anyone has any suggestions for parameters or strategies to optimize coregistration in this context.

    Thank you for any help you can give.

    best,
    Stephen

     
    • Nick Tustison

      Nick Tustison - 2020-04-14

      You could start with the basic script antsRegistrationSyNQuick.sh. That has default parameters which are a good place to start.

       
  • Stephen Wilson

    Stephen Wilson - 2020-04-14

    Thanks, yes I started with defaults based on the provided scripts, but didn't get great results. Here are some of the changes I am considering specific to my coreg context:

    (1) the SyN stage from the script has:
    -c [50x0,1e-6,10] -f 2x1 -s 1x0vox']
    I changed this to:
    -c [1000x750x500,1e-7,20] -f 1x1x1 -s 5x2x0mm
    My reasoning:
    (i) why 0 iterations at the second step?
    (ii) require more convergence
    (iii) don't want to shrink at all in the z plane where voxels are 5 mm, so better not to shrink at all?
    (iv) specify smoothing in mm instead of voxels because of anistropic voxels

    (2) set --initial-moving-transform = 2 (align origins) because my images are usually quite well aligned initially, coming from the same patient, same session, and the geometry is correct in the headers

    (3) increase the sampling from 0.25 to 0.5 -- would this improve ability to line up specific sulci?

    If possible, I'd appreciate any feedback on the logic of these changes. I will experiment with different parameters, but I'd like to be sure I'm understanding the functions of the different parameters so that I can try things that are sensible.

    Thanks again.

     
    • Nick Tustison

      Nick Tustison - 2020-04-14

      (i) why 0 iterations at the second step?

      The script is named Quick for a reason. A 0at the final iteration is used to ensure that the final displacement field is interpolated to the highest resolution level without the overhead of runnning the registration at that stage. Also, that's way too many SyN iterations. You're probably around the local minimum a good percentage of the time and even those final iterations are probably not changing the solution noticeably.

      (iii) don't want to shrink at all in the z plane where voxels are 5 mm, so better not to shrink at all?

      Concerns about huge anisotropy are already taken care of in the multi-resolution scheme.

      (3) increase the sampling from 0.25 to 0.5 -- would this improve ability to line up specific sulci?

      You might want to try the non-Quick version which uses CC as the metric and samples all voxels.

       
      • Stephen Wilson

        Stephen Wilson - 2020-04-14

        Thank you Nick, these responses were all very helpful. I will post again when I have tried some of this out.

         
  • Philip Cook

    Philip Cook - 2020-04-14

    Here's a script I have used with some success. Nothing's as good as a field map, but this is what I use when that's not an option

    https://github.com/ftdc-picsl/dtProcessing/blob/master/preproc/distCorrDiffToStructural.pl

    It's pretty customized to work with in-house data, but could be a starting point.

    It uses a Rigid stage then BSplineSyN. I avoid affine as I find there is little true affine distortion between the DWI and T1, and it just makes the solution worse.

    For anisotropic voxels, you might try anisotropic spline spacing, as commented in the script. You can also try adding regularization and / or restricting deformation along the phase encode axis, with the -g or --restrict-deformation option, eg something like -g 0.1x0.8x0.1.

     

    Last edit: Philip Cook 2020-04-14
    • Stephen Wilson

      Stephen Wilson - 2020-04-14

      Thank you Philip, I will read your script and see if it works for my data, or at least provides pointers to the right parameters. Indeed I can't get a field map here--these are pre-existing clinical scans that I'm just using for research after the fact.

       
  • Philip Cook

    Philip Cook - 2020-04-14

    Question for @ntustison - how does the metric radius handle anisotropic voxels? I know the shrink factors use the smallest of the three dimensions. Does CC[fixed, moving, 1, 4] work the same way? I kind of think it would have to, but I've not checked the code.

     
  • Philip Cook

    Philip Cook - 2020-04-14

    Thanks guys. So that's one thing to consider with big slices and the CC metric.