randomAffine2d

Create randomized 2-D affine transformation

Description

tform = randomAffine2d creates an affine2d object with default property values consistent with the identity transformation.

example

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

Examples

collapse all

Read and display an image.

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

Create an affine2d transformation object that rotates images. The randomAffine2d function picks a 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)

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

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

Read and display an image.

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

Create an affine2d transformation object that rotates images. To select a rotation angle from a custom range, specify the 'Rotation' name-value pair 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)

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 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 quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

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

Random horizontal reflection, specified as the comma-separated pair consisting of 'XReflection' and 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 the comma-separated pair consisting of 'YReflection' and 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 the comma-separated pair consisting of 'Rotation' and one of the following.

  • 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.

  • 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 the comma-separated pair consisting of 'Scale' and one of the following.

  • 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.

  • 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 the comma-separated pair consisting of 'XShear' and one of the following. Shear is measured as an angle in degrees, and is in the range (–90, 90).

  • 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.

  • 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 the comma-separated pair consisting of 'YShear' and one of the following. Shear is measured as an angle in degrees, and is in the range (–90, 90).

  • 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.

  • 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 the comma-separated pair consisting of 'XTranslation' and one of the following. Translation distance is measured in pixels.

  • 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.

  • 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 the comma-separated pair consisting of 'YTranslation' and one of the following. Translation distance is measured in pixels.

  • 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.

  • 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, specified as an affine2d object.

Introduced in R2019b