| // Example parameter file for B-spline registration |
| // C-style comments: // |
|
|
| // The internal pixel type, used for internal computations |
| // Leave to float in general. |
| // NB: this is not the type of the input images! The pixel |
| // type of the input images is automatically read from the |
| // images themselves. |
| // This setting can be changed to "short" to save some memory |
| // in case of very large 3D images. |
| (FixedInternalImagePixelType "float") |
| (MovingInternalImagePixelType "float") |
|
|
| // **************** Main Components ************************** |
|
|
| // The following components should usually be left as they are: |
| (Registration "MultiResolutionRegistration") |
| (Interpolator "BSplineInterpolator") |
| (ResampleInterpolator "FinalBSplineInterpolator") |
| (Resampler "DefaultResampler") |
|
|
| // These may be changed to Fixed/MovingSmoothingImagePyramid. |
| // See the manual. |
| (FixedImagePyramid "FixedRecursiveImagePyramid") |
| (MovingImagePyramid "MovingRecursiveImagePyramid") |
|
|
| // The following components are most important: |
| // The optimizer AdaptiveStochasticGradientDescent (ASGD) works |
| // quite ok in general. The Transform and Metric are important |
| // and need to be chosen careful for each application. See manual. |
| (Optimizer "AdaptiveStochasticGradientDescent") |
| (Transform "BSplineTransform") |
| (Metric "AdvancedMattesMutualInformation") |
|
|
| // ***************** Transformation ************************** |
|
|
| // The control point spacing of the bspline transformation in |
| // the finest resolution level. Can be specified for each |
| // dimension differently. Unit: mm. |
| // The lower this value, the more flexible the deformation. |
| // Low values may improve the accuracy, but may also cause |
| // unrealistic deformations. This is a very important setting! |
| // We recommend tuning it for every specific application. It is |
| // difficult to come up with a good 'default' value. |
| (FinalGridSpacingInPhysicalUnits 16) |
|
|
| // Alternatively, the grid spacing can be specified in voxel units. |
| // To do that, uncomment the following line and comment/remove |
| // the FinalGridSpacingInPhysicalUnits definition. |
| //(FinalGridSpacingInVoxels 16) |
|
|
| // By default the grid spacing is halved after every resolution, |
| // such that the final grid spacing is obtained in the last |
| // resolution level. You can also specify your own schedule, |
| // if you uncomment the following line: |
| //(GridSpacingSchedule 4.0 4.0 2.0 1.0) |
| // This setting can also be supplied per dimension. |
|
|
| // Whether transforms are combined by composition or by addition. |
| // In generally, Compose is the best option in most cases. |
| // It does not influence the results very much. |
| (HowToCombineTransforms "Compose") |
|
|
| //Save composite ITK transform |
| (ITKTransformOutputFileNameExtension "itk.txt") |
| (WriteITKCompositeTransform "true") |
|
|
| // ******************* Similarity measure ********************* |
|
|
| // Number of grey level bins in each resolution level, |
| // for the mutual information. 16 or 32 usually works fine. |
| // You could also employ a hierarchical strategy: |
| //(NumberOfHistogramBins 16 32 64) |
| (NumberOfHistogramBins 32) |
|
|
| // If you use a mask, this option is important. |
| // 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") |
|
|
| // ******************** Multiresolution ********************** |
|
|
| // The number of resolutions. 1 Is only enough if the expected |
| // deformations are small. 3 or 4 mostly works fine. For large |
| // images and large deformations, 5 or 6 may even be useful. |
| (NumberOfResolutions 4) |
|
|
| // The downsampling/blurring factors for the image pyramids. |
| // By default, the images are downsampled by a factor of 2 |
| // compared to the next resolution. |
| // So, in 2D, with 4 resolutions, the following schedule is used: |
| //(ImagePyramidSchedule 8 8 4 4 2 2 1 1 ) |
| // And in 3D: |
| //(ImagePyramidSchedule 8 8 8 4 4 4 2 2 2 1 1 1 ) |
| // You can specify any schedule, for example: |
| //(ImagePyramidSchedule 4 4 4 3 2 1 1 1 ) |
| // Make sure that the number of elements equals the number |
| // of resolutions times the image dimension. |
|
|
| // ******************* Optimizer **************************** |
|
|
| // Maximum number of iterations in each resolution level: |
| // 200-2000 works usually fine for nonrigid registration. |
| // The more, the better, but the longer computation time. |
| // This is an important parameter! |
| (MaximumNumberOfIterations 500) |
|
|
| // The step size of the optimizer, in mm. By default the voxel size is used. |
| // which usually works well. In case of unusual high-resolution images |
| // (eg histology) it is necessary to increase this value a bit, to the size |
| // of the "smallest visible structure" in the image: |
| //(MaximumStepLength 1.0) |
|
|
| // **************** Image sampling ********************** |
|
|
| // Number of spatial samples used to compute the mutual |
| // information (and its derivative) in each iteration. |
| // With an AdaptiveStochasticGradientDescent optimizer, |
| // in combination with the two options below, around 2000 |
| // samples may already suffice. |
| (NumberOfSpatialSamples 2048) |
|
|
| // Refresh these spatial samples in every iteration, and select |
| // them randomly. See the manual for information on other sampling |
| // strategies. |
| (NewSamplesEveryIteration "true") |
| (ImageSampler "Random") |
|
|
| // ************* Interpolation and Resampling **************** |
|
|
| // Order of B-Spline interpolation used during registration/optimisation. |
| // It may improve accuracy if you set this to 3. Never use 0. |
| // An order of 1 gives linear interpolation. This is in most |
| // applications a good choice. |
| (BSplineInterpolationOrder 1) |
|
|
| // Order of B-Spline interpolation used for applying the final |
| // deformation. |
| // 3 gives good accuracy; recommended in most cases. |
| // 1 gives worse accuracy (linear interpolation) |
| // 0 gives worst accuracy, but is appropriate for binary images |
| // (masks, segmentations); equivalent to nearest neighbor interpolation. |
| (FinalBSplineInterpolationOrder 3) |
|
|
| //Default pixel value for pixels that come from outside the picture: |
| (DefaultPixelValue 0) |
|
|
| // Choose whether to generate the deformed moving image. |
| // You can save some time by setting this to false, if you are |
| // not interested in the final deformed moving image, but only |
| // want to analyze the deformation field for example. |
| (WriteResultImage "false") |
|
|
| // The pixel type and format of the resulting deformed moving image |
| (ResultImagePixelType "short") |
| (ResultImageFormat "mha") |
| (WriteTransformParametersEachIteration "false") |
| (WriteTransformParametersEachResolution "false") |
| (WriteIterationInfo "false") |