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

Ajuste 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 ajusta a un objeto para controlar pares de puntos y.PolynomialTransformation2DmovingPointsfixedPoints Especifique el grado de la transformación polinómica, que puede ser 2, 3 o 4.degree

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

tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n) se ajusta a un objeto para controlar pares de puntos y.LocalWeightedMeanTransformation2DmovingPointsfixedPoints La transformación media ponderada local crea una asignación, infiriendo un polinomio en cada punto de control utilizando 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 deducir una transformación polinómica de segundo grado para cada par de punto 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 rótala 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 utilizando la herramienta Selección de punto 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 girada para registrarla con la imagen fija.tform Las regiones de color (verde y magenta) en la imagen de superposición de color falso indican un 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, especificada como una matriz doble de-por-2.xym

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

Tipos de datos: double | single

-y-coordenadas de los puntos de control en la imagen fija, especificado como una matriz doble de-por-2.xym

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

Tipos de datos: double | single

Tipo de transformación, especificada como una de las 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 media ponderada local, especificado como un valor numérico. puede ser tan pequeño como 6, pero haciendo pequeños riesgos generando polinomios mal acondicionadosnn

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 se 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 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 se modifican, pero la imagen se distorsiona mediante una combinación de traslación, rotación y escalado. 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 se exhiben esquiando. Las líneas rectas permanecen rectas y las líneas paralelas permanecen paralelas, pero los rectángulos se convierten en paralelogramos.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 curvados. 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 por tramos) 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 lineal por tramos no es suficiente. 6 (se recomiendan 12)

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