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.
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
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-D | Ejemplo (Imagen original y transformada) | Matriz de transformación | |
---|---|---|---|
Traducción |
Para obtener más información acerca de las coordenadas de píxeles, consulte .Sistemas de coordenadas de imagen | ||
Escala |
|
| |
Esquileo |
|
| |
Rotación |
| especifica el ángulo de rotación sobre el origen. |
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 | Ejemplo | Matriz de transformación | |
---|---|---|---|
Inclinación |
| e influir en el punto de fuga. 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. Tenga en cuenta que cuando y son iguales a 0, la transformación se convierte en una transformación afín. |
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 .fitgeotrans
transformationType
'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
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.T
R
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.R
T
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.
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-D | Matriz de transformación | ||
---|---|---|---|
Traducción |
| ||
Escala |
| ||
Esquileo | Esquileo:x,y
| Esquileo:x,z
| Esquileo:y, z
|
Rotación | Acerca del eje:x
| Acerca del eje:y
| Acerca del eje:z
|
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