En la capitulo anterior vimos las diferentes operaciones aplicadas al valor de un pixel de una imagen cualquiera, es decir en ningún momento variamos la posición de dicho pixel, lo único que en realidad cambiaba era el valor que éste poseía, es decir si P(i,j)=50, entonces aplicada una operación cualquiera, el nuevo valor obtenido podria ser P(i,j)=200.
Pues ahora se operará en cuanto a la posición del pixel, con respecto a un sistema de coordenadas dado, por ejemplo si a un pixel P(i,j)=50 se le aplica un transformación cuaquiera... entonces este pixel tendrá otra posición en el nuevo sistema de coordenadas, es decir P(i',j') = P(i,j) = 50, donce i', j' es diferente de i,j respectivamente.
Las trasformaciones geométricas que describiremos son:
Interpolación.
Se entiende por interpolación el cálculo del valor de la intensidad de un pixel como función de de los
pixeles que lo rodean.
En nuestro caso, hemos hecho uso de la interpolación para hallar los valores de la intensidad de los
nuevos pixeles al momento de estirar una imagen I al doble de su tamaño original, es decir si tengo una
imagen de dimension mxn entonces el nuevo tamaño de mi imagen I' será 2mx2n.
Entonces la función de interpolación toma la siguiente formula :
P(iint,jint) = Sum{P(i,j)*h(distancia[(iint,jint),(i,j)])}
Donde: Sum : Es la sumatoria de todos los vecinos a iint,jint
iint,jint : Es el punto que a interpolar
h(x) : Es la función de interpolación que se verá mas adelante
Distancia(p1,p2) : Es la distancia euclidiana entre p1 y p2.
La figura 1 nos ayudará a entender mejor el concepto de interpolación:
Podemos apreciar que la imagen I de tamaño 4x4, ha sido transformada a una imagen I' de 8x8.
El punto rojo es nuestro iint,jint serian los valor de 3,4 respectivamente ( iint = 3 y jint = 4) y ademas
que los puntos 6,7,0,1 toman los valores de la imagen original, pues por es ahí donde corresponde,
esto no quiere decir que los cuatro puntos de la región 6, tengan el valor de 6, lo que se hace es hallar
la distancia del punto rojo(iint,jint) a cada uno de los puntos azules ( i , j), ademas sabiendo que la
distancia entre cada punto azul es de 1 pixel.
Ahora que ya conocemos la teoria, pasaremos a explicar cada uno de las funciones h(x) que en este caso utilizaremos.
Interpolación por el vecino mas cercano.
El nucleo de esta interpolacion esta definido como :
Interpolación Bilineal.
El nucleo de esta interpolacion esta definido como :
Interpolación Bicubica.
El nucleo de esta interpolacion esta definido como :
Ejemplo gráfico:
A continuación mostraremos una imagen que ha sido doblada al doble de su tamaño, ademas notaremos las diferencias entre una interpolación y otra.
Imagen Original:
Interpolación por el vecino mas cercano.
Interpolación Bilineal.
Interpolación Bicúbica.
Podemos notar la diferencia si apreciamos fijamente los números del reloj y la fotografía que esta al costado.
Operaciones Fundamentales.
Para este tipo de operaciones consideraremos a la imagen original a:
De igual manera que en computación gráfica, nos referimos a operaciones elementales a operaciones como :
Traslación. Una de las operaciones mas sencillas, dado que el valor de P(i',j') sera igual al valor de P(i + ti, j+tj).
Donde ti es la cantidad de filas que se quiere trasladar.
Donde tj es la cantidad de columnas que se quiere trasladar.
Ejemplo: si ti = 20 y tj = 10, entonces obtendremos una imagen similar a esta :
Escalado.
El valor de P(i',j') sera igual al valor de P(i*ei, j*ej).
Donde ei es el factor que escalimiento en las filas
Donde ej es el factor que escalimiento en las columnas.
Ejemplo: si ti = 1 y tj = 2, entonces obtendremos una imagen similar a esta :
Rotación.
Los valores de las nuevas posiciones son las siguientes:
i'= i*Cos(ang) - j*Sin(ang);
j'= i*Sin(ang) + j*Cos(ang);
Donde ang es el angulo de giro.
Donde ci, cj es el punto pivote sobre cual se llevará a cabo la rotación.
Ejemplo: si ci = 90 y cj = 90 y ang=30, entonces obtendremos una imagen similar a esta :
Transformaciones Generales
Transformada Afín.
Utiliza las transformaciones elementales para su implementación.
Su formula esta compuesta por la multiplicación de las matrices de traslación, rotación y escalamiento.
Su formula esta dada por:
Imagen de Prueba:
Ejemplo con valores : Si=2, Sj=2, ti=20, tj=20 y ang=10º;
Registro de Imágenes.
Sin duda alguna una de las mas interesantes transformaciones geométricas.
Se tiene como entrada 3 Imágenes A , B, C. Donde:
A es una imagen cualquiera.
B es una imagen alterada a partir de A, es decir B es el resultado de una operación desconocida que le ocurrió a A.
C es la imagen cualquiera que sufrirá los mismos cambios que sufrió A para llegar a B.
Como salida se tiene una imagen D que es la transformación final de C.
Ejemplo:
Identificamos los puntos homólogos de A y B, los cuales pueden ser ingresados desde el teclado ó internamente desde el código.
Formamos las Matrices C, bx, y by; donde: i,j pertenece a la imagen A y i',j' a B.
Entonces ahora debemos hallar los valores de la matrix ax y ay tal que
Cax=bx y Cay=by.
Para ellos hacemos uso de la descomposicion en valores singulares de la matriz C (svd).
Finalmente aplicamos una trasformacion a la imagen C, que para nuestro caso será la imagen B, para poder notar la transformación.
Imagen Resultante