Documentation

This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

imregtform

Estimate geometric transformation that aligns two 2-D or 3-D images

Syntax

tform = imregtform(moving,fixed,transformType,optimizer,metric)
tform = imregtform(moving,Rmoving,fixed,Rfixed,transformType,optimizer,metric)
tform = imregtform(___,Name,Value)

Description

example

tform = imregtform(moving,fixed,transformType,optimizer,metric) estimates the geometric transformation that aligns the moving image moving with the fixed image fixed. transformType is a character vector that defines the type of transformation to estimate. optimizer is an object that describes the method for optimizing the metric. metric is an object that defines the quantitative measure of similarity between the images to optimize. The output tform is a geometric transformation object that maps moving to fixed.

tform = imregtform(moving,Rmoving,fixed,Rfixed,transformType,optimizer,metric) estimates the geometric transformation where Rmoving and Rfixed specify the spatial referencing objects associated with the moving and fixed images. The output tform is a geometric transformation object in units defined by the spatial referencing objects Rmoving and Rfixed.

tform = imregtform(___,Name,Value) estimates the geometric transformation using name-value pairs to control aspects of the operation.

Examples

collapse all

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.

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

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 (fixed).

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')

Input Arguments

collapse all

Image to be registered, specified as a 2-D or 3-D grayscale image.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Spatial referencing information associated with the image to be registered, specified as a spatial referencing object of type imref2d or imref3d.

Reference image in the target orientation, specified as a 2-D or 3-D grayscale image.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Spatial referencing information associated with the reference (fixed) image, specified as a spatial referencing object of type imref2d or imref3d.

Geometric transformation to be applied to the image to be registered, specified as one of the following values:

ValueDescription
'translation'(x,y) translation.
'rigid'Rigid transformation consisting of translation and rotation.
'similarity'Nonreflective similarity transformation consisting of translation, rotation, and scale.
'affine'Affine transformation consisting of translation, rotation, scale, and shear.

The 'similarity' and 'affine' transformation types always involve nonreflective transformations.

Method for optimizing the similarity metric, specified as a RegularStepGradientDescent or OnePlusOneEvolutionary optimizer object. To learn more about the creation and properties of optimizer objects, see registration.optimizer.RegularStepGradientDescent and registration.optimizer.OnePlusOneEvolutionary.

Image similarity metric to be optimized during registration, specified as a MeanSquares or MattesMutualInformation metric object. To learn more about the creation and properties of metric objects, see registration.metric.MeanSquares and registration.metric.MattesMutualInformation.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'DisplayOptimization',1 enables verbose optimization mode.

collapse all

Verbose optimization flag, specified as the comma-separated pair consisting of 'DisplayOptimization', and the logical value true or false. Controls whether imregister displays optimization information in the command window during the registration process.

Data Types: logical

Starting geometric transformation, specified as the comma-separated pair consisting of 'InitialTransformation' and an affine2d or affine3d geometric transformation object.

Number of pyramid levels used during the registration process, specified as the comma-separated pair consisting of 'PyramidLevels' and a positive integer.

Example: 'PyramidLevels',4 sets the number of pyramid levels to 4.

Output Arguments

collapse all

Geometric transformation, returned as a geometric transformation object affine2d or affine3d. If the input matrices are 3-D, imregtform returns an affine3d object.

Tips

  • When you have spatial referencing information available, it is important to provide this information to imregtform, using spatial referencing objects. This information helps imregtform converge to better results more quickly because scale differences can be considered.

  • Both imregtform and imregister use the same underlying registration algorithm. imregister performs the additional step of resampling moving to produce the registered output image from the geometric transformation estimate calculated by imregtform. Use imregtform when you want access to the geometric transformation that relates moving to fixed. Use imregister when you want a registered output image.

  • Getting good results from optimization-based image registration usually requires modifying optimizer and/or metric settings for the pair of images being registered. The imregconfig function provides a default configuration that should only be considered a starting point. See the output of the imregconfig for more information on the different parameters that can be modified.

Introduced in R2013a

Was this topic helpful?