Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

geometricTransform2d

objeto de transformación geométrica 2-D

Descripción

Un objeto define una transformación geométrica 2-D personalizada mediante funciones de asignación de puntos.geometricTransform2d

Creación

Descripción

ejemplo

tform = geometricTransform2d(inverseFcn) crea un objeto y establece la asignación inversageometricTransform2d InverseFcn Propiedad.

tform = geometricTransform2d(inverseFcn,fowardFcn) también establece la propiedad de mapeo Forward, ForwardFcn.

Propiedades

expandir todo

Función de correlación inversa, especificada como un manejador de funciones. La función debe aceptar y devolver las coordenadas como una matriz numérica de-por-2 que representa las coordenadas empaquetadas (,) de los puntos.nxyn

Para obtener más información acerca de los identificadores de función, vea.Crear identificador de función (MATLAB)

Ejemplo: ifcn = @(xy) [xy(:,1).^2, sqrt(xy(:,2))];

Función de mapeo Forward, especificada como un manejador de funciones. La función debe aceptar y devolver las coordenadas como una matriz numérica de-por-2 que representa las coordenadas empaquetadas (,) de los puntos.nxyn

Para obtener más información acerca de los identificadores de función, vea.Crear identificador de función (MATLAB)

Ejemplo: ffcn = @(xy) [sqrt(xy(:,1)),(xy(:,2).^2)];

Funciones del objeto

transformPointsForwardAplicar la transformación geométrica hacia adelante
transformPointsInverseAplicar la transformación geométrica inversa

Ejemplos

contraer todo

Especifique las coordenadas empaquetadas (x, y) de cinco puntos de entrada. Las coordenadas empaquetadas se almacenan en una matriz de 5 por 2, donde la-coordenada de cada punto está en la primera columna, y la-coordenada de cada punto está en la segunda columna.xy

XY = [10 15;11 32;15 34;2 7;2 10];

Defina la función de correlación inversa. La función acepta y devuelve puntos en formato empaquetado (x, y).

inversefn = @(c) [c(:,1)+c(:,2),c(:,1)-c(:,2)]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]

Cree un objeto de transformación geométrica 2-D, que almacena la función de correlación inversa.tform

tform = geometricTransform2d(inversefn)
tform =    geometricTransform2d with properties:          InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]         ForwardFcn: []     Dimensionality: 2  

Aplique la transformación geométrica inversa a los puntos de entrada.

UV = transformPointsInverse(tform,XY)
UV = 5×2

    25    -5
    43   -21
    49   -19
     9    -5
    12    -8

Especifique los vectores de coordenadas x e y de cinco puntos que se transformarán.

x = [10 11 15 2 2]; y = [15 32 34 7 10];

Defina las funciones de correlación inversa y forward. 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 2-D, que almacena la función de correlación inversa y la función de correlación directa opcional.tform

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 hacia delante a los puntos transformados y.uv

[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 función de correlación inversa que aplique escalado anisotrópico. La función debe aceptar y devolver las coordenadas empaquetadas (x, y), donde la-coordenada de cada punto está en la primera columna, y la-coordenada de cada punto está en la segunda columna.xy

xscale = 0.3; yscale = 0.5; inversefn = @(xy) [xscale*xy(:,1), yscale*xy(:,2)];

Cree un objeto de transformación geométrica 2-D, que almacena la función de correlación inversa.tform

tform = geometricTransform2d(inversefn)
tform =    geometricTransform2d with properties:          InverseFcn: @(xy)[xscale*xy(:,1),yscale*xy(:,2)]         ForwardFcn: []     Dimensionality: 2  

Lee una imagen para transformarse.

I = imread('cameraman.tif'); imshow(I)

Se utiliza para aplicar la transformación geométrica inversa a la imagen de entrada.imwarp La imagen se amplía verticalmente por un factor de 2 (el inverso de) y horizontalmente por un factor de 10/3 (el inverso de).yscalexscale

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

Defina una función de correlación inversa que acepte coordenadas empaquetadas (x, y), donde la coordenada de cada punto se encuentra en la primera columna y la coordenada de cada punto se encuentra en la segunda columna.xy La función de correlación inversa en este ejemplo toma el cuadrado del componente radial polar.

r = @(c) sqrt(c(:,1).^2 + c(:,2).^2); w = @(c) atan2(c(:,2), c(:,1)); f = @(c) [r(c).^2 .* cos(w(c)), r(c).^2 .* sin(w(c))]; g = @(c) f(c);

Cree un objeto de transformación geométrica 2-D, que almacena la función de correlación inversa.tform

tform = geometricTransform2d(g);

Lee una imagen en color para transformarse.

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

Cree un objeto, especificando el tamaño y los límites mundiales de las imágenes de entrada y salida.imref2d

Rin = imref2d(size(I),[-1 1],[-1 1]); Rout = imref2d(size(I),[-1 1],[-1 1]);

Aplique la transformación geométrica inversa a la imagen de entrada.

Itransformed = imwarp(I,Rin,tform,'OutputView',Rout); imshow(Itransformed)

Introducido en R2018b