Contenido principal

maketform

Crear una estructura de transformación espacial en N dimensiones (TFORM)

No se recomienda usar la función maketform para transformaciones geométricas 2D y 3D. Para obtener más información, consulte Historial de versiones.

Descripción

Crear transformaciones afines y proyectivas en N dimensiones a partir de matrices

T = maketform("affine",A) crea una estructura de transformación espacial T para una transformación afín en N dimensiones especificada como una matriz A. La estructura de transformación T tiene tanto transformaciones directas como inversas.

Una estructura de transformación espacial (denominada estructura TFORM) se puede utilizar con las funciones tformarray, tformfwd y tforminv.

ejemplo

T = maketform("projective",P) crea una estructura TFORM para una transformación proyectiva en N dimensiones especificada como una matriz P. T tiene tanto transformaciones directas como inversas.

Crear una transformación a partir de funciones directas o inversas

T = maketform("custom",ndims_in,ndims_out,forward_fcn,inverse_fcn,tdata) crea una estructura TFORM personalizada T basada en identificadores de función y parámetros provistos por el usuario. ndims_in y ndims_out son los números de las dimensiones de entrada y salida. forward_fcn y inverse_fcn son identificadores de función para funciones directas e inversas. El argumento tdata puede ser cualquier arreglo de MATLAB® y suele utilizarse para almacenar parámetros de la transformación personalizada. Se puede acceder a forward_fcn e inverse_fcn a través del campo tdata de T.

Crear una transformación para referencias espaciales

T = maketform("box",tsize,outCornerStart,outCornerEnd) crea una estructura TFORM afín en N dimensiones T que asigna un cuadro de entrada definido por las coordenadas de una esquina, ones(1,N), y tamaño tsize, a un cuadro de salida definido por las esquinas opuestas outCornerStart y outCornerEnd. La estructura TFORM "box" suele utilizarse para registrar los subíndices de fila y columna de una imagen o arreglo para algún sistema de coordenadas mundial.

T = maketform("box",inCorners,outCorners) crea una estructura TFORM afín en N dimensiones T. La transformación asigna un cuadro de entrada definido por las esquinas opuestas inCorners(1,:) e inCorners(2,:) a un cuadro de salida definido por las esquinas opuestas outCorners(1,:) y outCorners(2,:).

Crear una transformación compuesta

T = maketform("composite",T1,T2,...,TL) crea una estructura TFORM T que es un compuesto de transformaciones T1, T2, ..., TL, especificadas como estructuras TFORM separadas por comas. Las funciones directa e inversa de T son composiciones funcionales de las funciones hacia directas e inversas de las transformaciones de los componentes T1, T2, ..., TL.

T = maketform("composite",[T1,T2,...,TL]) crea una estructura TFORM T que es un compuesto de transformaciones T1, T2, ..., TL, especificadas en un vector. Las funciones directa e inversa de T son composiciones funcionales de las funciones directas e inversas de las transformaciones de los componentes T1, T2, ..., TL.

Ejemplos

contraer todo

Lea una imagen en el área de trabajo y muéstrela.

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

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

Cree una estructura de transformación espacial que estire una imagen.

T = maketform('affine',[.5 0 0; .5 2 0; 0 0 1]);

Calcule los límites de la imagen de salida, dado el tamaño de la imagen de entrada y la transformación espacial. Las dimensiones de la imagen de entrada son 256 por 256. Los límites de la imagen de salida reflejan la transformación: 256 por 512.

outb = findbounds(T,[0 0;256 256])
outb = 2×2

     0     0
   256   512

Aplique la transformación y muestre la imagen.

transformedI = imtransform(I,T);
figure
imshow(transformedI)

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

Argumentos de entrada

contraer todo

Transformación afín, especificada como una matriz de (N+1) por (N+1) o una matriz de (N+1) por N, donde N es la dimensionalidad de la transformación afín. La matriz debe ser no singular y real.

Si A es (N+1) por (N+1), la última columna de A debe ser [zeros(N,1);1]. De lo contrario, A aumenta automáticamente, de modo que la última columna es [zeros(N,1);1]. La matriz A define una transformación directa de modo que tformfwd(U,T), donde U es un vector de 1 por N, devuelve un vector de 1 por N X, de modo que X = U * A(1:N,1:N) + A(N+1,1:N).

Tipos de datos: double

Transformación proyectiva, especificada como una matriz de (N+1) por (N+1), donde N es la dimensionalidad de la transformación proyectiva. La matriz debe ser no singular y real. P(N+1,N+1) no puede ser 0.

La matriz P define una transformación directa de modo que tformfwd(U,T), donde U es un vector de 1 por N, devuelve un vector de 1 por N X, de modo que X = W(1:N)/W(N+1), donde W = [U 1] * P.

Tipos de datos: double

Número de dimensiones de entrada, especificado como un entero positivo.

Tipos de datos: double

Número de dimensiones de salida, especificado como un entero positivo.

Tipos de datos: double

Función directa, especificada como un identificador de función que admite la sintaxis X = forward_fcn(U,T). U es una matriz de numpts por ndims_in cuyas filas son puntos en el espacio de entrada de la transformación y X es una matriz de numpts por ndims_out cuyas filas son puntos en el espacio de salida de la transformación.

forward_fcn puede estar vacío.

Tipos de datos: function_handle

Función inversa, especificada como un identificador de función que admite la sintaxis U = inverse_fcn(X,T). U es una matriz de numpts por ndims_in cuyas filas son puntos en el espacio de entrada de la transformación y X es una matriz de numpts por ndims_out cuyas filas son puntos en el espacio de salida de la transformación.

inverse_fcn puede estar vacío. Sin embargo, para usar la estructura TFORM T con la función tformarray, debe definir inverse_fcn.

Tipos de datos: function_handle

Parámetros de una transformación personalizada, especificados como arreglo.

Tipos de datos: double

Tamaño del cuadro de entrada, especificado como vector de N elementos de enteros positivos.

Tipos de datos: double

Coordenadas de la esquina inicial en el espacio de salida, especificadas como vector de N elementos. outCornerStart(k) y outCornerEnd(k) deben ser diferentes a menos que tsize(k) sea 1, en cuyo caso se asume que el factor escalar afín a lo largo de la dimensión k-ésima es 1.0.

Tipos de datos: double

Coordenadas de la esquina opuesta en el espacio de salida, especificadas como vector de N elementos. outCornerStart(k) y outCornerEnd(k) deben ser diferentes a menos que tsize(k) sea 1, en cuyo caso se asume que el factor escalar afín en la dimensión k-ésima es 1.0.

Tipos de datos: double

Coordenadas de la esquina en el espacio de entrada, especificadas como una matriz numérica de n por 2. La primera columna representa las coordenadas de una esquina y la segunda columna representa las coordenadas de la esquina opuesta. inCorners(1,k) y inCorners(2,k) deben ser diferentes a menos que outCorners(1,k) youtCorners(2,k) sean iguales.

Tipos de datos: double

Coordenadas de la esquina en el espacio de salida, especificadas como una matriz numérica de n por 2. La primera columna representa las coordenadas de una esquina y la segunda columna representa las coordenadas de la esquina opuesta. outCorners(1,k) y outCorners(2,k) deben ser diferentes a menos que inCorners(1,k) yinCorners(2,k) sean iguales.

Tipos de datos: double

Transformaciones de componentes, especificadas como estructuras TFORM.

Las entradas T1, T2, ..., TL están ordenadas justo como lo estarían si se utilizara la notación estándar para la composición de funciones: T = T1T2...TL. La composición es asociativa, pero no conmutativa. Esto significa que para aplicar T a la entrada U, debe aplicar TL en primer lugar y T1 en último lugar. Por lo tanto, si L = 3, por ejemplo, tformfwd(U,T) es igual que tformfwd(tformfwd(tformfwd(U,T3),T2),T1). Los componentes T1 a TL deben ser compatibles en términos de los números de dimensiones de entrada y salida.

T tiene una función de transformación directa definida solo si todas las transformaciones de componentes tienen funciones de transformación directa definidas. T tiene una función de transformación inversa definida solo si todas las transformaciones de componentes tienen funciones de transformación inversas definidas.

Tipos de datos: function_handle

Argumentos de salida

contraer todo

Transformación espacial multidimensional, devuelta como estructura TFORM.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo