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.

Visión general del proceso de transformación geométrica 2-d y 3-D

Para realizar una transformación geométrica en 2-D o 3-D, cree primero un objeto de transformación geométrica que almacena información sobre la transformación. A continuación, pase la imagen que se transformará y el objeto de transformación geométrica a la función.imwarp Opcionalmente, puede proporcionar información de referencia espacial sobre la imagen de entrada.imwarp

Crear objeto de transformación geométrica

Los diferentes tipos de objetos de transformación geométrica almacenan información diferente sobre la transformación.

Hay varias formas de crear un objeto de transformación geométrica.

Enfoque para crear objeto de tranformaciónaffine2daffine3dprojective2dgeometricTransform2d / geometricTransform3dOtros objetos de transformación
Definir matriz de transformaciónXXX  
Definir función de asignación de punto inteligente personalizada   X 
Estimar la transformación de pares de puntos de controlX X X
Estimar la transformación mediante la optimización de similitudXX   
Estimar la transformación mediante correlación de fasesX    

Definir matriz de transformación

Si conoce la matriz de transformación para la transformación geométrica que desea realizar, puede crear un objeto de transformación geométrica o directamente.affine2dprojective2daffine3d Para obtener más información sobre la creación de una matriz de transformación, consulte.Representación matricial de transformaciones geométricas

En el ejemplo siguiente se define la matriz de transformación para una traducción en 2-D y se crea un objeto de transformación geométrica.affine2d

xform = [ 1 0 0           0 1 0          40 40 1 ];  tform_translate = affine2d(xform); 
tform_translate =     affine2d with properties:                   T: [3x3 double]     Dimensionality: 2

Definir función de asignación de punto inteligente personalizada

Si tiene una función de mapeo de puntos inversa, puede definir una transformación geométrica personalizada de 2-D y 3-D usando los objetos y los, respectivamente.geometricTransform2dgeometricTransform3d

En el ejemplo siguiente se especifica una función de correlación inversa que acepta y devuelve puntos 2-D en formato empaquetado (,).xy A continuación, el ejemplo crea un objeto de transformación geométrica personalizado.geometricTransform2d

inversefn = @(c) [c(:,1)+c(:,2),c(:,1).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1).^2]
tform = geometricTransform2d(inversefn)
tform =    geometricTransform2d with properties:          InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]         ForwardFcn: []     Dimensionality: 2

De forma similar, en el ejemplo siguiente se crea un objeto de transformación geométrica personalizado mediante la función de correlación inversa.geometricTransform3d En el ejemplo se especifica una función de correlación inversa que acepta y devuelve puntos 3-D en formato empaquetado (,,).xyz

inversefn = @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
tform = geometricTransform3d(inversefn)
tform =     geometricTransform3d with properties:          InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]         ForwardFcn: []     Dimensionality: 3

Estimar la transformación de pares de puntos de control

Puede crear un objeto de transformación geométrica pasando dos conjuntos de pares de puntos de control a la función.fitgeotrans La función estima automáticamente la transformación a partir de estos puntos y devuelve uno de los objetos de transformación geométrica.fitgeotrans

Diferentes transformaciones requieren un número variable de puntos. Por ejemplo, las transformaciones afines requieren tres puntos no colineales en cada imagen (un triángulo) y las transformaciones proyectivas requieren cuatro puntos (un cuadrilátero).

En este ejemplo se pasan dos conjuntos de puntos de control, que devuelve un objeto de transformación geométrica.fitgeotransaffine2d

movingPoints = [11 11;21 11; 21 21]; fixedPoints = [51 51;61 51;61 61];  tform_cpp = fitgeotrans(movingPoints,fixedPoints,'affine') 
tform_cpp =     affine2d with properties:                   T: [3x3 double]     Dimensionality: 2

Estimar la transformación mediante la optimización de similitud

Si tiene una imagen fija y una imagen en movimiento que están ligeramente desalineadas, puede utilizar la función para estimar una transformación geométrica afín que alinea las imágenes. optimiza los cuadrados de media o la métrica de similitud de la información mutua de Mattes de las dos imágenes, utilizando un descenso de gradiente de paso regular o un optimizador evolutivo de uno-más-uno.imregtformimregtform Para obtener más información, consulte.Cree un optimizador y una métrica para el registro de imágenes basadas en intensidad

Estimar la transformación mediante correlación de fases

Si tiene una imagen fija y una imagen en movimiento que están gravemente desalineadas, puede utilizar la función para estimar una transformación geométrica affina que mejore la alineación de la imagen.imregcorr Puede refinar la transformación resultante mediante la optimización de similitud.

Realice la transformación geométrica

Después de definir la transformación en un objeto de transformación geométrica, realice la transformación utilizando la función.imwarp Al llamar a la función, especifique la imagen que se transformará y el objeto de transformación geométrica.

utiliza la transformación geométrica para asignar las coordenadas de la imagen de salida a las coordenadas correspondientes de la imagen de entrada (correlación inversa).imwarp A continuación, utiliza la asignación de coordenadas para interpolar los valores de píxel dentro de la imagen de entrada y calcular el valor de píxel de salida.imwarp

Consulte también

| | | | | |

Ejemplos relacionados

Más acerca de