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

Aplique la transformación geométrica a la imagen

Descripción

ejemplo

B = imwarp(A,tform) transforma la imagen de acuerdo con la transformación geométrica definida por, que es un objeto de transformación geométrica. es la imagen transformada.UntformB

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

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

B = imwarp(___,interp) Especifica la forma de interpolación que se utilizará.

[B,RB] = imwarp(___,Name,Value) especifica los parámetros que controlan diversos aspectos de la transformación geométrica. Los nombres de los parámetros pueden abreviarse y el caso no importa.

Ejemplos

contraer todo

Leer la imagen en escala de grises en el espacio de trabajo y mostrarla.

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

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

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 3-D 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 3-D. En primer lugar, cree una matriz de transformación que gire la imagen alrededor del eje.y A continuación, pase la matriz al constructor del objeto.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]
t = 4×4

    0.9239         0   -0.3827         0
         0    1.0000         0         0
    0.3827         0    0.9239         0
         0         0         0    1.0000

 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 corte 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

Vincular vistas de ambos ejes juntos.

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 debe transformar, especificada como una matriz no dispersa y con valores reales.

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

transformación geométrica 2-d o 3-D para realizar, especificada como un objeto de transformación geométrica. Hay tres tipos de objetos de transformación geométrica:, o.affine2dprojective2daffine3d

  • Si es 2-D y, por ejemplo, para una imagen truecolor, aplica la misma transformación 2-D a todos los planos 2-D a lo largo de las cotas superiores.tformndims(A) > 2imwarp

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

Campo de desplazamiento, especificado como matriz numérica no dispersa. 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 se encuentran en unidades de píxeles. asume 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 en 2-D de size-by-, entonces es-by--by-2.UnmnDmn El primer plano del campo de desplazamiento, describe el componente de desplazamiento aditivo. agrega estos valores a las ubicaciones de columna y fila para producir ubicaciones redichas en.D(:,:,1)ximwarpDUn Del mismo modo, el segundo plano del campo de desplazamiento, describe el componente de los valores de desplazamiento aditivo.D(:,:,2)y

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

    • -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

    • -by--by-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 asociada a la imagen que se debe transformar, especificada como un objeto de referencia espacial.

  • Si es una transformación geométrica en 2-D, debe ser un objeto de referencia espacial en 2-D ().tformRAimref2d

  • Si es una transformación geométrica 3D, debe ser un objeto de referencia espacial 3-D ().tformRAimref3d

Forma de interpolación utilizada, especificada como uno de estos valores.

Método de interpolaciónDescripción
'linear'La interpolación lineal
'nearest'Interpolación de vecino más cercano: el píxel de salida tiene asignado el valor del píxel en el que se encuentra el punto. No se consideran otros píxeles.
'cubic'La interpolación cúbica

Tipos de datos: char

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.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 del mundo, especificado como el par separado por comas que consta de un objeto de referencia espacial o un.'OutputView'imref2dimref3d El, y las propiedades 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 del mundo.ImageSizeXWorldLimitsYWorldLimits El uso de no está disponible cuando se aplican campos de desplazamiento.'OutputView'

Valor utilizado para los píxeles de salida fuera de los límites de la imagen de entrada, especificados como el par separado por comas que consta de una matriz numérica.'FillValues' Los valores de relleno se utilizan para los píxeles de salida cuando la ubicación inversa transformada 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.FillValues

  • Si la imagen de entrada es 3-D y la transformación geométrica es 3-D, debe ser un escalar.FillValues

  • Si la imagen de entrada es N-D y la transformación geométrica es 2-D, puede ser un escalar o una matriz.FillValues Si especifica una matriz, el tamaño de la matriz debe coincidir con las dimensiones superiores de la imagen de entrada. Por ejemplo, si la imagen de entrada es una imagen RGB que es 200-by-200-by-3, puede ser un escalar o una matriz de 3 por 1.uint8FillValues En otro ejemplo, si la imagen de entrada es 4-D con el tamaño 200-by-200-by-3-by-10, puede ser un escalar o una matriz de 3 por 10.FillValues

    En este ejemplo de imagen RGB, las posibilidades de incluir:FillValues

    FillValueEfecto
    0Rellene con negro
    [0;0;0]Rellene con negro
    255Rellena con blanco
    [255;255;255]Rellena con blanco
    [0;0;255]Rellene con azul
    [255;255;0]Rellene con amarillo

Imagen de pad para crear aristas suaves, especificadas como el valor lógico o.truefalse Cuando se establece en, los pads de 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 Pad la imagen.falseimwarp Elegir (no rellenar) la imagen de entrada puede dar como resultado 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 no dispersa de valor real. es la misma clase que.BUn

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

Algoritmos

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

La figura siguiente ilustra una transformación de traducción. Por Convención, los ejes en el espacio de entrada están etiquetados y los ejes en el espacio de salida están etiquetados y en la figura, observe cómo modifica las coordenadas espaciales que definen las ubicaciones de los píxeles en la imagen de entrada.uvxy.imwarp El píxel en (1, 1) ahora se coloca en (41, 41). En la imagen de 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íxel, consulte.Sistemas de coordenadas de imagen

Imagen de entrada traducida

Capacidades ampliadas

Introducido en R2013a