Estimate geometric transformation that aligns two 2-D or 3-D images
tform = imregtform(moving,fixed,transformType,optimizer,metric)
tform = imregtform(moving,Rmoving,fixed,Rfixed,transformType,optimizer,metric)
tform = imregtform(___,Name,Value)
the geometric transformation that aligns the moving image
tform = imregtform(
the fixed image
a character vector that defines the type of transformation to estimate.
an object that describes the method for optimizing the metric.
an object that defines the quantitative measure of similarity between
the images to optimize. The output
tform is a
geometric transformation object that maps
the geometric transformation where
tform = imregtform(
the spatial referencing objects associated with the
tform is a geometric transformation
object in units defined by the spatial referencing objects
Read two images. This example uses two magnetic resonance (MRI) images of a knee. The fixed image is a spin echo image, while the moving image is a spin echo image with inversion recovery. The two sagittal slices were acquired at the same time but are slightly out of alignment.
fixed = dicomread('knee1.dcm'); moving = dicomread('knee2.dcm');
View the misaligned images.
Create the optimizer and metric, setting the modality to
'multimodal' since the images come from different sensors.
[optimizer, metric] = imregconfig('multimodal')
optimizer = registration.optimizer.OnePlusOneEvolutionary Properties: GrowthFactor: 1.050000e+00 Epsilon: 1.500000e-06 InitialRadius: 6.250000e-03 MaximumIterations: 100
metric = registration.metric.MattesMutualInformation Properties: NumberOfSpatialSamples: 500 NumberOfHistogramBins: 50 UseAllPixels: 1
Tune the properties of the optimizer to get the problem to converge on a global maxima and to allow for more iterations.
optimizer.InitialRadius = 0.009; optimizer.Epsilon = 1.5e-4; optimizer.GrowthFactor = 1.01; optimizer.MaximumIterations = 300;
Find the geometric transformation that maps the image to be registered (
moving) to the reference image (
tform = imregtform(moving, fixed, 'affine', optimizer, metric)
tform = affine2d with properties: T: [3×3 double] Dimensionality: 2
Apply the transformation to the image being registered (
moving) using the
imwarp function. The example uses the
'OutputView' parameter to preserve world limits and resolution of the reference image when forming the transformed image.
movingRegistered = imwarp(moving,tform,'OutputView',imref2d(size(fixed)));
View the registered images.
figure imshowpair(fixed, movingRegistered,'Scaling','joint')
moving— Image to be registered
Image to be registered, specified as a 2-D or 3-D grayscale image.
Rmoving— Spatial referencing information associated with the image to be registered
fixed— Reference image in the target orientation
Reference image in the target orientation, specified as a 2-D or 3-D grayscale image.
Rfixed— Spatial referencing information associated with the reference (fixed) image
transformType— Geometric transformation to be applied to the image to be registered
Geometric transformation to be applied to the image to be registered, specified as one of the following values:
|Rigid transformation consisting of translation and rotation.|
|Nonreflective similarity transformation consisting of translation, rotation, and scale.|
|Affine transformation consisting of translation, rotation, scale, and shear.|
types always involve nonreflective transformations.
optimizer— Method for optimizing the similarity metric
Method for optimizing the similarity metric, specified as a
object. To learn more about the creation and properties of optimizer
metric— Image similarity metric to be optimized during registration
Specify optional comma-separated pairs of
Name is the argument
Value is the corresponding
Name must appear
inside single quotes (
You can specify several name and value pair
arguments in any order as
'DisplayOptimization',1enables verbose optimization mode.
'DisplayOptimization'— Verbose optimization flag
Verbose optimization flag, specified as the comma-separated
pair consisting of
'DisplayOptimization', and the
imregister displays optimization
information in the command window during the registration process.
'InitialTransformation'— Starting geometric transformation
'PyramidLevels'— Number of multi-level image pyramid levels used during the registration process
3(default) | positive integer
Number of pyramid levels used during the registration process,
specified as the comma-separated pair consisting of
a positive integer.
'PyramidLevels',4 sets the number
of pyramid levels to
When you have spatial referencing information available,
it is important to provide this information to
using spatial referencing objects. This information helps
to better results more quickly because scale differences can be considered.
imregister use the same underlying registration
imregister performs the additional step
moving to produce the registered
output image from the geometric transformation estimate calculated
you want access to the geometric transformation that relates
imregister when you want a registered output
Getting good results from optimization-based image
registration usually requires modifying optimizer and/or metric settings
for the pair of images being registered. The
provides a default configuration that should only be considered a
starting point. See the output of the
more information on the different parameters that can be modified.