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.

fitgeotrans

Ajustar la transformación geométrica a pares de puntos de control

Descripción

ejemplo

tform = fitgeotrans(movingPoints,fixedPoints,transformationType) toma los pares de puntos de control y , y los utiliza para inferir la transformación geométrica especificada por .movingPointsfixedPointstransformationType

tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree) se adapta a un objeto a los pares de puntos de control y .PolynomialTransformation2DmovingPointsfixedPoints Especifique el grado de la transformación polinómia, que puede ser 2, 3 o 4.degree

tform = fitgeotrans(movingPoints,fixedPoints,'pwl') se adapta a un objeto a los pares de puntos de control y .PiecewiseLinearTransformation2DmovingPointsfixedPoints Esta transformación asigna puntos de control dividiendo el plano en regiones lineales a destatalas locales. Una transformación afín diferente asigna puntos de control en cada región local.

tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n) se adapta a un objeto a los pares de puntos de control y .LocalWeightedMeanTransformation2DmovingPointsfixedPoints La transformación media ponderada local crea una asignación, deduciendo un polinomio en cada punto de control mediante puntos de control vecinos. La asignación en cualquier ubicación depende de un promedio ponderado de estos polinomios. Los puntos más cercanos se utilizan para inferir una transformación polinómica de segundo grado para cada par de puntos de control.n

Ejemplos

contraer todo

En este ejemplo se muestra cómo crear una transformación geométrica que se puede utilizar para alinear dos imágenes.

Cree una imagen de tablero de ajedrez y gírela para crear una imagen desalineada.

I = checkerboard(40); J = imrotate(I,30); imshowpair(I,J,'montage')

Defina algunos puntos de control coincidentes en la imagen fija (el tablero de ajedrez) y la imagen en movimiento (el tablero de ajedrez girado). Puede definir puntos de forma interactiva mediante la herramienta Selección de puntos de control.

fixedPoints = [41 41; 281 161]; movingPoints = [56 175; 324 160];

Cree una transformación geométrica que se pueda utilizar para alinear las dos imágenes, devueltas como un objeto de transformación geométrica.affine2d

tform = fitgeotrans(movingPoints,fixedPoints,'NonreflectiveSimilarity')
tform =    affine2d with properties:      Dimensionality: 2                  T: [3x3 double]  

Utilice la estimación para volver a muestrear la imagen rotada y registrarla con la imagen fija.tform Las regiones de color (verde y magenta) en la imagen de superposición de color falso indican error en el registro. Este error proviene de la falta de correspondencia precisa en los puntos de control.

Jregistered = imwarp(J,tform,'OutputView',imref2d(size(I))); figure imshowpair(I,Jregistered)

Recupere el ángulo y la escala de la transformación comprobando cómo se gira y estira un vector de unidad paralelo al eje X.

u = [0 1];  v = [0 0];  [x, y] = transformPointsForward(tform, u, v);  dx = x(2) - x(1);  dy = y(2) - y(1);  angle = (180/pi) * atan2(dy, dx) 
angle = 29.7686 
scale = 1 / sqrt(dx^2 + dy^2)
scale = 1.0003 

Argumentos de entrada

contraer todo

- y -coordenadas de los puntos de control en la imagen que desea transformar, especificadas como una matriz doble -by-2.xym

Ejemplo: movingPoints = [11 11; 41 71];

Tipos de datos: double | single

- y - coordenadas de puntos de control en la imagen fija, especificadas como una matriz doble -by-2.xym

Ejemplo: fixedPoints = [14 44; 70 81];

Tipos de datos: double | single

Tipo de transformación, especificado como uno de los siguientes: , , , o .'nonreflectivesimilarity''similarity''affine''projective' Para obtener más información, consulte .Tipos de transformación

Tipos de datos: char | string

Grado del polinomio, especificado como el entero 2, 3 o 4.

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

Número de puntos que se utilizarán en el cálculo de la media ponderada local, especificado como un valor numérico. puede ser tan pequeño como 6, pero hacer pequeños riesgos que generen polinomios mal condicionadosnn

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

Argumentos de salida

contraer todo

Transformación, devuelta como un objeto de transformación. El tipo de objeto depende del tipo de transformación. Por ejemplo, si especifica el tipo de transformación , entonces es un objeto.'affine'tformaffine2d Si especifica , entonces es un objeto.'pwl'tformimage.geotrans.PiecewiseLinearTransformation2d

Más acerca de

contraer todo

Tipos de transformación

La tabla enumera todos los tipos de transformación admitidos por en orden de complejidad.fitgeotrans

Tipo de transformación

DescripciónNúmero mínimo de pares de puntos de controlEjemplo
'nonreflective similarity'Utilice esta transformación cuando las formas de la imagen en movimiento no cambien, pero la imagen se distorsiona mediante alguna combinación de traslación, rotación y escala. Las líneas rectas permanecen rectas y las líneas paralelas siguen siendo paralelas. 2

'similarity'Igual que con la adición de reflexión opcional.'nonreflective similarity'3

'affine'Utilice esta transformación cuando las formas de la imagen en movimiento muestren cizallamiento. Las líneas rectas permanecen rectas y las líneas paralelas permanecen paralelas, pero los rectángulos se convierten en paralelogramas.3

'projective'Utilice esta transformación cuando la escena aparezca inclinada. Las líneas rectas permanecen rectas, pero las líneas paralelas convergen hacia un punto de fuga.4

'polynomial'Utilice esta transformación cuando los objetos de la imagen estén curvos. Cuanto mayor sea el orden del polinomio, mejor será el ajuste, pero el resultado puede contener más curvas que la imagen fija.

6 (orden 2)

10 (orden 3)

15 (orden 4)

'pwl'Utilice esta transformación (lineal en trozos) cuando las partes de la imagen aparezcan distorsionadas de forma diferente.4

'lwm'Utilice esta transformación (media ponderada local) cuando la distorsión varía localmente y no es suficiente lineal por pieza. 6 (12 recomendados)

Referencias

[1] Goshtasby, Ardeshir, "Piecewise linear mapping functions for image registration," Pattern Recognition, Vol. 19, 1986, pp. 459-466.

[2] Goshtasby, Ardeshir, "Image registration by local approximation methods," Image and Vision Computing, Vol. 6, 1988, pp. 255-261.

Capacidades ampliadas

Introducido en R2013b