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.

imwarp

Aplicar transformación geométrica a la imagen

Descripción

ejemplo

B = imwarp(A,tform) transforma la imagen según la transformación geométrica.Untform La imagen de entrada puede ser una matriz numérica, lógica o categórica. es un objeto de transformación geométrica.Untform La función devuelve la imagen transformada en la que es la misma clase que la imagen de entrada.B

B = imwarp(A,D) transforma la imagen según el campo de desplazamiento.UnD

[B,RB] = imwarp(A,RA,tform) transforma una imagen a la que se hace referencia espacialmente, especificada por los datos de imagen y el objeto de referencia espacial asociado.UnRA La salida es una imagen a la que se hace referencia espacialmente especificada por los datos de imagen y el objeto de referencia espacial asociado.BRB

B = imwarp(___,interp) especifica el tipo de interpolación que se va a utilizar.

[B,RB] = imwarp(___,Name,Value) especifica argumentos de par nombre-valor para controlar varios aspectos de la transformación geométrica.

Ejemplos

contraer todo

Lea la imagen en escala de grises en el espacio de trabajo y muéstrala.

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

Cree un objeto de transformación geométrica 2D.

tform = affine2d([1 0 0; .5 1 0; 0 0 1])
tform =    affine2d with properties:      Dimensionality: 2                  T: [3x3 double]  

Aplique la transformación a la imagen.

J = imwarp(I,tform); figure imshow(J)

Lea los datos de RMN 3D en el espacio de trabajo y visualícelos.

s = load('mri'); mriVolume = squeeze(s.D); sizeIn = size(mriVolume); hFigOriginal = figure; hAxOriginal  = axes; slice(double(mriVolume),sizeIn(2)/2,sizeIn(1)/2,sizeIn(3)/2); grid on, shading interp, colormap gray

Cree un objeto de transformación geométrica 3D. En primer lugar, cree una matriz de transformación que gire la imagen alrededor del eje.y A continuación, cree un objeto a partir de la matriz de transformación.affine3d

theta = pi/8; t = [cos(theta)  0      -sin(theta)   0      0             1              0     0      sin(theta)    0       cos(theta)   0      0             0              0     1]; tform = affine3d(t)
tform =    affine3d with properties:      Dimensionality: 3                  T: [4x4 double]  

Aplique la transformación a la imagen.

mriVolumeRotated = imwarp(mriVolume,tform);

Visualice tres planos de sectores a través del centro de los volúmenes transformados.

sizeOut = size(mriVolumeRotated); hFigRotated = figure; hAxRotated  = axes; slice(double(mriVolumeRotated),sizeOut(2)/2,sizeOut(1)/2,sizeOut(3)/2) grid on, shading interp, colormap gray

Vincule las vistas de ambos ejes.

linkprop([hAxOriginal,hAxRotated],'View');

Establezca la vista para ver el efecto de rotación.

set(hAxRotated,'View',[-3.5 20.0])

Argumentos de entrada

contraer todo

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

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

Transformación geométrica que se va a realizar, especificada como un objeto , u objeto.affine2dprojective2daffine3d

  • Si es 2-D y tiene más de dos dimensiones, como para una imagen RGB, aplica la misma transformación 2D a todos los planos 2D a lo largo de las dimensiones superiores.tformUnimwarp

  • Si es 3-D, entonces debe ser un volumen de imagen 3D.tformUn

Campo de desplazamiento, especificado como matriz numérica. El campo de desplazamiento define el tamaño de la cuadrícula y la ubicación de la imagen de salida. Los valores de desplazamiento están en unidades de píxeles. supone que se hace referencia al sistema de coordenadas intrínsecas predeterminado.imwarpD Para estimar el campo de desplazamiento, utilice .imregdemons

  • Si es una imagen en escala de grises 2D de tamaño -por- , entonces es -by- -by-2.UnmnDmn El primer plano del campo de desplazamiento, , describe el componente -componente del desplazamiento aditivo. agrega estos valores a las ubicaciones de columna y fila para generar ubicaciones reasignadas en .D(:,:,1)ximwarpDUn Del mismo modo, el segundo plano del campo de desplazamiento, , describe el componente -componente de los valores de desplazamiento aditivo.D(:,:,2)y

  • Si es una imagen en escala de grises 2-D RGB o 3-D de tamaño -por- -por- , entonces es:UnmnpD

    • -by- -by- -by-3. contiene desplazamientos a lo largo del eje, contiene desplazamientos a lo largo del eje y contiene desplazamientos a lo largo del ejemnpD(:,:,:,1)xD(:,:,:,2)yD(:,:,:,3)z

    • -por-2, a continuación, aplica el campo de desplazamiento a un plano a la vez.mnimwarp

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

Información de referencia espacial de la imagen que se va a transformar, especificada como un objeto para una transformación 2D o un objeto para una transformación 3D.imref2dimref3d

Tipo de interpolación utilizado, especificado como uno de estos valores.

Método de interpolaciónDescripción
'linear'Interpolación lineal. Este es el método de interpolación predeterminado para matrices numéricas y lógicas.
'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. Este es el único método de interpolación y el valor predeterminado para matrices categóricas.
'cubic'Interpolación cúbica

Tipos de datos: char | string

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: utiliza píxeles blancos como valores de relleno.J = imwarp(I,tform,'FillValues',255)

Tamaño y ubicación de la imagen de salida en el sistema de coordenadas universales, especificado como el par separado por comas que consta de un objeto de referencia espacial o espacial.'OutputView'imref2dimref3d Las propiedades , , y del objeto de referencia espacial definen el tamaño de la imagen de salida y la ubicación de la imagen de salida en el sistema de coordenadas universales.ImageSizeXWorldLimitsYWorldLimits El uso de no está disponible al aplicar campos de desplazamiento.'OutputView'

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 un escalar numérico o matriz.'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 y la transformación es 2-D, el valor de relleno debe ser escalar.

  • Si la imagen de entrada es 3D y la transformación es 3D, el valor de relleno debe ser escalar.

  • Si la imagen de entrada es N-D y la transformación es 2-D, el valor de relleno puede ser un escalar o una matriz cuyo tamaño coincida con las dimensiones superiores de la imagen de entrada (3a a la dimensión Na). Por ejemplo, si es una imagen RGB 200-por-200-por-3, el valor de relleno puede ser un escalar o una matriz 3 por 1.Un Para especificar un valor de relleno negro, puede especificar o .0[0;0;0] Para otro ejemplo, si es 4-D con el tamaño 200-por-200-por-3-por-10, el valor de relleno puede ser escalar o una matriz 3 por 10.Un

  • Si la imagen de entrada es una matriz categórica, utilice la función MATLAB para especificar el valor de relleno.missing Para los datos categóricos, equivale a .missing<undefined>

Ejemplo: especifica un valor de relleno gris medio para cualquier imagen de tipo de datos128uint8

Ejemplo: especifica un valor de relleno gris medio para cualquier imagen de tipo de datos0.5double

Ejemplo: especifica un color de relleno amarillo para una imagen RGB 2-D del tipo de datos[255 255 0]uint8

Ejemplo: especifica un color de relleno amarillo para una imagen RGB 2-D del tipo de datos[1 1 0]double

Ejemplo: especifica un color de relleno verde y amarillo, respectivamente, para una serie de dos imágenes RGB de tipo de datos[0 1 0;1 1 0]'double

Pad imagen para crear bordes lisos, especificados como el valor lógico o .truefalse Cuando se establece en , rellena la imagen de entrada (con los valores especificados por ) para crear un borde más suave en la imagen de salida.trueimwarpFillValues Cuando se establece en , no rellena la imagen.falseimwarp La elección (no de relleno) de la imagen de entrada puede dar lugar a un borde más nítido en la imagen de salida.false Este borde más nítido puede ser útil para minimizar las distorsiones de costura al registrar dos imágenes una al lado de la otra.

Argumentos de salida

contraer todo

Imagen transformada, devuelta como una matriz numérica, lógica o categórica del mismo tamaño y tipo de datos que la imagen de entrada.Un

Información de referencia espacial de la imagen transformada, devuelta como un objeto de referencia espacial.imref2dimref3d

Algoritmos

determina el valor de los píxeles de la imagen de salida asignando ubicaciones de la imagen de salida a las ubicaciones correspondientes de la imagen de entrada (asignación inversa). interpola dentro de la imagen de entrada para calcular el valor del píxel de salida.imwarpimwarp

La figura siguiente ilustra una transformación de traducción. Por convención, los ejes del espacio de entrada se etiquetan y los ejes del espacio de salida se etiquetan y en la figura, tenga en cuenta cómo se modifican las coordenadas espaciales que definen las ubicaciones de píxeles en la imagen de entrada.uvxy.imwarp El píxel en (1,1) ahora está posicionado en (41,41). En la imagen del tablero de ajedrez, cada cuadrado negro, blanco y gris tiene 10 píxeles de alto y 10 píxeles de ancho. Para obtener más información sobre la distinción entre coordenadas espaciales y coordenadas de píxeles, consulte .Sistemas de coordenadas de imagen

Imagen de entrada traducida

Capacidades ampliadas

Introducido en R2013a