MeningiomaMRIRegistrationStudy

From NAMIC Wiki
Jump to: navigation, search
Home < MeningiomaMRIRegistrationStudy

Objective

Accurate registration of same patient/same modality MRI data for longitudinal analysis of tumor progression.

Specific Aims

  1. Compare the accuracy of registration using existing Slicer and non-Slicer tools
  2. Identify parameter settings that produce satisfactory results
  3. Outline the limitations of the available registration tools in the context of the specific clinical research application

Data

  • Input images: isotropic post-contrast T1 MRI acquired at different locations of BWH during 2006-2008, used under medical records study IRB. Time period between acquisition of scans for each patient is about 1 year.
  • images were acquired with the same sequence, but possible on different scanners, all scans are axial
  • Ground truth transformation: not available
  • Expert landmarks for registration evaluation: not available
  • Checkerboard appearance of unregistered images for the representative data of interest
    • Case01
    • Case03
    • Case04
    • Case10

Environment

All registration methods were executed on george.bwh.harvard.edu. Where number of threads was possible to specify, it was set to 4.

Measures of success

  • qualitative assessment: visually pleasing results
  • quantitative assessment: something better than "visually pleasing" (TBD)
  • minimum execution time to meet the application requirements: interactive quantification of tumor growth
  • minimum tuning of registration parameters (is this possible? to answer this sub-question we compare the results with FLIRT registration using its default parameters)

Methods

Registration

RegisterImages Slicer module

  • parameters:
Slicer3 --launch RegisterImages --saveTransform ${RI_TFM} \
  --initialization ImageCenters --registration Rigid --expectedOffset 10 \
  --expectedRotation 0.1   --expectedScale 0.05 --expectedSkew 0.01 \
  --verbosityLevel Standard   --sampleIntensityPortion 0.05 --randomNumberSeed 12345 \
  --numberOfThreads 4   --baselineNumberOfFailedPixelsTolerance 1000 \
  --baselineIntensityTolerance 10 --baselineRadiusTolerance 0 --rigidMaxIterations 200 \
  --rigidSamplingRatio 0.01   --affineMaxIterations 50 --affineSamplingRatio 0.02 \
  --bsplineMaxIterations 20 --bsplineSamplingRatio 0.1 --controlPointSpacing 40 \
   ${FIXED_IMAGE} ${MOVING_IMAGE}
  • execution time: ~1-2 min

RigidRegistration Slicer module

BRAINSFit

${SLICER} --launch BRAINSFitExe \
  --fixedVolume ${TIME_POINT_1}  --movingVolume ${TIME_POINT_2} \
  --transformType Rigid --initializeTransformMode CenterOfHead \
  --numberOfIterations 200 --numberOfSamples 100000 --minimumStepSize 0.005 \
  --spatialScale 1000 --reproportionScale 1 \
  --outputTransform ${BF_TRANSFORM} --histogramMatch \
  --strippedOutputTransform ${BF_STRIPPED_TRANSFORM} \
  --patientID ANON --studyID ANON --outputVolumePixelType float \
  --backgroundFillValue 0 --maskProcessingMode ROIAUTO \
  --fixedVolumeTimeIndex 0 --movingVolumeTimeIndex 0 \
  --fixedVolumeOrigin 0,0,0 --movingVolumeOrigin 0,0,0 \
  --medianFilterSize 0,0,0 --permitParameterVariation 1,1,1 \
  --useCachingOfBSplineWeightsMode ON --useExplicitPDFDerivativesMode Whatever \
  --relaxationFactor 0.5 --maximumStepSize 0.2 --failureExitCode -1 \
  --fixedVolumeROI ${FIXED_IMAGE_ROI} --movingVolumeROI ${MOVING_IMAGE_ROI} \
  --numberOfHistogramBins 50 --numberOfMatchPoints 10 --debugNumberOfThreads 4

Note: all parameters are the default settings except numberOfIterations (default 1500), maskProcessingMode (default NOMASK).

  • execution time: ~12 min

FSL FLIRT

flirt -in ${TIME_POINT_2} -ref ${TIME_POINT_1} -omat ${FLIRT_TRANSFORM} -out ${RESAMPLED_IMAGE} -dof 6 -v
  • execution time: ~4 min

Parameter exploration

Validation and accuracy assessment

Results

BRAINSFit

    • Case01
    • Case03
    • Case04
    • Case10


FSL FLIRT

    • Case01
    • Case03
    • Case04
    • Case10

Conclusions

Limitations of the Slicer registration tools

  • RigidRegistration (the following are trivial to fix in the code)
    • Number of samples is specified as an absolute value, better if it is a relative value to the total number of the image voxels
    • Not possible to specify input mask, or sampling threshold for metric voxels
    • Not possible to specify the number of threads, while variable number of threads used in registration may result in irreproducible results (see ITK bug #9222
  • RegisterImages
    • Output transform should be loaded manually via Transform IO (convenience). Not trivial to fix, since RegisterImages is generic to use the same output transform for different types of registration (e.g., Rigid, Affine and BSpline), while BSpline cannot be loaded in Slicer via transform IO
  • all of the tools implemented in Slicer require to specify the max number of iterations, which essentially requires the user to monitor convergence (metric value while iterating can be found in Slicer error log), and increase the number of iterations if the satisfactory result is not achieved. Not practical for interactive application