Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programa de teora
1. Adquisicin y representacin de imgenes. 2. Procesamiento global de imgenes. 3. Filtros y transformaciones locales. 4. Transformaciones geomtricas. 5. Espacios de color y el dominio frecuencial. 6. Anlisis de imgenes. 7. Vdeo y sonido digital.
(c) Gins Garca Mateos, http://dis.um.es/profesores/ginesgm Dept. de Informtica y Sistemas, Universidad de Murcia
Procesamiento Audiovisual
Procesamiento Audiovisual
62 102 83 69
68 89 90 92
78 76 80 69
81 85 111 121
Entrada
Salida
R(x,y):= A(f1(x,y), f2(x,y)) Transformacin geomtrica: el valor de un pxel depende de otro pxel (o varios) cuya posicin es calculada a travs de un par de funciones f1 y f2.
El tamao de la imagen de salida puede ser distinto del tamao de la imagen de entrada.
Procesamiento Audiovisual
Normalmente esta transformacin no aparece de forma explcita, sino implcitamente, al trabajar con ROI
Procesamiento Audiovisual
Procesamiento Audiovisual
0 1
R(0, 0):= A(0/2, 0/2) = A(0, 0) OK R(1, 0):= A(1/2, 0/2) = A(0.5, 0) R(1, 1):= A(1/2, 1/2) = A(0.5, 0.5)
Procesamiento Audiovisual
Solucin: aplicar una interpolacin. Tipos de interpolacin: vecino ms prximo, bilineal, bicbica, supermuestreo. Procesamiento Audiovisual
1 Y
Procesamiento Audiovisual
Ventajas: Es muy sencilla y rpida de calcular. Inconvenientes: El efecto de cuadriculado es evidente, y da lugar imgenes de poca calidad. Procesamiento Audiovisual
Clculo de la interpolacin lineal. Sea p el punto que queremos interpolar. Sup. que p se encuentra entre i y d, es decir: i= p, d= i+1 El valor interpolado en p ser: A(p):= (1-a)A(i) + aA(d) siendo a= p-i Procesamiento Audiovisual
1 Y
Cmo calcular el valor interpolado de un punto (px, py), A(px,py)? Procesamiento Audiovisual
Esto recuerda a A(px, s) = (1-a)A(i, s) + aA(d, s) una convolucin, A(px, r) = (1-a)A(i, r) + aA(d, r) no? A(px, py) = (1-b)A(px, s) + bA(px, r) A(px, py) = (1-a)(1-b)A(i, s) + a(1-b)A(d, s) + (1-a)bA(i, r) + abA(d, r)
Procesamiento Audiovisual
Vecino ms prximo
Interpolacin bilineal
Indicacin: un zoom entero de K con interpolacin bilineal es parecido (= a veces) a un zoom de K con vecino ms prximo, seguido de un filtro de media de KxK. Procesamiento Audiovisual
Procesamiento Audiovisual
Interpolacin bicbica. Igual que la bilineal, se basa en dos interpolaciones cbicas: 1. Interpolacin cbica horizontal, en las filas existentes (usando 4 puntos). 2. Interpolacin cbica vertical en todo el espacio usando 4 puntos (usando la anterior interpolacin). En la interpolacin bicbica de un punto (px, py) intervienen los 16 puntos circundantes. Procesamiento Audiovisual
A(px,py) = n=-1..2m=-1..2 A(i+n,j+m)P(n-a)P(b-m) Siendo: P(k) = 1/6(C(k+2)3-4C(k+1)3+6C(k)3-4C(k-1)3) C(k) = max(0, k) Procesamiento Audiovisual
Imagen original 25x26 Aumento de 10x con interpolacin bilineal Aumento de 10x con interpolacin bicbica
Procesamiento Audiovisual
Vecino ms prximo
Interpolacin bilineal
Interpolacin bicbica
En todos los casos se nota la falta de detalle (obviamente), pero en la bilineal son ms evidentes los artificios horizontales y verticales que en la bicbica. Procesamiento Audiovisual
La interpolacin tambin es importante en las rotaciones no exactas (que veremos ms adelante) y, en general, en cualquier transformacin geomtrica.
Este artificio de escalonamiento abrupto es conocido como aliasing
Vecino ms prximo
Interpolacin bilineal
Interpolacin bicbica
La interpolacin bicbica siempre suele producir el mejor resultado, aunque es algo ms costosa. Merece la pena el aumento de tiempo respecto a la bilineal? Procesamiento Audiovisual
Procesamiento Audiovisual
El problema se debe a que los detalles son ms pequeos que la resolucin de salida. Pero, adems, los mtodos de interpolacin no mejoran la situacin: cada pxel de salida es un muestreo ordenado de uno de entrada. Procesamiento Audiovisual
0 1 2 3
0 1
Solucin: cada pxel de salida debera ser la media de los 3x3 pxeles de entrada correspondientes. Interpolacin por supermuestreo (super sampling) Idea: considerar el pxel como un volumen con cierto rea. Aplicar varias veces la transformacin y tomar la media. Procesamiento Audiovisual
R(x,y)
0.5 0.75 1 1.25 1.5
A(f1(1,1), f2(1,1))
A(f1(1.25,1.5), f2(1.25,1.5))
R(x,y):= media {A(f1(x-0.5,y-0.5), f2(x-0.5,y-0.5)), ... A(f1(x-0.5,y+0.5), f2(x-0.5,y+0.5)), ..., A(f1(x,y-0.5), f2(x,y0.5)), ..., A(f1(x,y+0.5), f2(x,y+0.5)), ..., A(f1(x+0.5,y-0.5), f2(x+0.5,y-0.5)), ..., A(f1(x+0.5,y+0.5), f2(x+0.5,y+0.5))}
Procesamiento Audiovisual
Resultado: el supermuestreo logra un resultado de mucha ms calidad. Evita el problema del aliasing. Sin embargo, el supermuestreo es mucho ms costoso, requiere ms clculos. Cuanto mayor reduccin, mayor es el efecto del aliasing. Procesamiento Audiovisual
Pero esto slo es aplicable en las transformaciones que impliquen una reduccin de resolucin. Procesamiento Audiovisual
Las transformaciones afines son cualquiera de los cuatro tipos siguientes, o combinaciones de las mismas. Escala Traslacin
Rotacin
Inclinacin
Procesamiento Audiovisual
Si las imgenes A y R tienen el mismo tamao, algunos pxeles caen fuera de la imagen A. Qu valor toman? Ms que una interpolacin sera una extrapolacin... Pero no tiene mucho sentido. Se puede usar mejor un valor constante predefinido. O no modificar el contenido previo. Procesamiento Audiovisual
Aplicaciones:
Seleccionar y recortar una regin rectangular. Aunque, como ya hemos visto, no suele aparecer de forma explcita, sino al manejar ROI. Tambin suele aparecer en combinacin con las otras operaciones, para centrar la imagen resultante. Ejemplo. Recordar la operacin de rotacin de 180: R(x, y):= A(mX-x, mY-y) Procesamiento Audiovisual
Reducir al 80% El aumento sirve para hacer zoom digital, pero recordar sus limitaciones.
Procesamiento Audiovisual
Transformacin de rotacin:
Hemos visto las rotaciones exactas (90, 180, 270), pero cmo realizar una rotacin de un ngulo cualquiera (en sentido horario)? Punto en A
Punto en R (0,y) Y X (x,0) Punto en A Punto en R
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 Procesamiento Audiovisual
Rotacin de una imagen A en un ngulo : R(x,y):= A(xcos + ysen , -xsen + ycos ) La rotacin se suele expresar matricialmente: cos sen x Lo que cae fuera ) R(x,y):= A( de la imagen no -sen cos y Ejemplos.
se modifica
Rotar 10
Rotar -10
Ojo: estas rotaciones son respecto al punto (0,0). Cmo hacerlas respecto a un centro arbitrario (cx,cy)? Procesamiento Audiovisual
Procesamiento Audiovisual
Ejemplos. Rotaciones respecto a un centro cualquiera. Imagen de entrada Rotar -10 Rotar 10
Vecino ms prximo
Interpolacin bilineal
Procesamiento Audiovisual
La inclinacin transforma una regin rectangular en un rombo. Sirve para simular una perspectiva. Posibilidades: inclinacin en X, en Y o en ambos ejes.
Imagen de entrada Inclinacin en X de b/a Inclinacin en X de -b/a a a
(xa, ya) = (xr-g, yr). Pero, cunto vale g? Por analoga de tringulos: g/yr = ix/1 g= ixyr Inclinacin en X en cantidad ix: R(x, y):= A(x - ixy, y)
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Traslacin 1 0 dx 0 1 dy
Escala ex 0 0 0 ey 0
Rotacin
cos sen -sen cos
1 -iy
-ix 1
0 0
Es ms, cualquier combinacin de transformaciones afines es una transformacin afn, y se puede expresar de forma matricial. Procesamiento Audiovisual
La matriz ((c11,c12,c13),(c21,c22,c23)) son los parmetros de la transformacin. Puede implicar escalas, traslaciones, rotaciones, etc. Cmo calcular la tr. afn equivalente a dos tr. afines? Usar el producto matricial, aadiendo una fila con (0, 0, 1).
c11 c21 0 c12 c22 0 c13 c23 1 d11 d12 d22 0 d13 d23 1 r11 r12 r22 0 r13 r23 1
d21 0
r21 0
Procesamiento Audiovisual
c 0 0
0 d 0
0 0 1
1 x 0 0
0 1 0
a b 1
x -sen e cos e 0 x
dsen e dcos e 0
-csen e 0
En lugar de aplicar 4 transformaciones sobre toda la imagen, basta con aplicar la transformacin equivalente. Procesamiento Audiovisual
Uso. Una transformacin afn permite mapear una regin rectangular cualquiera en un rombo cualquiera. O, en general, cualquier rombo en otro rombo (se supone que un rectngulo es tambin un rombo). Transformacin afn genrica
Cmo calcular los parmetros de esta transformacin? Problema: dado un rombo en la imagen original y otro rombo en la imagen de destino, calcular la transformacin afn que realiza ese mapeo. Procesamiento Audiovisual
((c11,c12,c13), (c21,c22,c23))
Y
(x3a, y3a)
(x3r, y3r)
6 incgnitas (cij) Necesitamos 6 ecuaciones para resolverlas. Cules? xia c11 c12 c13 Cada punto produce xir yia = dos ecuaciones: c21 c22 c23 yir 1 Procesamiento Audiovisual
Ecuaciones a resolver: c11x1a + c12y1a + c13 = x1r c11x2a + c12y2a + c13 = x2r c11x3a + c12y3a + c13 = x2r
6 ecuaciones y 6 incgnitas Se resuelven las incgnitas (mtodo de Cramer) y despachados. Existir solucin si los 3 puntos de A no estn en la misma recta, y los 3 de R tampoco. Una vez resueltas las incgnitas, aplicamos la transformacin afn buscada: x c11 c12 c13 R(x,y):= A( y ) c21 c22 c23 1 Procesamiento Audiovisual
Ejemplo 1. La aplicacin ms inmediata y tpica de las transformaciones afines es extraer y redimensionar un rea de inters, dndole una forma predefinida de antemano. Esto es lo que se llama normalizacin. Por ejemplo, detectar una cara humana, seleccionar los ojos y la boca y mapearlos a un rectngulo predefinido. Cara Cara detectada Imagen de entrada normalizada Transf. afn
Procesamiento Audiovisual
Procesamiento Audiovisual
Ejemplo 2. La normalizacin es fundamental en muchas aplicaciones de reconocimiento de objetos, como los OCR (Optical Character Recognition). Se aplica: umbralizacin, segmentacin, normalizacin y comparacin. Rectificar: detectar Imagen de entrada Umbralizar orientacin y rotar
Procesamiento Audiovisual
Aqu se usan integrales proyectivas Comparar con un conjunto de patrones (p.ej. diferencia)
a e i
Tomar el mximo
Es una a!!
Procesamiento Audiovisual
Imagen original
Transf. afn
Transf. perspectiva
Procesamiento Audiovisual
Procesamiento Audiovisual
c13
c23 y 1 c33
Recordar la proyeccin perspectiva en el proceso de formacin de imgenes. Distancia focal = 1 La proyeccin del X, Y punto P = (x, y, z) es P = (x/z, y/z) Punto
principal Centro de Proyeccin (0,0,0) P Plano de Proyeccin Eje ptico Z P = (x,y,z)
La idea de la transf. perspectiva es: dado un plano (la imagen de entrada) colocarlo en una posicin cualquiera del espacio 3D y despus proyectarlo sobre el plano de imagen Z=1. Procesamiento Audiovisual
Centro de Proyeccin
Z
de o n Pla eccin y Pro
Eje ptico
1) Colocar la imagen plana en el espacio 3D x c11 c12 c22 c32 c13 x y = c21 z c31 c23 y 1 c33
Procesamiento Audiovisual
La transf. bilineal es una simulacin de la perspectiva. Tambin mapea un rectngulo en un cuadriltero. Pero el resultado no es exactamente una perspectiva. La diferencia es mayor cuanto mayor efecto de perspectiva. Transformac. bilineales Transformac. perspectivas
Procesamiento Audiovisual
(x4a, y4a)
(x3a, y3a)
(x4r, y4r)
(x3r, y3r)
Procesamiento Audiovisual
Cada par de puntos (xia,yia), (xir,yir) produce dos ecuaciones: (c11xia+c12yia+c13)/(c31xia+c32yia+c33)= xir (c21xia+c22yia+c23)/(c31xia+c32yia+c33)= yir 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 c 33=1. Nos quedamos con 8 incgnitas, resolvemos y listos.
Procesamiento Audiovisual
Procesamiento Audiovisual
Ejercicio. Calcular la inversa de una transf. bilineal dada por una matriz de coeficientes, de (4x2). Procesamiento Audiovisual
Ejemplo 1. La invertibilidad de la proyeccin perspectiva puede ser til en navegacin de robots. Idea: dada una imagen tomada con una cmara desde el robot, obtener una vista superior. De esta forma, el robot puede conocer las zonas por las que se puede mover. Inverse Perspective Mapping: transformacin inversa a la perspectiva producida por la cmara, respecto a cierto plano.
Imagen de entrada
Aqu se pueden tomar distancias y ngulos. En la original no
I.P.M.
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Cmo hacer la calibracin? Manualmente: seleccionar el cuadriltero en la imagen donde se proyectar el elemento.
Automticamente. Ms complejo. P.ej. encontrando las lneas del campo, las blancas y las del corte del csped. Procesamiento Audiovisual
Una vez localizado el campo, colocar los elementos en unos sitios predefinidos
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Las transformaciones afines conservan el paralelismo de las rectas. Hay que conocer el significado de cada transformacin para saber cul conviene aplicar. Cmo se podra extender la idea a vdeo, considerando la escala temporal? Procesamiento Audiovisual
Las transformaciones vistas hasta ahora tienen formas particulares y son continuas. Un mapeo (mapping) es cualquier transformacin arbitraria, definida por un par de funciones f1 y f2, continuas o escalonadas.
Procesamiento Audiovisual
Procesamiento Audiovisual
Ejemplo 1. Difuminado aleatorio, de radio a: f1(x,y):= x+random(2a+1)-a f2(x,y):= y+random(2a+1)-a A R1 a=1 R2 a=5 R3 a = 20 Procesamiento Audiovisual
Procesamiento Audiovisual
La coordenada Y no se modifica: f2(x, y):= y Qu pasa con la X? La X de R es el coseno del ngulo correspondiente en A. Procesamiento Audiovisual
R A
1-xR/(mx/2) xR xA
mx/2
Conclusin. Transformacin cilndrica en X: R(x,y):= A(arcos(1-x/(mx/2))mx/, y) Representacin de la funcin f(x):= arcos(1-x/(mx/2))mx/ con mx=10
Procesamiento Audiovisual
Procesamiento Audiovisual
El efecto se puede graduar, si en lugar de un semicrculo consideramos una semielipse, ms o menos ovalada. xR
mx 0 mx 0 mx
a 1
1 a
xA
Ahora tenemos que medir el ngulo en una elipse. Si tomamos x= 1-xR/(mx/2), ent.: f1(x, y):= atan(asqrt(1-x2)/x)mx/ siendo a el segundo radio de la elipse (en relacin al ancho de la imagen).
Procesamiento Audiovisual
En X
En Y
Procesamiento Audiovisual
De forma parecida, podemos definir otros muchos tipos de transformaciones, basados en deformaciones producidas por fenmenos fsicos naturales (o no). Mtodo: estudiar la forma (matemtica) de la deformacin, y obtener el par de funciones f1(x,y), f2(x,y). Ejemplo. Transformaciones geomtricas genricas.
Procesamiento Audiovisual
R
Esta es la idea, pero en 2D
S A Procesamiento Audiovisual
S(x,y):= sen(fsqrt((x-cx)2+(y-cy)2))
Ahora slo hay que calcular los rayos incidentes, el ngulo de refraccin de cada uno, y el sitio donde choca con el fondo... Procesamiento Audiovisual
S(x)
tx Procesamiento Audiovisual
Ya est! R(x):= A( x + S(x)dS(x)/dx ) Y en dos dimensiones: R(x,y):= A( x + S(x,y)dS(x,y)/dx , y + S(x,y)dS(x,y)/dy ) Ale, todos a derivar! S(x,y)dS(s,y)/dx = e -2((x-cx)2+(y-cy)2)/2 2 = -2(x-cx)/ e ....
-((x-cx)2+(y-cy)2)/2
d(e
-((x-cx)2+(y-cy)2)/2
)/dx =
Cachis... no habr una forma Y as para cualquier funcin... ms sencilla? Pero, qu vimos en el tema anterior? La derivada en X (o en Y) de una imagen se puede calcular con un filtro de convolucin adecuado: Sobel, Prewitt, Scharr, etc. Adems, de esta forma podemos usar cualquier superficie deformante arbitraria. Procesamiento Audiovisual
Algoritmo. Transformacin de una imagen A segn la superficie deformante S. Sx 1) Calcular Gx:= Sx S -1 0 1 siendo Sx una mscara de derivada en X -2 0 2 2) Calcular Gy:= Sy S -1 0 1 siendo Sy una mscara de derivada en Y Sy 3) Calcular MapaX(x,y):= x + aS(x,y)Gx(x,y) -1 -2 -1 4) Calcular MapaY(x,y):= y + aS(x,y)Gy(x,y) 0 0 0 5) Obtener la imagen resultante: 1 2 1 R(x,y):= A(MapaX(x,y), MapaY(x,y)) Notas: todas las imgenes (A, S, Gx, Gy, MapaX, MapaY, R) son del mismo tamao. El parmetro a indica el grado de la transformacin. Cuanto mayor, ms pronunciada. Procesamiento Audiovisual
Derivada X, Gx
Derivada Y, Gy
Mapa X, SGx
Mapa Y, SGy
Procesamiento Audiovisual
Transformacin apretar/pinchar:
S(x,y):= e
-((x-cx)2+(y-cy)2)/2
(cx, cy): centro de la deformacin : anchura de la zona deformada a: fuerza de la deformacin; a<0 pinchar, a>0 estirar Variacin de frecuencia Variacin de fase Variacin de fuerza
Procesamiento Audiovisual
R1
R2
Procesamiento Audiovisual
Las transformaciones geomtricas son esenciales en las composiciones panormicas. Idea: obtener la imagen que debera estar pegada a un cilindro que envuelve todo el campo visual del sujeto. Cuestin: cmo se proyectan las imgenes individuales en el cilindro?
Imgenes de entrada
Procesamiento Audiovisual
Imagen resultado
Idea: la X en la panormica es el ngulo en el cilindro. La proyeccin de un punto (xa,ya) de la imagen viene dada por la interseccin de la recta que pasa por (xa,ya,1) y (0,0,0), y el cilindro con radio 1, a lo largo del eje Y.
YR
Vista superior
XR
1
X
YA XA
(xa,ya)
Procesamiento Audiovisual
Si todas las fotos se toman desde el centro, sin mover la cmara (slo girarla en Y), el punto (xc,yc) ser el centro de la imagen (mX/2, mY/2). Si hay giro arriba o abajo, s que se modifica yc. Y tambin puede haber giro a lo largo de Z. Otro parmetro es cuntos grados corresponden al ancho de una foto, es decir cunto es el campo visual. Lo podemos medir en el nmero de pxeles que representan 45, fp. Con estos parmetros, la transformacin ser: Ojo, esta fp no es ni xR:= arctan ((xA-xc)/fp) yR:= (yA-yc)/sqrt((xA-xc) + (yA-yc) + fp))
2 2
Procesamiento Audiovisual
Pero, cuidado, lo que necesitamos son las funciones f1(x,y) y f2(x,y) (de R(x,y):= A(f1(x,y), f2(x,y)) que vienen dadas por las inversas: f1(x,y):= xc + fptan x f2(x,y):= yc + ysqrt(1+tan2 x) En definitiva, tenemos una transformacin con 3 parmetros:
El centro de la imagen (cx, cy). La distancia focal, en pxeles, fp.
df = 20 pix.
df = 120 pix.
Procesamiento Audiovisual
df = 530 pix.
Proceso: 1) Buscar puntos anlogos (de forma manual o automtica) entre cada par de imgenes consecutivas. 2) Calcular los parmetros de la transformacin, usando los puntos definidos. 3) Transformar las imgenes individualmente. 4) Componer las imgenes resultantes. Procesamiento Audiovisual
Versin simplificada (aunque inexacta): Normalmente la distancia focal ser grande y se puede sustituir la transf. anterior por una simple transf. afn. Parmetros de la transf. afn: desplazamiento (dx,dy), escala s (igual en ambos ejes) y rotacin r. No hay inclinac. Con dos puntos anlogos basta para resolver los 4 parmetros.
Procesamiento Audiovisual
La distorsin radial es una deformacin introducida por las lentes de las cmaras, que da lugar a un curvado de las zonas perifricas de las imgenes.
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
Correccin de la distorsin radial: R(x,y):= A((x-cx)(1+k1r2+k2r4)+cx , (y-cy)(1+k1r2+k2r4)+cy) con r2 = (x-cx)2 + (y-cy)2 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 (384x288)
Imagen resultante con k1= -2,910-7, k2= -110-13
Procesamiento Audiovisual
Procesamiento Audiovisual
Morphing entre dos imgenes basado en lneas. Paso 1. Establecer B segmentos equivalentes A entre dos imgenes.
Paso 2. Repetir el proceso para g desde 0 hasta 1. En el paso g, los segmentos intermedios son: ik= (1-g)sk + gdk Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
4. Transformaciones geomtricas.
Conclusiones:
Existen muchos tipos de transformaciones geomtricas, desde las ms simples a las ms complejas: Afines, bilineales, perspectivas, basadas en superficies deformantes, morphing, mapeo arbitrario, etc. Pero todas ellas tienen el mismo formato: R(x, y):= A(f1(x,y), f2(x,y)) Y todas requieren usar interpolacin. La cuestin clave: cmo estn definidas las funciones f1 y f2 para el efecto que necesitamos? 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
Anexo A.4.
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Transformaciones perspectivas:
cvWarpPerspective, cvGetPerspectiveTransform
Procesamiento Audiovisual
Procesamiento Audiovisual
Ojo: esto puede ser necesario cuando trabajamos con vdeo en Windows
Procesamiento Audiovisual
Las matrices de transformacin afn son matrices CvMat de tamao 2x3 y tipo CV_64FC1 o CV_32FC1. CvMat *mafin= cvCreateMat(2, 3, CV_64FC1); Ejemplo. Rotar una imagen respecto al centro de la misma en un ngulo angulo.
CvMat *mafin= cvCreateMat(2, 3, CV_64FC1); CvPoint2D32f centro= cvPoint2D32f(img->width/2.0, img->height/2.0); cv2DRotationMatrix(centro, angulo, 1.0, mafin); cvWarpAffine(img, res, mafin); Si hay que usar otro desplazamiento,
se deben modificar las posiciones (0,2) y (1,2) de mafin: cvRealSet2D(mafin, 0, 2, dx); cvRealSet2D(mafin, 1, 2, dy);
Procesamiento Audiovisual
dst(x,y):= src(
x y ) 1
La matriz c, de tipo CV_64FC1 o CV_32FC1, indica los coeficientes de la transformacin. La matriz c se puede rellenar usando cvSetReal2D. flags indica el tipo de interpolacin (bilineal por defecto) y adems...
Procesamiento Audiovisual
dst(
Ejemplo. Inclinar (shear) la imagen img en X en angulo grados y desplazar en X para que se quede centrada.
sal= cvCreateImage(cvGetSize(img), img->depth, img->nChannels); cvZero(sal); double inc= tan(angulo*M_PI/180.0); CvMat *c= cvCreateMat(2, 3, CV_32FC1); cvSetReal2D(c, 0, 0, 1.0); cvSetReal2D(c, 0, 1, inc); cvSetReal2D(c, 0, 2, -inc*img->height/2.0); cvSetReal2D(c, 1, 0, 0.0); cvSetReal2D(c, 1, 1, 1.0); cvSetReal2D(c, 1, 2, 0.0); cvWarpAffine(img, sal, c, CV_INTER_LINEAR); cvReleaseMat(&c);
Procesamiento Audiovisual
Esta operacin resuelve el sistema de ecuaciones de las pginas 44-45, para mapear un rombo dado en otro rombo. Tambin se podran resolver de forma explcita usando la funcin cvSolve para resolver sistemas de ecuaciones en general. Procesamiento Audiovisual
Procesamiento Audiovisual
En este caso la matriz que define la transformacin es un CvMat de 3x3 de tipo CV_64FC1 o CV_32FC1. OpenCV no tiene las transformaciones bilineales.
Procesamiento Audiovisual
Procesamiento Audiovisual
Esta operacin resuelve el sistema de ecuaciones de la pgina 59, para mapear un cuadriltero dado en otro. Los cuadrilteros deben ser conexos (no cncavos). Tambin se podran resolver con cvSolve. Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
Procesamiento Audiovisual
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);
Ejemplo 3. Aplicacin de varias transformaciones cilndricas a la imagen img, con distintos grados de transformacin.
Procesamiento Audiovisual