Main Content

randomAffine2d

Create randomized 2-D affine transformation

Since R2019b

Description

tform= randomAffine2dcreates anaffinetform2dobject that performs an identity transformation.

example

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

Examples

collapse all

Read and display an image.

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

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

Create a 2-D affine transformation object that rotates images. TherandomAffine2dfunction 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 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 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 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 theRotationname-value argument as a function handle. This example specifies a function calledmyrange(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 axes object contains an object of type image.

Supporting Function

This example defines themyrangefunction 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.

functionangle = myrange()ifrandi([0 1],1) a = -10; b = 10;elsea = 170; b = 190;endangle = a + (b-a).*rand(1);end

Input Arguments

collapse all

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis 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 encloseNamein quotes.

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

Random horizontal reflection, specified asfalseortrue. WhenXReflectionistrue(1), the transformationtformreflects images horizontally with 50% probability. By default, the transformation does not reflect images in the horizontal direction.

Random vertical reflection, specified asfalseortrue. WhenYReflectionistrue(1), the transformationtformreflects 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtformdoes 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtformdoes 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtformdoes 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtformdoes 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtformdoes 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.

  • 一个处理函数。函数必须接受任何输入ut 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, seeCreate Function Handle.

By default, the transformationtform不翻译图像在垂直长长吗n.

Example:[-5 5]

Output Arguments

collapse all

Affine transformation, returned as anaffinetform2dobject.

Version History

Introduced in R2019b

expand all