Las transformaciones
geométricas generalmente modifican las relaciones espaciales entre píxeles en
una imagen. Dichas transformaciones a menudo son llamadas “Transformaciones de
Hoja Flexible”, porque pueden ser vistas como el proceso de imprimir una imagen
sobre una hoja de goma (flexible), y entonces estrechar o expandir la hoja de
acuerdo a un conjunto de reglas predefinidas. Utilizando una transformación
matemática, los píxeles son reubicados desde sus coordenadas espaciales (x,y)
en la imagen de entrada a una nueva
coordenada en la imagen de salida
[Jain89].
Las transformaciones
geométricas son utilizadas para mover, rotar, redimensionar, o desfigurar
arbitrariamente la geometría de una imagen. Estas transformaciones pueden ser
utilizadas para corregir distorsiones geométricas en una imagen, así como para
agregar efectos visuales.
Las operaciones geométricas se realizan
modificando el brillo de un píxel desde sus coordenadas espaciales de origen en
la imagen de entrada hacia nuevas coordenadas en la imagen de salida. La
ecuación general para estas operaciones es:
donde (x’,y’) son las coordenadas transformadas
del brillo del píxel ubicadas originalmente en las coordenadas (x,y). Es claro
que cada ubicación de los píxeles de entrada es calculada a través de esta
transformación, creando una ubicación de píxel de salida transformada
geométricamente.
En términos de procesamiento digital de
imágenes, una transformación geométrica consiste en dos operaciones básicas:
1.Una
transformación espacial, la cual define el nuevo arreglo de píxeles sobre el
plano de la imagen.
2.Una
interpolación de niveles de grises, el cual media con la asignación de niveles
de grises a píxeles en la imagen espacial transformada.
Se supone que una imagen a con coordenadas de píxeles (x,y) sufre, para
cada punto, una transformación geométrica para producir una imagen b, con coordenadas (xDest,yDest). Esta
transformación puede ser expresada como:
xDest = r(x,y) (1)
yDest = s(x,y) (2)
donde r(x,y) y s(x,y) son las transformaciones
espaciales que generan, para cada punto de a, nuevos puntos (xDest,yDest) que forman parte de la imagen b. Por ejemplo, si r(x,y) = x / 2 y s(x,y) = y /
2, la transformación es simplemente una contracción del tamaño de a, en un 50% en ambas direcciones espaciales.
La figura 7.5 muestra una región
rectangular de la imagen original, y su correspondiente transformación
(cuadrilátera, pero no necesariamente rectangular).
Se supone que el proceso de transformación
geométrica es modelado por un par de ecuaciones bilineales. Estas ecuaciones se
muestran a continuación:
r(xA,yA) = C1 + C2* xA + C3*yA + C4*xA*yA.
s(xA,yA) = C5 + C6* xA + C7*yA + C8*xA*yA.
entonces
por (1) y (2) se tiene:
xDestA = C1
+ C2* xA + C3*yA + C4*xA*yA. (3)
yDestA = C5
+ C6* xA + C7*yA + C8*xA*yA. (4)
Estas dos últimas ecuaciones representan las
coordenadas (xDest,yDest) de un punto transformado que se corresponden con las
del punto (x,y) en la región origen y están en función de los coeficientes Ci
de la transformación.
Para los demás puntos mostrados en la figura,
se sigue un procedimiento similar. Esto lleva a tener un sistema de ocho
ecuaciones con ocho incógnitas, las cuales se muestran a continuación.
xDestA = C1 + C2* xA + C3*yA + C4*xA*yA.
yDestA = C5 + C6* xA + C7*yA + C8*xA*yA.
xDestB = C1 + C2* xB + C3*yB +
C4*xB*yB.
yDestB = C5 + C6* xB + C7*yB + C8*xB*yB.
xDestC = C1 + C2* xC + C3*yC + C4*xC*yC.
yDestC = C5 + C6* xC + C7*yC +
C8*xC*yC.
xDestD = C1 + C2* xD + C3*yD + C4*xD*yD.
yDestD = C5 + C6* xD + C7*yD + C8*xD*yD.
Como se puede apreciar este sistema posee como
datos: (xA,yA), (xB,yB), (xC,yC), (xD,yD) como así también (xDestA,yDestA),
(xDestB,yDestB), (xDestC,yDestC), (xDestD,yDestD), y como incógnitas:
C1,C2,C3,C4,C5,C6,C7,C8.
Otro de los detalles que se pueden observar es
que el sistema se reduce a dos subsistemas independientes. Uno de ellos pone en
juego solamente los coeficientes C1, C2, C3 y C4, mientras que el otro a los
restantes. Dicho de otra manera, el primer grupo de coeficientes administra la
transformación de un punto en el eje horizontal sobre el plano, mientras que el
otro grupo la transformación vertical.
Para calcular las 8 incógnitas, se utilizó el
método de sustitución, de aquí que los resultados fuesen:
w1 = ((yA - yB)*(xA - xC) / (xA - xB)) - (yA -
yC);
w2 = ( ((xA*yA - xB*yB)*(xA - xD) ) / (xA - xB)
) - (xA*yA - xD*yD);
w3 = xDestC - xDestA + ((xDestA - xDestB)*(xA -
xC) / (xA - xB));
w4 = xDestA - ( (xDestA - xDestB)*(xA - xD) /
(xA - xB) );
w5 = ((xA*yA - xB*yB)*(xA - xC) / (xA - xB)) -
(xA*yA - xC*yC);
w6 = ((yA - yB)*(xA - xD) / (xA - xB)) - (yA -
yD);
w7 = yDestC - yDestA + ((yDestA - yDestB)*(xA -
xC) / (xA - xB));
w8 = yDestA - ( (yDestA - yDestB)*(xA - xD) /
(xA - xB) );
C4 = (xDestD - w4 - (w6*w3/w1)) / (w2 -
((w5*w6) / w1) );
C3 = (xDestC - xDestA + ((xDestA - xDestB)*(xA
- xC) / (xA - xB)) - C4*w5) / w1;
C2 = (xDestA - xDestB - C3*(yA - yB) -
C4*(xA*yA - xB*yB)) / (xA - xB);
C1 = xDestA - C2*xA - C3*yA - C4*xA*yA;
C8 = (yDestD - w8 - (w6*w7/w1)) / (
w2 - ((w5*w6) / w1));
C7 = (yDestC - yDestA + ((yDestA -
yDestB)*(xA - xC) / (xA - xB)) - C8*w5) / w1;
C6 = (yDestA - yDestB - C7*(yA - yB) -
C8*(xA*yA - xB*yB)) / (xA - xB);
C5 = yDestA - C6*xA - C7*yA - C8*xA*yA;
Una vez obtenidos los valores de los
coeficientes, se aplica a cada punto (xi,yi) de la región original y se obtiene
un nuevo punto (xiDest,yiDest) que representa la transformación del primero. El
nuevo punto se calcula de acuerdo con las ecuaciones (3) y (4).