Está en la página 1de 88

Transformaciones

Afines / Perspectiva
Visin Artificial

Andrea Rueda

Pontificia Universidad Javeriana


Departamento de Ingeniera de Sistemas
Transformaciones
Transformaciones geomtricas:
Operaciones que se aplican a objeto(s) para
cambiar su posicin, orientacin y/o tamao.
Para qu?
Construir una escena.
Descripcin jerrquica de objetos complejos.
Descripcin de movimiento de objetos durante una
secuencia.
Vistas desde diferentes ngulos.
Transformaciones
Usualmente descritas en forma matricial.
Facilita la combinacin de diferentes
transformaciones.
Coordenadas homogneas:
expandir (x, y) a (xh, yh, h) (hx, hy, h)
(x, y, z) a (xh, yh, zh, h) (hx, hy, hz, h)

h: parmetro homogneo (valor distinto de 0).


Transformaciones
Transformaciones geomtricas bsicas:
Traslacin
Cambio de escala
Rotacin
Reflexin
Inclinacin
Transformaciones
Traslacin:
Cambiar la posicin actual a un nuevo punto en
el espacio de coordenadas.
Mover la(s) posicin(es) original(es) a lo largo
de una trayectoria en lnea recta hacia una
nueva ubicacin.
Transformaciones
Traslacin: posicin original.

35

25

x
30 45
Transformaciones
Traslacin: movimiento traslacin de (-15,5).

y
40

30

x
15 30
Transformaciones
Traslacin 2D:
Se aaden distancias de traslacin a las
coordenadas originales.

(x , y) (x ' , y ' )
x '= x +t x
y' = y+ty
Transformaciones
Traslacin 2D:
Notacin matricial (coordenadas homogneas).

(x , y) (x ' , y ' )

P ' =T (t x , t y )P

[ ][ ][ ]
x' 1 0 tx x
y' = 0 1 t y y
1 0 0 1 1
Transformaciones
Traslacin inversa 2D:
Negacin de las distancias de traslacin.

(x , y) (x ' , y ' )
1
P =T (t x ,t y )P '

[][ ][ ]
x 1 0 t x x '
y = 0 1 t y y '
1 0 0 1 1
Transformaciones
Traslacin 3D:

(x , y , z ) (x ' , y ' , z ' )


P ' =TP

[ ][ ][ ]
x' 1 0 0 tx x
y' = 0 1 0 ty y

z' 0 0 1 tz z
1 0 0 0 1 1
Transformaciones
Escala:
Altera el tamao del objeto.
Se multiplican las posiciones del objeto por
factores de escala en cada eje de coordenadas.
Valores inferiores a 1 reducen el tamao.
Valores superiores a 1 aumentan el tamao.
Mismos valores en cada eje escala uniforme.
Transformaciones
Escala: posicin original.

35

25

x
30 45
Transformaciones
Escala: escala usando factores (2/3, 6/5).

y
42

30

x
20 30
Transformaciones
Escala 2D:
Factores de escala diferenciales, uno en la
direccin x, otro en la direccin y.

(x , y) (x ' , y ' )
x '= xs x
y ' = ys y
Transformaciones
Escala 2D:
Notacin matricial (coordenadas homogneas).

(x , y) (x ' , y ' )

P ' = S (s x , s y )P

[ ][ ][ ]
x' sx 0 0 x
y' = 0 sy 0 y
1 0 0 1 1
Transformaciones
Escala inversa 2D:
Factores de escala recprocos.

(x , y) (x ' , y ' )
1
P =S (s x , s y )P '

[][ ][ ]
x 1/ s x 0 0 x'
y = 0 1/ s y 0 y '
1 0 0 1 1
Transformaciones
Escala 3D:

(x , y , z ) (x ' , y ' , z ' )


P ' = SP

[ ][ ][ ]
x' sx 0 0 0 x
y' = 0 sy 0 0 y

z' 0 0 sz 0 z
1 0 0 0 1 1
Transformaciones
Rotacin:
Girar el objeto una cantidad especfica dada
por un ngulo especificado sobre un eje.
Eje de rotacin perpendicular al plano, dado
por una coordenada llamada punto de rotacin.
ngulos positivos sentido antihorario.
ngulos negativos sentido horario.
Transformaciones
Rotacin: posicin original.

15

x
30 45
Transformaciones
Rotacin: rotacin de 45 alrededor de (20,5).

5 45

x
20
Transformaciones
Rotacin 2D:
De un punto aplicando un ngulo sobre el
origen de coordenadas.

(x , y) (x ' , y ' )
x '= x cos y sin
y ' = x sin + y cos
Transformaciones
Rotacin 2D:
Notacin matricial (coordenadas homogneas).

(x , y) (x ' , y ' )

P ' = R( )P

[ ][ ][ ]
x' cos sin 0 x
y ' = sin cos 0 y
1 0 0 1 1
Transformaciones
Rotacin inversa 2D:
ngulo de rotacin negativo.

(x , y) (x ' , y ' )
1
P =R ()P '

[][ ][ ]
x cos sin 0 x '
y = sin cos 0 y '
1 0 0 1 1
Transformaciones
Rotacin 3D:
Rotaciones paralelas a los ejes cartesianos.
Rotacin del eje z (exactamente igual a 2D).
Rotacin del eje x.
Rotacin del eje y.
y y y

x x x

z z z
Transformaciones
Rotacin 3D:
Rotacin del eje z.
(x , y , z ) (x ' , y ' , z ' )
P ' = R z ( )P

[ ][ ][ ]
x' cos sin 0 0 x
y ' = sin cos 0 0 y

z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones
Rotacin 3D:
Rotacin del eje x (permutacin x y z x).
(x , y , z ) (x ' , y ' , z ' )
P ' = R x ()P

[ ][ ][ ]
x' 1 0 0 0 x
y ' = 0 cos sin 0 y

z' 0 sin cos 0 z
1 0 0 0 1 1
Transformaciones
Rotacin 3D:
Rotacin del eje y (permutacin x y z x).
(x , y , z ) (x ' , y ' , z ' )
P ' = R y ()P

[ ][ ][ ]
x' cos 0 sin 0 x
y' = 0 1 0 0 y
z' sin 0 cos 0 z
1 0 0 0 1 1
Transformaciones
Ejercicio 1:
Escribir las matrices de transformacin que
permiten:
1. Aplicar una traslacin 3D de (-15, 4, 19).
2. Aplicar una escalamiento 2D de (0.5, 1.8).
3. Aplicar una rotacin 3D alrededor del eje y
de 45.
Transformaciones
Ejercicio 1:

[ ]
2. 0.5 0 0
0 1.8 0

[ ]
1. 1 0 0 15 0 0 1
0 1 0 4
0 0 1 19

[ ]
0 0 0 1 3. cos 45 0 sin 45 0
0 1 0 0
sin 45 0 cos 45 0
0 0 0 1
Transformaciones
Ejercicio 1:

[ ]
2. 0.5 0 0
0 1.8 0

[ ]
1. 1 0 0 15 0 0 1
0 1 0 4
0 0 1 19

[ ]
0 0 0 1 3. 2 /2
0 2/ 2 0
0 1 0 0
2/2 0 2/ 2 0
0 0 0 1
Transformaciones
Reflexin:
Producir la imagen de un objeto en un espejo.
Escoger un eje de reflexin, y rotar el objeto
180 sobre dicho eje.
Transformaciones

Reflexin 2D sobre eje x (y=0):


y
(x , y) (x ' , y ' )
x '= x y ' = y

P ' =F xP
x

[ ][
x' 1 0 0 x
y ' = 0 1 0 y
1 0 0 1 1 ][ ]
Transformaciones

Reflexin 2D sobre eje y (x=0):


y
(x , y) (x ' , y ' )
x '=x y' =y

P ' =F yP

[][
x' 1 0 0 x
y' = 0 1 0 y
1 0 0 1 1 ][ ] x
Transformaciones
Reflexin 2D relativa al origen de coordenadas:
y
(x , y) (x ' , y ' )
x '=x y ' = y

P ' =F xyP
x

[][
x' 1 0 0 x
y ' = 0 1 0 y
1 0 0 1 1 ][ ]
Transformaciones
Reflexin 3D:
Con respecto a un eje de reflexin: Equivalente a
rotacin de 180 sobre dicho eje (Ejemplo para z).

(x , y , z ) (x ' , y ' , z ' )


P ' =F zP

[ ][ ][ ]
x' cos 180 sin 180 0 0 x
y ' = sin 180 cos 180 0 0 y

z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones
Reflexin 3D:
Con respecto a un eje de reflexin: Equivalente a
rotacin de 180 sobre dicho eje (Ejemplo para z).

(x , y , z ) (x ' , y ' , z ' )


P ' =F zP

[ ][ ][ ]
x' 1 0 0 0 x
y ' = 0 1 0 0 y
z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones
Reflexin 3D:
Con respecto a un plano de reflexin: Cambiar el
signo de la coordenada perpendicular (aqu z).

(x , y , z ) (x ' , y ' , z ' )


P ' =F xyP

[ ][ ][ ]
x' 1 0 0 0 x
y' = 0 1 0 0 y
z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones
Inclinacin:
Desplazamiento de cada punto de forma
proporcional a la distancia a una lnea paralela
a la direccin de distorsin.
Modifica o distorsiona una figura, convirtiendo
cuadrados en paralelogramos y crculos en
elipses.
Transformaciones
Inclinacin 2D en x con respecto al eje x:
y
(x , y) (x ' , y ' )
x ' = x+ sh xy y'=y

P ' =H xP x

[][ ][ ]
x' 1 sh x 0 x
y' = 0 1 0 y
1 0 0 1 1 x
Transformaciones
Inclinacin 2D en y con respecto al eje y.
y
(x , y) (x ' , y ' )
x ' =x y ' = y + sh yx
x
P ' =H yP
y

[][ ][ ]
x' 1 0 0 x
y ' = sh y 1 0y
1 0 0 1 1
x
Transformaciones
Inclinacin 3D:
Se aplican a lo largo de un eje, de manera
anloga a la inclinacin 2D.
Ejemplo: inclinacin a lo largo del eje z.
Requiere parmetros de inclinacin shx y shy.
stos alteran las coordenadas x y y
proporcionalmente, mientras que la
coordenada z no cambia.
Transformaciones
Inclinacin 3D:
Ejemplo: inclinacin a lo largo del eje z.

(x , y , z ) (x ' , y ' , z ' )


P ' =H zP

[ ][ ][ ]
x' 1 0 sh x 0 x
y ' = 0 1 sh y 0 y

z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones
Ejercicio 2:
Escribir las matrices de transformacin que
permiten:
1. Aplicar una reflexin 3D sobre el eje x.
2. Aplicar una reflexin 3D sobre el plano xz.
3. Aplicar una inclinacin 2D con respecto al
eje x de 5.
Transformaciones
Ejercicio 2:

[ ] [ ]
1. 1 0 0 0 2. 1 0 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1

[ ]
3. 15 0
0 1 0
0 0 1
Transformaciones
Composicin o concatenacin de
transformaciones.
Matriz de transformacin compuesta: producto
de las transformaciones individuales.

P '= M 2M 1P

P '= MP
Transformaciones
Propiedades de la concatenacin de
transformaciones:
- Asociatividad:
M 3M 2M 1=( M 3M 2 )M 1= M 3( M 2M 1)
- Conmutatividad:
M 1M 2 M 2M 1

El orden de las transformaciones es


importante!
Transformaciones
Cambio de escala 2D general con respecto a
cualquier punto fijo:
Transformaciones
Cambio de escala 2D general con respecto a
cualquier punto fijo:
1. Trasladar el objeto y el punto fijo de forma que
ste quede sobre el origen de coordenadas.
2. Escalar el objeto con respecto al origen.
3. Trasladar el objeto y el punto fijo de forma que
ste regrese a su posicin original.
1
P ' ={T ( x f , y f )S(s x , s y )T ( x f , y f )}P
P ' = S ( x f , y f , s x , s y )P
Transformaciones
Cambio de escala 2D general con respecto a
cualquier punto fijo:

(x , y) (x ' , y ' )
1
P ' =T STP

[][ ][ ]
x' sx 0 ( s x 1) x f x
y' = 0 s y ( s y 1) y f y
1 0 0 1 1
Transformaciones
Cambio de escala 3D con respecto a cualquier
posicin fija (xf,yf,zf):
Transformaciones
Cambio de escala 3D con respecto a cualquier
posicin fija (xf,yf,zf):
1. Trasladar el punto fijo al origen.
2. Escalar con respecto al origen.
3. Trasladar el punto fijo de vuelta a su posicin
original.
Transformaciones
Cambio de escala 3D con respecto a cualquier
posicin fija (xf,yf,zf):

y y

(xf,yf,zf) (xf,yf,zf)
x x

z z
Posicin original Traslacin
Transformaciones
Cambio de escala 3D con respecto a cualquier
posicin fija (xf,yf,zf):

y y

(xf,yf,zf) (xf,yf,zf)
x x

z z
Escala Traslacin inversa
Transformaciones
Cambio de escala 3D con respecto a cualquier
posicin fija (xf,yf,zf):

(x , y , z ) (x ' , y ' , z ' )


1
P ' =T STP

[ ][ ][ ]
x' s x 0 0 ( s x 1) x f x
y ' = 0 sy 0 ( s y 1) y f
y
z' 0 0 s z (s z1) z f z
1 0 0 0 1 1
Transformaciones
Rotacin 2D general sobre cualquier punto de
pivote:
Transformaciones
Rotacin 2D general sobre cualquier punto de
pivote:
1. Trasladar el objeto y el punto de pivote de forma
que ste quede sobre el origen de coordenadas.
2. Rotar el objeto sobre el origen.
3. Trasladar el objeto y el punto de pivote de forma
que ste regrese a su posicin original.
1
P ' ={T ( x r , y r)R( )T ( x r , y r )}P
P ' =R( x r , y r ,)P
Transformaciones
Rotacin 2D general sobre cualquier punto de
pivote:

(x , y) (x ' , y ' )
1
P ' =T RTP

[ ][ ][ ]
x' cos sin x r (cos 1) y r sin x
y ' = sin cos x r sin + y r (cos 1) y
1 0 0 1 1
Transformaciones
Rotacin 3D sobre un eje no alineado con los
ejes de coordenadas:
Transformaciones
Rotacin 3D sobre un eje no alineado con los
ejes de coordenadas:
1. Trasladar el objeto para que el eje de rotacin
pase a travs del origen de coordenadas.
2. Rotar el objeto para que el eje de rotacin se
alinee con el eje de coordenadas.
3. Rotar sobre el eje de coordenadas.
4. Aplicar la rotacin inversa para devolver el eje de
rotacin a su orientacin original.
5. Trasladar el objeto para que el eje de rotacin
retorne a su posicin original.
Transformaciones
Rotacin 3D sobre un eje no alineado con los
ejes de coordenadas:

y y
eje de eje de
rotacin rotacin

z x z x

Posicin original Traslacin al origen


Transformaciones
Rotacin 3D sobre un eje no alineado con los
ejes de coordenadas:

y y
eje de eje de
rotacin rotacin

z x z x

Rotacin hacia el eje Rotacin sobre el eje


Transformaciones
Rotacin 3D sobre un eje no alineado con los
ejes de coordenadas:

y y
eje de eje de
rotacin rotacin

z x z x

Rotacin inversa Traslacin inversa


Transformaciones
Ejercicio 3.1:
Construir la matriz compuesta de
transformacin que permite:
- Aplicar una traslacin de (-5, 4, -3)
- Seguida de una rotacin alrededor del eje y
de 45
- Seguida de un escalamiento de (2, 3, 1/2)
Transformaciones
Ejercicio 3.1:
Traslacin: Escalamiento:

[ ] [ ]
1 0 0 5 2 0 0 0
0 1 0 4 0 3 0 0
0 0 1 3 0 0 1/2 0
0 0 0 1 0 0 0 1
Rotacin:

[ ][ ]
cos(45) 0 sin (45) 0 2/ 2 0 2/2 0
0 1 0 0 0 1 0 0
=
sin (45) 0 cos(45) 0 2/ 2 0 2/2 0
0 0 0 1 0 0 0 1
Transformaciones
Ejercicio 3.1:

[ ][ ][ ]
2 0 0 0 2/2 0 2/2 0 1 0 0 5
0 3 0 0 0 1 0 00 1 0 4 =
0 0 1/ 2 0 2/ 2 0 2/2 0 0 0 1 3
0 0 0 1 0 0 0 1 0 0 0 1

[ ][ ]
2
0 2 0 1 0 0 5
0 3 0 00 1 0 4 =
2/ 4 0 2 /2 0 0 0 1 3
0 0 0 1 0 0 0 1

[ ]
2
0 2 8 2
0 3 0 12
2/ 4 0 2 /2 2/ 4
0 0 0 1
Transformaciones
Ejercicio 3.2:
Aplicar la transformacin compuesta al
tringulo definido por los puntos (5,3,0), (6,7,1)
y (2,8,-2).
Transformaciones
Ejercicio 3.2:

[ ][ ] [ ][ ]
2 0 2 8 2 5 3 2 4.24
0 3 0 12
3 = 21 = 21
2/ 4 0 2 /2 2/ 4 0 6 2/4 2.12
0 0 0 1 1 1 1

[ ][ ] [ ][ ]
2 0 2 8 2 6 2 1.41
0 3 0 12
7 = 33 = 33
2/ 4 0 2 /2 2/ 4 1 5 2/4 1.77
0 0 0 1 1 1 1

[ ][ ] [ ][ ]
2 0 2 8 2 2 8 2 11.31
0 3 0 12 8 = 36 = 36
2/ 4 0 2 /2 2/ 4 2 7 2 / 4 2.47
0 0 0 1 1 1 1
Transformaciones
Transformacin general: cualquier combinacin
de traslaciones, rotaciones, escalas,
reflexiones e inclinaciones.

P ' =T (t x , t y )R( x c , y c ,)S( x c , y c , s x , s y )P

[ ][ ][ ]
x' s x cos s y sin x c (1s x cos)+ yc s y sin + t x x
y ' = s x sin s y cos y c (1 s y cos ) xc s x sin + t y y
1 0 0 1 1
Transformaciones
Transformacin rgida: combinacin de
traslaciones y rotaciones (tambin reflexiones).

P ' =T (t x , t y )R( xc , y c , )P

[ ][ ][ ]
x' cos sin x r (1cos)+ y r sin + t x x
y ' = sin cos y r (1cos) x r sin + t y y
1 0 0 1 1
Transformaciones
Transformacin lineal: preserva la suma
vectorial y la multiplicacin por un escalar.

f ( x+ y )=f ( x)+f ( y )

f ( x)= f ( x)

Rotacin, reflexin, escala, inclinacin.


Transformaciones
Transformacin afn (lineal + traslacin):
preserva puntos, lneas rectas, planos y
relaciones de distancia.

Traslacin, rotacin, reflexin, escala,


inclinacin.

El componente homogneo de las


coordenadas NUNCA cambia.
Transformaciones
Transformacin de proyeccin:
Definicin de la vista de la cmara (campo de
visin, longitud de foco, factor de escala).

Dos posibilidades de proyeccin:


- Proyeccin ortogrfica.
- Proyeccin con perspectiva.
Transformaciones
Transformacin (proyeccin) ortogrfica:
cuadrada en todas las caras, proyeccin
paralela, dimensiones no se alteran.

http://www.we-r-here.com/cad/tutorials/level_1/images/First_angle_projecting.png
Transformaciones
Transformacin (proyeccin) ortogrfica:

(x, y ,z) (x' , y' ,z ')


P ' =PR oP

[ ][ ][ ]
x' 1 0 0 0 x
y' = 0 1 0 0
y
z' 0 0 0 0 z
1 0 0 0 1 1
Transformaciones
Transformacin (proyeccin) ortogrfica:
volumen de visualizacin paraleleppedo,
slo objetos dentro del volumen se dibujan en
la pantalla.

http://www.glprogramming.com/red/chapter03.html
Transformaciones
Transformacin (proyeccin) ortogrfica:
matriz de proyeccin.

[ ]
2 xRight+ xLeft
0 0
xRight xLeft xRight xLeft
2 yTop+ yBottom
0 0
yTop yBottom yTop yBottom
2 zFar + zNear
0 0
zFarzNear zFar zNear
0 0 0 1
Transformaciones
Transformacin (proyeccin) en perspectiva:
objetos lejanos ms pequeos, cercanos ms
grandes, no se preservan las medidas
originales de los objetos.

https://en.wikipedia.org/wiki/Graphical_projection
Transformaciones
Transformacin (proyeccin) en perspectiva:
forma simple, origen como centro de
proyeccin y plano de la imagen en z=1.
(x , y , z ) (x ' , y ' , z ' )
P ' =PR pP

[ ][ ][ ]
x' 1 0 0 0 x
y' = 0 1 0 0
y
z' 0 0 1 0 z
w' 0 0 1 0 1
Transformaciones
Transformacin (proyeccin) en perspectiva:
forma simple, origen como centro de
proyeccin y plano de la imagen en z=1.
Despus de la multiplicacin, el componente w'
puede cambiar, siendo las coordenadas reales:

[] []
xf x'
yf 1 y'
=
zf w ' z'
1 w'
Transformaciones
Transformacin (proyeccin) en perspectiva:
volumen de visualizacin pirmide truncada
(frustum).
Parmetros:
Fovy (fovea): ngulo total de visin vertical.
Aspect (aspecto): razn entre altura y ancho.
zNear: el plano de visualizacin cercano.
zFar: el plano de visualizacin lejano.
(zNear y zFar acotan el volumen de visualizacin).
Transformaciones
Transformacin (proyeccin) en perspectiva:
volumen de visualizacin pirmide truncada
(frustum).

http://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html
Transformaciones
Transformacin (proyeccin) en perspectiva:
matriz de proyeccin.

[ ]
f
0 0 0
aspect
0 f 0 0
zFar+ zNear 2 zFar zNear
0 0
zNear zFar zNear zFar
0 0 1 0

1
f=
tan( fovy / 2)
Prxima semana
Definicin de proyecto:
Definicin de problema, con algo de contexto.
Objetivo del proyecto.
Actividades tentativas.
Referencias.

Presentacin de entre 5 y 8 minutos.


Documento descriptivo.
Ambos en UVirtual antes de la prxima clase.
Transformaciones
Ejercicio 4.1:
Construir las matrices de transformacin 2D
que permiten:
1. Reflejar con respecto a un punto (xrf,yrf).
2. Inclinar en direccin x con respecto a una
lnea y=yc(paralela al eje x).
Aplicarlas a un tringulo 2D definido por los
puntos (5,3), (6,7) y (2,8).
Transformaciones
Ejercicio 4.2:
Construir las matrices de transformacin 3D
que permiten:
1. Reflejar con respecto a una recta paralela al
eje y (x=xc, z=zc).
2. Reflejar con respecto a un plano paralelo al
plano xz (y=yc).
Aplicarlas a un tringulo 3D definido por los
puntos (5,3,0), (6,7,1) y (2,8,-2).
Transformaciones
Ejercicio 4.3:
Construir las matrices de transformacin que
permiten proyectar:
1. Ortogonalmente en un volumen definido en
los rangos (-10,10) para x, (-5,5) para y, (-2,-
10) para z.
2. En perspectiva en un frustum definido con un
ngulo de 40, una razn de aspecto de 9/16, y
un rango de (-2,-10) para z.
Referencias
D. Hearn, M.P. Baker. Grficos por computadora con
OpenGL, 3a edicin. Pearson Prentice Hall, 2006.
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes.
Computer graphics: principles and practice, 2nd edition in
C. Addison-Wesley, 1996.

También podría gustarte