This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

registration.optimizer.OnePlusOneEvolutionary class

Package: registration.optimizer

One-plus-one evolutionary optimizer configuration object


A OnePlusOneEvolutionary object describes a one-plus-one evolutionary optimization configuration that you pass to the function imregister to solve image registration problems.


optimizer = registration.optimizer.OnePlusOneEvolutionary() Constructs a OnePlusOneEvolutionary object.



Growth factor of the search radius.

GrowthFactor is a positive scalar value that the optimizer uses to control the rate at which the search radius grows in parameter space. If you set GrowthFactor to a large value, the optimization is fast, but it might result in finding only the metric's local extrema. If you set GrowthFactor to a small value, the optimization is slower, but it is likely to converge on a better solution. The default value of GrowthFactor is 1.05.


Minimum size of the search radius.

Epsilon is a positive scalar value that controls the accuracy of convergence by adjusting the minimum size of the search radius. If you set Epsilon to a small value, the optimization of the metric is more accurate, but the computation takes longer. If you set Epsilon to a large value, the computation time deceases at the expense of accuracy. The default value of Epsilon is 1.5e-6.


Initial size of search radius.

InitialRadius is a positive scalar value that controls the initial search radius of the optimizer. If you set InitialRadius to a large value, the computation time decreases. However, overly large values of InitialRadius might result in an optimization that fails to converge. The default value of InitialRadius is 6.25e-3.


Maximum number of optimizer iterations.

MaximumIterations is a positive scalar integer value that determines the maximum number of iterations the optimizer performs at any given pyramid level. The registration could converge before the optimizer reaches the maximum number of iterations. The default value of MaximumIterations is 100.

Copy Semantics

Value. To learn how value classes affect copy operations, see Copying Objects in the MATLAB® documentation.


expand all

Register two MRI images of a knee that were obtained using different protocols.

Read the images into the workspace.

fixed  = dicomread('knee1.dcm');
moving = dicomread('knee2.dcm');

View the misaligned images.

imshowpair(fixed, moving,'Scaling','joint');

Create the optimizer configuration object suitable for registering images from different sensors.

optimizer = registration.optimizer.OnePlusOneEvolutionary
optimizer = 


         GrowthFactor: 1.050000e+00
              Epsilon: 1.500000e-06
        InitialRadius: 6.250000e-03
    MaximumIterations: 100

Create the MattesMutualInformation metric configuration object.

metric = registration.metric.MattesMutualInformation;

Tune the properties of the optimizer so that the problem will converge on a global maxima. Increase the number of iterations the optimizer will use to solve the problem.

optimizer.InitialRadius = 0.009;
optimizer.Epsilon = 1.5e-4;
optimizer.GrowthFactor = 1.01;
optimizer.MaximumIterations = 300;

Register the moving and fixed images.

movingRegistered = imregister(moving, fixed, 'affine', optimizer, metric);

View the registered images.

imshowpair(fixed, movingRegistered,'Scaling','joint');


The imregister function uses an iterative process to register images. The metric you pass to imregister defines the image similarity metric for evaluating the accuracy of the registration. An image similarity metric takes two images and returns a scalar value that describes how similar the images are. The optimizer you pass to imregister defines the methodology for minimizing or maximizing the similarity metric.

An evolutionary algorithm iterates to find a set of parameters that produce the best possible registration result. It does this by perturbing, or mutating, the parameters from the last iteration (the parent). If the new (child) parameters yield a better result, then the child becomes the new parent whose parameters are perturbed, perhaps more aggressively. If the parent yields a better result, it remains the parent and the next perturbation is less aggressive.


[1] Styner, M., C. Brechbuehler, G. Székely, and G. Gerig. "Parametric estimate of intensity inhomogeneities applied to MRI." IEEE Transactions on Medical Imaging. Vol. 19, Number 3, 2000, pp. 153-165.


Use imregconfig to construct an optimizer configuration for typical image registration scenarios.

Was this topic helpful?