Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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.
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.
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.
1.25
0.5
1.5
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.
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.
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.
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
Transf.
afn
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
Transf.
perspectiva
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
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.
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).
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.
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.
Representacin de la funcin
Interpretacin de
f(x):= arcos(1-x/(mx/2))mx/
la transformacin
con mx=10 cilndrica
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
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.
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.
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.
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
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.
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.
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.
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;
21