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.

Descripción general del proceso de transformación geométrica 2D y 3D

Para realizar una transformación geométrica 2D o 3D, cree primero un objeto de transformación geométrica que almacene información sobre la transformación. A continuación, pase la imagen que se va a 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 a .imwarp

Crear objeto de transformación geométrica

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

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

Enfoque para crear objetos de tranformaciónaffine2daffine3dprojective2dgeometricTransform2d / geometricTransform3dOtros objetos de transformación
Definir matriz de transformaciónXXX  
Definir función de asignación de puntos personalizados   X 
Estimar la transformación a partir de pares de puntos de controlX X X
Estimar la transformación mediante la optimización de similitudXX   
Estimar la transformación mediante la 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 directamente un objeto de transformación , o geométrico.affine2dprojective2daffine3d Para obtener más información sobre cómo crear una matriz de transformación, consulte .Representación matriz de transformaciones geométricas

En el ejemplo siguiente se define la matriz de transformación para una traducción 2D 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 puntos personalizados

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

En el ejemplo siguiente se especifica una función de asignación inversa que acepta y devuelve puntos 2D 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 asignación inversa.geometricTransform3d En el ejemplo se especifica una función de asignación inversa que acepta y devuelve puntos 3D 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 a partir 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

Las 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 a , 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 ligeramente desalineadas, puede utilizar la función para estimar una transformación geométrica afín que alinee las imágenes. optimiza los cuadrados medios o la métrica de similitud de información mutua Mattes de las dos imágenes, utilizando un descenso de gradiente de paso regular o un optimizador evolutivo uno más uno.imregtformimregtform Para obtener más información, consulte .Crear un optimizador y una métrica para el registro de imágenes basadas en intensidad

Estimar la transformación mediante la correlación de fases

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

Realizar la transformación geométrica

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

utiliza la transformación geométrica para asignar coordenadas en la imagen de salida a las coordenadas correspondientes en la imagen de entrada (asignación inversa).imwarp A continuación, utiliza la asignación de coordenadas para interpolar 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