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.

Representación matricial de transformaciones geométricas

Puede utilizar una matriz de transformación geométrica para realizar una transformación global de una imagen. En primer lugar, defina una matriz de transformación y utilíla para crear un objeto de transformación geométrica. A continuación, aplique una transformación global a una imagen llamando con el objeto de transformación geométrica.imwarp Para ver un ejemplo, vea.Realizar transformación de traducción simple 2-D

Transformaciones affine 2-D

La tabla enumera las transformaciones de afín 2-D con la matriz de transformación utilizada para definirlas. Para transformaciones de afín en 2-D, la última columna debe contener coordenadas homogéneas [0 0 1].

Utilice la matriz de transformación para crear un objeto de transformación geométrica.affine2d

Transformación affine 2-DEjemplo (imagen original y transformada)Matriz de transformación
Traducción

tx especifica el desplazamiento a lo largo del ejex

ty especifica el desplazamiento a lo largo del eje.y

Para obtener más información sobre las coordenadas de píxel, consulte.Sistemas de coordenadas de imagen

Escala

sx especifica el factor de escala a lo largo del ejex

sy especifica el factor de escala a lo largo del eje.y

Esquileo

shx especifica el factor de cizallamiento a lo largo del ejex

shy especifica el factor de cizallamiento a lo largo del eje.y

Rotación

especifica el ángulo de rotación sobre el origen.q

Transformaciones proyectivas 2-D

La transformación proyectiva permite inclinar el plano de la imagen. Las líneas paralelas pueden converger hacia un punto de fuga, creando la apariencia de profundidad.

La transformación es una matriz de 3 por 3. A diferencia de las transformaciones afines, no hay restricciones en la última columna de la matriz de transformación.

Transformación proyectiva 2-D EjemploMatriz de transformación
Inclinación

[10E01F001]

e influyen en el punto de fuga.EF

Cuando y son grandes, el punto de fuga se acerca más al origen y, por lo tanto, las líneas paralelas parecen converger más rápidamente.EF

Tenga en cuenta que cuando y son iguales a 0, la transformación se convierte en una transformación afín.EF

Las transformaciones proyectivas se utilizan con frecuencia para registrar imágenes que están fuera de la alineación. Si tiene dos imágenes que le gustaría alinear, primero seleccione los pares de puntos de control usando.cpselect A continuación, ajuste una matriz de transformación proyectiva para controlar pares de puntos utilizando y estableciendo el a.fitgeotranstransformationType'projective' Esto crea automáticamente un objeto de transformación geométrica.projective2d La matriz de transformación se almacena como una propiedad en el objeto.projective2d La transformación se puede aplicar a otras imágenes utilizando.imwarp

Crear transformaciones de affine compuestas 2-D

Puede combinar varias transformaciones en una sola matriz mediante la multiplicación de matrices. El orden de la multiplicación de matrices es importante.

Este ejemplo muestra cómo crear un compuesto de transformaciones 2-D de conversión y rotación.

Cree una imagen de tablero de ajedrez que se someterá a transformación. También cree un objeto de referencia espacial para la imagen.

cb = checkerboard(4,2); cb_ref = imref2d(size(cb));

Para ilustrar la posición espacial de la imagen, cree una imagen de fondo plana. Superponer el tablero de ajedrez sobre el fondo, destacando la posición del tablero de ajedrez en verde.

background = zeros(150); imshowpair(cb,cb_ref,background,imref2d(size(background)))

Cree una matriz de traducción y guárdela como un objeto de transformación geométrica.affine2d Esta traducción desplazará la imagen horizontalmente por 100 píxeles.

T = [1 0 0;0 1 0;100 0 1]; tform_t = affine2d(T);

Cree una matriz de rotación y guárdela como un objeto de transformación geométrica.affine2d Esta traducción girará la imagen 30 grados en el sentido de las agujas del reloj sobre el origen.

R = [cosd(30) sind(30) 0;-sind(30) cosd(30) 0;0 0 1]; tform_r = affine2d(R);

Traducción seguida de rotación

Realice primero la traducción y la rotación en segundo lugar. En la multiplicación de las matrices de transformación, la matriz de traducción está a la izquierda, y la matriz de rotación está a la derecha.TR

TR = T*R; tform_tr = affine2d(TR); [out,out_ref] = imwarp(cb,cb_ref,tform_tr); imshowpair(out,out_ref,background,imref2d(size(background)))

Rotación seguida de traducción

Invierta el orden de las transformaciones: Realice primero la rotación y la traducción en segundo lugar. En la multiplicación de las matrices de transformación, la matriz de rotación está a la izquierda, y la matriz de traducción está a la derecha.RT

RT = R*T; tform_rt = affine2d(RT); [out,out_ref] = imwarp(cb,cb_ref,tform_rt); imshowpair(out,out_ref,background,imref2d(size(background)))

Observe cómo la posición espacial de la imagen transformada es diferente de cuando la traducción fue seguida por la rotación.

Transformaciones de affine 3-D

En la tabla siguiente se enumeran las transformaciones de afín 3-D con la matriz de transformación utilizada para definirlas. Tenga en cuenta que en el caso 3-D, hay varias matrices, dependiendo de cómo desea rotar o distorsionar la imagen. La última columna debe contener [0 0 0 1].

Utilice la matriz de transformación para crear un objeto de transformación geométrica.affine3d

Transformación affine 3-DMatriz de transformación  
Traducción

[100001000010txtytz1]

  
Escala

[sx0000sy0000sz00001]

  
EsquileoEsquileo:x,y

x'=x+azy'=y+bzz'=z

[10000100ab100001]

Esquileo:x,z

x'=x+ayy'=yz'=z+cy

[1000a1c000100001]

Esquileo:y, z

x'=xy'=y+bxz'=z+cx

[1bc0010000100001]

RotaciónAcerca del eje:x

[10000cos(a)sin(a)00sin(a)cos(a)00001]

Acerca del eje:y

[cos(a)0sin(a)00100sin(a)0cos(a)00001]

Acerca del eje:z

[cos(a)sin(a)00sin(a)cos(a)0000100001]

Para las transformaciones de afín de N-D, la última columna debe contener. no admite transformaciones de más de tres dimensiones.[zeros(N,1); 1]imwarp

Consulte también

|

Ejemplos relacionados

Más acerca de