"ADC map registration" (from slicer-users)

From slicer-users

Dear Slicer users,

I'm using Brainsfit to register ADC maps. I scanned 5 times to the same
volunteer in order to obtain the repatability of these maps.

Even using immobilizer small movements and rotations appear so I need to
register all the images. Since the slice thickness is 5 mm for those ADC
maps I suppose that I cannot expect very good results from the registering

A T1 weighted image with 1 mm3  per voxel was scanned in the same session
(to be used for freesurfer) so I tried to use it as fixed image in my second
attempt instead of the first ADC map.

I used rigid rotations but the results that I obtained seemed like needing
an additional BSpline non rigid registration. I used MSE for the first
attemp and MMI for the second one with the structural image as fixed one.

Since the results do no seem to be as good as I expected, do any of you have
experience enough to tell me if these parameters are correct?

                 '--maskProcessingMode ROI',
                 '--fixedBinaryVolume mask.nii.gz --movingBinaryVolume
                 '--useRigid --use BSpline',
                 '--samplingPercentage 0.05 --initializeTransformMode Off',
                 '--splineGridSize 4,4,4 --maxBSplineDisplacement 10',
                 '--medianFilterSize 0,0,0 --removeIntensityOutliers 0
--outputVolumePixelType int',
                 '--backgroundFillValue 0 --interpolationMode WindowedSinc',
                 '--numberOfIterations 1500 --maximumStepLength 0.5
--minimumStepLength 0.001',
                 '--relaxationFactor 0.5 --translationScale 1000',
                 ' --reproportionScale 1 --skewScale 1',
                 '--numberOfHistogramBins 50 --numberOfMatchPoints 10',
                 '--costMetric MMI',  #MSE for ADC/ADC
                 '--ROIAutoDilateSize 0 --ROIAutoClosingSize 9',
                 '--costFunctionConvergenceFactor 1000
--projectedGradientTolerance 0.0001',
                 '--maximumNumberOfEvaluations 900
--maximumNumberOfCorrections 25',
                 '--metricSamplingStrategy Random',
                 '--fixedVolumeTimeIndex 0 --movingVolumeTimeIndex 0',
                 '--maskInferiorCutOffFromCenter 1000  --numberOfSamples 0
--failureExitCode -1 --numberOfThreads -1',
                 '--debugLevel 0 --echo'

Rigid registration finished after 35-40 iterations and non-rigid
registration used around 25 iterations.

Do any of you have any suggestion about these parameters?

Thank you in advance.


Hi Felix,

A couple questions/suggestions:

  • does it work better without ROI/mask? I’ve never had to use those, at least for MR.
  • increase the --samplingPercentage
  • how are you evaluating the registration? Do you have a side-by-side comparison that you consider to be bad?
1 Like


what is the organ being imaged?

A challenge with applying deformable registration, particularly in the context of evaluating repeatability, is that you will not be able to separate the inherent measurement differences from those caused by the imperfect registration (and your registration will never be perfect).

If I were you, I would start with evaluation of repeatability of the mean signal over a region that can be more or less reliably identified in each of these scans, and also consider what is the clinical problem these images are intended to address.



Dear Andrey and Isaiah, thank you very much for your replies.

I’m trying to evaluate the registration of the ADC maps of the brain. I’m evaluating the result sliding the alpha blend slider on slicer GUI. As far as I’ve seen in the examples, somewhere in the wiki, I expected better results.

If I don’t use ROI mask the B-Spline registration seems to work worse. Increasing the sampling percentage does not seem to improve the result, thanks for the tip.

I think that the registration process is needed because regions where repeatability is evaluated are the results of freesurfer segmentation of T1 weighted image. It seems to me that I need to register the ADC maps (1x1x5 mm3) over T1 weighted image (1x1x1 mm3) source of those regions.

If I move the T1w to ADC maps I could not evaluate if the result of the registration moves the regions to the same place in the ADC maps, but if I do the opposite I can compare all the registered ADC maps. Maybe, finally I can apply the inverse transformation to the regions so they move to the original ADC maps, but first I need to evaluate the result of the registration.

Would you change any other parameter ? I.e. I’m not sure if 4,4,4 is a good value for the spline grid size.

Felix, I do not understand what you are trying to say here. Considering the differences in resolution, it makes sense to have T1 as moving image.

You could also consider registering b0 image instead of the ADC map (usually, you have the diffusion images as a separate series alongside the ADC series), and then apply the transformation to ADC. Do you have the diffusion b0 image, did you try this?

You can definitely experiment with the grid size. It depends on the nature of deformation you observe. If you include a screenshot illustrating the problem, it might help.

1 Like

Thank you Andrey for your support.

Finally I took your advice and registered T1w to b0 image, this didn’t corrected Eddy distortion but since I’m computing statistic for regions this procedure should be good enough .

As you suggested the result for the initial procedure was better if 7x7x4 was used for the spline grid size since voxels are not isotropic.

Thank you very much for your advices.

1 Like