Main Content

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.

tformarray

Aplicar la transformación espacial a la matriz N-D

Descripción

ejemplo

B = tformarray(A,T,R,tdims_A,tdims_B,tsize_B,tmap_B,F) aplica una transformación espacial a la matriz para producir la matriz.UnB

Ejemplos

contraer todo

Cree una imagen de tablero de ajedrez cuadrado de 2 por 2 donde cada cuadrado tiene 20 píxeles de ancho. Muestre la imagen.

I = checkerboard(20,1,1); figure imshow(I)

Transforme el tablero de ajedrez con una transformación proyectiva. Primero cree una estructura de transformación espacial.

T = maketform('projective',[1 1; 41 1; 41 41;   1 41],...                            [5 5; 40 5; 35 30; -10 30]);

Cree un remuestreador. Utilice el método pad al crear el remuestreador, de modo que la salida parezca ser una vista en perspectiva de un tablero de ajedrez infinito.'circular'

R = makeresampler('cubic','circular');

Realice la transformación, especificando la estructura de transformación y el remuestreador. En este ejemplo, intercambie las dimensiones de salida y especifique una imagen de salida de 100 por 100. Deje el argumento vacío desde que especifique el argumento .tmap_Btsize_B Deje el argumento vacío, ya que el valor de relleno no es necesario.F

J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]); figure imshow(J)

Cree una imagen de tablero de ajedrez cuadrado de 2 por 2 donde cada cuadrado tiene 20 píxeles de ancho. Muestre la imagen.

I = checkerboard(20,1,1); figure imshow(I)

Transforme el tablero de ajedrez con una transformación proyectiva. Primero cree una estructura de transformación espacial.

T = maketform('projective',[1 1; 41 1; 41 41;   1 41],...                            [5 5; 40 5; 35 30; -10 30]);

Cree un remuestreador. Utilice el método pad al crear el remuestreador, de modo que la salida parezca ser una vista en perspectiva de un tablero de ajedrez infinito.'circular'

R = makeresampler('cubic','circular');

Cree matrices que especifiquen la asignación de puntos desde el espacio de entrada hasta el espacio de salida. Este ejemplo utiliza el muestreo anisotrópico, donde la distancia entre las muestras es mayor en una dirección que la otra.

samp_x = 1:1.5:150; samp_y = 1:100; [x,y] = meshgrid(samp_x,samp_y); tmap = cat(3,x,y); size(tmap)
ans = 1×3

   100   100     2

Tenga en cuenta el tamaño de .tmap La imagen de salida tendrá dimensiones 100 por 100.

Realice la transformación, especificando la estructura de transformación y el remuestreador. Especifique el mapa de salida como .tmap Deje el argumento vacío, ya que especifique el argumento .tsize_Btmap_B El valor de relleno no importa ya que el remuestreador es circular.

J = tformarray(I,T,R,[1 2],[1 2],[],tmap,[]); figure imshow(J)

La longitud de los cuadrados del tablero de ajedrez es mayor en la dirección que en la dirección -, que está de acuerdo con la mayor distancia de muestreo entre los puntos del vector.yxsamp_x En comparación con el resultado mediante la asignación de puntos isotópicos (véase el ejemplo), aparecen tres columnas adicionales del tablero de ajedrez a la derecha de la imagen transformada y no se agregan filas nuevas a la imagen transformada.Transformar imagen de tablero de ajedrez

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz numérica no dispersa. puede ser real o complejo.Un

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Soporte de números complejos:

Transformación espacial, especificada como una estructura de transformación espacial.TFORM Normalmente se utiliza la función para crear una estructura.maketformTFORM

utiliza y la función para calcular la ubicación correspondiente en el espacio de subíndice de transformación de entrada para cada ubicación en el espacio de subíndice de transformación de salida. define el espacio de transformación de entrada por y el espacio de subíndice de transformación de salida por y .tformarrayTtforminvtformarraytdims_Btsize_Btdims_Asize(A)

Si está vacío, funciona como una función de remuestreo directo.Ttformarray Además, si es:tmap_B

  • No vacío, a continuación, aplica el remuestreador definido en los valores de proceso en cada ubicación de espacio de transformación definida entformarrayRtmap_B

  • Vacío, a continuación, aplica el remuestreador en cada ubicación de la cuadrícula de subíndice de transformación de salidatformarray

Tipos de datos: struct

Remuestreador, especificado como una estructura. Una estructura de remuestreador define cómo interpolar los valores de la matriz de entrada en ubicaciones especificadas. se crea con , lo que permite un control fino sobre cómo interpolar a lo largo de cada dimensión. También controla qué valores de matriz de entrada utilizar al interpolar cerca del borde de la matriz.Rmakeresamplermakeresampler

Tipos de datos: struct

Dimensiones de transformación de entrada, especificadas como un vector de fila de enteros finitos y positivos.

e indicar qué dimensiones de las matrices de entrada y salida están implicadas en la transformación espacial.tdims_Atdims_B Cada elemento debe ser único. Las entradas no tienen que aparecer en orden creciente, pero el orden importa. El orden especifica la correspondencia precisa entre las dimensiones de las matrices y los espacios de entrada y salida de la transformación.UnBT

debe ser igual a , y debe ser igual a .length(tdims_A)T.ndims_inlength(tdims_B)T.ndims_out

Por ejemplo, si es una transformación 2D, , y , a continuación, las dimensiones de fila y columna de corresponden a la segunda y primera transformación dimensiones de espacio de entrada, respectivamente.Ttdims_A = [2 1]tdims_B = [1 2]Un Las dimensiones de fila y columna corresponden a la primera y segunda dimensiones del espacio de salida, respectivamente.B

Tipos de datos: double

Dimensiones de transformación de salida, especificadas como un vector de fila de enteros finitos y positivos. Para obtener más información, consulte .tdims_A

Tipos de datos: double

Tamaño de las dimensiones de transformación de matriz de salida, especificado como un vector de fila de enteros finitos y positivos. El tamaño de las cotas no transformadas se toma directamente del tamaño de las dimensiones a lo largo de esas dimensiones.BUn

Por ejemplo, si es una transformación 2D, , es , y es , entonces es .Tsize(A) = [480 640 3 10]tdims_B[2 1]tsize_B[300 200]size(B)[200 300 3 10]

Tipos de datos: double

Ubicaciones de puntos en el espacio de salida, especificadas como una matriz de valor real no dispersa y finita. es un argumento opcional que proporciona una forma alternativa de especificar la correspondencia entre la posición de los elementos y la ubicación en el espacio de transformación de salida. se puede utilizar, por ejemplo, para calcular el resultado de una deformación de imagen en un conjunto de ubicaciones arbitrarias en el espacio de salida.tmap_BBtmap_B

Si no está vacío, entonces el tamaño de estmap_Btmap_B

 [D1 D2 D3 ... DN L]
donde es igual . debe ser .Nlength(tdims_B)tsize_B[]

El valor de depende de si está vacío.LT Si es:T

  • No está vacío, entonces es , y cada punto de dimensión L en se transforma en una ubicación de espacio de entrada usandoLT.ndims_outtmap_BT

  • Vacío, entonces es , y cada punto -dimensional en se utiliza directamente como una ubicación en el espacio de entrada.Llength(tdims_A)Ltmap_B

Tipos de datos: double

Valores de relleno, especificados como una matriz numérica o escalar. Los valores de relleno en se pueden utilizar en tres situaciones:F

  • Cuando se crea un remuestreador separable con y se establece en uno o .makeresamplerpadmethod'fill''bound'

  • Cuando se usa un remuestreador personalizado que admite los métodos o pad (con un comportamiento específico de la personalización).'fill''bound'

  • Cuando el mapa de las dimensiones de transformación de a las dimensiones de transformación de deliberadamente no está definido para algunos puntos.BUn Estos puntos se codifican en el espacio de transformación de entrada por s en uno o en la salida de .NaNtmap_Btforminv

En los dos primeros casos, los valores de relleno se utilizan para calcular valores para ubicaciones de salida que se asignan fuera o cerca de los bordes de la matriz de entrada. Los valores de relleno se copian cuando las ubicaciones de salida se asignan muy fuera de la matriz de entrada.B Consulte para obtener más información sobre y .makeresampler'fill''bound'

Cuándo es:F

  • Un escalar (incluido ), su valor se replica en todas las dimensiones no transformadas.NaN

  • No escalar, su tamaño depende de las dimensiones no transformada.size(A) Específicamente, si es la ésima dimensión no transformada de , entonces debe ser o .KJUnsize(F,J)size(A,K)1 Como comodidad, se replica en cualquier dimensión con tamaño de unidad, de forma que después de la replicación sea igual a .tformarrayFsize(F,J)size(A,K)

Por ejemplo, supongamos que representa 10 imágenes RGB y tiene el tamaño 200-por-200-por-3-10, es una transformación 2-D y ambos [1 2].UnTtdims_Atdims_B En otras palabras, aplica la misma transformación 2D a cada plano de color de cada una de las 10 imágenes RGB.tformarray En esta situación tiene varias opciones para:F

  • puede ser un escalar, en cuyo caso se utiliza el mismo valor de relleno para cada plano de color de las 10 imágenes.F

  • puede ser un vector 3 por 1, . utiliza el valor RGB como valor de relleno para los planos de color correspondientes de cada una de las 10 imágenes.F[R G B]'tformarray

  • puede ser un vector 1 por 10. utiliza un valor de relleno diferente para cada una de las 10 imágenes, con ese valor de relleno que se utiliza para los tres planos de color.Ftformarray

  • puede ser una matriz de 3 por 10. utiliza un color de relleno RGB diferente para cada una de las 10 imágenes.Ftformarray

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen transformada, devuelta como una matriz numérica.

Introducido antes de R2006a