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.

imtransform

Aplicar la transformación espacial 2D a la imagen

no se recomienda.imtransform Utilícelo en su lugar.imwarp

Descripción

ejemplo

B = imtransform(A,tform) transforma la imagen según la transformación espacial 2D definida por , y devuelve la imagen transformada, .UntformB

Si es una imagen de color, aplica la misma transformación 2D a cada canal de color.Unimtransform Del mismo modo, si es un volumen o una secuencia de imágenes con tres o más dimensiones, aplica la misma transformación 2D a todos los planos 2D a lo largo de las dimensiones superiores.Unimtransform Para transformaciones de matrices de dimensiones arbitrarias, utilice .tformarray

B = imtransform(A,tform,interp) especifica la forma de interpolación que se va a utilizar.

B = imtransform(___,Name,Value) utiliza pares nombre-valor para controlar varios aspectos de la transformación espacial.

ejemplo

[B,xdata,ydata] = imtransform(___) también devuelve la extensión de la imagen de salida en el espacio X-Y de salida.B De forma predeterminada, calcula y automáticamente para que contenga toda la imagen transformada.imtransformxdataydataBUn Sin embargo, puede invalidar este cálculo automático especificando valores para los argumentos de entrada de par nombre-valor.XDataYData

Ejemplos

Transformación simple

Aplique una cizalla horizontal a una imagen en escala de grises.

I = imread('cameraman.tif'); tform = maketform('affine',[1 0 0; .5 1 0; 0 0 1]); J = imtransform(I,tform); imshow(J)

Transformación proyectiva

Asigne un cuadrado a un cuadrilátero con una transformación proyectiva. Configure un sistema de coordenadas de entrada para que la imagen de entrada llene el cuadrado de la unidad con vértices (0 0), (1 0), (1 1), (0 1).

I = imread('cameraman.tif'); udata = [0 1];  vdata = [0 1];

Transformar a un cuadrilátero con vértices (-4 2), (-8 3), (-3 -5), (6 3).

tform = maketform('projective',[ 0 0;  1  0;  1  1; 0 1],...                                [-4 2; -8 -3; -3 -5; 6 3]);

Rellene con gris y utilice la interpolación bicúbica. Haga que el tamaño de salida sea el mismo que el tamaño de entrada.

[B,xdata,ydata] = imtransform(I,tform,'bicubic', ...                               'udata',udata,...                               'vdata',vdata,...                               'size',size(I),...                               'fill',128); subplot(1,2,1); imshow(I,'XData',udata,'YData',vdata) subplot(1,2,2); imshow(B,'XData',xdata,'YData',ydata)

Registro de imágenes

Lea una foto aérea en el espacio de trabajo y visualícela.MATLAB®

unregistered = imread('westconcordaerial.png'); figure imshow(unregistered)

Lea una ortofoto en el espacio de trabajo y visualícela.MATLAB

figure imshow('westconcordorthophoto.png')

Puntos de control de carga que se seleccionaron anteriormente.

load westconcordpoints

Cree una estructura de transformación para una transformación proyectiva utilizando los puntos.

t_concord = cp2tform(movingPoints,fixedPoints,'projective');

Obtenga el ancho y el alto de la ortofoto, realice la transformación y vea el resultado.

info = imfinfo('westconcordorthophoto.png');  registered = imtransform(unregistered,t_concord,...     'XData',[1 info.Width],'YData',[1 info.Height]); figure imshow(registered)

Argumentos de entrada

contraer todo

Imagen que se va a transformar, especificada como una matriz numérica o lógica de cualquier dimensión.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Estructura de transformación, especificada como una estructura, como devuelta por o .maketformcp2tform La primera dimensión de la transformación es la coordenada horizontal o -coordenada, y la segunda dimensión es la vertical o -coordenada.xy Esta convención es lo contrario de la convención de subíndice de matriz en .MATLAB

Método de interpolación, especificado como uno de estos valores.

Método de interpolaciónDescripción
'bilinear'Interpolación lineal
'nearest'Interpolación de vecino más cercano: al píxel de salida se le asigna el valor del píxel en el que se encuentra el punto. No se tienen en cuenta otros píxeles.
'bicubic'Interpolación cúbica
Estructuraresamplerestructura devuelta por .resamplermakeresampler Esta opción permite un mayor control sobre cómo se realiza el remuestreo.imtransform

Tipos de datos: char

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: B = imtransform(A,T,'FillValues',128)

Extensión espacial de la imagen de entrada en el espacio de entrada U-V, especificada como vectores numéricos de 2 elementos.Un Los valores de las coordenadas del sistema de coordenadas universales y representanlos.UDataVData Los dos elementos de dar las coordenadas (horizontal) de la primera y última columna de , respectivamente.UDatauUn Los dos elementos de dar las coordenadas (verticales) de la primera y última fila de .VDatavUn

De forma predeterminada, la extensión espacial del espacio U-V es la misma que la extensión de la imagen en coordenadas intrínsecas.Un En otras palabras, el valor predeterminado de es y el valor predeterminado de es .UData[1 size(A,2)]VData[1 size(A,1)]

Extensión espacial de la imagen transformada en el espacio de entrada X-Y, especificada como vectores numéricos de 2 elementos.B Los valores de las coordenadas del sistema de coordenadas universales y representanlos.XDataYData Los dos elementos de dar las coordenadas (horizontal) de la primera y última columna de , respectivamente.XDataxB Los dos elementos de dar las coordenadas (verticales) de la primera y última fila de .YDatayB

Si no especifica y , estima los valores que contienen toda la imagen de salida transformada.XDataYDataimtransform Para determinar estos valores, utilice la función.imtransformfindbounds

Tamaño de píxeles en el espacio de salida X-Y, especificado como un vector numérico escalar numérico o de 2 elementos. Si es un escalar, los píxeles de salida son cuadrados y especifican la longitud lateral.XYScaleXYScale De lo contrario, los dos elementos de especificar el ancho y alto de cada píxel de salida en el espacio X-Y, respectivamente.XYScale

El valor predeterminado de depende de si se especifica:XYScaleSize

  • Si especifica , calcula a partir de , , y .SizeimtransformXYScaleSizeXDataYData

  • Si no especifica , utilice la escala de los píxeles de entrada para , excepto en los casos en los que se produciría una imagen de salida excesivamente grande.SizeimtransformXYScale

Nota

En los casos en que conservar la escala de la imagen de entrada daría como resultado una imagen de salida excesivamente grande, la función aumenta automáticamente el valor de .imtransformXYScale Para asegurarse de que la escala de píxeles de salida coincide con la escala de píxeles de entrada, especifique el parámetro.XYScale Por ejemplo, llame como se muestra en la sintaxis siguiente:imtransform

B = imtransform(A,T,'XYScale',1)

Tamaño de la imagen transformada , especificado como un vector de 2 elementos de enteros positivos.B Los dos elementos de especificar el número de filas y columnas de la imagen de salida , respectivamente.SizeB Para dimensiones más altas, toma el tamaño de directamente del tamaño de la imagen de entrada.imtransformBUn Por lo tanto, es igual a para .size(B,k)size(A,k)k > 2

Si no especifica , deriva este valor de , , y .SizeimtransformXDataYDataXYScale

Valor de relleno utilizado para los píxeles de salida fuera de los límites de la imagen de entrada, especificado como el par separado por comas que consta de y una matriz escalar o numérica numérica numérica.'FillValues' Los valores de relleno se utilizan para los píxeles de salida cuando la ubicación transformada inversa correspondiente en la imagen de entrada está completamente fuera de los límites de la imagen de entrada.

  • Si la imagen de entrada es 2-D, debe ser un escalar.UnFillValues

  • Si es 3-D o N-D, entonces puede ser una matriz cuyo tamaño satisface la siguiente restricción: debe ser igual o .UnFillValuessize(FillValues,k)size(A,k+2)1

    Por ejemplo, si es una imagen RGB que es 200-por-200-por-3, entonces las posibilidades de incluir los siguientes valores.Unuint8'FillValues'

    ValorLlenar
    0Llenar con negro
    [0;0;0]Llenar con negro
    255Llenar con blanco
    [255;255;255]Llenar con blanco
    [0;0;255]Llenar con azul
    [255;255;0]Llenar con amarillo

    Para un segundo ejemplo, si es 4-D con el tamaño 200-por-200-por-3-por-10, entonces puede especificar como un vector escalar, 1 por 10, 3 por 1 vector o 3 por 10 matriz.Un'FillValues'

Argumentos de salida

contraer todo

Imagen transformada, devuelta como una matriz numérica o lógica de la misma dimensionalidad que la imagen de entrada.Un

Extensión horizontal de la imagen transformada en el espacio de salida X-Y, devuelta como un vector numérico de 2 elementos.B Los dos elementos de dar las coordenadas (horizontales) de la primera y última columna del sistema de coordenadas universales, respectivamente.xdataxB

Nota

El primer elemento de siempre es igual al primer elemento del argumento, si se especifica.xdataXData Sin embargo, a veces el segundo elemento de no es exactamente igual al segundo elemento de .xdataXData Los valores difieren debido a la necesidad de un número entero de filas y columnas, o porque especificó valores para , , , y que no son totalmente coherentes.XDataYDataXYScaleSize

Extensión vertical de la imagen transformada en el espacio de salida X-Y, devuelta como un vector numérico de 2 elementos.B Los dos elementos de dar las coordenadas (verticales) de la primera y última filas del sistema de coordenadas universales, respectivamente.ydatayB

Nota

El primer elemento de siempre es igual al primer elemento del argumento, si se especifica.ydataYData Sin embargo, a veces el segundo elemento de no es exactamente igual al segundo elemento de .ydataYData Los valores difieren debido a la necesidad de un número entero de filas y columnas, o porque especificó valores para , , , y que no son totalmente coherentes.XDataYDataXYScaleSize

Sugerencias

  • La función desplaza automáticamente el origen de la imagen de salida para que la mayor parte de la imagen transformada sea visible como sea posible.Registro de imágenes.imtransform Si utiliza para realizar el registro de imágenes, la sintaxis puede producir resultados inesperados.imtransformB = imtransform(A,tform) Para controlar la ubicación espacial de la imagen de salida, establezca y explícitamente.XDataYData

  • Al llamar a la función con una transformación puramente traslacional, se genera una imagen de salida que es exactamente igual que la imagen de entrada, a menos que especifique y valores en la llamada a .Traducción pura.imtransformXDataYDataimtransform Por ejemplo, si desea que la salida tenga el mismo tamaño que la entrada que revela la traducción relativa a la imagen de entrada, llame como se muestra en la sintaxis siguiente:imtransform

    B = imtransform(A,T,'XData',[1 size(A,2)],...    'YData',[1 size(A,1)])

    Para obtener más información acerca de este tema, vea .Realizar una transformación de traducción 2D simple

  • Si no especifica la ubicación del espacio de salida para utilizar y , calcula la ubicación automáticamente utilizando la función .Velocidad de transformación.BXDataYDataimtransformfindbounds Puede utilizar como una opción de asignación directa rápida para algunas transformaciones de uso común, como afines o proyectivas.findbounds Para las transformaciones que no tienen una asignación hacia delante, como las transformaciones polinómias calculadas por , pueden tardar mucho más tiempo.fitgeotransfindbounds Si puede especificar y directamente para tales transformaciones, puede ejecutarse notablemente más rápido.XDataYDataimtransform

  • La estimación automática y el uso a veces recorta la imagen de salida.Recorte.XDataYDatafindbounds Para evitar el recorte, establezca y directamente.XDataYData

  • Utilice una transformación 2D para cuando utilice .Transformaciones dimensionales arbitrarias.tformimtransform Para obtener transformaciones de matrices de dimensiones arbitrarias, consulte .tformarray

Introducido antes de R2006a