Resumen de Fundamentos del Procesamiento de Imágenes
Fundamentos del Procesamiento de Imágenes: Guía Completa
Introducción
Las transformaciones geométricas son operaciones que modifican la posición, tamaño o perspectiva de una imagen mediante operaciones lineales y afines sobre las coordenadas de sus píxeles. En esta guía veremos rotaciones, escalado, traslaciones y transformaciones de perspectiva, con ejemplos prácticos y conceptos matemáticos claros.
Definición: Una transformacin geomtrica aplica una matriz de transformacin a los vectores de posicin de los pxeles para obtener nuevas coordenadas, produciendo una imagen transformada.
Conceptos bsicos
- Punto imagen: coordenadas originales $(x,y)$ de un pxel.
- Coordenadas homogneas: para operaciones afines y proyectivas usamos vectores $,\left[\begin{array}{c}x \ y \ 1\end{array}\right]$.
- Matriz de transformacin: una matriz $A$ que multiplica la coordenada homognea para producir la nueva coordenada.
¿Por qu usar coordenadas homogneas?
- Permiten combinar rotacin, escalado y traslacin en una sola multiplicacin de matrices.
- Facilitan pasar de transformaciones afines a proyectivas (perspectiva).
Definicin: Las coordenadas homogneas de un punto $(x,y)$ son $\left[\begin{array}{c}x \ y \ 1\end{array}\right]$, y cualquier transformacin afn se puede representar por una matriz $3\times 3$ que acta sobre este vector.
Rotacin
Una rotacin alrededor de un eje en 2D se representa con la matriz $2\times 2$ o como $3\times 3$ en coordenadas homogneas.
- Rotacin en 2D (ángulo $\theta$):
$$R(\theta) = \begin{bmatrix}\cos\theta & -\sin\theta \ \sin\theta & \cos\theta \end{bmatrix}$$
- En coordenadas homogneas (manteniendo posible traslacin):
$$R_h(\theta) = \begin{bmatrix}\cos\theta & -\sin\theta & 0 \ \sin\theta & \cos\theta & 0 \ 0 & 0 & 1 \end{bmatrix}$$
Para rotar alrededor del centro de la imagen se combinan traslaciones y rotacin:
- Trasladar al origen (restar el centro): usar $T(-c_x,-c_y)$.
- Aplicar $R(\theta)$.
- Trasladar de regreso $T(c_x,c_y)$.
En forma matricial compuesta:
$$M = T(c_x,c_y);R_h(\theta);T(-c_x,-c_y)$$
Ejemplo prctico (pseudocdigo):
- Usar OpenCV: $M = $ cv2.getRotationMatrix2D$(center,;angle,;scale)$ y luego cv2.warpAffine.
Nota: Implementar la rotacin manualmente requiere interpolacin bilineal o similar para evitar artefactos de muestreo.
Escalado (redimensionado)
El escalado cambia el tamao de la imagen multiplicando las coordenadas por factores en cada eje.
- Escalado uniforme con factor $s$:
$$S(s) = \begin{bmatrix}s & 0 \ 0 & s\end{bmatrix}$$
- Escalado no uniforme con factores $s_x$, $s_y$:
$$S(s_x,s_y) = \begin{bmatrix}s_x & 0 \ 0 & s_y\end{bmatrix}$$
En coordenadas homogneas:
$$S_h(s_x,s_y) = \begin{bmatrix}s_x & 0 & 0 \ 0 & s_y & 0 \ 0 & 0 & 1 \end{bmatrix}$$
Puntos clave:
- Escalado por $s>1$ aumenta el tamao; $0<s<1$ reduce el tamao.
- Al escalar es importante elegir un mtodo de interpolacin (nearest, bilinear, bicubic) para la reconstruccin de píxeles.
Ejemplo prctico:
- OpenCV: cv2.resize(imagen, dsize=(w,h), interpolation=cv2.INTER_LINEAR).
Traslacin
La traslacin desplaza cada punto $(x,y)$ por un vector $(t_x,t_y)$.
- En coordenadas homogneas la matriz de traslacin es:
$$T(t_x,t_y) = \begin{bmatrix}1 & 0 & t_x \ 0 & 1 & t_y \ 0 & 0 & 1 \end{bmatrix}$$
Aplicando $T$ a $\left[\begin{array}{c}x \ y \ 1\end{array}\right]$ se obtiene $\left[\begin{array}{c}x+t_x \ y+t_y \ 1\end{array}\right]$.
Implementacin prctica:
- Implementacin manual: recorrer pxeles y colocar cada uno en la nueva posicin $x' = x + t_x$, $y' = y + t_y$.
- OpenCV: mT = np.float32$([[1,
¿Ya tienes cuenta? Iniciar sesión
Transformaciones de imágenes
Klíčové pojmy: Las transformaciones usan coordenadas homogneas $\left[\begin{array}{c}x\\y\\1\end{array}\right]$ para combinar operaciones., Rotacin 2D: $R(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix}$; en homogneas agregar tercera fila y columna., Escalar: $S(s_x,s_y)=\begin{bmatrix}s_x&0\\0&s_y\end{bmatrix}$; elegir interpolacin (nearest, bilinear, bicubic)., Traslacin: $T(t_x,t_y)=\begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}$; ajustar lienzo para evitar recortes., Para rotar alrededor del centro compone $T(c)\,R\,T(-c)$; el orden de matrices es crucial., Transformacin proyectiva $H$ tiene 8 grados de libertad y se aplica en homogneas: $p'=Hp$ y dividir por componente escala., Usar trazado inverso (inverse mapping) para evitar huecos y muestrear desde la imagen original., Combinar transformaciones se hace por multiplicacin matricial; trabajar en float32 antes de interpolar., Verificar bounding box y ampliar el lienzo antes de transformaciones que aumenten el rea visible., Fun facts: matrices de rotacin son ortogonales; una homografa necesita al menos 4 pares de puntos no colineales.