// Parameter file for affine registration // // PDF manual can be found here: // https://github.com/SuperElastix/elastix/releases/download/5.0.0/elastix-5.0.0-manual.pdf // // Specific parameter documentation can be found here: // http://elastix.isi.uu.nl/doxygen/parameter.html // // ----------------------------------------------------- // You may change these // // Automatically guess an initial translation. // - true // - false (AutomaticTransformInitialization "false") // ----------------------------------------------------- // You may change these // // Transform (cf elastix doc on Transforms) // test : // - TranslationTransform // - AffineTransform // - BSplineTransform (called FFD during the lecture) (Transform "BSplineTransform") // ----------------------------------------------------- // You may also change these // // Metrics (cf elastix doc on Metrics) // test : // - AdvancedMeanSquares (MSD), // - AdvancedNormalizedCorrelation (NCC), // - AdvancedMattesMutualInformation (MI) // - NormalizedMutualInformation (NMI), (Metric "AdvancedMattesMutualInformation") // ----------------------------------------------------- // You may also change these (if you are very curious) // Number of spatial samples used to compute the mutual // information in each resolution level. // With the RegularStepGradientDescentOptimizer in general // you need to set this to some fixed fraction of the total // number of voxels in the image. Say 20%, at least. // In the first resolutions the images are smaller so you // may use less samples. //(NumberOfSpatialSamples 30000 80000 100000) (NumberOfSpatialSamples 300000 800000 1000000) // Maximum number of iterations in each resolution level: // 100-500 works usually fine. //(MaximumNumberOfIterations 100 100 100) (MaximumNumberOfIterations 250 250 250) // ----------------------------------------------------- // You may change the rest if you feel adventurous // // The internal pixel type, used for computations // Leave to float in general (FixedInternalImagePixelType "float") (MovingInternalImagePixelType "float") // The dimensions of the fixed and moving image (FixedImageDimension 3) (MovingImageDimension 3) //Components // The following components should be left as they are: (Registration "MultiResolutionRegistration") (FixedImagePyramid "FixedRecursiveImagePyramid") (MovingImagePyramid "MovingRecursiveImagePyramid") (Interpolator "BSplineInterpolator") (ResampleInterpolator "FinalBSplineInterpolator") (Resampler "DefaultResampler") // You may change these: // The optimizer RegularStepGradientDescent (RSGD) works quite ok // in general. You may also use the StandardGradientDescent, // like in parameters_Rigid.txt. The Transform and Metric // are important and need to be chosen careful for each application. //(Optimizer "RegularStepGradientDescent") (Optimizer "QuasiNewtonLBFGS") // Scales the rotations compared to the translations, to make // sure they are in the same range. The higher this parameter, // the smaller the changes in rotation angle in each iteration. // If you have the feeling that rotations are not found by elastix, // decrease it; if elastix crashes after a few iterations, with // the message that all samples map outside the moving image // buffer, you may have to increase this parameter. (Scales 50000.0) // Choose another center of rotation for the AffineTransform, // if you like. Uncomment if you want that. //(CenterOfRotation 10 10 10) // The number of resolutions. 1 Is only enough if the expected // deformations are small. 3 or 4 mostly works fine. (NumberOfResolutions 3) // The pixel type of the resulting image (ResultImagePixelType "short") // If you use a mask, this option is important. You can // set it for each resolution differently. // If the mask serves as region of interest, set it to false. // If the mask indicates which pixels are valid, then set it to true. // If you do not use a mask, the option doesn't matter. (ErodeMask "false" "false" "false") // Whether transforms are combined by composition or by addition. // In general, Compose is the best option in most cases. // It does not influence the results very much. (HowToCombineTransforms "Compose") // Pick the samples (pseudo)randomly. Use "Full" if you want // to use all voxels to compute metric. (then the previous // option makes of course no sense anymore). (ImageSampler "Random") // Number of grey level bins in each resolution level, // for the mutual information. 16 or 32 usually works fine. (NumberOfHistogramBins 16 32 32) //Order of B-Spline interpolation used in each resolution level: // It may improve accuracy if you set this to 3. Never use 0. (BSplineInterpolationOrder 2 2 2) //Order of B-Spline interpolation used for applying the final // deformation. // 3 gives good accuracy. // 1 gives worse accuracy (linear interpolation) // 0 gives worst accuracy, but may be appropriate for // binary images; this would be equivalent to nearest neighbor // interpolation. (FinalBSplineInterpolationOrder 0) //Default pixel value for pixels that come from outside the picture: (DefaultPixelValue 0) // The following parameters are for the StandardGradientDescent // optimizer. They determine the step size. // Especially SP_a needs to be tuned for each specific application. // The number of iterations is also important. //Maximum step size of the RSGD optimizer for each resolution level. // The higher you set this, the more aggressive steps are taken. (MaximumStepLength 4.0 2.0 2.0) //Minimum step size of the RSGD optimizer for each resolution level. // The lower you set this, the more accurate the final result. //(MinimumStepLength 0.5 0.05 0.05) (MinimumStepLength 0.5 0.05 0.05) //Minimum magnitude of the gradient (stopping criterion) for the RSGD optimizer: // The lower you set this, the more accurate the final result may be. (MinimumGradientMagnitude 0.00000001 0.00000001 0.00000001) //Result image format //(ResultImageFormat "mhd")