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 matriz 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íquela para crear un objeto de transformación geométrica. A continuación, aplique una transformación global a una imagen llamando al objeto de transformación geométrica.imwarp Para obtener un ejemplo, consulte .Realizar una transformación de traducción 2D simple

Transformaciones afines 2-D

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

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

Transformación afín 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 acerca de las coordenadas de píxeles, 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 que el plano de la imagen se incline. 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 influir en el punto de fuga.EF

Cuando y son grandes, el punto de fuga se acerca 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 alineación. Si tiene dos imágenes que desea alinear, seleccione primero los pares de puntos de control mediante .cpselect A continuación, ajuste una matriz de transformación proyectiva para controlar los pares de puntos mediante y estableciendo el valor de en .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 A continuación, la transformación se puede aplicar a otras imágenes mediante .imwarp

Crear transformaciones afines 2D compuestas

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

En este ejemplo se muestra cómo crear un compuesto de transformaciones de traslación y rotación 2D.

Cree una imagen de tablero de ajedrez que sufrirá 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. Superponga el tablero de ajedrez sobre el fondo, resaltando 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 en 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 rotará 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 la traducción primero 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

Invertir el orden de las transformaciones: realizar la rotación primero y la traslació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 de rotación.

Transformaciones afines 3-D

En la tabla siguiente se enumeran las transformaciones afines 3D con la matriz de transformación utilizada para definirlas. Tenga en cuenta que en el caso 3D, hay varias matrices, dependiendo de cómo desee rotar o cortar 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 afín 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 afines 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