Está en la página 1de 4

Visión por Computador, ITIS e IT+ITIS

Universidad Rey Juan Carlos


Curso 2009-2010
Práctica 2: Transformaciones proyectivas

1. Normas
La memoria de la práctica junto con los programas Matlab se entregarán
a través del Campus Virtual. La fecha tope de entrega de la práctica
es el dı́a del examen de la asignatura.
En la portada de la memoria deben aparecer el nombre y número de
matrı́cula del autor. No existe restricción alguna en cuanto al formato y
extensión de la memoria, aunque se recuerda que la calidad de la memoria
es un aspecto de importancia similar a los programas.

2. Planteamiento
El objetivo de la práctica es continuar con las transformaciones espaciales
de imágenes y familiarizar al alumno con una de las más útiles: la transfor-
mación proyectiva.
Como aplicación de las transformaciones proyectivas se pretende superpo-
ner una imagen (por ejemplo un anuncio) sobre otra en la que manteniendo
el efecto de la perspectiva.

2.1. Transformaciones proyectivas (homografı́as)

Una transformación proyectiva de un plano, es el resultado de proyec-


tar este a través de un punto en otro plano. Las deformaciones debido a la
perspectiva que se producen en, por ejemplo, una puerta al tomar imáge-
nes de la misma desde diferentes direcciones, se pueden modelar como una
transformación proyectiva.
Una transformación proyectiva viene dada por una matriz 3 × 3:

1
    
x a d g u
    
 y  =  b e h  v  (1)
λ c f i 1
| {z }
H

donde (u, v, 1)T son las coordenadas homogéneas del punto del plano
(u, v)T . El punto en coordenadas homogéneas (λx, λy, λ)T es el mismo que
el (x, y, 1)T . Las coordenadas del plano correspondientes a (x, y, λ)T son por
tanto (x′ , y ′ )T = (x/λ, y/λ)T .
Las ecuaciones que establecen las coordenadas de un punto transformado
mediante la transformación proyectiva son:

au + dv + g
x′ =
cu + f v + i
bu + ev + h
y′ =
cu + f v + i
(2)

Aunque hay nueve coeficientes en la matriz, estas transformaciones son


homogéneas. Por tanto, cualquier escalar distinto de cero que multiplica a la
matriz resulta en una transformación equivalente. Ası́ que podemos asumir,
sin pérdida de generalidad, que i = 1. El resultado es que sólo hay 8 grados
de libertad en una trasformación proyectiva y 4 puntos, con sus correspon-
dencias, son suficientes para calcularla.

3. Desarrollo

3.1. Cálculo de transformaciones proyectivas

En este primer apartado se pide programar una función en Matlab:

H = calcular_transformacion_proyectiva(Porigen, Pdestino);

que calculará la matriz de trasformación proyectiva de los puntos en Po-


rigen en los puntos de Pdestino. Tanto Porigen como Pdestino son matrices

2
Figura 1: Queremos superponer una imagen como la de la izquierda sobre,
por ejemplo, la región marcada en la imagen de la derecha.

N × 2. En cada fila aparece las coordenadas [x, y] de un punto en Porigen y


el correspondencia en la misma fila de Pdestino. El número de puntos viene
dado por N , y el mı́nimo es 4 aunque pueden ser más (mediante una apro-
ximación mı́nimo cuadrática). En esta práctica se pide calcular el cálculo de
la homografı́a cuando se tienen exáctamente 4 correspondencias.

3.2. Transformaciones proyectivas: “warping”

Se pide programar una función en Matlab:

I = transformacion_proyectiva(Idestino, Iorigen, Pdestino, Porigen);

que dados una matriz imagen Idestino y una matriz imagen Iorigen (ver
Fig. 1) proyecte Iorigen sobre un cuadrilátero en Idestino. En Pdestino apa-
recerán por filas los puntos elegidos sobre la imagen Idestino y en Porigen
los puntos correspondientes sobre Iorigen (por ejemplo, las cuatro esquinas
de Iorigen en Porigen y sus correspondencias sobre la imagen Idestino en
Pdestino).
Una vez más, al igual que en el caso del zoom digital haremos la trasfor-
mación recorriendo la imagen destino y realizando interpolación bilineal en
los niveles de gris. En este caso la función de transformación es una homo-
grafı́a que se calcula a partir de Porigen y Pdestino.

3
Se deben responder en la memoria a las siguientes preguntas:

¿Qué pasa si empleamos como Iorigen una imagen con un patrón de


lı́neas muy juntas o una cuadrı́cula muy fina? ¿Por qué?
¿Ocurre lo mismo con una imagen como el logotipo de coca-cola? ¿Por
qué?

4. Valoración de la práctica
La puntuación obtenida vendrá dada por los siguientes criterios:

Funcionamiento del cálculo de la homografı́a.


Funcionamiento de la transformación de imágenes (“warping”) en es-
cala de grises.
Funcionamiento de la transformación de imágenes (“warping”) en color.
Limpieza del código.
Calidad de la memoria.

5. Datos proporcionados
En http://www.gavab.es/wiki/vc/}se encuentran disponibles algunas
imágenes para realizar la práctica sobre ellas.
En http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab70/matlab70primero.pdf}
pueden encontrar manuales de Matlab.

6. Consejos y consideraciones sobre matlab


La función ginput en Matlab, permite seleccionar puntos sobre una
imagen.
Tras una llamada a una función Matlab para dibujar una imagen (ims-
how ) si se quiere dibujar algo más sobre la misma, hay que llamar a
hold on.