This MultiMetricMultiResolutionRegistration gives a framework for registration with a multi-resolution approach, using multiple metrics. The metrics can use the same pair of images/image pyramids/interpolators /masks, but also different pairs of fixed/moving images etc. If the metrics use the same moving image and the same moving image pyramid, they can use the same interpolator. If multiple moving images are used, enter multiple interpolators, possibly of the same type: Like this for example: (Interpolator "BSplineInterpolator" "BSplineInterpolator")
For each metric a different instance of an image sampler can be used: (ImageSampler "Random" "Random")
or: (ImageSampler "Random" "Full")
Note, that the number of metrics should always be larger than or equal to the number of fixed/moving images, interpolators, image pyramids etc. Also, when all metrics need an image sampler, for each fixed image pyramid, an image sampler must be provided. In some cases, one sampler can be used for all metrics. This is the case when multiple metrics are desired, but
1 fixed image is used, and
1 fixed image pyramid is used. This will save a bit of memory and computation time. In general however, it is better to use the same number of samplers as metrics.
Registration: Select this registration framework as follows: (Registration "MultiMetricMultiResolutionRegistration")
NumberOfResolutions: the number of resolutions used.
example: (NumberOfResolutions 4)
The default is 3.
Metric<i>Weight: The weight for the i-th metric, in each resolution.
example: (Metric0Weight 0.5 0.5 0.8)
example: (Metric1Weight 0.5 0.5 0.2)
The default is 1 / numberOfMetrics.
Metric<i>RelativeWeight: The relative weight for the i-th metric, in each resolution.
This is an alternative to the default Metric<i>Weight and can be selected with the parameter UseRelativeWeights. The weight is computed in each iteration based on the magnitude of the metric derivative (gradient) related to that of the first metric . It is done such that the fraction is identical to , so
example: (Metric0RelativeWeight 0.5 0.5 0.8)
example: (Metric1RelativeWeight 0.5 0.5 0.2)
The default is 1 / numberOfMetrics.
UseRelativeWeights: Whether relative weights are used or simple static, fixed weights.
example: (UseRelativeWeights "false" "true")
The default is "false", which means using Metric<i>Weight.
Metric<i>Use: Whether the i-th metric is only computed or also used, in each resolution.
example: (Metric0Use "false" "true")
example: (Metric1Use "true" "false")
The default is "true".
Name of this class. Use this name in the parameter file to select this specific registration framework.
example: (Registration "MultiMetricMultiResolutionRegistration")