Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

affine2d

(No recomendado) Transformación geométrica afín 2D mediante la convención de la posmultiplicación

No se recomienda el uso de affine2d. Utilice el objeto affinetform2d en su lugar. Para obtener más información, consulte Historial de versiones.

Descripción

Un objeto affine2d almacena información sobre una transformación geométrica afín 2D mediante la convención de la posmultiplicación y permite las transformaciones directas e inversas.

Creación

Descripción

tform = affine2d crea un objeto affine2d con valores predeterminados de propiedad que se corresponden con la transformación identidad.

tform = affine2d(t) establece la propiedad T como la matriz de transformación afín 2D especificada t.

ejemplo

Propiedades

expandir todo

Transformación afín 2D directa, especificada como matriz numérica de 3 por 3 no única. La matriz T utiliza la convención:

[x y 1] = [u v 1] * T

en la que T tiene la forma:

 [a b 0;
  c d 0;
  e f 1];

El valor predeterminado de T es la transformación identidad.

Tipos de datos: double | single

Esta propiedad o parámetro es de solo lectura.

Dimensionalidad de la transformación geométrica tanto para puntos de entrada como de salida, especificada como el valor 2.

Funciones del objeto

invertInvertir la transformación geométrica
isRigidDetermine if geometric transformation is rigid transformation
isSimilarityDetermine if geometric transformation is similarity transformation
isTranslationDetermine if geometric transformation is pure translation
outputLimitsFind output spatial limits given input spatial limits
transformPointsForwardAplicar transformación geométrica directa
transformPointsInverseApply inverse geometric transformation

Ejemplos

contraer todo

Cree un objeto affine2d que defina una rotación de 30 grados en sentido contrario a las agujas del reloj alrededor del origen.

theta = 30;
tform = affine2d([ ...
    cosd(theta) sind(theta) 0;...
    -sind(theta) cosd(theta) 0; ...
    0 0 1])
tform = 
  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

Aplique la transformación geométrica directa a un punto (10,0).

[x,y] = transformPointsForward(tform,10,0)
x = 8.6603
y = 5

Valide la transformación representando el punto original (color azul) y el punto transformado (color rojo).

plot(10,0,'bo',x,y,'ro')
axis([0 12 0 12])
axis square

Lea una imagen en el espacio de trabajo.

A = imread('pout.tif');

Cree un objeto affine2d que defina una transformación geométrica afín. En este ejemplo se combina el corte vertical con el estiramiento horizontal.

tform = affine2d([2 0.33 0; 0 1 0; 0 0 1])
tform = 
  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

Aplique la transformación geométrica a la imagen utilizando imwarp.

B = imwarp(A,tform);

Muestre la imagen resultante.

figure
imshow(B);
axis on equal;

Capacidades ampliadas

Historial de versiones

Introducido en R2013a

expandir todo

R2022b: No recomendado

A partir de la versión R2022b, la mayoría de funciones de Image Processing Toolbox™ crean y realizan transformaciones geométricas utilizando la convención de la premultiplicación. Por lo tanto, no se recomienda el objeto affine2d porque utiliza la convención de la posmultiplicación. Aunque no está previsto eliminar el objeto affine2d por el momento, puede simplificar sus flujos de transformación geométrica cambiando al objeto affinetform2d, que es compatible con la convención de la premultiplicación. Para obtener más información, consulte Migrate Geometric Transformations to Premultiply Convention.

Para actualizar su código:

  • Cambie las instancias del nombre de la función affine2d a affinetform2d.

  • Especifique la matriz de transformación como la traspuesta de la matriz T, donde T es o bien el valor de la propiedad T del objeto affine2d o bien la matriz de transformación usada para crear el objeto affine2d.

Uso no recomendadoReemplazo recomendado

Este ejemplo crea un objeto affine2d a partir de la matriz de transformación T en la convención de la posmultiplicación.

T = [2 0.33 0; 0 1 0; 0 0 1];
tformPost = affine2d(T);

Este ejemplo crea un objeto affinetform2d a partir de la traspuesta de la matriz de transformación T.

T = [2 0.33 0; 0 1 0; 0 0 1];
tform = affinetform2d(T');

Este ejemplo empieza con un objeto affine2d llamado tformPost y crea un objeto affinetform2d a partir de la traspuesta de la propiedad T de tformPost.

T = tformPost.T;
tform = affinetform2d(T');