Vous êtes sur la page 1sur 21

PROCESAMIENTO

Tema 4. Transformaciones
AUDIOVISUAL
geomtricas.
Programa de teora
1. Adquisicin y representacin de imgenes. 4.1. Interpolacin y transformaciones bsicas.
2. Procesamiento global de imgenes. 4.2. Transformaciones afines.
3. Filtros y transformaciones locales. 4.3. Transformaciones bilineal y perspectiva.
4. Transformaciones geomtricas.
5. Espacios de color y el dominio frecuencial. 4.4. Transformaciones de mapeo.
6. Anlisis de imgenes. A.4. Transf. geomtricas OpenCV.
7. Vdeo y sonido digital.

Procesamiento
(c) Gins Garca Audiovisual
Mateos, http://dis.um.es/profesores/ginesgm 1 Procesamiento Audiovisual 2
Temade4.Informtica
Dept. Transformaciones geomtricas.
y Sistemas, Universidad de Murcia Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Ejemplo. Desplazamiento y recorte (trim): dada una
90 67 75 78 Transf. global 62 68 78 81 imagen A, seleccionar un trozo rectangular, desde el
92 87 78 82 Transf. local 102 89 76 85 punto (x0, y0) con tamao (tX, tY).
45 83 80 130 83 90 80 111 A
R: imagen de (0..tX-1, 0..tY-1)
39 69 115 154 69 92 69 121
Tr. geomtrica R(x,y):= A(x+x0, y+y0), (x,y)R tX
Entrada Salida (x0,y0)
Qu pasa si A(x+x0, y+y0)
R(x,y):= A(f1(x,y), f2(x,y)) est fuera de rango? tY
Asignar alguna constante a R.
Transformacin geomtrica: el valor de un pxel No modificar lo que hubiera
depende de otro pxel (o varios) cuya posicin es antes en R.
calculada a travs de un par de funciones f1 y f2. Normalmente esta transformacin R
El tamao de la imagen de salida puede ser distinto del no aparece de forma explcita, sino
tamao de la imagen de entrada. implcitamente, al trabajar con ROI
Procesamiento Audiovisual 3 Procesamiento Audiovisual 4
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Reflejos y rotaciones exactas (s. horario) A 0 1 2 En general la transformacin tendr la forma:
Sea A la imagen de entrada, de (0..mX, 0..mY) 0 R(x, y):= A(f1(x,y), f2(x,y))
La esquina superior izquierda es (0, 0) 1 Siendo f1 y f2 dos funciones cualesquiera del tipo:
Espejo horizontal: R(x,y):= A(mX-x, y) f1, f2: N x N R
R: (0..mX, 0..mY) f1: posicin en X del original para el pxel resultante (x,y)
Espejo vertical: R(x,y):= A(x, mY-y) f2: posicin en Y del original para el pxel resultante (x,y)
R: (0..mX, 0..mY)
Ejemplo. En la rotacin de 180
Rotar 90: R(x,y):= A(y, mY-x) f1(x,y):= mX-x f2(x,y):= mY-y
R: (0..mY, 0..mX) 0 1 2
Rotar 180: R(x,y):= A(mX-x, mY-y) 0
A 0 1 2
R: (0..mX, 0..mY) 1
Rotar 270: R(x,y):= A(mx-y, x) 0
R
R: (0..mY, 0..mX) 1
Procesamiento Audiovisual 5 Procesamiento Audiovisual 6
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

1
4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.
... R Qu ocurre si el resultado es un nmero no Problema: las imgenes son seales discretas, pero la
entero? transformacin geomtrica las trata como si fueran
continuas (definidas en todo el plano).
Por ejemplo, se puede conseguir un aumento de 2x
con una transformacin del tipo: A 0 1 2 X
R(x,y):= A(x/2, y/2), con R: (0..2mX+1, 0..2mY+1) 0
0 1 2 3 4 5
0 1 2 0 Cunto vale la
A 0 R 1 imagen ah?
1 2 1
3 Y
R(0, 0):= A(0/2, 0/2) = A(0, 0) OK ndices no definidos Solucin: aplicar una interpolacin.
R(1, 0):= A(1/2, 0/2) = A(0.5, 0) en el array. Qu Tipos de interpolacin: vecino ms prximo, bilineal,
hacer ah? bicbica, supermuestreo.
R(1, 1):= A(1/2, 1/2) = A(0.5, 0.5)
Procesamiento Audiovisual 7 Procesamiento Audiovisual 8
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Interpolacin: Vecino ms prximo Ejemplo. Zoom de 10x con vecino ms prximo.
Cualquier punto del espacio toma el valor del pxel ms R(x,y):= A(x/10 , y/10)
cercano.
A 0 1 2 X

Imagen Imagen
original ampliada
1
25x26 250x260
Y
Ventajas:
Implementacin:
Es muy sencilla y rpida de calcular.
f1(x,y) f1(x,y) + 0,5 Inconvenientes:
R(x,y)= A(f1(x,y) + 0,5, f2(x,y) + 0,5)
f2(x,y) f2(x,y) + 0,5 El efecto de cuadriculado es evidente, y da lugar
imgenes de poca calidad.
Procesamiento Audiovisual 9 Procesamiento Audiovisual 10
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Interpolacin bilineal En dos dimensiones, la interpolacin bilineal consiste en
En una dimensin, una interpolacin lineal significa trazar aplicar dos interpolaciones lineales:
una lnea recta entre cada par de puntos consecutivos. 1. Interpolar la funcin horizontalmente, en las filas existentes.
Valores 2. Interpolar la funcin verticalmente en todo el espacio
interpolados (usando la anterior).

Media ponderada, A(x,y) 0 1 2 X


1 interpolar
A(x) a 1-a de los valores de horizontalmt.
0
i y d segn la
0 1 p 2 X distancia a
2 interpolar
Clculo de la interpolacin lineal. Sea p el punto que verticalmt.
queremos interpolar. 1
Sup. que p se encuentra entre i y d, es decir: i= p, d= i+1 Y
El valor interpolado en p ser: A(p):= (1-a)A(i) + aA(d) Cmo calcular el valor interpolado de un punto (px, py),
siendo a= p-i A(px,py)?
Procesamiento Audiovisual 11 Procesamiento Audiovisual 12
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

2
4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.
Sea p= (px, py), con i= px, d= i+1, s= py, r= s+1 Ejemplo. Zoom de 10x con interpolacin bilineal.
con a= px-i, b= py-s R(x,y):= A(x/10, y/10)
A(x,y) i d X

s
b
(px,py)
1-b Imagen
r Media ponderada original
de los 4 pxeles 25x26
Y a 1-a
circundantes
Clculo de la interpolacin bilineal:
A(px, s) = (1-a)A(i, s) + aA(d, s) Esto recuerda a
A(px, r) = (1-a)A(i, r) + aA(d, r) una convolucin, Vecino ms prximo Interpolacin bilineal
A(px, py) = (1-b)A(px, s) + bA(px, r) no? Indicacin: un zoom entero de K con interpolacin bilineal
A(px, py) = (1-a)(1-b)A(i, s) + a(1-b)A(d, s) + es parecido (= a veces) a un zoom de K con vecino ms
(1-a)bA(i, r) + abA(d, r) prximo, seguido de un filtro de media de KxK.
Procesamiento Audiovisual 13 Procesamiento Audiovisual 14
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


La interpolacin bilineal mejora la de vecino ms prximo, Clculo de la interpolacin cbica.
pero produce un efecto de zonas rectangulares. Sea p el punto que queremos interpolar. i= p
Interpolacin bicbica: basada en dos interpolaciones Obtener las 4 ecuaciones:
cbicas. A(i-1)=A(i-1); A(i)=A(i); A(i+1)=A(i+1); A(i+2)=A(i+2)
En una dimensin, la interpolacin cbica consiste en 4 ecuaciones, 4 incgnitas despejar y obtener c1, c2, c3, c4
trazar una cbica entre los 4 puntos ms prximos (2 a la Aplicar las constantes, obteniendo A(p)
izquierda y 2 a la derecha).
Valores Interpolacin bicbica. Igual que la bilineal, se basa en
A(x) = c1x3 + c2x2 + c3x + c4 interpolados dos interpolaciones cbicas:
1. Interpolacin cbica horizontal, en las filas existentes
(usando 4 puntos).
2. Interpolacin cbica vertical en todo el espacio usando
A(x) 4 puntos (usando la anterior interpolacin).
En la interpolacin bicbica de un punto (px, py)
i-1 i p i+1 i+2 X intervienen los 16 puntos circundantes.
Procesamiento Audiovisual 15 Procesamiento Audiovisual 16
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Clculo de la interpolacin bicbica. Ejemplo. Zoom de 10x con interpolacin bicbica.
i-1 i i+1 i+2
X
Igual que con la j-1
bilineal, el valor
del punto se
puede calcular j
b
como una media Y (px,py)
ponderada de Imagen
los 4x4 pxeles j+1
a original
circundantes. 25x26
j+2
A(px,py) = n=-1..2m=-1..2 A(i+n,j+m)P(n-a)P(b-m) Aumento de 10x con Aumento de 10x con
Siendo: P(k) = 1/6(C(k+2)3-4C(k+1)3+6C(k)3-4C(k-1)3) interpolacin bilineal interpolacin bicbica

C(k) = max(0, k)
Procesamiento Audiovisual 17 Procesamiento Audiovisual 18
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

3
4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.
Comparacin. Detalle del zoom de 10x, con vecino ms La interpolacin tambin es importante en las rotaciones
prximo, interpolacin bilineal y bicbica. Se ha aplicado un no exactas (que veremos ms adelante) y, en general, en
perfilado en las 3, para destacar el efecto del zoom. cualquier transformacin geomtrica.
Este artificio de escalonamiento
abrupto es conocido como aliasing

Vecino ms prximo Interpolacin bilineal Interpolacin bicbica Vecino ms prximo Interpolacin bilineal Interpolacin bicbica
En todos los casos se nota la falta de detalle (obviamente), La interpolacin bicbica siempre suele producir el mejor
pero en la bilineal son ms evidentes los artificios resultado, aunque es algo ms costosa.
horizontales y verticales que en la bicbica.
Merece la pena el aumento de tiempo respecto a la bilineal?
Procesamiento Audiovisual 19 Procesamiento Audiovisual 20
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


En las operaciones de reduccin tambin se aplican El problema no se soluciona con interpolacin bilineal o
interpolaciones, pero... bicbica.
Observar estas
Reduccin de k: R(x, y):= A(kx, ky), con R: mX/kextraas.
estructuras x mY/k
Ejemplo. Reduccin de 5x. Esto tb. es aliasing

Imagen original Reduccin de 5x con Reduccin de 5x con


500x386 interpolacin bilineal interpolac. bicbica
El problema se debe a que los detalles son ms pequeos
que la resolucin de salida. Pero, adems, los mtodos de
Imagen original Reduccin de 5x con interpolacin no mejoran la situacin: cada pxel de salida
500x386 vecino ms prximo es un muestreo ordenado de uno de entrada.
Procesamiento Audiovisual 21 Procesamiento Audiovisual 22
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.


Ejemplo. Reduccin de 3x. R(x,y) = A(3x, 3y) Supermuestreo uniforme, en rejilla cuadrada.
Todos esos pxeles no
0.75

1.25
0.5

1.5

0 1 2 3 4 5 influyen en el resultado R(x,y) X


1

A(f1(1,0.5), f2(1,0.5))
0 0 1 0.5
A(f1(1.25,0.75), f2(1.25,0.75))
1 0 0.75
A R
2 1 1 A(f1(1,1), f2(1,1))
3 1.25
A(f1(1.25,1.5), f2(1.25,1.5))
1.5
Y
Solucin: cada pxel de salida debera ser la media de los
3x3 pxeles de entrada correspondientes. R(x,y):= media {A(f1(x-0.5,y-0.5), f2(x-0.5,y-0.5)), ...
Interpolacin por supermuestreo (super sampling) A(f1(x-0.5,y+0.5), f2(x-0.5,y+0.5)), ..., A(f1(x,y-0.5), f2(x,y-0.5)),
Idea: considerar el pxel como un volumen con cierto rea. ..., A(f1(x,y+0.5), f2(x,y+0.5)), ..., A(f1(x+0.5,y-0.5), f2(x+0.5,y-
Aplicar varias veces la transformacin y tomar la media. 0.5)), ..., A(f1(x+0.5,y+0.5), f2(x+0.5,y+0.5))}
Procesamiento Audiovisual 23 Procesamiento Audiovisual 24
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4
4.1. Interpolacin y transf. bsicas. 4.1. Interpolacin y transf. bsicas.
Ejemplo. Reduccin de 5x, con supermuestreo. Una alternativa al supermuestreo es aplicar primero un
filtro de suavizado (por ejemplo, de media) y despus un
simple vecino ms prximo.

Imagen original Reduccin de 5x con Reduccin de 5x con


500x386 interpolacin bilineal supermuestreo
Resultado: el supermuestreo logra un resultado de mucha Imagen suavizada Reduccin de 5x con Reduccin de 5x con
ms calidad. Evita el problema del aliasing. con media de 5x5 vecino ms prximo, supermuestreo, de
de la suavizada la original
Sin embargo, el supermuestreo es mucho ms costoso,
requiere ms clculos. Pero esto slo es aplicable en las transformaciones que
Cuanto mayor reduccin, mayor es el efecto del aliasing. impliquen una reduccin de resolucin.
Procesamiento Audiovisual 25 Procesamiento Audiovisual 26
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.1. Interpolacin y transf. bsicas. 4.2. Transformaciones afines.


Las transformaciones afines son cualquiera de los
Conclusiones cuatro tipos siguientes, o combinaciones de las mismas.
Transformacin geomtrica: cada pxel de salida Traslacin Escala
depende de uno de entrada cuya posicin es calculada de
acuerdo a un par de funciones.
Como las posiciones pueden ser no enteras, es necesario
aplicar interpolaciones: vec. ms prximo, bilineal, bicbica.
En zoom, funciona mejor la bicbica. En reduccin, el
supermuestreo. Pero son ms costosas que las otras. Rotacin
Las interpolaciones bilineal y bicbica (y otras ms Inclinacin
avanzadas) dan la sensacin de mejorar la resolucin de
la imagen, pero cuidado...
Cualquier detalle aparente de resolucin inferior a un pxel
es una mera alucinacin.
Procesamiento Audiovisual 27 Procesamiento Audiovisual 28
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Transformacin de traslacin (desplazamiento): A tX Trasladar (dx, dy)
R(x,y):= A(x+dx, y+dy) (dx,dy)
y recortar (tx, ty) R
Ejemplos. Traslacin (1, 1) Traslacin (-1, -1)
R1(x,y):= A(x+1,y+1) R2(x,y):= A(x-1,y-1) tY
A

Aplicaciones:
Seleccionar y recortar una regin rectangular.
Aunque, como ya hemos visto, no suele aparecer de
Si las imgenes A y R tienen el mismo tamao, algunos forma explcita, sino al manejar ROI.
pxeles caen fuera de la imagen A. Qu valor toman? Tambin suele aparecer en combinacin con las otras
Ms que una interpolacin sera una extrapolacin... operaciones, para centrar la imagen resultante.
Pero no tiene mucho sentido. Se puede usar mejor un valor Ejemplo. Recordar la operacin de rotacin de 180:
constante predefinido. O no modificar el contenido previo. R(x, y):= A(mX-x, mY-y)
Procesamiento Audiovisual 29 Procesamiento Audiovisual 30
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

5
4.2. Transformaciones afines. 4.2. Transformaciones afines.
Transformacin de escala: ax, ay mayor que 1 Aumento o zoom de la imagen
R(x,y):= A(exx, eyy) Aplicar interpolacin bilineal o bicbica.
ax, ay menor que 1 Reduccin (decimate) de la imagen
ex = escala en el eje X
Aplicar supermuestreo o suavizado previo.
ey = escala en el eje Y
Normalmente ser igual en ambos ejes (ex=ey), aunque Ejemplos. Transformaciones de escala.
puede ser distinta. A R1 R2
Pero es ms intuitivo el concepto de aumento o zoom: ax= ay= 0,8 ax= 2 ay= 0,5
R(x,y):= A(x/ax, y/ay)
ax = aumento en el eje X = 1/ex
ay = aumento en el eje Y = 1/ey
Si la imagen A es de tamao mX x mY, la imagen resultante Reducir al 80% Aumentar el doble
R ser de mXax x mYay El aumento sirve para hacer zoom en X y reducir a la
digital, pero recordar sus limitaciones. mitad en Y
Procesamiento Audiovisual 31 Procesamiento Audiovisual 32
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Transformacin de rotacin: Rotacin de una imagen A en un ngulo :
Hemos visto las rotaciones exactas (90, 180, 270), pero R(x,y):= A(xcos + ysen , -xsen + ycos )
cmo realizar una rotacin de un ngulo cualquiera (en La rotacin se suele expresar matricialmente:
sentido horario)? Punto en A cos sen x Lo que cae fuera
R(x,y):= A( ) de la imagen no
X -sen cos y
se modifica
(x,0) Ejemplos. Rotar 10 Rotar -10
Punto en R
Punto en R
(0,y) Punto en A
Y
El punto (x, 0) en R corresponde en A a (xcos , -xsen )
El punto (0, y) en R en A a (ysen , ycos )
(x, y) en R (xcos + ysen , -xsen + ycos ) en A Ojo: estas rotaciones son respecto al punto (0,0). Cmo
hacerlas respecto a un centro arbitrario (cx,cy)?
Procesamiento Audiovisual 33 Procesamiento Audiovisual 34
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Rotacin de A en un ngulo , respecto a un centro (cx,cy) Ejemplos. Rotaciones respecto a un centro cualquiera.
Idea: es equivalente a una rotacin respecto a (0,0), seguida Imagen de entrada Rotar -10 Rotar 10
de un desplazamiento (dx, dy) adecuado. Cunto?
El centro no se debe modificar: R(cx,cy):= A(cx,cy)
R(cx,cy):= A(cxcos +cysen +dx, -cxsen +cycos +dy)
Solucin:
dx= cx - cxcos - cysen ; dy= cy + cxsen - cycos
Matricialmente, la rotacin con centro (cx,cy) sera:
Se ha utilizado
x interpolacin
cos sen cx - cxcos - cysen bicbica.
R(x,y):= A( y ) Recordar la
-sen cos cy + cxsen - cycos
1 importancia de la
interpolacin.
Vecino ms prximo Interpolacin bilineal
Procesamiento Audiovisual 35 Procesamiento Audiovisual 36
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

6
4.2. Transformaciones afines. 4.2. Transformaciones afines.
Transformacin de inclinacin (shear): Cmo obtener la transformacin de inclinacin?
La inclinacin transforma una regin rectangular en un Ejemplo. Inclinacin en X de cantidad ix.
rombo. Sirve para simular una perspectiva. xa X
Posibilidades: inclinacin en X, en Y o en ambos ejes. g
Imagen de entrada Inclinacin en X de b/a Inclinacin en X de -b/a Punto en A
(xr, yr)
ya
a a (xa, ya) Punto en R
1
Y ix
b b
Inclinacin en Y de b/a Inclinacin en Y de -b/a Inclinacin en X e Y (xa, ya) = (xr-g, yr). Pero, cunto vale g?
a b b Por analoga de tringulos: g/yr = ix/1 g= ixyr
a
Inclinacin en X en cantidad ix:
R(x, y):= A(x - ixy, y)
El valor de inclinacin es la tangente del ngulo.
Procesamiento Audiovisual 37 Procesamiento Audiovisual 38
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


De manera similar... inclinacin en Y en cantidad iy: Parte de la imagen se sale.
R(x, y):= A(x, y - iyx) Solucin: igual que antes, aplicar un desplazamiento para
Inclinacin X en ix, Y en iy: centrar el resultado. De cunto?
R(x, y):= A(x - ixy, y - iyx) O bien, ampliar el tamao de la imagen resultado para que
Matricialmente: quepa toda la imagen.
1 -ix x Cunto? En X: abs(ix)mY; en Y: abs(iy)mX
R(x,y):= A( )
-iy 1 y Ejemplos. Inclinacin ix=0,1;iy=0,3
Inclinacin iy=0,2
Ejemplos. Inclinacin ix=-0,4; iy=0 Inclinacin ix=0; iy=0,2 Inclinacin ix=-0,4

Procesamiento Audiovisual 39 Procesamiento Audiovisual 40


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Qu tienen en comn todas las transformaciones afines? Podemos definir una transformacin afn genrica:
Todas ellas se pueden expresar de forma matricial: x
c11 c12 c13
x R(x,y):= A( y )
c11 c12 c13 c21 c22 c23
R(x,y):= A( y ) 1
c21 c22 c23
1 La matriz ((c11,c12,c13),(c21,c22,c23)) son los parmetros de la
transformacin. Puede implicar escalas, traslaciones,
Traslacin Escala Rotacin Inclinacin
rotaciones, etc.
1 0 dx ex 0 0 cos sen 0 1 -ix 0 Cmo calcular la tr. afn equivalente a dos tr. afines?
0 1 dy 0 ey 0 -sen cos 0 -iy 1 0 Usar el producto matricial, aadiendo una fila con (0, 0, 1).
c11 c12 c13 d11 d12 d13 r11 r12 r13
Es ms, cualquier combinacin de transformaciones
c21 c22 c23 x d21 d22 d23 = r21 r22 r23
afines es una transformacin afn, y se puede expresar de
forma matricial. 0 0 1 0 0 1 0 0 1
Procesamiento Audiovisual 41 Procesamiento Audiovisual 42
Tema 4. Transformaciones geomtricas. + Tema 4. Transformaciones geomtricas. +

7
4.2. Transformaciones afines. 4.2. Transformaciones afines.
Ejemplo. Sobre una imagen aplicamos 1) traslacin (a, b), Uso. Una transformacin afn permite mapear una regin
2) escala (c, d), 3) rotacin e, y 4) traslacin (f, g). rectangular cualquiera en un rombo cualquiera. O, en
Podemos calcular la matriz de transformacin equivalente: general, cualquier rombo en otro rombo (se supone que un
rectngulo es tambin un rombo).
1 0 f cos e sen e 0 c 0 0 1 0 a
x -sen e cos e 0 x x 0 Transformacin
0 1 g 0 d 0 1 b
afn genrica
0 0 1 0 0 1 0 0 1 0 0 1

ccos e dsen e accos e+f+bdsen e


= -csen e dcos e bdcos e+g-acsen e Cmo calcular los parmetros de esta transformacin?
0 0 1 Problema: dado un rombo en la imagen original y otro
rombo en la imagen de destino, calcular la transformacin
En lugar de aplicar 4 transformaciones sobre toda la
afn que realiza ese mapeo.
imagen, basta con aplicar la transformacin equivalente.
Procesamiento Audiovisual 43 Procesamiento Audiovisual 44
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas. +

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Nota: un rombo queda completamente definido por 3 puntos. Ecuaciones a resolver:
Coordenadas en A Coordenadas en R c11x1a + c12y1a + c13 = x1r c21x1a + c22y1a + c23 = y1r
X Transformacin X c11x2a + c12y2a + c13 = x2r c21x2a + c22y2a + c23 = y2r
(x2a, y2a) afn genrica c11x3a + c12y3a + c13 = x2r c21x3a + c22y3a + c23 = y3r
(x1r, y1r) (x2r, y2r)
(x1a, y1a) ((c11,c12,c13),
(c21,c22,c23)) 6 ecuaciones y 6 incgnitas Se resuelven las
incgnitas (mtodo de Cramer) y despachados.
Y (x3a, y3a) Y Existir solucin si los 3 puntos de A no estn en la misma
(x3r, y3r) recta, y los 3 de R tampoco.
6 incgnitas (cij) Necesitamos 6 ecuaciones para Una vez resueltas las incgnitas, aplicamos la
resolverlas. Cules? transformacin afn buscada:
xia x
Cada punto produce c11 c12 c13 xir c11 c12 c13
dos ecuaciones: y
ia = R(x,y):= A( y )
c21 c22 c23 yir c21 c22 c23
1 1
Procesamiento Audiovisual 45 Procesamiento Audiovisual 46
Tema 4. Transformaciones geomtricas. + Tema 4. Transformaciones geomtricas.

4.2. Transformaciones afines. 4.2. Transformaciones afines.


Ejemplo 1. La aplicacin ms inmediata y tpica de las
transformaciones afines es extraer y redimensionar un rea Este proceso de normalizacin se puede aplicar sobre
de inters, dndole una forma predefinida de antemano. vdeo, para conseguir una estabilizacin de los
Esto es lo que se llama normalizacin. objetos de inters.
Por ejemplo, detectar una cara humana, seleccionar los
ojos y la boca y mapearlos a un rectngulo predefinido.
Imagen de entrada Cara detectada Cara
normalizada

Transf.
afn

Procesamiento Audiovisual 47 Procesamiento Audiovisual 48


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

8
4.2. Transformaciones afines. 4.2. Transformaciones afines.
Ejemplo 2. La normalizacin es fundamental en muchas Detectar y separar Segmentar los
aplicaciones de reconocimiento de objetos, como los OCR Texto rectificado las lneas caracteres
(Optical Character Recognition).
Se aplica: umbralizacin, segmentacin, normalizacin y
comparacin.
Rectificar: detectar
Imagen de entrada Umbralizar orientacin y rotar

Aqu se usan integrales proyectivas


Normalizar cada
carcter a un Comparar con un conjunto Tomar el
tamao estndar de patrones (p.ej. diferencia) mximo
a e i
Es
Sera conveniente una una
tcnica adaptativa a!!
Procesamiento Audiovisual 49 Procesamiento Audiovisual 50
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Las transformaciones bilineal y perspectiva se Las transformaciones afines conservan el paralelismo de
pueden ver como generalizaciones de las afines: las lneas; bilineales y perspectivas no.
Transformacin afn: cualquier rombo se mapea en un rombo. La transf. perspectiva es la proyeccin perspectiva de un
plano, colocado en un espacio 3D.
Transf. bilineal y perspectiva: cualquier cuadriltero se
transforma en otro cuadriltero (ambos convexos). La transf. bilineal se suele usar como una variante rpida
de la transf. perspectiva, aunque no es exactamente igual.
Transf. Es decir, se debera aplicar perspectiva, pero se usa bilineal
bilineal por eficiencia.
Imagen original Transf. afn Transform. Transform. Transform.
Imagen original afn bilineal perspectiva

Transf.
perspectiva

Procesamiento Audiovisual 51 Procesamiento Audiovisual 52


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Transformaciones afines: Recordar la proyeccin perspectiva en el proceso de
x formacin de imgenes.
c11 c12 c13 Distancia focal = 1 La proyeccin del
R(x,y):= A( y ) X, Y
c21 c22 c23 Observar el
punto P = (x, y, z)
1 Punto es P = (x/z, y/z)
nuevo factor
principal
Transformaciones bilineales: que aparece
x
Eje ptico Z
c11 c12 c13 c14 y Centro de P
R(x,y):= A( ) Proyeccin
c21 c22 c23 c24 xy Pero, cuntos (0,0,0) P = (x,y,z)
Plano de
grados de liber- Proyeccin
1 tad hay aqu?
Transformaciones perspectivas:
La idea de la transf. perspectiva es: dado un plano (la
x c11 c12 c13 x
imagen de entrada) colocarlo en una posicin cualquiera
R(x,y):= A(x/z, y/z) con: y = c21 c22 c23 y del espacio 3D y despus proyectarlo sobre el plano de
z c31 c32 c33 1 imagen Z=1.
Procesamiento Audiovisual 53 Procesamiento Audiovisual 54
Tema 4. Transformaciones geomtricas. + Tema 4. Transformaciones geomtricas.

9
4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.
X La transf. bilineal es una simulacin de la perspectiva.
Y
Tambin mapea un rectngulo en un cuadriltero.
Pero el resultado no es exactamente una perspectiva. La
diferencia es mayor cuanto mayor efecto de perspectiva.
Z

Transformac.
Centro de

bilineales
Proyeccin Eje ptico
de
no
Pla eccin
ro y
P

1) Colocar la imagen plana 2) Proyeccin perspectiva de


en el espacio 3D

Transformac.
la imagen en el espacio

perspectivas
x c11 c12 c13 x
y = c21 c22 c23 y R(x,y):= A(x/z, y/z)
z c31 c32 c33 1
Procesamiento Audiovisual 55 Procesamiento Audiovisual 56
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Problema: dados 4 puntos en la imagen original y otros 4 Transformacin bilineal: 8 incgnitas. Cada par de puntos
en la imagen de destino, calcular las transformaciones equivalentes produce 2 ecuaciones con 4 puntos es
bilineal y perspectiva que producen ese mapeo. necesario y suficiente.
Solucin: plantear los sistemas de ecuaciones x
correspondientes y resolver las incgnitas. c11 c12 c13 c14 y
R(x,y):= A( )
c21 c22 c23 c24 xy
Coordenadas en A Coordenadas en R 1
X Transformacin X
Ecuaciones a resolver:
(x2a, y2a) bilineal /
(x1r, y1r) (x2r, y2r) c11x1a+c12y1a+c13x1ay1a+c14=x1r; c21x1a+c22y1a+c23x1ay1a+c24= y1r
(x1a, y1a) perspectiva
......... ........
c11x4a+c12y4a+c13x4ay4a+c14=x4r; c21x4a+c22y4a+c23x4ay4a+c24= y4r
(x3a, y3a)
Y (x4a, y4a) Y Para que haya solucin, los cuadrilteros deben ser
(x4r, y4r) (x3r, y3r) convexos y no deben haber tres puntos en la misma recta.
Procesamiento Audiovisual 57 Procesamiento Audiovisual 58
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Transformacin perspectiva: 9 incgnitas, 4 puntos... ? Indicaciones:
x c11 c12 c13 x Las transformaciones bilineales y perspectivas contienen
R(x,y):= A(x/z, y/z) a las afines:
y = c21 c22 c23 y
Transf. bilineal: ser equivalente a una afn si c13=c23=0
z c31 c32 c33 1
Transf. perspectiva: equivalente a una afn si c31=c32=0
Cada par de puntos (xia,yia), (xir,yir) produce dos ecuaciones:
Los tres tipos de transformaciones son invertibles: dada
(c11xia+c12yia+c13)/(c31xia+c32yia+c33)= xir
una transf. se puede definir la transf. inversa, de manera
(c21xia+c22yia+c23)/(c31xia+c32yia+c33)= yir que se obtenga la imagen original (o casi).
Sistema homogneo e indeterminado (8 ec., 9 inc.).
Observar que aparece un factor de escala. Si multiplicamos
todas las constantes por k el sistema no cambia.
Se puede resolverlo fijando la incgnita c33=1. Nos
quedamos con 8 incgnitas, resolvemos y listos.
Procesamiento Audiovisual 59 Procesamiento Audiovisual 60
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

10
4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.
Transformaciones inversas: Ejemplo 1. La invertibilidad de la proyeccin perspectiva
puede ser til en navegacin de robots.
Cmo obtener las transformaciones inversas?
Idea: dada una imagen tomada con una cmara desde el
Si una transf. perspectiva est definida por una matriz A
robot, obtener una vista superior. De esta forma, el robot
(3x3), la transf. perspectiva inversa usar la matriz A-1.
puede conocer las zonas por las que se puede mover.
En el caso de la transf. afn, se puede extender la matriz de
Inverse Perspective Mapping: transformacin inversa a la
(3x2) a una de (3x3) y obtener la inversa.
perspectiva producida por la cmara, respecto a cierto plano.
c11 c12 c13 Calcular la Imagen de entrada
c11 c12 c13
c21 c22 c23 inversa de la
c21 c22 c23 Aqu se pueden
0 0 1 matriz tomar distan-
cias y ngulos.
I.P.M.
En la original no
Ejercicio. Calcular la inversa de una transf. bilineal dada
por una matriz de coeficientes, de (4x2).

Procesamiento Audiovisual 61 Procesamiento Audiovisual 62


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


La tcnica de I.P.M. se ha aplicado en conduccin Ejemplo 2. Integracin de elementos visuales artificiales
automtica de vehculos. I.P.M. de la imag. en un entorno. El objetivo es hacer que algo que no est
Imag. capturada capturada (vista parezca que realmente est.
desde el coche TOP)
Problema: qu transformacin perspectiva se debe aplicar
para que la integracin sea realista. Calibracin.
Pasos:
1) Detectar el suelo
(color verde).
http://www.argo.ce.unipr.it/ARGO/
2) Transformacin
perspectiva del
El elemento.
proyecto
es un 3) Media ponderada
poco entre el suelo y la
antiguo,
pero imagen
bueno... transformada.
Procesamiento Audiovisual 63 Procesamiento Audiovisual 64
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Cmo hacer la Ejemplo 3. Engaando a la perspectiva. Usando mapeo
calibracin? inverso de perspectiva, se puede hacer que un dibujo (real)
Manualmente: visto en perspectiva parezca tener otra perspectiva, y por
seleccionar el tanto ocupe un espacio que realmente no ocupa.
cuadriltero en la
Este efecto visual
imagen donde se
slo funciona desde
proyectar el
un punto de vista
elemento.
dado. Est diseado
para ese punto.
Automticamente. Una vez
Ms complejo. P.ej. localizado el Idea: el dibujo real a
encontrando las campo, colocar poner es el I.P.M.
los elementos del original, segn la
lneas del campo, en unos sitios
las blancas y las del predefinidos
transf. perspectiva
corte del csped. observada en la
escena.
Procesamiento Audiovisual 65 Procesamiento Audiovisual 66
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

11
4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.
Pasos:
4) Sobre la imagen del
1) Poner el panel donde paso 3, aplicar una
ir el dibujo en la transformacin
escena, y capturar perspectiva, desde el
una imagen desde el cuadriltero del paso
punto deseado. 2, hasta el rectngulo
2) Calibrar: encontrar los dado por el tamao
4 puntos del rectngulo del panel.
del panel. 5) Imprimir el panel y
3) Aadir sobre la colocarlo en el mismo
imagen tomada sitio.
el dibujo que se 6) Y... Voil!!
quiere poner (con
la escala y traslacin
adecuadas).
Procesamiento Audiovisual 67 Procesamiento Audiovisual 68
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.3. Transformacin bilineal y perspectiva.


Ejemplo 4. Transformaciones de malla. Es una Cmo conseguir la transformacin de malla?
transformacin libre y que da mucho juego. Sobre la La idea es muy sencilla:
imagen original definimos una malla de puntos de control. La malla define una serie de rectngulos de posiciones
Estos puntos se pueden mover, y la imagen resultande debe conocidas.
modificarse coherentemente con los puntos de control. Despus de mover los puntos de la malla, conocemos el
Imagen original Imagen transformada cuadriltero al que se debe mapear cada rectngulo original.
En este caso, suele ser ms conveniente aplicar una
transformacin bilineal.
Se repite el proceso para todos los rectngulos originales.
Transformacin
bilineal
especfica para
cada trozo

Procesamiento Audiovisual 69 Procesamiento Audiovisual 70


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.3. Transformacin bilineal y perspectiva. 4.4. Transformaciones de mapeo.


Conclusiones: Recordemos que una transformacin geomtrica es
Las transformaciones afines, bilineales y perspectivas son cualquier operacin del tipo:
esenciales en generacin, procesamiento, anlisis de R(x, y):= A(f1(x,y), f2(x,y))
imgenes, y en visin artificial.
Siendo f1 y f2 dos funciones cualesquiera:
Transformaciones afines: mapean un rombo en otro rombo. 3
puntos en la imagen origen y 3 en el destino. f1, f2: N x N R
Transf. bilineales y perspectivas: mapean un cuadriltero f1: posicin en X del original para el pxel resultante (x,y)
convexo en otro cuadriltero convexo. 4 puntos en el origen y 4 f2: posicin en Y del original para el pxel resultante (x,y)
en el destino.
Las transformaciones afines conservan el paralelismo de Las transformaciones vistas hasta ahora tienen formas
las rectas. particulares y son continuas.
Hay que conocer el significado de cada transformacin para
Un mapeo (mapping) es cualquier transformacin
saber cul conviene aplicar.
arbitraria, definida por un par de funciones f1 y f2,
Cmo se podra extender la idea a vdeo, considerando la
continuas o escalonadas.
escala temporal?
Procesamiento Audiovisual 71 Procesamiento Audiovisual 72
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

12
4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.
A f1(x,y) R Ejemplo 1. Difuminado aleatorio, de radio a:
f2(x,y) f1(x,y):= x+random(2a+1)-a f2(x,y):= y+random(2a+1)-a
(x,y) A R1
(x,y)

a=1
g1(x,y)
g2(x,y)
Mapeo inverso: el mapeo puede venir dado al revs:
R(g1(x,y), g2(x,y)):= A(x,y)
Significado: el pxel (x,y) en la imagen original se mueve a R2 R3
la posicin (g1(x,y), g2(x,y)).

a = 20
a=5
Normalmente trabajaremos con mapeo directo.

Existen infinitos mapeos. Cualquier par de funciones locas,


(f1, f2), es posible, pero cules son plausibles?
Procesamiento Audiovisual 73 Procesamiento Audiovisual 74
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Ejemplo 2. Pixelado: f1(x,y):= x/8*8; f2(x,y):= y/8*8 Los mapeos pueden servir para simular las deformaciones
A R producidas por fenmenos fsicos naturales.
Aplicado Por ejemplo, cmo se deforma una imagen pegada a un
slo en la cilindro (como una etiqueta de una botella)?
ROI.

Ejemplo 3. Efecto de cristal a cuadros:


f1(x,y):= xx mod 30+y mod 30; f2(x,y):= yy mod 30+x mod 30
A R La coordenada Y no se R
modifica: f2(x, y):= y
Qu pasa con la X?
A
La X de R es el coseno del
ngulo correspondiente en A.
Procesamiento Audiovisual 75 Procesamiento Audiovisual 76
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


1 0 -1 1-xR/(mx/2) Ejemplo. Aplicacin de la transformacin cilndrica.
0 mx/2 mx
= arcos (1-xR/(mx/2)) Imagen de entrada Tr. cilndrica en X Tr. cilndrica en Y
xR
0 mx
xA = mx/
xA
mx/2
Conclusin. Transformacin
cilndrica en X: R(x,y):= A(arcos(1-x/(mx/2))mx/, y)

Representacin de la funcin
Interpretacin de
f(x):= arcos(1-x/(mx/2))mx/
la transformacin
con mx=10 cilndrica

Procesamiento Audiovisual 77 Procesamiento Audiovisual 78


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

13
4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.
El efecto se puede graduar, si en lugar de un semicrculo Ejemplos. Transformaciones elpticas.
consideramos una semielipse, ms o menos ovalada. xR a = 0,3 a = 1,2 a=2
0 mx 0 mx 0 mx

a 1 1 1

En Y
a a xA

Ahora tenemos que medir el


ngulo en una elipse. Si a=4
tomamos x= 1-xR/(mx/2), ent.: a=2
f1(x, y):= atan(asqrt(1-x2)/x)mx/ a=1

En X
siendo a el segundo radio de la a=1/2
elipse (en relacin al ancho de a=1/4
la imagen).
Procesamiento Audiovisual 79 Procesamiento Audiovisual 80
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


De forma parecida, podemos definir otros muchos tipos de Cmo unificar todas estas deformaciones? Es decir, crear
transformaciones, basados en deformaciones producidas un marco comn a todas ellas.
por fenmenos fsicos naturales (o no). Idea: supongamos que sobre una imagen podemos colocar
Mtodo: estudiar la forma (matemtica) de la deformacin, y una capa de agua. Podemos poner gotas, hacer ondas,
obtener el par de funciones f1(x,y), f2(x,y). formar olas, etc.
Ejemplo. Transformaciones geomtricas genricas. La deformacin de la imagen es el resultado de la
refraccin de la luz, al pasar del aire al agua.
Imagen R
deformada
Esta es la
idea, pero
en 2D
Superficie
Estirar: simula un Pinchar: simula Ondulacin: simula de agua S
panel abombado apretar la superficie una deformacin por Imagen original A
hacia afuera del panel ondas de agua
Procesamiento Audiovisual 81 Procesamiento Audiovisual 82
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Ojo, la superficie deformante, S, no es ni ms ni menos Objetivo: dada una imagen A, una superficie deformante S
que una imagen, donde el valor de un pxel S(x,y) indica la (imagen de 1 solo canal) definir la transformacin
altura del agua en ese punto. geomtrica correspondiente: R(x,y):= A(f1(x,y,S), f2(x,y,S))
S1. Superficie de efecto S2. Superficie de efecto de En una dimensin: en el caso de mayor refraccin, el rayo
pinchar/estirar ondas marinas se desva perpendicularmente a la superficie del agua.
x
Imagen
deformada R Esto es lo que
nos interesa!
Cunto vale?
tx/S(x) = tan()
Superficie S Pero tan() es
deformante S(x)
2 2 2
S(x,y):= sen(fsqrt((x-cx)2+(y-cy)2)) la pendiente
S(x,y):= e-((x-cx) +(y-cy) )/ de S en x
Imagen
Ahora slo hay que calcular los rayos incidentes, el ngulo de original tx = S(x)S(x)
A
refraccin de cada uno, y el sitio donde choca con el fondo... tx
Procesamiento Audiovisual 83 Procesamiento Audiovisual 84
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

14
4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.
Ya est! R(x):= A( x + S(x)dS(x)/dx ) Algoritmo. Transformacin de una imagen A segn la
Y en dos dimensiones: superficie deformante S. Sx
R(x,y):= A( x + S(x,y)dS(x,y)/dx , y + S(x,y)dS(x,y)/dy ) 1) Calcular Gx:= Sx S -1 0 1
Ale, todos a derivar! siendo Sx una mscara de derivada en X -2 0 2
2 2 2 2 2 2
2) Calcular Gy:= Sy S -1 0 1
S(x,y)dS(s,y)/dx = e-((x-cx) +(y-cy) )/ d(e-((x-cx) +(y-cy) )/ )/dx = siendo Sy una mscara de derivada en Y
2 2 2
= -2(x-cx)/2e-2((x-cx) +(y-cy) )/ .... Sy
Cachis... no 3) Calcular MapaX(x,y):= x + aS(x,y)Gx(x,y)
habr una forma -1 -2 -1
Y as para cualquier funcin... 4) Calcular MapaY(x,y):= y + aS(x,y)Gy(x,y)
ms sencilla? 0 0 0
5) Obtener la imagen resultante:
Pero, qu vimos en el tema anterior? 1 2 1
R(x,y):= A(MapaX(x,y), MapaY(x,y))
La derivada en X (o en Y) de una imagen se puede calcular
con un filtro de convolucin adecuado: Sobel, Prewitt, Notas: todas las imgenes (A, S, Gx, Gy, MapaX, MapaY, R)
Scharr, etc. son del mismo tamao.
Adems, de esta forma podemos usar cualquier superficie El parmetro a indica el grado de la transformacin. Cuanto
deformante arbitraria. mayor, ms pronunciada.
Procesamiento Audiovisual 85 Procesamiento Audiovisual 86
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Ejemplo. Aplicacin de la deformacin de ondas. Transformacin de ondas:
Im. de entrada, A Sup. deformante, S Superficie en 3D Im. de salida, R S(x,y):= sen(fsqrt((x-cx)2+(y-cy)2)+p)
(cx, cy): centro de las ondas
f: frecuencia; p: fase
Transformacin apretar/pinchar:
2 2 2
S(x,y):= e-((x-cx) +(y-cy) )/
(cx, cy): centro de la deformacin
: anchura de la zona deformada
a: fuerza de la deformacin; a<0 pinchar, a>0 estirar
Derivada X, Gx Derivada Y, Gy Mapa X, SGx Mapa Y, SGy
Variacin de frecuencia Variacin de fase Variacin de fuerza

Ojo: -1=Negro, +1=Blanco


Procesamiento Audiovisual 87 Procesamiento Audiovisual 88
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Lo interesante de esta transformacin es que se puede usar Las transformaciones geomtricas son esenciales en las
cualquier imagen como superficie deformante. composiciones panormicas.
Idea: obtener la imagen que debera estar pegada a un
A1 S1 A2 S2
cilindro que envuelve todo el campo visual del sujeto.
Cuestin: cmo se proyectan las imgenes individuales en
el cilindro?

R1 R2

Imgenes de entrada
Procesamiento Audiovisual 89 Procesamiento Audiovisual Imagen resultado 90
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

15
4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.
Idea: la X en la panormica es el ngulo en el cilindro. Si todas las fotos se toman desde el centro, sin mover la
La proyeccin de un punto (xa,ya) de la imagen viene dada cmara (slo girarla en Y), el punto (xc,yc) ser el centro de
por la interseccin de la recta que pasa por (xa,ya,1) y la imagen (mX/2, mY/2).
(0,0,0), y el cilindro con radio 1, a lo largo del eje Y. Si hay giro arriba o abajo, s que se modifica yc.
Vista superior Y tambin puede haber giro a lo largo de Z.
YR Otro parmetro es cuntos grados corresponden al ancho de
XR
1 una foto, es decir cunto es el campo visual. Lo podemos
Y medir en el nmero de pxeles que representan 45, fp.
X Con estos parmetros, la transformacin ser:
xR:= arctan ((xA-xc)/fp)
Ojo, esta fp no es ni
YA yR:= (yA-yc)/sqrt((xA-xc)2 + (yA-yc)2 + fp)) ms ni menos que la
(xa,ya)
Z xR estar entre -90 y 90, distancia focal
XA yR entre -mY/2 y mY/2. Podr variar segn el
Dnde toca la imagen con
el cilindro? Centro: (xc,yc) valor del zoom
Procesamiento Audiovisual 91 Procesamiento Audiovisual 92
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Pero, cuidado, lo que necesitamos son las funciones f1(x,y) y
La distancia focal no cambia, si no cambiamos
f2(x,y) (de R(x,y):= A(f1(x,y), f2(x,y)) que vienen dadas por las Calibracin
el zoom entre una foto y otra. Se puede calibrar
inversas: previa
una vez y usarla en todas las fotos de la
f1(x,y):= xc + fptan x
composicin.
f2(x,y):= yc + ysqrt(1+tan2 x)
En definitiva, tenemos una transformacin con 3 parmetros:
El centro de la imagen (cx, cy). El centro en X se puede dejar en la mitad de la
La distancia focal, en pxeles, fp. imagen, si no cambiamos el eje de rotacin.
Ejemplo. Variacin de df, con centro (mx/2, my/2), 480x360.
El centro en Y, cy, puede cambiar.
Calibracin
El giro en el eje Z tambin. Se puede corregir
para cada
con una rotacin afn a priori.
grupo de
Por ltimo, se debe encontrar el imgenes
desplazamiento en X para ajustar las
df = 20 pix. df = 120 pix. df = 530 pix.
imgenes.
Procesamiento Audiovisual 93 Procesamiento Audiovisual 94
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Proceso: Versin simplificada (aunque inexacta):
1) Buscar puntos anlogos Normalmente la distancia focal ser grande y se puede
(de forma manual o sustituir la transf. anterior por una simple transf. afn.
automtica) entre cada Parmetros de la transf. afn: desplazamiento (dx,dy),
par de imgenes escala s (igual en ambos ejes) y rotacin r. No hay inclinac.
consecutivas. Con dos puntos
2) Calcular los parmetros anlogos basta
de la transformacin, para resolver
usando los puntos los 4 parmetros.
definidos.
3) Transformar las
imgenes Es mucho ms sencillo,
individualmente. pero peor. Observar la
4) Componer las imgenes lnea quebrada del
canal
resultantes.
Procesamiento Audiovisual 95 Procesamiento Audiovisual 96
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

16
4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.
Correccin de la distorsin radial Correccin de la distorsin radial:
La distorsin radial es una deformacin introducida por las R(x,y):= A((x-cx)(1+k1r2+k2r4)+cx , (y-cy)(1+k1r2+k2r4)+cy)
lentes de las cmaras, que da lugar a un curvado de las con r2 = (x-cx)2 + (y-cy)2
zonas perifricas de las imgenes. Para poder aplicarla, tenemos que encontrar valores
adecuados de k1, k2, cx y cy. Calibracin.
Posibilidades: hacer pruebas, o bien obtener 4 ecuaciones.
Imagen de entrada Imagen resultante
Observar la (384x288) con k1= -2,910-7, k2= -110-13
curvatura de
la puerta

La distorsin radial se modela como un desplazamiento radial,


segn la distancia, r, al centro de la imagen de la forma:
p(1 + k1r2 + k2r4)
Procesamiento Audiovisual 97 Procesamiento Audiovisual 98
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Morphing entre dos imgenes basado en lneas.
Otro tipo de transformaciones geomtricas interesantes son
las de morphing, muy usadas en efectos especiales. Paso 1. Establecer
B
segmentos equivalentes A
El morphing es un efecto de transicin suave y entre dos imgenes.
progresiva entre dos (o ms) imgenes.
Est basado en algunas ideas ya estudiadas:
Una transformacin geomtrica, definida por un conjunto de S= (s1, s2, ..., sn)
puntos de origen, S, y otro de destino, D. El proceso es similar D= (d1, d2, ..., dn)
a la transformacin de malla, pero en lugar de rectngulos se
Segmentos Segmentos
usan segmentos equivalentes.
origen, S destino, D
La transf. geomtrica est graduada, entre las posiciones de
origen y de destino. 0%: posiciones de origen, 100%:
posiciones de destino, 50%: trmino medio entre ambos. Paso 2. Repetir el proceso para g desde 0 hasta 1.
El color de un pxel es una media ponderada, entre la En el paso g, los segmentos intermedios son:
imagen origen y destino, segn el grado de la transformacin. ik= (1-g)sk + gdk
Procesamiento Audiovisual 99 Procesamiento Audiovisual 100
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

4.4. Transformaciones de mapeo. 4.4. Transformaciones de mapeo.


Morphing entre dos imgenes basado en lneas. Conclusiones:
2.1. Transformar 2.2. Transformar 2.3. Media Las transformaciones de mapeo son el caso general de las
A, moviendo los B, moviendo los ponderada: R= (1- transformaciones geomtricas.
puntos de S a I puntos de D a I g)R1 + gR2 Permiten modelar los efectos producidos por fenmenos
R1 R2 fsicos naturales.
Para simularlos (efecto de ondas, pinchar, estirar...).
Para corregirlos (distorsin radial, aberraciones en las
lentes...).
Y tambin otras cosas no naturales: efectos especiales.
La transformacin de mapeo est definida por un par de
funciones f1, f2, (RxR R) o bien un par de imgenes
mapax, mapay.

Procesamiento Audiovisual 101 Procesamiento Audiovisual 102


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

17
4. Transformaciones geomtricas.
Conclusiones: Anexo A.4.
Existen muchos tipos de transformaciones geomtricas,
Transformaciones
desde las ms simples a las ms complejas:
Afines, bilineales, perspectivas, basadas en superficies
geomtricas en OpenCV.
deformantes, morphing, mapeo arbitrario, etc.
Pero todas ellas tienen el mismo formato: Transformaciones afines predefinidas
R(x, y):= A(f1(x,y), f2(x,y)) Transformaciones afines genricas
Y todas requieren usar interpolacin. Transformaciones perspectivas
La cuestin clave: cmo estn definidas las funciones f1 y Transformaciones de mapeo arbitrario
f2 para el efecto que necesitamos?
Ejercicios
Ojo, en algn caso podemos tener lo contrario:
R(g1(x,y), g2(x,y)):= A(x,y)
En ese caso, habr que obtener las funciones inversas.
Procesamiento Audiovisual 103 Procesamiento Audiovisual 104
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Podemos clasificar las operaciones de transformacin
geomtrica en los siguientes tipos: Comportamiento de las operaciones de transformacin
1) Transformaciones afines predefinidas. geomtrica en OpenCV:
2) Transformaciones afines genricas. Las operaciones permiten usar ROI. No se pueden usar
mscaras (mask).
3) Transformaciones perspectivas.
Se permite el modo in-place, es decir, la salida se almacena
4) Transformaciones de mapeo arbitrario. en la misma imagen de entrada.
Un parmetro de las operaciones es el tipo de Por defecto, los pxeles de salida no afectados se ponen a
interpolacin a aplicar. Se definen las constantes: negro (ver flag CV_WARP_FILL_OUTLIERS). Pero se puede
indicar que se rellenen con otro valor constante (parmetro
Interpolacin En OpenCV
fillval) o dejarlos sin modificar (si no se activa ese flag).
Vecino ms prximo CV_INTER_NN La principal carencia de OpenCV son las transformaciones
Bilineal CV_INTER_LINEAR bilineales. No se pueden hacer... hay que programrselas
Bicbica CV_INTER_CUBIC uno mismo.
Supermuestreo CV_INTER_AREA
Procesamiento Audiovisual 105 Procesamiento Audiovisual 106
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Redimensionar una imagen:
Transformaciones afines predefinidas: void cvResize (CvArr* src, CvArr* dst, int inter=CV_INTER_LINEAR)
cvResize, cvFlip (cvMirror), cv2DRotationMatrix Redimensionar la imagen src al tamao de la imagen dst.
Transformaciones afines genricas: Puede ser aumento o reduccin.
cvWarpAffine, cvGetAffineTransform El mtodo de interpolacin va en inter.
Transformaciones perspectivas: Las dos imgenes deben ser de la misma profundidad y el
mismo nmero de canales.
cvWarpPerspective, cvGetPerspectiveTransform
Recordar: se permite ROI, tanto en src como en dst; y si dst
Transformaciones de mapeo arbitrario: tiene ROI, no se modifican los valores exteriores (esta funcin
cvRemap no admite FILL_OUTLIERS).
Ejemplo. Zoom 2x de una imagen img:
IplImage *res= cvCreateImage(cvSize(img->width*2,img->height*2),
img->depth, img->nChannels);
cvResize(img, res, CV_INTER_CUBIC);
cvShowImage("Zoom", res);
Procesamiento Audiovisual 107 Procesamiento Audiovisual 108
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

18
A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.
Espejo de una imagen: Rotar una imagen. No existe una funcin nica para rotar
void cvFlip (const CvArr* src, CvArr* dst=NULL, int flip_mode=0) una imagen, sino que hay que:
(cvMirror es sinnimo de cvFlip) Calcular una matriz de rotacin (cv2DRotationMatrix).
Calcula el espejo de la imagen src. Aplicar dicha transformacin afn (cvWarpAffine).
Segn flip_mode: Las matrices de transformacin afn son matrices CvMat de
1 espejo horizontal; 0 espejo vertical; -1 ambos. tamao 2x3 y tipo CV_64FC1 o CV_32FC1.
Permite modo in-place (que, adems, es el modo por defecto, CvMat *mafin= cvCreateMat(2, 3, CV_64FC1);
cuando dst==NULL).
Ejemplo. Rotar una imagen respecto al centro de la misma
Nota: estas operaciones son importantes si el origen de las en un ngulo angulo.
imgenes (origin) es bottom-left, ya que OpenCV trabaja siempre CvMat *mafin= cvCreateMat(2, 3, CV_64FC1);
con top-left. Al obtener las imgenes habr que hacer: CvPoint2D32f centro= cvPoint2D32f(img->width/2.0, img->height/2.0);
cv2DRotationMatrix(centro, angulo, 1.0, mafin);
if (img->origin==1) {
Ojo: esto puede ser necesario cvWarpAffine(img, res, mafin); Si hay que usar otro desplazamiento,
cvFlip(img);
img->origin= 0; cuando trabajamos con vdeo se deben modificar las posiciones (0,2) y (1,2) de mafin:
} en Windows cvRealSet2D(mafin, 0, 2, dx); cvRealSet2D(mafin, 1, 2, dy);
Procesamiento Audiovisual 109 Procesamiento Audiovisual 110
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Si flags = CV_WARP_INVERSE_MAP, la transformacin es
Transformaciones afines genricas inversa, es decir, se aplica:
Aplicar una transformacin afn arbitraria en OpenCV: x
c[0][0] c[0][1] c[0][2]
void cvWarpAffine (const CvArr* src, CvArr* dst, const CvMat* c, dst( y ) := src(x,y)
int flags= ..., CvScalar fillval= cvScalarAll(0)) c[1][0] c[1][1] c[1][2]
1
Aplicar una transformacin afn genrica, dada por la frmula:
Ejemplo. Inclinar (shear) la imagen img en X en angulo grados
x y desplazar en X para que se quede centrada.
c[0][0] c[0][1] c[0][2]
dst(x,y):= src( y ) sal= cvCreateImage(cvGetSize(img), img->depth, img->nChannels);
c[1][0] c[1][1] c[1][2] cvZero(sal);
1 double inc= tan(angulo*M_PI/180.0);
CvMat *c= cvCreateMat(2, 3, CV_32FC1);
La matriz c, de tipo CV_64FC1 o CV_32FC1, indica los cvSetReal2D(c, 0, 0, 1.0);
cvSetReal2D(c, 0, 1, inc);
coeficientes de la transformacin. cvSetReal2D(c, 0, 2, -inc*img->height/2.0);
La matriz c se puede rellenar usando cvSetReal2D. cvSetReal2D(c, 1, 0, 0.0);
cvSetReal2D(c, 1, 1, 1.0);
flags indica el tipo de interpolacin (bilineal por defecto) y cvSetReal2D(c, 1, 2, 0.0);
adems... cvWarpAffine(img, sal, c, CV_INTER_LINEAR);
cvReleaseMat(&c);
Procesamiento Audiovisual 111 Procesamiento Audiovisual 112
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Calcular los coeficientes de una transformacin afn: Ejemplo. Aplicar una transformacin afn a una imagen img,
CvMat* cvGetAffineTransform (const CvPoint2D32f* src, suponiendo que tenemos 3 puntos en img y los 3 puntos
const CvPoint2D32f* dst, CvMat* mat); correspondientes en destino.
src es un array de 3 puntos, en la imagen de origen.
dst es un array de 3 puntos, en la imagen de destino. CvMat *mat= cvCreateMat(2, 3, CV_64FC1);
Significado: calcular la transformacin afn necesaria para CvPoint2D32f src[3];
mapear src en los puntos dst, almacenando en resultado en la CvPoint2D32f dst[3];
matriz mat (matriz de 2x3), que es la misma que se devuelve. src[0]= cvPoint2D32f(x, y);
Esta operacin resuelve el sistema de ecuaciones de las ...
pginas 44-45, para mapear un rombo dado en otro rombo. cvGetAffineTransform(src, dst, mat);
Tambin se podran resolver de forma explcita usando la cvWarpAffine(img, destino, mat, CV_INTER_CUBIC);
funcin cvSolve para resolver sistemas de ecuaciones en cvReleaseMat(&mat);
general.

Procesamiento Audiovisual 113 Procesamiento Audiovisual 114


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

19
A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.
Transformaciones perspectivas Aplicar una transformacin perspectiva:
void cvWarpPerspective (const CvArr* src, CvArr* dst,
Para las transformaciones perspectivas, las
const CvMat* c, int flags= ..., CvScalar fillval=
operaciones disponibles en OpenCV son similares a cvScalarAll(0))
las afines.
Aplica una transf. perspectiva de la imagen src en
Aplicar una transformacin: cvWarpAffine x
dst. La matriz de coeficientes c es xde 3x3.
c[0][0] c[0][1] c[0][2]
cvWarpPerspective y = c[1][0] c[1][1] c[1][2] y
Calcular los coeficientes: cvGetAffineTransform z c[2][0] c[2][1] c[2][2] 1
cvGetPerspectiveTransform
flags indica el tipo de interpolacin (por defecto bilineal). Y si
En este caso la matriz que define la transformacin vale CV_WARP_INVERSE_MAP, se usa la inversa de la
es un CvMat de 3x3 de tipo CV_64FC1 o matriz c.
CV_32FC1. Si flags vale CV_WARP_FILL_OUTLIERS significa que lo que
caiga fuera en dst, se rellene de color fillval.
OpenCV no tiene las transformaciones bilineales.
Procesamiento Audiovisual 115 Procesamiento Audiovisual 116
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Calcular los coeficientes de una transformacin Algunas propiedades interesantes de la matriz c:
afn: Si ambos cuadrilteros son rombos, la transformacin anterior
ser afn, por lo que c[2][0]= 0, c[2][1]= 0, c[2][2]= 1.
CvMat* cvGetPerspectiveTransform (const
La inversa de una transformacin perspectiva asociada a c, se
CvPoint2D32f* src,
obtiene usando la matriz inversa de c, es decir, c-1. Ver
const CvPoint2D32f* dst, CvMat* mat); cvInvert para invertir matrices.
src es un array de 4 puntos, en la imagen de origen. El modo CV_WARP_INVERSE_MAP consiste simplemente en
usar la matriz c-1.
dst es un array de 4 puntos, en la imagen de destino.
La aplicacin sucesiva de dos transformaciones perspectivas
Significado: calcular la transformacin perspectiva c1 y luego c2, equivale a la transf. asociada al producto
necesaria para mapear los puntos src en los puntos matricial de c2 por c1. Ver cvMatMulAdd.
dst, almacenando en resultado en la matriz mat
(matriz de 3x3), que es la misma que se devuelve.
Esta operacin resuelve el sistema de ecuaciones
de la pgina 59, Procesamiento
para mapear Audiovisual un cuadriltero dado
117 Procesamiento Audiovisual 118
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.
en otro

A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.


Ejemplo. Transformacin perspectiva de una imagen, img, para Transformaciones de mapeo arbitrario:
producir un efecto similar al de la pgina 56. Consisten en definir el par de funciones f1(x,y) y f2(x,y) de la
transformacin geomtrica genrica:
IplImage *sal= cvCloneImage(img);
cvSet(sal, cvScalarAll(255));
R(x,y):= A(f1(x,y), f2(x,y))
CvMat *c= cvCreateMat(3, 3, CV_32FC1); f1 y f2 indican para cada pxel de salida, cul es el pxel
int w= img->width-1; correspondiente de entrada.
int h= img->height-1; Recordar que f1 y f2 se pueden ver, a su vez, como
CvPoint2D32f src[4]= // Cuatro puntos en el origen imgenes, que tendrn un solo canal.
{{0,0}, {w,0}, {w,h}, {0,h}}; Cuando el valor de las funciones no sea entero, se aplicar
CvPoint2D32f dst[4]= // Cuatro puntos en el destino algn mtodo de interpolacin.
{{w*0.4,0}, {w*0.55,0}, {w,h}, {0,h}};
Si el valor asociado a un pxel cae fuera de la imagen
cvGetPerspectiveTransform(src, dst, c);
origen, el contenido de la imagen no se modifica o se pone
cvWarpPerspective(img, sal, c, CV_INTER_CUBIC);
a un valor constante.
cvReleaseMat(&c);
La nica funcin necesaria es cvRemap.
Procesamiento Audiovisual 119 Procesamiento Audiovisual 120
Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

20
A.4. Transformaciones geomtricas OpenCV. A.4. Transformaciones geomtricas OpenCV.
Ejemplo 1. Transf. aleatoria de una imagen img, con un radio m:
Aplicar un mapeo arbitrario: IplImage* imgx= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);
void cvRemap (const CvArr* src, CvArr* dst, const CvArr* xMap, IplImage* imgy= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);
const CvArr* yMap, int interpol, CvScalar fillval) CvScalar sx, sy;
for (int y= 0; y<img->height; y++)
Aplica la transformacin de mapeo: for (int x= 0; x<img->width; x++) {
sx.val[0]= x + rand()%(2*m+1) - m; // m indica el radio de la
dst(x,y):= src(xMap(x,y), yMap(x,y)) sy.val[0]= y + rand()%(2*m+1) - m; // transformacin aleatoria
Es decir, f1 est dada en xMap, y f2 en yMap. cvSet2D(imgx, y, x, sx);
cvSet2D(imgy, y, x, sy);
xMap e yMap deben ser imgenes 1 solo canal, de }
profundidad float (IPL_DEPTH_32F) y del mismo tamao que cvRemap(img, res, imgx, imgy, CV_INTER_CUBIC);
dst. cvReleaseImage(&imgx);
La profundidad de las imgenes src y dst debe ser la misma. cvReleaseImage(&imgy);
Recordar: cvRemap admite modo in-place.
Ejemplo 2. Tr. de acristalado. Sustituir las lneas comentadas por:
Lo realmente importante de esta funcin es cmo calcular las sx.val[0]= x - x%m + y%m;
imgenes xMap e yMap para conseguir el efecto deseado. sy.val[0]= y - y%m + x%m;

Procesamiento Audiovisual 121 Procesamiento Audiovisual 122


Tema 4. Transformaciones geomtricas. Tema 4. Transformaciones geomtricas.

A.4. Transformaciones geomtricas OpenCV.


Ejemplo 3. Aplicacin de varias transformaciones cilndricas a la
imagen img, con distintos grados de transformacin.
IplImage* res= cvCloneImage(img);
IplImage* imgx= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);
IplImage* imgy= cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);
for (int yy= 0; yy<img->height; yy++)
for (int xx= 0; xx<img->width; xx++)
cvSetReal2D(imgy, yy, xx, yy);
double x2, vx, a;
for (int kk= 0; kk<200; kk++) { // OJO: esto es para hacer una animacin
a= 1.0/(5.05-kk/40.0); // a es el segundo radio de la elipse
for (int yy= 0; yy<img->height; yy++)
for (int xx= 0; xx<img->width; xx++) {
x2= 1.0-2.0*xx/img->width;
vx= x2?atan2(a*sqrt(1-x2*x2),x2)*img->width/M_PI:img->width/2.0;
cvSetReal2D(imgx, yy, xx, vx);
}
cvRemap(img, res, imgx, imgy, CV_INTER_CUBIC);
cvNamedWindow("Remap", 0);
cvShowImage("Remap", res);
cvWaitKey(20);
}
cvReleaseImage(&imgx);
cvReleaseImage(&imgy);
Procesamiento Audiovisual 123
Tema 4. Transformaciones geomtricas.

21

Vous aimerez peut-être aussi