Main Content

randomAffine2d

Create randomized 2-D affine transformation

Description

tform = randomAffine2d creates an affinetform2d object that performs an identity transformation.

tform = randomAffine2d(Name,Value) specifies the type of affine transformation using name-value arguments.

example

Examples

collapse all

Read and display an image.

I = imread("kobi.png");
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

Create a 2-D affine transformation object that rotates images. The randomAffine2d function picks the rotation angle randomly from a continuous uniform distribution within the interval [35, 55] degrees.

tform1 = randomAffine2d(Rotation=[35 55]);

Rotate the image and display the result.

J = imwarp(I,tform1);
imshow(J)

Figure contains an axes object. The hidden axes object contains an object of type image.

The transformation object, tform1, rotates all images by the same amount. To rotate an image by a different randomly selected amount, create a new geometric transformation.

tform2 = randomAffine2d(Rotation=[-10 10]);
J2 = imwarp(I,tform2);
imshow(J2)

Figure contains an axes object. The hidden axes object contains an object of type image.

Read and display an image.

I = imread("sherlock.jpg");
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

Create a 2-D affine transformation object that rotates images. To select a rotation angle from a custom range, specify the Rotation name-value argument as a function handle. This example specifies a function called myrange (defined at the end of the example) that selects an angle from within two disjoint intervals.

tform = randomAffine2d(Rotation=@myrange);

Rotate the image and display the result.

J = imwarp(I,tform);
imshow(J)

Figure contains an axes object. The hidden axes object contains an object of type image.

Supporting Function

This example defines the myrange function that first randomly selects one of two intervals (-10, 10) and (170, 190) with equal probability. Within the selected interval, the function returns a single random number from a uniform distribution.

function angle = myrange()
    if randi([0 1],1)
        a = -10;
        b = 10;
    else
        a = 170;
        b = 190;
    end
    angle = a + (b-a).*rand(1);
end

Input Arguments

collapse all

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: tform = randomAffine2d(XReflection=true)

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: tform = randomAffine2d("XReflection",true)

Random horizontal reflection, specified as false or true. When XReflection is true (1), the transformation tform reflects images horizontally with 50% probability. By default, the transformation does not reflect images in the horizontal direction.

Random vertical reflection, specified as false or true. When YReflection is true (1), the transformation tform reflects images vertically with 50% probability. By default, the transformation does not reflect images in the vertical direction.

Range of rotation, in degrees, applied to the input image, specified as one of the following.

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The rotation angle is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the rotation angle as a numeric scalar. Use a function handle to pick rotation angles from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not rotate images.

Example: [-45 45]

Range of uniform (isotropic) scaling applied to the input image, specified as one of the following.

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The scale factor is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the scale factor as a numeric scalar. Use a function handle to pick scale factors from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not scale images.

Example: [0.5 4]

Range of horizontal shear applied to the input image, specified as one of the following. Shear is measured as an angle in degrees, and is in the range (–90, 90).

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The horizontal shear angle is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the horizontal shear angle as a numeric scalar. Use a function handle to pick horizontal shear angles from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not shear images in the horizontal direction.

Example: [0 45]

Range of vertical shear applied to the input image, specified as one of the following. Shear is measured as an angle in degrees, and is in the range (–90, 90).

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The vertical shear angle is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the vertical shear angle as a numeric scalar. Use a function handle to pick vertical shear angles from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not shear images in the vertical direction.

Example: [0 45]

Range of horizontal translation applied to the input image, specified as one of the following. Translation distance is measured in pixels.

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The horizontal translation distance is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the horizontal translation distance as a numeric scalar. Use a function handle to pick horizontal translation distances from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not translate images in the horizontal direction.

Example: [-5 5]

Range of vertical translation applied to the input image, specified as one of the following. Translation distance is measured in pixels.

  • A 2-element numeric vector. The second element must be larger than or equal to the first element. The vertical translation distance is picked randomly from a continuous uniform distribution within the specified interval.

  • A function handle. The function must accept no input arguments and return the vertical translation distance as a numeric scalar. Use a function handle to pick vertical translation distances from a disjoint interval or using a nonuniform probability distribution. For more information about function handles, see Create Function Handle.

By default, the transformation tform does not translate images in the vertical direction.

Example: [-5 5]

Output Arguments

collapse all

Affine transformation, returned as an affinetform2d object.

Version History

Introduced in R2019b

expand all