transformPointsForward
Aplicar transformación geométrica directa
Sintaxis
Descripción
Ejemplos
Defina una matriz de transformación geométrica de 3 por 3. Este ejemplo especifica una matriz correspondiente a una transformación afín que consiste en el corte vertical y el estiramiento horizontal.
A = [1.5 0 0; 0.8 1 0; 0 0 1];
Cree un objeto affinetform2d
a partir de la matriz de transformación.
tform = affinetform2d(A);
Aplique la transformación geométrica directa a un punto de entrada.
u = 5; v = 10; [x,y] = transformPointsForward(tform,u,v)
x = 7.5000
y = 14
Especifique los vectores de coordenadas x e y de cinco puntos que desea transformar.
x = [10 11 15 2 2]; y = [15 32 34 7 10];
Defina las funciones de asignación inversa y directa. Ambas funciones aceptan y devuelven puntos en formato empaquetado (x,y).
inversefn = @(c) [c(:,1).^2,sqrt(c(:,2))]; forwardfn = @(c) [sqrt(c(:,1)),c(:,2).^2];
Cree un objeto de transformación geométrica 2D, tform
, que almacene la función de asignación inversa y la función de asignación directa opcional.
tform = geometricTransform2d(inversefn,forwardfn)
tform = geometricTransform2d with properties: InverseFcn: @(c)[c(:,1).^2,sqrt(c(:,2))] ForwardFcn: @(c)[sqrt(c(:,1)),c(:,2).^2] Dimensionality: 2
Aplique la transformación geométrica inversa a los puntos de entrada.
[u,v] = transformPointsInverse(tform,x,y)
u = 1×5
100 121 225 4 4
v = 1×5
3.8730 5.6569 5.8310 2.6458 3.1623
Aplique la transformación geométrica directa a los puntos transformados u
y v
.
[x,y] = transformPointsForward(tform,u,v)
x = 1×5
10 11 15 2 2
y = 1×5
15.0000 32.0000 34.0000 7.0000 10.0000
Defina una transformación geométrica rígida que conste únicamente de traslación.
t = [10 20.5 15]; tform = transltform3d(t);
Aplique la transformación geométrica directa a un punto de entrada.
u = 1; v = 1; w = 1.01; [x,y,z] = transformPointsForward(tform,u,v,w)
x = 11
y = 21.5000
z = 16.0100
Especifique los vectores de coordenadas x, y y z de los cinco puntos que desea transformar.
x = [3 5 7 9 11]; y = [2 4 6 8 10]; z = [5 9 13 17 21];
Defina las funciones de asignación inversa y directa que acepten y devuelvan puntos en formato empaquetado (x,y,z).
inverseFcn = @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2]; forwardFcn = @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))];
Cree un objeto de transformación geométrica 3D, tform
, que almacene estas funciones de asignación inversa y directa.
tform = geometricTransform3d(inverseFcn,forwardFcn)
tform = geometricTransform3d with properties: InverseFcn: @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2] ForwardFcn: @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))] Dimensionality: 3
Aplique la transformación inversa de esta transformación geométrica 3D a los puntos de entrada.
[u,v,w] = transformPointsInverse(tform,x,y,z)
u = 1×5
9 25 49 81 121
v = 1×5
4 16 36 64 100
w = 1×5
25 81 169 289 441
Aplique la transformación geométrica directa a los puntos transformados u
, v
y w
.
[x,y,z] = transformPointsForward(tform,u,v,w)
x = 1×5
3 5 7 9 11
y = 1×5
2 4 6 8 10
z = 1×5
5 9 13 17 21
Argumentos de entrada
Transformación geométrica, especificada como un objeto de transformación geométrica que aparece en la tabla.
Objeto de transformación geométrica | Descripción |
---|---|
Transformaciones geométricas lineales 2D | |
transltform2d | Transformación de traslación |
rigidtform2d | Transformación rígida: traslación y rotación |
simtform2d | Transformación de similitud: traslación, rotación y escalado isotrópico |
affinetform2d | Transformación afín: traslación, rotación, escalado anisotrópico, reflexión y cizallado |
projtform2d | Transformación proyectiva |
Transformaciones geométricas lineales 3D | |
transltform3d | Transformación de traslación |
rigidtform3d | Transformación rígida: traslación y rotación |
simtform3d | Transformación de similitud: traslación, rotación y escalado isotrópico |
affinetform3d | Transformación afín: traslación, rotación, escalado anisotrópico, reflexión y cizallado |
Transformaciones geométricas no lineales | |
geometricTransform2d | Transformación geométrica 2D personalizada usando funciones de asignación por puntos |
geometricTransform3d | Transformación geométrica 3D personalizada usando funciones de asignación por puntos |
Nota
También puede especificar tform
como un objeto de tipo rigid2d
, rigid3d
, affine2d
, affine3d
o projective2d
. No obstante, estos objetos no están recomendados. Para obtener más información, consulte Historial de versiones.
Coordenadas x de puntos que desea transformar, especificadas como arreglo numérico de m por n o m por n por p. El número de dimensiones de u
coincide con la dimensionalidad de tform
.
Tipos de datos: single
| double
Coordenadas y de puntos que desea transformar, especificadas como arreglo numérico de m por n o m por n por p. El tamaño de v
debe coincidir con el tamaño de u
.
Tipos de datos: single
| double
Coordenadas de puntos que desea transformar, especificadas como arreglo numérico de l por 2 o l por 3. El número de columnas de U
coincide con la dimensionalidad de tform
.
La primera columna incluye la coordenada x de cada punto que desea transformar y la segunda columna, la coordenada y. Si tform
representa una transformación geométrica 3D, U
tiene un tamaño de l por 3 y la tercera columna incluye la coordenada z de los puntos que desea transformar.
Tipos de datos: single
| double
Argumentos de salida
Coordenadas x de puntos después de la transformación, devueltas como arreglo numérico de m por n o m por n por p. El número de dimensiones de x
coincide con la dimensionalidad de tform
.
Tipos de datos: single
| double
Coordenadas y de puntos después de la transformación, devueltas como arreglo numérico de m por n o m por n por p. El tamaño de y
coincide con el tamaño de x
.
Tipos de datos: single
| double
Coordenadas z de puntos después de la transformación, devueltas como arreglo numérico de m por n por p. El tamaño de z
coincide con el tamaño de x
.
Tipos de datos: single
| double
Coordenadas de puntos después de la transformación, devueltas como arreglo numérico. El tamaño de X
coincide con el tamaño de U
.
La primera columna incluye la coordenada x de cada punto después de la transformación y la segunda columna, la coordenada y. Si tform
representa una transformación geométrica 3D, la tercera columna incluye la coordenada z de los puntos después de la transformación.
Tipos de datos: single
| double
Historial de versiones
Introducido en R2013aA 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. En consecuencia, ahora puede especificar tform
como un objeto de transformación geométrica que utiliza la convención de premultiplicación, como por ejemplo un objeto affinetform2d
.
Antes, para las transformaciones geométricas lineales, se especificaba tform
como objeto de transformación geométrica que usa una convención de posmultiplicación, como un objeto affine2d
. Aunque transformPointsForward
sigue aceptando objetos que usan la convención de posmultiplicación, estos objetos no están recomendados. Para obtener más información, consulte Migrate Geometric Transformations to Premultiply Convention.
No hay cambios con respecto a la aceptación de transformaciones geométricas no lineales.
Consulte también
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)