Tema 4. Transformaciones geométricas.

Documentos relacionados
Tema 4. Transformaciones geométricas.

Proyecto. Tema 6 sesión 2: Generación de Rectas, Circunferencias y Curvas. Geometría Analítica. Isidro Huesca Zavaleta

Función lineal Ecuación de la recta

Aplicación: cálculo de áreas XII APLICACIÓN: CÁLCULO DE ÁREAS

A c) Determinantes. Ejercicio 1. Calcula los siguientes determinantes:

Tema 3: Sistemas de ecuaciones lineales

Visión artificial y Robótica Modelos de movimiento y mapas. Depto. de Ciencia de la Computación e Inteligencia Artificial

Tema 6: Trigonometría.

Examen de Selectividad Matemáticas JUNIO Andalucía OPCIÓN A

PAU Madrid. Matemáticas II. Año Examen modelo. Opción A. Ejercicio 1. Valor: 2 puntos.

Problemas métricos. 1. Problemas afines y problemas métricos

RESOLUCIÓN DE SISTEMAS MEDIANTE DETERMINANTES

Unidad 1: SISTEMAS DE ECUACIONES. MÉTODO DE GAUSS

Sistem as de ecuaciones lineales

GIMP, aplicaciones didácticas. Herramientas de GIMP

SISTEMAS DE ECUACIONES LINEALES. Método de reducción o de Gauss. 1º DE BACHILLERATO DPTO DE MATEMÁTICAS COLEGIO MARAVILLAS AUTORA: Teresa González.

El pipeline de visualización es el conjunto de

Tema 7: Geometría Analítica. Rectas.

TRIGONOMETRÍA. MATEMÁTICAS I 1º Bachillerato Ciencias de la Salud y Tecnológico. 1.- Ángulos en la Circunferencia.

IES Fco Ayala de Granada Sobrantes de 2011 (Modelo 4) Soluciones Germán-Jesús Rubio Luna

ÁREA DE FÍSICA GUÍA DE APLICACIÓN TEMA: ACÚSTICA Y ÓPTICA GUÍA: 1203 ESTUDIANTE: FECHA:

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA

Cálculo I (Grado en Ingeniería Informática) Problemas adicionales resueltos

Sistemas de Ecuaciones Lineales

2.2 Rectas en el plano

Sistemas de ecuaciones lineales

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

PROBLEMAS DE OPTIMIZACIÓN

Volumen de Sólidos de Revolución

En la notación C(3) se indica el valor de la cuenta para 3 kilowatts-hora: C(3) = 60 (3) = 1.253

Unidad V. 5.1 Recta tangente y recta normal a una curva en un punto. Curvas ortogonales.

Matemáticas UNIDAD 5 CONSIDERACIONES METODOLÓGICAS. Material de apoyo para el docente. Preparado por: Héctor Muñoz

Resumen 3: Matrices, determinantes y sistemas de ecuaciones

Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales

DIBUJO TÉCNICO II EJERCICIOS DE APOYO. Prof. Jesús Macho Martínez

M.D.T. y TOPOCAL. Técnicas de Representación Gráfica. Curso DIGTEG 2010

1 Curvas planas. Solución de los ejercicios propuestos.

Límites de funciones de varias variables.

2. Cuál es el valor del cociente de la suma entre la diferencia de los senos de dos ángulos?

PROF: Jesús Macho Martínez

7. Difracción n de la luz

RESOLUCIÓN DE SISTEMAS MEDIANTE DETERMINANTES

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO PLANTEL IGNACIO RAMÍREZ CALZADA DE LA ESCUELA PREPARATORIA PROBLEMARIO GEOMETRÍA ANALÍTICA

de la forma ), i =1,..., m, j =1,..., n, o simplemente por (a i j ).

Funciones 1. D = Dom ( f ) = x R / f(x) R. Recuerda como determinabas los dominios de algunas funciones: x x

Teoría Tema 9 Ecuaciones del plano

f: D IR IR x f(x) v. indep. v. dependiente, imagen de x mediante f, y = f(x). A x se le llama antiimagen de y por f, y se denota por x = f -1 (y).

I. E. S. ATENEA. SAN SEBASTIÁN DE LOS REYES EXAMEN GLOBAL. PRIMERA EVALUACIÓN. ANÁLISIS

Bolilla 12: Óptica Geométrica

y cualquier par (x, y) puede escalarse, multiplicarse por un número real s, para obtener otro vector (sx, sy).

ÁLGEBRA LINEAL II Algunas soluciones a la práctica 2.3

TEMA 3 SISTEMAS DE ECUACIONES LINEALES

REPRESENTACIÓN DE FUNCIONES

Sistemas de dos ecuaciones lineales de primer grado con dos incógnitas

UNIVERSIDADES PÚBLICAS DE LA COMUNIDAD DE MADRID PRUEBA DE ACCESO A LAS ENSEÑANZAS UNIVERSITARIAS OFICIALES DE GRADO MATERIA: DIBUJO TÉCNICO II

UD Trigonometría Ejercicios Resueltos y Propuestos Col La Presentación

OPTIMIZACIÓN VECTORIAL

Matemáticas. Si un error simple ha llevado a un problema más sencillo se disminuirá la puntuación.

Unidad III: Curvas en R2 y ecuaciones paramétricas

A continuación se presenta la información de la altura promedio para el año de 1998 en Holanda de hombres y mujeres jóvenes.

Filtros digitales dominio del espacio dominio de la frecuencia

Geometría Analítica Agosto 2016

Sistemas lineales con parámetros

Tutorial sombras CE3X

ALGEBRA. Escuela Politécnica Superior de Málaga

ÓPTICA GEOMÉTRICA: REFLEXIÓN Y REFRACCIÓN DE LA LUZ

ESTUDIO COMPLETO Y REPRESENTACIÓN DE UNA FUNCIÓN

Tema 2.- Formas Cuadráticas.

AYUDAS SOBRE LA LINEA RECTA

95 EJERCICIOS de RECTAS

IES Fco Ayala de Granada Septiembre de 2011 (Septiembre Modelo 2) Solución Germán-Jesús Rubio Luna

APLICACIONES DE LA DERIVADA

La galería a la derecha de la interfaz muestra las fotos ( ) y videos ( ) que ha tomado. Para regresar a la consola de aplicación de la cámara web.

5.5 LÍNEAS TRIGONOMÉTRICAS

Unidad II. 2.1 Concepto de variable, función, dominio, condominio y recorrido de una función.

CINEMÁTICA: ESTUDIO DEL MOVIMIENTO. Cinemática es la parte de la Física que estudia la descripción del movimiento de los cuerpos.

III: Geometría para maestros. Capitulo 1: Figuras geométricas

Hay veces que no basta con dos proyecciones para definir un objeto; es necesaria una tercera proyección.

Algebra lineal y conjuntos convexos

Evidentemente, la superficie es un triángulo rectángulo de base 1 y altura también la unidad, por tanto su área es 1/2.

Guía de Estudio Algebra y Trigonometría Para Ciencias Agropecuarias

ANEXO 1. CALIBRADO DE LOS SENSORES.

Matemáticas 2 Agosto 2015

Tema 3 Álgebra Matemáticas I 1º Bachillerato. 1

lím lím Veamos como ejemplo el límite de la función polinómica f(x)=3x 2-8 en 1: x 1 (3x2 )-lím 8 x 1 =2 x 1 x)2 -lím x 1 8 =

FUNCIONES REALES DE VARIABLE REAL.

TEMA 4: TRIGONOMETRÍA. RAZONES TRIGONOMÉTRICAS

EJEMPLOS DE PREGUNTAS Y ORIENTACIONES GENERALES SEGUNDO CICLO DE EDUCACIÓN MEDIA PRUEBA MATEMÁTICA 2013

Guía de Live Movie Maker

REPRESENTACIÓN DE FUNCIONES

Ecuaciones Lineales en Dos Variables

MATEMÁTICAS 2º DE ESO

Distancia focal de una lente convergente (método del desplazamiento) Fundamento

I.E.S. Miguel de Cervantes (Granada) Departamento de Matemáticas GBG 1

El alumno debe responder a una de las dos opciones propuestas, A o B. En cada pregunta se señala la puntuación máxima. OPCIÓN A

Elaboración de Documentos en Procesadores de Textos

FICHAS COMPLEMENTARIAS. REFLEXIÓN

LA CIRCUNFERENCIA. La circunferencia es la sección producida por un plano perpendicular al eje.

Transcripción:

PROCESMIENTO UDIOVISUL Programa de teoría. dquisición y representación de imágenes. 2. Procesamiento global de imágenes. 3. Filtros y transformaciones locales. 4. Transformaciones geométricas. 5. Espacios de color y el dominio frecuencial. 6. nálisis de imágenes. 7. Vídeo y sonido digital. Tema 4. Transformaciones geométricas. 4.. Interpolación y transformaciones básicas. (c) Ginés García Procesamiento Mateos, http://dis.um.es/profesores/ginesgm udiovisual Dept. Tema de 4. Informática Transformaciones y Sistemas, geométricas. Universidad de Murcia Procesamiento udiovisual 2 4.. Interpolación y transf. básicas. 9 92 45 39 67 87 83 69 Entrada 75 78 8 5 R(,y):= (f (,y), f 2 (,y)) 78 Transf. global 62 82 Transf. local 2 3 83 54 Tr. geométrica 69 Transformación geométrica: el valor de un píel depende de otro píel (o varios) cuya posición es calculada a través de un par de funciones f y f 2. El tamaño de la imagen de salida puede ser distinto del tamaño de la imagen de entrada. 2 Procesamiento udiovisual 3 68 89 9 92 78 76 8 69 8 85 Salida 4.. Interpolación y transf. básicas. Ejemplo. Desplazamiento y recorte (trim): dada una imagen, seleccionar un trozo rectangular, desde el punto (, y ) con tamaño (t X, t ). R: imagen de (..t X -,..t -) R(,y):= (+, y+y ), (,y) R t X (,y ) Qué pasa si (+, y+y ) está fuera de rango? t signar alguna constante a R. No modificar lo que hubiera antes en R. Normalmente esta transformación no aparece de forma eplícita, sino implícitamente, al trabajar con ROI Procesamiento udiovisual 4 R 4.. Interpolación y transf. básicas. Reflejos y rotaciones eactas (s. horario) Sea la imagen de entrada, de (..m X,..m ) La esquina superior izquierda es (, ) Espejo horizontal: R(,y):= (m X -, y) R: (..m X,..m ) Espejo vertical: R(,y):= (, m -y) R: (..m X,..m ) Rotar 9º: R(,y):= (y, m -) R: (..m,..m X ) Rotar 8º: R(,y):= (m X -, m -y) R: (..m X,..m ) Rotar 27º: R(,y):= (m -y, ) R: (..m,..m X ) Procesamiento udiovisual 5 2 4.. Interpolación y transf. básicas. En general la transformación tendrá la forma: R(, y):= (f (,y), f 2 (,y)) Siendo f y f 2 dos funciones cualesquiera del tipo: f, f 2 : N N R f : posición en X del original para el píel resultante (,y) f 2 : posición en del original para el píel resultante (,y) Ejemplo. En la rotación de 8º f (,y):= m X - f 2 (,y):= m -y 2 2 R Procesamiento udiovisual 6

4.. Interpolación y transf. básicas.... R Qué ocurre si el resultado es un número no entero? Por ejemplo, se puede conseguir un aumento de 2 con una transformación del tipo: R(,y):= (/2, y/2), con R: (..2m X +,..2m +) 2 3 4 5 2 R 2 3 R(, ):= (/2, /2) = (, ) OK R(, ):= (/2, /2) = (.5, ) R(, ):= (/2, /2) = (.5,.5) Índices no definidos en el array. Qué hacer ahí? Procesamiento udiovisual 7 4.. Interpolación y transf. básicas. Problema: las imágenes son señales discretas, pero la transformación geométrica las trata como si fueran continuas (definidas en todo el plano). 2 X Cuánto vale la imagen ahí? Solución: aplicar una interpolación. Tipos de interpolación: vecino más próimo, bilineal, bicúbica, supermuestreo. Procesamiento udiovisual 8 4.. Interpolación y transf. básicas. Interpolación: Vecino más próimo Cualquier punto del espacio toma el valor del píel más cercano. 2 X 4.. Interpolación y transf. básicas. Ejemplo. Zoom de con vecino más próimo. R(,y):= ( /, y/ ) Implementación: f (,y) f (,y) +,5 f 2 (,y) f 2 (,y) +,5 R(,y)= ( f (,y) +,5, f 2 (,y) +,5 ) Procesamiento udiovisual 9 Imagen original 2625 Imagen ampliada 2625 Ventajas: Es muy sencilla y rápida de calcular. Inconvenientes: El efecto de cuadriculado es evidente, y da lugar imágenes de poca calidad. Procesamiento udiovisual 4.. Interpolación y transf. básicas. Interpolación bilineal En una dimensión, una interpolación lineal significa trazar una línea recta entre cada par de puntos consecutivos. Valores interpolados Media ponderada, () a -a de los valores de i y d según la p 2 X distancia a Cálculo de la interpolación lineal. Sea p el punto que queremos interpolar. Sup. que p se encuentra entre i y d, es decir: i= p, d= i+ El valor interpolado en p será: (p):= (-a)(i) + a(d) siendo a= p-i Procesamiento udiovisual 4.. Interpolación y transf. básicas. En dos dimensiones, la interpolación bilineal consiste en aplicar dos interpolaciones lineales:. Interpolar la función horizontalmente, en las filas eistentes. 2. Interpolar la función verticalmente en todo el espacio (usando la anterior). (,y) 2 X º interpolar horizontalmt. 2º interpolar verticalmt. Cómo calcular el valor interpolado de un punto (p, py), (p,py)? Procesamiento udiovisual 2

4.. Interpolación y transf. básicas. Sea p= (p, py), con i= p, d= i+, s= py, r= s+ con a= p-i, b= py-s (,y) s r i d X (p,py) a -a Cálculo de la interpolación bilineal: (s, py) = (-a)(s, i) + a(s, d) (r, py) = (-a)(r, i) + a(r, d) (p, py) = (-b) (s, py) + b (r, py) (p, py) = (-a)(-b)(s, i) + a(-b)(s, d) + (-a)b(r, i) + ab(r, d) Procesamiento udiovisual 3 b -b Media ponderada de los 4 píeles circundantes Esto recuerda a una convolución, no? 4.. Interpolación y transf. básicas. Ejemplo. Zoom de con interpolación bilineal. R(,y):= (/, y/) Imagen original 2625 Vecino más próimo Interpolación bilineal Indicación: un zoom entero de K con interpolación bilineal es parecido (= a veces) a un zoom de K con vecino más próimo, seguido de un filtro de media de KK. Procesamiento udiovisual 4 4.. Interpolación y transf. básicas. La interpolación bilineal mejora la de vecino más próimo, pero produce un efecto de zonas rectangulares. Interpolación bicúbica: basada en dos interpolaciones cúbicas. En una dimensión, la interpolación cúbica consiste en trazar una cúbica entre los 4 puntos más próimos (2 a la izquierda y 2 a la derecha). () () = c 3 + c 2 2 + c 3 + c 4 Valores interpolados i- i p i+ i+2 X Procesamiento udiovisual 5 4.. Interpolación y transf. básicas. Cálculo de la interpolación cúbica. Sea p el punto que queremos interpolar. i= p Obtener las 4 ecuaciones: (i-)=(i-); (i)=(i); (i+)=(i+); (i+2)=(i+2) 4 ecuaciones, 4 incógnitas despejar y obtener c, c 2, c 3, c 4 plicar las constantes, obteniendo (p) Interpolación bicúbica. Igual que la bilineal, se basa en dos interpolaciones cúbicas:. Interpolación cúbica horizontal, en las filas eistentes (usando 4 puntos). 2. Interpolación cúbica vertical en todo el espacio usando 4 puntos (usando la anterior interpolación). En la interpolación bicúbica de un punto (p, py) intervienen los 6 puntos circundantes. Procesamiento udiovisual 6 4.. Interpolación y transf. básicas. Cálculo de la interpolación bicúbica. Igual que con la bilineal, el valor del punto se puede calcular como una media ponderada de los 44 píeles circundantes. i- i i+ i+2 j- j j+ j+2 (p,py) (p,py) = Σ n=-..2 Σ m=-..2 (i+n,j+m) P(n-a) P(b-m) Siendo: P(k) = /6(C(k+2) 3-4C(k+) 3 +6C(k) 3-4C(k-) 3 ) C(k) = ma(, k) Procesamiento udiovisual 7 a b X 4.. Interpolación y transf. básicas. Ejemplo. Zoom de con interpolación bicúbica. Imagen original 2625 umento de con interpolación bilineal umento de con interpolación bicúbica Procesamiento udiovisual 8

4.. Interpolación y transf. básicas. Comparación. Detalle del zoom de, con vecino más próimo, interpolación bilineal y bicúbica. Se ha aplicado un perfilado en las 3, para destacar el efecto del zoom. 4.. Interpolación y transf. básicas. La interpolación también es importante en las rotaciones no eactas (que veremos más adelante) y, en general, en cualquier transformación geométrica. Este artificio de escalonamiento abrupto es conocido como aliasing Vecino más próimo Interpolación bilineal Interpolación bicúbica En todos los casos se nota la falta de detalle (obviamente), pero en la bilineal son más evidentes los artificios horizontales y verticales que en la bicúbica. Procesamiento udiovisual 9 Vecino más próimo Interpolación bilineal Interpolación bicúbica La interpolación bicúbica siempre suele producir el mejor resultado, aunque es algo más costosa. Merece la pena el aumento de tiempo respecto a la bilineal? Procesamiento udiovisual 2 4.. Interpolación y transf. básicas. En las operaciones de reducción también se aplican interpolaciones, pero... Observar estas Reducción de k: R(, y):= (k, k y), con estructuras R: m X /k etrañas. m /k Ejemplo. Reducción de 5. Esto tb. es aliasing 4.. Interpolación y transf. básicas. El problema no se soluciona con interpolación bilineal o bicúbica. Imagen original 5386 Reducción de 5 con vecino más próimo Procesamiento udiovisual 2 Imagen original 5386 Reducción de 5 con interpolación bilineal Reducción de 5 con interpolac. bicúbica El problema se debe a que los detalles son más pequeños que la resolución de salida. Pero, además, los métodos de interpolación no mejoran la situación: cada píel de salida es un muestreo ordenado de uno de entrada. Procesamiento udiovisual 22 4.. Interpolación y transf. básicas. Ejemplo. Reducción de 3. R(,y) = (3, 3y) 2 3 4 5 2 3 Todos esos píeles no influyen en el resultado R Solución: cada píel de salida debería ser la media de los 33 píeles de entrada correspondientes. Interpolación por supermuestreo (super sampling) Idea: considerar el píel como un volumen con cierto área. plicar varias veces la transformación y tomar la media. Procesamiento udiovisual 23 4.. Interpolación y transf. básicas. Supermuestreo uniforme, en rejilla cuadrada. R(,y).5.75.25.5.5.75.25.5 X (f (,.5), f 2 (,.5)) (f (.25,.75), f 2 (.25,.75)) (f (,), f 2 (,)) (f (.25,.5), f 2 (.25,.5)) R(,y):= media {(f (-.5,y-.5), f 2 (-.5,y-.5)),... (f (-.5,y+.5), f 2 (-.5,y+.5)),..., (f (,y-.5), f 2 (,y-.5)),..., (f (,y+.5), f 2 (,y+.5)),..., (f (+.5,y-.5), f 2 (+.5,y-.5)),..., (f (+.5,y+.5), f 2 (+.5,y+.5))} Procesamiento udiovisual 24

4.. Interpolación y transf. básicas. Ejemplo. Reducción de 5, con supermuestreo. 4.. Interpolación y transf. básicas. Una alternativa al supermuestreo es aplicar primero un filtro de suavizado (por ejemplo, de media) y después un simple vecino más próimo. Imagen original 5386 Reducción de 5 con interpolación bilineal Reducción de 5 con supermuestreo Resultado: el supermuestreo logra un resultado de mucha más calidad. Evita el problema del aliasing. Sin embargo, el supermuestreo es mucho más costoso, requiere más cálculos. Cuanto mayor reducción, mayor es el efecto del aliasing. Procesamiento udiovisual 25 Imagen suavizada con media de 55 Reducción de 5 con vecino más próimo, de la suavizada Reducción de 5 con supermuestreo, de la original Pero esto sólo es aplicable en las transformaciones que impliquen una reducción de resolución. Procesamiento udiovisual 26 4.. Interpolación y transf. básicas. Conclusiones Transformación geométrica: cada píel de salida depende de uno de entrada cuya posición es calculada de acuerdo a un par de funciones. Como las posiciones pueden ser no enteras, es necesario aplicar interpolaciones: vec. más próimo, bilineal, bicúbica. En zoom, funciona mejor la bicúbica. En reducción, el supermuestreo. Pero son más costosas que las otras. Las interpolaciones bilineal y bicúbica (y otras más avanzadas) dan la sensación de mejorar la resolución de la imagen, pero cuidado... Cualquier detalle aparente de resolución inferior a un píel es una mera alucinación. Procesamiento udiovisual 27 Las transformaciones afines son cualquiera de los cuatro tipos siguientes, o combinaciones de las mismas. Traslación Escala Rotación Inclinación Procesamiento udiovisual 28 Transformación de traslación (desplazamiento): R(,y):= (+d, y+d y ) Ejemplos. Traslación (, ) R (,y):= (+,y+) Traslación (-, -) R 2 (,y):= (-,y-) (d,d y ) t t X Trasladar (d, d y ) y recortar (t, t y ) R Si las imágenes y R tienen el mismo tamaño, algunos píeles caen fuera de la imagen. Qué valor toman? Más que una interpolación sería una etrapolación... Pero no tiene mucho sentido. Se puede usar mejor un valor constante predefinido. O no modificar el contenido previo. Procesamiento udiovisual 29 plicaciones: Seleccionar y recortar una región rectangular. unque, como ya hemos visto, no suele aparecer de forma eplícita, sino al manejar ROI. También suele aparecer en combinación con las otras operaciones, para centrar la imagen resultante. Ejemplo. Recordar la operación de rotación de 8º: R(, y):= (m X -, m -y) Procesamiento udiovisual 3

Transformación de escala: R(,y):= (e, e y y) e = escala en el eje X e y = escala en el eje Normalmente será igual en ambos ejes (e =e y ), aunque puede ser distinta. Pero es más intuitivo el concepto de aumento o zoom: R(,y):= (/a, y/a y ) a = aumento en el eje X = /e a y = aumento en el eje = /e y Si la imagen es de tamaño m X m, la imagen resultante R será de m X a m a y Procesamiento udiovisual 3 a, a y mayor que umento o zoom de la imagen plicar interpolación bilineal o bicúbica. a, a y menor que Reducción (decimate) de la imagen plicar supermuestreo o suavizado previo. Ejemplos. Transformaciones de escala. R a =a y =,8 Reducir al 8% El aumento sirve para hacer zoom digital, pero recordar sus limitaciones. R 2 a = 2 a y =,5 umentar el doble en X y reducir a la mitad en Procesamiento udiovisual 32 Transformación de rotación: Hemos visto las rotaciones eactas (9º, 8º, 27º), pero cómo realizar una rotación de un ángulo cualquiera α (en sentido horario)? Punto en Punto en R α α (,) X Punto en R (,y) Punto en El punto (, ) en R corresponde en a ( cos α, - sen α) El punto (, y) en R en a (y sen α, y cos α) (, y) en R ( cos α + y sen α, - sen α + y cos α) en Procesamiento udiovisual 33 Rotación de una imagen en un ángulo α: R(,y):= ( cos α + y sen α, - sen α + y cos α) La rotación se suele epresar matricialmente: Ejemplos. R(,y):= ( cos α -sen α sen α cos α ) y Lo que cae fuera de la imagen no se modifica Rotar º Rotar -º Ojo: estas rotaciones son respecto al punto (,). Cómo hacerlas respecto a un centro arbitrario (c,c y )? Procesamiento udiovisual 34 Rotación de en un ángulo α, respecto a un centro (c,c y ) Idea: es equivalente a una rotación respecto a (,), seguida de un desplazamiento (d, d y ) adecuado. Cuánto? El centro no se debe modificar: R(c,c y ):= (c,c y ) R(c,c y ):= (c cos α+c y sen α+d, -c sen α+c y cos α+d y ) Solución: d =c -c cos α -c y sen α ; d y =c y + c sen α -c y cos α Matricialmente, la rotación α con centro (c,c y ) sería: R(,y):= ( cos α -sen α sen α cos α c -c cos α -c y sen α c y + c sen α -c y cos α Procesamiento udiovisual 35 y ) Ejemplos. Rotaciones respecto a un centro cualquiera. Imagen de entrada Rotar -º Rotar º Se ha utilizado interpolación bicúbica. Recordar la importancia de la interpolación. Vecino más próimo Interpolación bilineal Procesamiento udiovisual 36

Transformación de inclinación (shear): La inclinación transforma una región rectangular en un rombo. Sirve para simular una perspectiva. Posibilidades: inclinación en X, en o en ambos ejes. Imagen de entrada Inclinación en X de b/a Inclinación en X de -b/a a b b Inclinación en de b/a Inclinación en de -b/a Inclinación en X e a b a b El valor de inclinación es la tangente del ángulo. Procesamiento udiovisual 37 a Cómo obtener la transformación de inclinación? Ejemplo. Inclinación en X de cantidad i. X Punto en a ( r, y r ) y a ( a, y a ) i Punto en R ( a, y a ) = ( r -g, y r ). Pero, cuánto vale g? Por analogía de triángulos: g/y r = i / g= i y r Inclinación en X en cantidad i : R(, y):= ( - i y, y) g Procesamiento udiovisual 38 De manera similar... inclinación en en cantidad i y : R(, y):= (, y - i y ) Inclinación X en i, en i y : R(, y):= ( - i y, y - i y ) Matricialmente: -i R(,y):= ( ) -i y y Ejemplos. Inclinación i =-,4; i y = Inclinación i =; i y =,2 Parte de la imagen se sale. Solución: igual que antes, aplicar un desplazamiento para centrar el resultado. De cuánto? O bien, ampliar el tamaño de la imagen resultado para que quepa toda la imagen. Cuánto? En X: abs(i ) m ; en : abs(i y ) m X Ejemplos. Inclinación i y =,2 Inclinación i =,;i y =,3 Inclinación i =-,4 Procesamiento udiovisual 39 Procesamiento udiovisual 4 Qué hay en común todas las transformaciones afines? Todas ellas se pueden epresar de forma matricial: R(,y):= ( c c 2 c 2 c 3 c 22 c 23 y ) Traslación Escala Rotación Inclinación d e cos α sen α -i -sen α cos α -i y d y e y Es más, cualquier combinación de transformaciones afines es una transformación afín, y se puede epresar de forma matricial. Procesamiento udiovisual 4 Podemos definir una transformación afín genérica: R(,y):= ( c c 2 c 2 c 3 c 22 c 23 y ) La matriz ((c,c 2,c 3 ),(c 2,c 22,c 23 )) son los parámetros de la transformación. Puede implicar escalas, traslaciones, rotaciones, etc. Cómo calcular la tr. afín equivalente a dos tr. afines? Usar el producto matricial, añadiendo una fila con (,, ). c c 2 c 3 d 2 d 3 c 22 c 23 d 22 d 23 c 2 d r r 2 r 3 d 2 = r 2 r 22 r 23 Procesamiento udiovisual 42

Ejemplo. Sobre una imagen aplicamos º) traslación (a, b), 2º) escala (c, d), 3º) rotación e, y 4º) traslación (f, g). Podemos calcular la matriz de transformación equivalente: f g cos e sen e c -sen e cos e d a b Uso. Una transformación afín permite mapear una región rectangular cualquiera en un rombo cualquiera. O, en general, cualquier rombo en otro rombo (se supone que un rectángulo es también un rombo). Transformación afín genérica = c cos e -c sen e d sen e d cos e a c cos e+f+b d sen e b d cos e+g-a c sen e En lugar de aplicar 4 transformaciones sobre toda la imagen, basta con aplicar la transformación equivalente. Procesamiento udiovisual 43 Cómo calcular los parámetros de esta transformación? Problema: dado un rombo en la imagen original y otro rombo en la imagen de destino, calcular la transformación afín que realiza ese mapeo. Procesamiento udiovisual 44 Nota: un rombo queda completamente definido por 3 puntos. Coordenadas en X ( a, y a ) ( 2a, y 2a ) Transformación afín genérica ((c,c 2,c 3 ), (c 2,c 22,c 23 )) Coordenadas en R X ( r, y r ) ( 2r, y 2r ) ( 3a, y 3a ) ( 3r, y 3r ) 6 incógnitas (c ij ) Necesitamos 6 ecuaciones para resolverlas. Cuáles? Cada punto produce ia c c 2 c 3 dos ecuaciones: y ir ia = c 2 c 22 c 23 y ir Procesamiento udiovisual 45 Ecuaciones a resolver: c a + c 2 y a + c 3 = r c 2 a + c 22 y a + c 23 = y r c 2a + c 2 y 2a + c 3 = 2r c 2 2a + c 22 y 2a + c 23 = y 2r c 3a + c 2 y 3a + c 3 = 2r c 2 3a + c 22 y 3a + c 23 = y 3r 6 ecuaciones y 6 incógnitas Se resuelven las incógnitas (método de Cramer) y despachados. Eistirá solución si los 3 puntos de no están en la misma recta, y los 3 de R tampoco. Una vez resueltas las incógnitas, aplicamos la transformación afín buscada: R(,y):= ( c c 2 c 2 c 3 c 22 c 23 y ) Procesamiento udiovisual 46 Ejemplo. La aplicación más inmediata y típica de las transformaciones afines es etraer y redimensionar un área de interés, dándole una forma predefinida de antemano. Esto es lo que se llama normalización. Por ejemplo, detectar una cara humana, seleccionar los ojos y la boca y mapearlos a un rectángulo predefinido. Imagen de entrada Cara detectada Cara normalizada Este proceso de normalización se puede aplicar sobre vídeo, para conseguir una estabilización de los objetos de interés. Transf. afín Procesamiento udiovisual 47 Procesamiento udiovisual 48

Ejemplo 2. La normalización es fundamental en muchas aplicaciones de reconocimiento de objetos, como los OCR (Optical Character Recognition). Se aplica: umbralización, segmentación, normalización y comparación. Rectificar: detectar Imagen de entrada Umbralizar orientación y rotar Sería conveniente una técnica adaptativa Procesamiento udiovisual 49 Teto rectificado Detectar y separar las líneas Segmentar los caracteres Normalizar cada carácter a un tamaño estándar quí se usan integrales proyectivas Comparar con un conjunto de patrones (p.ej. diferencia) a e i Tomar el máimo Es una a!! Procesamiento udiovisual 5 Las transformaciones bilineal y perspectiva se pueden ver como generalizaciones de las afines: Transformación afín: cualquier rombo se mapea en un rombo. Transf. bilineal y perspectiva: cualquier cuadrilátero se transforma en otro cuadrilátero (ambos conveos). Imagen original Transf. afín Transf. bilineal Las transformaciones afines conservan el paralelismo de las líneas; bilineales y perspectivas no. La transf. perspectiva es la proyección perspectiva de un plano, colocado en un espacio 3D. La transf. bilineal se suele usar como una variante rápida de la transf. perspectiva, aunque no es eactamente igual. Es decir, se debería aplicar perspectiva, pero se usa bilineal por eficiencia. Imagen original Transform. afín Transform. bilineal Transform. perspectiva Transf. perspectiva Procesamiento udiovisual 5 Procesamiento udiovisual 52 Transformaciones afines: c c 2 c 3 R(,y):= ( y ) c 2 c 22 c 23 Observar el nuevo factor Transformaciones bilineales: que aparece R(,y):= ( c c 2 c 2 c 22 c 3 c 23 Transformaciones perspectivas: R(,y):= ( /z, y /z ) con: y c 4 c 24 y y ) c c 2 c 2 c 22 c 32 c 3 c 23 z c 3 c 33 Procesamiento udiovisual 53 = Pero, cuántos grados de libertad hay aquí? y Recordar la proyección perspectiva en el proceso de formación de imágenes. Distancia focal = La proyección del X, punto P = (, y, z) Punto es P = (/z, y/z) principal Centro de P Proyección (,,) Plano de Proyección Eje óptico La idea de la transf. perspectiva es: dado un plano (la imagen de entrada) colocarlo en una posición cualquiera del espacio 3D y después proyectarlo sobre el plano de imagen Z=. Procesamiento udiovisual 54 Z P = (,y,z)

X Centro de Proyección Plano de Proyección ) Colocar la imagen plana en el espacio 3D c c 2 c 3 y = c 2 c 22 c 23 y z c 3 c 32 c 33 Procesamiento udiovisual 55 Z Eje óptico 2) Proyección perspectiva de la imagen en el espacio R(,y):= ( /z, y /z ) La transf. bilineal es una simulación de la perspectiva. También mapea un rectángulo en un cuadrilátero. Pero el resultado no es eactamente una perspectiva. La diferencia es mayor cuanto mayor efecto de perspectiva. Transformac. bilineales Transformac. perspectivas Procesamiento udiovisual 56 Problema: dados 4 puntos en la imagen original y otros 4 en la imagen de destino, calcular las transformaciones bilineal y perspectiva que producen ese mapeo. Solución: plantear los sistemas de ecuaciones correspondientes y resolver las incógnitas. Coordenadas en X ( a, y a ) ( 2a, y 2a ) ( 4a, y 4a ) ( 3a, y 3a ) Transformación bilineal / perspectiva Coordenadas en R X Procesamiento udiovisual 57 ( r, y r ) ( 2r, y 2r ) ( 4r, y 4r ) ( 3r, y 3r ) Transformación bilineal: 8 incógnitas. Cada par de puntos equivalentes produce 2 ecuaciones con 4 puntos es necesario y suficiente. R(,y):= ( c c 2 c 2 c 22 c 3 c 23 Ecuaciones a resolver: c a +c 2 y a +c 3 a y a +c 4 = r ; c 2 a +c 22 y a +c 23 a y a +c 24 = y r...... c 4a +c 2 y 4a +c 3 4a y 4a +c 4 = 4r ; c 2 4a +c 22 y 4a +c 23 4a y 4a +c 24 = y 4r Para que haya solución, los cuadriláteros deben ser conveos y no deben haber tres puntos en la misma recta. c 4 c 24 y ) y Procesamiento udiovisual 58 Transformación perspectiva: 9 incógnitas, 4 puntos...? y = z c c 2 c 2 c 22 c 3 c 32 c 3 c 23 c 33 y R(,y):= ( /z, y /z ) Cada par de puntos ( ia,y ia ), ( ir,y ir ) produce dos ecuaciones: (c ia +c 2 y ia +c 3 )/(c 3 ia +c 32 y ia +c 33 )= ir (c 2 ia +c 22 y ia +c 23 )/(c 3 ia +c 32 y ia +c 33 )= y ir Sistema homogéneo 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 incógnita c 33 =. Nos quedamos con 8 incógnitas, resolvemos y listos. Procesamiento udiovisual 59 Indicaciones: Las transformaciones bilineales y perspectivas contienen a las afines: Transf. bilineal: será equivalente a una afín si c 3 =c 23 = Transf. perspectiva: equivalente a una afín si c 3 =c 32 = Los tres tipos de transformaciones son invertibles: dada una transf. se puede definir la transf. inversa, de manera que se obtenga la imagen original (o casi). Procesamiento udiovisual 6

Transformaciones inversas: Cómo obtener las transformaciones inversas? Si una transf. perspectiva está definida por una matriz (33), la transf. perspectiva inversa usará la matriz -. En el caso de la transf. afín, se puede etender la matriz de (32) a una de (33) y obtener la inversa. c c 2 c 3 c c 2 c 3 c c c 2 c 22 c 2 c 22 23 23 Calcular la inversa de la matriz Ejercicio. Calcular la inversa de una transf. bilineal dada por una matriz de coeficientes, de (42). Ejemplo. La invertibilidad de la proyección perspectiva puede ser útil en navegación de robots. Idea: dada una imagen tomada con una cámara 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: transformación inversa a la perspectiva producida por la cámara, respecto a cierto plano. Imagen de entrada I.P.M. quí se pueden tomar distancias y ángulos. En la original no Procesamiento udiovisual 6 Procesamiento udiovisual 62 La técnica de I.P.M. se ha aplicado en conducción automática de vehículos. I.P.M. de la imag. Imag. capturada capturada (vista desde el coche TOP) Si tenemos un robot con odometría, se pueden acumular las proyecciones para obtener un mapa del entorno. Imágenes capturadas Mapa del entorno (IPM + desde el robot combinación usando el mínimo) http://www.argo.ce.unipr.it/rgo/ Procesamiento udiovisual 63 El proyecto es un poco antiguo, pero bueno... En todos los casos, el problema fundamental es la calibración: qué transformación perspectiva se debe aplicar? Es decir, cuál es la matriz (c,..., c 33 )? Procesamiento udiovisual 64 Ejemplo 2. Integración de elementos visuales artificiales en un entorno. El objetivo es hacer que algo que no está parezca que realmente está. Problema: qué transformación perspectiva se debe aplicar para que la integración sea realista. Calibración. Pasos: ) Detectar el suelo (color verde). 2) Transformación perspectiva del elemento. 3) Media ponderada entre el suelo y la imagen transformada. Procesamiento udiovisual 65 Cómo hacer la calibración? Manualmente: seleccionar el cuadrilátero en la imagen donde se proyectará el elemento. utomáticamente. Más complejo. P.ej. encontrando las líneas del campo, las blancas y las del corte del césped. Una vez localizado el campo, colocar los elementos en unos sitios predefinidos Procesamiento udiovisual 66

Ejemplo 3. Engañando a la perspectiva. Usando mapeo inverso de perspectiva, se puede hacer que un dibujo (real) visto en perspectiva parezca tener otra perspectiva, y por tanto ocupe un espacio que realmente no ocupa. Este efecto visual sólo funciona desde un punto de vista dado. Está diseñado para ese punto. Idea: el dibujo real a poner es el I.P.M. del original, según la transf. perspectiva observada en la escena. Procesamiento udiovisual 67 Pasos: ) Poner el panel donde irá el dibujo en la escena, y capturar una imagen desde el punto deseado. 2) Calibrar: encontrar los 4 puntos del rectángulo del panel. 3) ñadir sobre la imagen tomada el dibujo que se quiere poner (con la escala y traslación adecuadas). Procesamiento udiovisual 68 4) Sobre la imagen del paso 3, aplicar una transformación perspectiva, desde el cuadrilátero del paso 2, hasta el rectángulo dado por el tamaño del panel. 5) Imprimir el panel y colocarlo en el mismo sitio. 6)... Voilà!! Ejemplo 4. Transformaciones de malla. Es una transformación libre y que da mucho juego. Sobre la imagen original definimos una malla de puntos de control. Estos puntos se pueden mover, y la imagen resultande debe modificarse coherentemente con los puntos de control. Imagen original Imagen transformada Procesamiento udiovisual 69 Procesamiento udiovisual 7 Cómo conseguir la transformación de malla? La idea es muy sencilla: La malla define una serie de rectángulos de posiciones conocidas. Después de mover los puntos de la malla, conocemos el cuadrilátero al que se debe mapear cada rectángulo original. En este caso, suele ser más conveniente aplicar una transformación bilineal. Se repite el proceso para todos los rectángulos originales. Transformación bilineal específica para cada trozo Procesamiento udiovisual 7 Conclusiones: Las transformaciones afines, bilineales y perspectivas son esenciales en generación, procesamiento, análisis de imágenes, y en visión artificial. Transformaciones afines: mapean un rombo en otro rombo. 3 puntos en la imagen origen y 3 en el destino. Transf. bilineales y perspectivas: mapean un cuadrilátero conveo en otro cuadrilátero conveo. 4 puntos en el origen y 4 en el destino. Las transformaciones afines conservan el paralelismo de las rectas. Hay que conocer el significado de cada transformación para saber cuál conviene aplicar. Cómo se podría etender la idea a vídeo, considerando la escala temporal? Procesamiento udiovisual 72

Recordemos que una transformación geométrica es cualquier operación del tipo: R(, y):= (f (,y), f 2 (,y)) Siendo f y f 2 dos funciones cualesquiera: f, f 2 : N N R f : posición en X del original para el píel resultante (,y) f 2 : posición en del original para el píel resultante (,y) Las transformaciones vistas hasta ahora tienen formas particulares y son continuas. Un mapeo (mapping) es cualquier transformación arbitraria, definida por un par de funciones f y f 2, continuas o escalonadas. Procesamiento udiovisual 73 f (,y) R f 2 (,y) (,y) (,y) g (,y) g 2 (,y) Mapeo inverso: el mapeo puede venir dado al revés: R(g (,y), g 2 (,y)):= (,y) Significado: el píel (,y) en la imagen original se mueve a la posición (g (,y), g 2 (,y)). Normalmente trabajaremos con mapeo directo. Eisten infinitos mapeos. Cualquier par de funciones locas, (f, f 2 ), es posible, pero cuáles son plausibles? Procesamiento udiovisual 74 Ejemplo. Difuminado aleatorio, de radio a: f (,y):= +random(2a+)-a f 2 (,y):= y+random(2a+)-a R R 2 R 3 a = Ejemplo 2. Pielado: f (,y):= /8 *8; f 2 (,y):= y/8 *8 R plicado sólo en la ROI. Ejemplo 3. Efecto de cristal a cuadros: f (,y):= mod 3+y mod 3; f 2 (,y):= y y mod 3+ mod 3 R a = 5 a = 2 Procesamiento udiovisual 75 Procesamiento udiovisual 76 Los mapeos pueden servir para simular las deformaciones producidas por fenómenos físicos naturales. Por ejemplo, cómo se deforma una imagen pegada a un cilindro (como una etiqueta de una botella)? α = arcos (- R /(m /2)) = α m /π - - R /(m /2) m /2 m α R m m /2 Conclusión. Transformación cilíndrica en X: R(,y):= (arcos(-/(m /2)) m /π, y) La coordenada no se modifica: f 2 (, y):= y Qué pasa con la X? La X de R es el coseno del ángulo correspondiente en. R Representación de la función f():= arcos(-/(m /2)) m /π con m = Procesamiento udiovisual 77 Procesamiento udiovisual 78

Ejemplo. plicación de la transformación cilíndrica. Imagen de entrada Tr. cilíndrica en X Tr. cilíndrica en El efecto se puede graduar, si en lugar de un semicírculo consideramos una semielipse, más o menos ovalada. m m m R a a a Interpretación de la transformación cilíndrica hora tenemos que medir el ángulo en una elipse. Si tomamos = - R /(m /2), ent.: f (, y):= atan((a sqrt(- 2 )/ )m /π siendo a el segundo radio de la elipse (en relación al ancho de la imagen). a=4 a=2 a= a=/2 a=/4 Procesamiento udiovisual 79 Procesamiento udiovisual 8 Ejemplos. Transformaciones elípticas. a =,3 a =,2 a = 2 En De forma parecida, podemos definir otros muchos tipos de transformaciones, basados en deformaciones producidas por fenómenos físicos naturales (o no). Método: estudiar la forma (matemática) de la deformación, y obtener el par de funciones f (,y), f 2 (,y). Ejemplo. Transformaciones geométricas genéricas. En X Procesamiento udiovisual 8 Estirar: simula un panel abombado hacia afuera Pinchar: simula apretar la superficie del panel Ondulación: simula una deformación por ondas de agua Procesamiento udiovisual 82 Cómo unificar todas estas deformaciones? Es decir, crear un marco común a todas ellas. Idea: supongamos que sobre una imagen podemos colocar una capa de agua. Podemos poner gotas, hacer ondas, formar olas, etc. La deformación de la imagen es el resultado de la refracción de la luz, al pasar del aire al agua. Ojo, la superficie deformante, S, no es ni más ni menos que una imagen, donde el valor de un píel S(,y) indica la altura del agua en ese punto. S. Superficie de efecto pinchar/estirar S 2. Superficie de efecto de ondas marinas Imagen deformada Superficie de agua Imagen original Procesamiento udiovisual 83 R Esta es la idea, pero en 2D S S(,y):= e -((-c)2 +(y-cy) 2 )/σ 2 S(,y):= sen(f sqrt((-c) 2 +(y-cy) 2 )) hora sólo hay que calcular los rayos incidentes, el ángulo de refracción de cada uno, y el sitio donde choca con el fondo... Procesamiento udiovisual 84

Objetivo: dada una imagen, una superficie deformante S (imagen de solo canal) definir la transformación geométrica correspondiente: R(,y):= (f (,y,s), f 2 (,y,s)) En una dimensión: en el caso de mayor refracción, el rayo se desvía perpendicularmente a la superficie del agua. Imagen deformada Superficie deformante Imagen original R S S() α t Esto es lo que nos interesa! Cuánto vale? t/s() = tan(α) Pero tan(α) es la pendiente de S en t = S() S () Procesamiento udiovisual 85 a está! R():= ( + S() ds()/d ) en dos dimensiones: R(,y):= ( + S(,y) ds(,y)/d, y + S(,y) ds(,y)/dy ) le, todos a derivar! S(,y) ds(s,y)/d = e -((-c)2 +(y-cy) 2 )/σ 2 d(e-((-c)2 +(y-cy) 2 )/σ 2 )/d = = -2(-c)/σ 2 e-2((-c)2 +(y-cy) 2 )/σ 2... Cachis... no así para cualquier función... habrá una forma más sencilla? Pero, qué vimos en el tema anterior? La derivada en X (o en ) de una imagen se puede calcular con un filtro de convolución adecuado: Sobel, Prewitt, Scharr, etc. demás, de esta forma podemos usar cualquier superficie deformante arbitraria. Procesamiento udiovisual 86 lgoritmo. Transformación de una imagen según la superficie deformante S. S ) Calcular G:= S - siendo S una máscara de derivada en X -2 2 2) Calcular Gy:= Sy - siendo Sy una máscara de derivada en Sy 3) Calcular MapaX(,y):= + a S(,y) G(,y) - -2-4) Calcular Mapa(,y):= y + a S(,y) Gy(,y) 5) Obtener la imagen resultante: 2 R(,y):= (MapaX(,y), Mapa(,y)) Notas: todas las imágenes (, S, G, Gy, MapaX, Mapa, R) son del mismo tamaño. El parámetro a indica el grado de la transformación. Cuanto mayor, más pronunciada. Procesamiento udiovisual 87 Ejemplo. plicación de la deformación de ondas. Im. de entrada, Sup. deformante, S Superficie en 3D Im. de salida, R Derivada X, G Derivada, Gy Mapa X, S G Mapa, S Gy Ojo: -=Negro, +=Blanco Procesamiento udiovisual 88 Transformación de ondas: S(,y):= sen(f sqrt((-c) 2 +(y-cy) 2 )+p) (c, cy): centro de las ondas f: frecuencia; p: fase Transformación apretar/pinchar: S(,y):= e -((-c)2 +(y-cy) 2 )/σ 2 (c, cy): centro de la deformación σ: anchura de la zona deformada a: fuerza de la deformación; a< pinchar, a> estirar Variación de frecuencia Variación de fase Variación de fuerza Lo interesante de esta transformación es que se puede usar cualquier imagen como superficie deformante. S R 2 S 2 R 2 Procesamiento udiovisual 89 Procesamiento udiovisual 9

Las transformaciones geométricas son esenciales en las composiciones panorámicas. Idea: obtener la imagen que debería estar pegada a un cilindro que envuelve todo el campo visual del sujeto. Cuestión: cómo se proyectan las imágenes individuales en el cilindro? Idea: la X en la panorámica es el ángulo en el cilindro. La proyección de un punto ( a,y a ) de la imagen viene dada por la intersección de la recta que pasa por ( a,y a,) y (,,), y el cilindro con radio, a lo largo del eje. R XR Vista superior X Z ( a,y a ) Imágenes de entrada Procesamiento udiovisual 9 Dónde toca la imagen con el cilindro? Centro: ( c,y c ) Imagen resultado Procesamiento udiovisual 92 X Si todas las fotos se toman desde el centro, sin mover la cámara (sólo girarla en ), el punto ( c,y c ) será el centro de la imagen (m X /2, m /2). Si hay giro arriba o abajo, sí que se modifica y c. también puede haber giro a lo largo de Z. Otro parámetro es cuántos grados corresponden al ancho de una foto, es decir cuánto es el campo visual. Lo podemos medir en el número de píeles que representan 45º, fp. Con estos parámetros, la transformación será: R := arctan (( - c )/fp) y R := (y -y c )/sqrt(( - c ) 2 + (y -y c ) 2 + fp)) R estará entre -9º y 9º, y R entre -m /2 y m /2. Ojo, esta fp no es ni más ni menos que la distancia focal Podrá variar según el valor del zoom Procesamiento udiovisual 93 Pero, cuidado, lo que necesitamos son las funciones f (,y) y f 2 (,y) (de R(,y):= (f (,y), f 2 (,y)) que vienen dadas por las inversas: f (,y):= c + fp tan f 2 (,y):= y c + y sqrt(+tan 2 ) En definitiva, tenemos una transformación con 3 parámetros: El centro de la imagen (c, cy). La distancia focal, en píeles, fp. Ejemplo. Variación de df, con centro (m /2, m y /2), 4836. df = 2 pi. df = 2 pi. df = 53 pi. Procesamiento udiovisual 94 La distancia focal no cambia, si no cambiamos el zoom entre una foto y otra. Se puede calibrar una vez y usarla en todas las fotos de la composición. El centro en X se puede dejar en la mitad de la imagen, si no cambiamos el eje de rotación. El centro en, c y, puede cambiar. El giro en el eje Z también. Se puede corregir con una rotación afín a priori. Por último, se debe encontrar el desplazamiento en X para ajustar las imágenes. Calibración previa Calibración para cada grupo de imágenes Procesamiento udiovisual 95 Proceso: ) Buscar puntos análogos (de forma manual o automática) entre cada par de imágenes consecutivas. 2) Calcular los parámetros de la transformación, usando los puntos definidos. 3) Transformar las imágenes individualmente. 4) Componer las imágenes resultantes. Procesamiento udiovisual 96

Versión simplificada (aunque ineacta): Normalmente la distancia focal será grande y se puede sustituir la transf. anterior por una simple transf. afín. Parámetros de la transf. afín: desplazamiento (d,dy), escala s (igual en ambos ejes) y rotación r. No hay inclinac. Con dos puntos análogos basta para resolver los 4 parámetros. Corrección de la distorsión radial La distorsión radial es una deformación introducida por las lentes de las cámaras, que da lugar a un curvado de las zonas periféricas de las imágenes. Observar la curvatura de la puerta Es mucho más sencillo, pero peor. Observar la línea quebrada del canal Procesamiento udiovisual 97 La distorsión radial se modela como un desplazamiento radial, según la distancia, r, al centro de la imagen de la forma: p ( + k r 2 + k 2 r 4 ) Procesamiento udiovisual 98 Corrección de la distorsión radial: R(,y):= ((-c)(+k r 2 +k 2 r 4 )+c, (y-cy)(+k r 2 +k 2 r 4 )+cy) con r 2 = (-c) 2 + (y-cy) 2 Para poder aplicarla, tenemos que encontrar valores adecuados de k, k 2, c y cy. Calibración. Posibilidades: hacer pruebas, o bien obtener 4 ecuaciones. Imagen de entrada (384288) Imagen resultante con k = -2,9-7, k 2 = - - 3 Otro tipo de transformaciones geométricas interesantes son las de morphing, muy usadas en efectos especiales. El morphing es un efecto de transición suave y progresiva entre dos (o más) imágenes. Está basado en algunas ideas ya estudiadas: Una transformación geométrica, definida por un conjunto de puntos de origen, S, y otro de destino, D. El proceso es similar a la transformación de malla, pero con puntos en posiciones cualesquiera. La transf. geométrica está graduada, entre las posiciones de origen y de destino. %: posiciones de origen, %: posiciones de destino, 5%: término medio entre ambos. El color de un píel es una media ponderada, entre la imagen origen y destino, según el grado de la transformación. Procesamiento udiovisual 99 Procesamiento udiovisual Morphing entre dos imágenes. B Ejemplo. Morphing entre dos imágenes. Puntos de origen, S S= (s, s 2,..., s n ), D= (d, d 2,..., d n ) Puntos de destino, D En el paso g, los puntos intermedios son: i k = (-g)s k + g d k Transformar, moviendo los puntos de S a I R Transformar B, moviendo los puntos de D a I R 2 Media ponderada: R= (-g)r + g R 2 Procesamiento udiovisual La transformación entre pares de puntos equivalentes se podría asimilar con una transf. bilineal: 4 puntos de origen y 4 de destino. Pero normalmente es más complejo, y se usan funciones cúbicas. Procesamiento udiovisual 2

Conclusiones: Las transformaciones de mapeo son el caso general de las transformaciones geométricas. Permiten modelar los efectos producidos por fenómenos físicos naturales. Para simularlos (efecto de ondas, pinchar, estirar...). Para corregirlos (distorsión radial, aberraciones en las lentes...). también otras cosas no naturales: efectos especiales. La transformación de mapeo está definida por un par de funciones f, f 2, (RR R) o bien un par de imágenes mapa, mapa y. Procesamiento udiovisual 3 4. Transformaciones geométricas. Conclusiones: Eisten muchos tipos de transformaciones geométricas, desde las más simples a las más complejas: fines, bilineales, perspectivas, basadas en superficies deformantes, morphing, mapeo arbitrario, etc. Pero todas ellas tienen el mismo formato: R(, y):= (f (,y), f 2 (,y)) todas requieren usar interpolación. La cuestión clave: cómo están definidas las funciones f y f 2 para el efecto que necesitamos? Ojo, en algún caso podemos tener lo contrario: R(g (,y), g 2 (,y)):= (,y) En ese caso, habrá que obtener las funciones inversas. Procesamiento udiovisual 4 neo.4. Transformaciones geométricas en IPL. Transformaciones de ampliación/reducción Transformaciones afines Transformaciones bilineales y perspectivas Transformaciones de mapeo arbitrario Ejercicios Procesamiento udiovisual 5 Prácticamente todas las transformaciones geométricas de interés están en IPL. OpenCV incluye muy pocas. Podemos clasificar las operaciones en los siguientes tipos: ) mpliación/reducción; 2) transf. afines; 3) transf. bilineales y perspectivas; 4) transf. de mapeo arbitrario. La mayoría admiten como parámetro el tipo de interpolación a aplicar, que puede ser: IPL_INTER_NN (vecino más próimo), IPL_INTER_LINER (interpolación bilineal), IPL_INTER_CUBIC (interpolación bicúbica), IPL_INTER_SUPER (supermuestreo, en las reducciones). Todas las transformaciones geométricas: trabajan con ROI y máscaras, no permiten usar modo in-place. Si en una transf. el valor correspondiente a un píel (,y) cae fuera de la imagen origen, no se modifica lo que hubiera antes en (,y). Procesamiento udiovisual 6 Transformaciones de ampliación/reducción: iplzoom, iplzoomfit, ipldecimate, ipldecimatefit, ipldecimateblur, iplresize, iplresizefit Transformaciones afines: iplmirror, iplrotate, iplgetrotateshift, iplrotatecenter, iplshear, iplwarpffine, iplgetffinetransform, iplgetffinebound, iplgetffinequad Transformaciones bilineales y perspectivas: iplwarpbilinear, iplwarpbilinearq, iplwarpperspective, iplwarpperspectiveq, iplget{bilinear Perspective}Transform, iplget{bilinear Perspective}Bound, iplget{bilinear Perspective} Quad Transformaciones de mapeo arbitrario: iplremap Procesamiento udiovisual 7 mpliar una imagen: void iplzoom (IplImage* srcimage, IplImage* dstimage, int Dst, int Src, int ydst, int ysrc, int interpolate) mplía la imagen srcimage (hace un zoom) y guarda el resultado en dstimage. La ampliación en X es Dst/Src, y en es ydst/ysrc. Debe ser necesariamente Dst>Src e ydst>ysrc. Recordar, se permiten ROI, y si la imagen ampliada no ocupa todo dstimage, no se modifican los valores no afectados. El método de interpolación va en interpolate. Reducir una imagen: void ipldecimate (IplImage* srcimage, IplImage* dstimage, int Dst, int Src, int ydst, int ysrc, int interpolate) Reduce la imagen en X Dst/Src, y en ydst/ysrc. hora Dst<Src e ydst<ysrc. Procesamiento udiovisual 8

Suavizado y posterior reducción de una imagen: void ipldecimateblur (IplImage* src, IplImage* dst, int Dst, int Src, int ydst, int ysrc, int interpolate, int MaskSize, int ymasksize) Primero suaviza src, (MaskSize, ymasksize), y luego reduce. diferencia de ipldecimate, no admite interpolación IPL_INTER_SUPER (supermuestreo). Se supone que el suavizado tiene un efecto equivalente. En la práctica, puede ser unas 3 veces más rápido que ipldecimate con supermuestreo. Redimensionar una imagen: void iplresize (IplImage* srcimage, IplImage* dstimage, int Dst, int Src, int ydst, int ysrc, int interpolate) Reduce o amplía la imagen según las proporciones Dst/Src, e ydst/ysrc. Es la más general, se puede ampliar en una dimensión y reducir en otra. Procesamiento udiovisual 9 Las funciones anteriores tienen versiones Fit, que significa que el factor de aumento/reducción se ajusta según el tamaño de las imágenes (o de los ROI, en su caso). No hace falta pasar Dst, Src,... Las tres están definidas como simples macros: void iplzoomfit (IplImage *SRC, IplImage *DST, int INTER) void ipldecimatefit (IplImage *SRC, IplImage *DST, int INTER) void iplresizefit (IplImage *SRC, IplImage *DST, int INTER) La función de OpenCV cvresize es casi equivalente a iplresizefit, con la única diferencia de que no admite interpolación bicúbica. Procesamiento udiovisual Transformaciones afines Espejo de una imagen: void iplmirror (IplImage* src, IplImage* dst, int flipis) Calcula el espejo de una imagen. Según flipis: espejo horizontal; espejo vertical; - ambos. En OpenCV también está la operación de espejo: void cvflip (const Cvrr*, Cvrr* B=, int flip_mode=) Permite modo in-place. El parámetro flip_mode puede tomar los mismos valores que flipis. Nota: estas operaciones son importantes si el origen de las imágenes (origin) es bottom-left, ya que OpenCV trabaja con topleft. Esto ocurre, p.ej., al trabajar con vídeo en Windows. Hacer: if (img->origin==) { cvflip(img); img->origin= ; } Procesamiento udiovisual Rotar una imagen: void iplrotate (IplImage* src, IplImage* dst, double angle, double Shift, double yshift, int interpolate) Rota la imagen src en angle grados ( a 36) desde el punto (,), y después aplica una traslación de (Shift, yshift). Es importante calcular bien la traslación, para que la imagen resultante quede bien centrada. Para ello se puede usar iplgetrotateshift (calcula el desplazamiento adecuado a un centro) o iplrotatecenter. En interpolate se puede añadir (OR) IPL_SMOOTH_EDGE. Rotar una imagen con un centro dado: void iplrotatecenter (IplImage* src, IplImage* dst, double angle, double Center, double ycenter, int interpolate) Rota la imagen src en angle grados ( a 36) tomando como centro el punto (Center, ycenter). Procesamiento udiovisual 2 Recordar que todo lo que cae fuera de la imagen rotada en dst no se modifica. Ejercicio. Calcular el tamaño adecuado de la imagen destino, de manera que se pueda aplicar una rotación sin que se pierdan las esquinas. decir qué operaciones se deben aplicar para hacer esa rotación. Inclinar una imagen, en X y en : void iplshear (IplImage* src, IplImage* dst, double Shear, double yshear, double Shift, double yshift, int interpolate) Inclina la imagen en las cantidades dadas en Shear e yshear, y después desplaza la imagen en (Shift, yshift). Recordar que la inclinación indica una pendiente. Por ejemplo, el valor es 45º de inclinación. plicar una transformación afín arbitraria: void iplwarpffine (IplImage* src, IplImage* dst, const double c[2][3], int interpolate) Esta es la transformación afín genérica, dada por la fórmula: c[][] dest(,y):= src( c[][] c[][] c[][] c[][2] c[][2] y ) La clave aquí es calcular los coeficientes, c, que produzcan la transformación que buscamos 3 puntos de origen, 3 puntos de destino 6 ecuaciones y 6 incógnitas. La función iplgetffinetransform puede ayudar en esto. Procesamiento udiovisual 3 Procesamiento udiovisual 4

Calcular los coeficientes de una transformación afín: void iplgetffinetransform (IplImage* image, double c[2][3], const double quad[4][2]) image es la imagen a la que se aplicará después la función iplwarpffine; c es la matriz donde se almacenan los coeficientes resultantes; quad es una matriz con 4 puntos. Significado de la función: calcular la transformación afín necesaria para mapear image (o el ROI, en su caso) al cuadrilátero dado en quad. Nota. No se calcula cualquier rombo en cualquier otro rombo, sino el rectángulo (de toda la imagen o del ROI) en el rombo dado como parámetro. Ejercicio. Cómo calcular la transformación de rombo a rombo? Ver cvsolve. Procesamiento udiovisual 5 Nota 2. El orden de los puntos de quad debe ser: (quad[][],quad[][]) El es la X y el la (quad[3][],quad[3][]) (quad[][],quad[][]) (quad[2][],quad[2][]) Nota 3. Sólo hacen falta 3 puntos para definir un rombo. Por qué se pasan 4? De hecho, si los 4 puntos pasados no forman un rombo, la función produce un error. Ejercicio. Suponiendo que tenemos en quad 3 puntos, calcular el 4º punto de forma que resulte un rombo. quad[3][]:= quad[2][] + quad[][] - quad[][] quad[3][]:= quad[2][] + quad[][] - quad[][] Procesamiento udiovisual 6 Para conocer dónde será mapeada la imagen para una transformación dada, podemos usar las funciones: Calcular el rombo resultante de una transformación afín: void iplgetffinequad (IplImage* image, const double c[2][3], double quad[4][2]) Es la inversa a la iplgetffinetransform. Dados unos coeficientes en c, calcula en quad los 4 puntos a los que será mapeada la imagen (o el ROI seleccionado). Calcular el rectángulo contenedor de la transf. afín: void iplgetffinebound (IplImage* image, const double c[2][3], double rect[2][2]) Calcula, en rect, los vértices superior izquierdo e inferior derecho del menor rectángulo (alineado con los ejes) que contiene los 4 puntos anteriores. Realmente estas dos funciones no se suelen usar mucho. Procesamiento udiovisual 7 Ejemplo. plicar una transformación afín a una imagen img, suponiendo que tenemos 3 puntos, pts, de un rombo donde queremos mapearla. void Transformarfin (IplImage *img, IplImage *res, double pts[3][2]) { double quad[4][2]; double coef[2][3]; for (int i= ; i<3; i++) { quad[i][]= pts[i][]; quad[i][]= pts[i][]; } quad[3][]= quad[2][] + quad[][] - quad[][]; quad[3][]= quad[2][] + quad[][] - quad[][]; iplgetffinetransform(img, coef, quad); iplwarpffine(img, res, coef, IPL_INTER_CUBIC); } Procesamiento udiovisual 8 Para las transformaciones bilineales y perspectivas, las operaciones disponibles son similares a las afines. plicar una transformación: iplwarpffine iplwarpbilinear, iplwarpperspective Calcular los coeficientes: iplgetffinetransform iplgetbilineartransform, iplgetperspectivetransform Calcular el cuadrilátero donde se mapeará: iplgetffinequad iplgetbilinearquad, iplgetperspectivequad Calcular el rectángulo contenedor: iplgetffinebound iplgetbilinearbound, iplgetperspectivebound En la bilineal, los coeficientes son double c[2][4] y en la perspectiva double c[3][3]. demás, están iplwarpbilinearq y iplwarpperspectiveq que reciben directamente los 4 puntos (de origen o de destino) y calculan los coeficientes internamente. Procesamiento udiovisual 9 plicar una transformación bilineal: void iplwarpbilinear (IplImage* src, IplImage* dst, const double c[2][4], int warpflag, int interpolate) plica una transformación bilineal, con los coeficientes c. El parámetro warpflag indica si la transformación es desde el ROI de src hasta dst, o al revés. Si warpflag = IPL_WRP_R_TO_Q (ROI to Quadrangle): y dst(,y):= src( c[][] c[][] c[][2] c[][3] c[][] c[][] c[][2] c[][3] y ) Si warpflag = IPL_WRP_Q_TO_R (Quadrangle to ROI): src(,y):= dst( c[][] c[][] c[][2] c[][3] y ) c[][] c[][] c[][2] c[][3] y Procesamiento udiovisual 2

Los coeficientes se calculan resolviendo un sistema de ecuaciones (como vimos en teoría). Ver cvsolve. La función iplgetbilineartransform puede ser útil. Pero, igual que en afín, no se calcula cualquier cuadrilátero en cualquier otro, sino el rectángulo (de toda la imagen o del ROI) en el cuadrilátero pasado como parámetro. Calcular los coeficientes de una transformación bilineal: void iplgetbilineartransform (IplImage* image, double c[2][4], const double quad[4][2]) Los coeficientes resultantes son c. El cuadrilátero a transformar está dado en quad. El orden de los puntos es el mismo que en afín. El cuadrilátero no puede ser cóncavo. (quad[][], quad[][]) (quad[3][], quad[3][]) (quad[][], quad[][]) (quad[2][], quad[2][]) Procesamiento udiovisual 2 plicar una transformación bilineal dado un cuadrilátero: void iplwarpbilinearq (IplImage* src, IplImage* dst, const double quad[4][2], int warpflag, int interpolate) Esta función es equivalente a: double c[2][4]; iplgetbilineartransform(warpflag==ipl_wrp_q_to_r?dst:src, c, quad); iplwarpbilinear(src, dst, c, warpflag, interpolate); Trabaja directamente con los 4 puntos del cuadrilátero. Si warpflag = IPL_WRP_R_TO_Q, transforma el ROI de src en el cuadrilátero quad de dst. Si warpflag = IPL_WRP_Q_TO_R, transforma el cuadrilátero quad de src en el ROI de dst. Ver también iplgetbilinearbound e iplgetbilinearquad. Procesamiento udiovisual 22 plicar una transformación perspectiva: void iplwarpperspective (IplImage* src, IplImage* dst, const double c[3][3], int warpflag, int interpolate) La misma idea que antes, pero aplicando una transf. perspectiva. hora la matriz de coeficientes c es de 33. c[][] c[][] c[][2] y = c[][] c[][] c[][2] y z c[2][] c[2][] c[2][2] warpflag cómo es la transformación. Si warpflag = IPL_WRP_R_TO_Q (Quadrangle to ROI): dst(,y):= src( /z, y /z ) Si warpflag = IPL_WRP_Q_TO_R (ROI to Quadrangle): src(,y):= dst( /z, y /z ) Procesamiento udiovisual 23 Calcular los coeficientes de una transformación perspectiva: void iplgetperspectivetransform (IplImage* image, double c[3][3], const double quad[4][2]) Calcula la matriz de coeficientes de transformación perspectiva, c, dado el ROI de image y los puntos del cuadrilátero quad. El orden de los puntos en quad es el mismo que en afín y en bilineal. el cuadrilátero no puede ser cóncavo. c[2][2] siempre toma valor (recordar la teoría). (quad[][], quad[][]) (quad[3][], quad[3][]) (quad[][], quad[][]) (quad[2][], quad[2][]) Procesamiento udiovisual 24 lgunas propiedades interesantes de la matriz c: Si el cuadrilátero quad es un rombo, la transformación anterior será afín, con lo que c[2][]=, c[2][]=, c[2][2]=. La inversa de una transformación perspectiva asociada a c, se obtiene usando la matriz inversa de c, es decir, - c. Ver cvinvert para invertir matrices. Los modos IPL_WRP_R_TO_Q y IPL_WRP_Q_TO_R consisten simplemente en usar la matriz c o - c, respectivamente. La aplicación sucesiva de dos transf. perspectivas c y luego c2, equivale a la transf. asociada al producto matricial de c2 por c. Ver cvmatmuldd. Juntando lo anterior, cómo calcular la matriz asociada a un mapeo perspectivo de un cuadrilátero origen en otro de destino? Procesamiento udiovisual 25 Igual que antes, eiste una función que trabaja directamente con el cuadrilátero de origen o de destino. plicar una transformación perspectiva dado un cuadrilátero: void iplwarpperspectiveq (IplImage* src, IplImage* dst, const double quad[4][2], int warpflag, int interpolate) Esta función es equivalente a: double c[2][4]; iplgetperspectivetransform( warpflag==ipl_wrp_q_to_r?dst:src, c, quad); iplwarpperspective(src, dst, c, warpflag, interpolate); Si warpflag = IPL_WRP_R_TO_Q, transforma el ROI de src en el cuadrilátero quad de dst. Si warpflag = IPL_WRP_Q_TO_R, transforma el cuadrilátero quad de src en el ROI de dst. Ver también iplgetperspectivebound e iplgetperspectivequad. Procesamiento udiovisual 26

Transformaciones de mapeo arbitrario: Consisten en definir el par de funciones f (,y) y f 2 (,y) de la transformación geométrica genérica: R(,y):= (f (,y), f 2 (,y)) f y f 2 indican para cada píel de salida, cuál es el píel correspondiente de entrada. Recordar que f y f 2 se pueden ver, a su vez, como imágenes, que tendrán un solo canal. Cuando el valor de las funciones no sea entero, se aplicará algún método de interpolación. Si el valor asociado a un píel cae fuera de la imagen origen, no se modifica el contenido de lo que hubiera en la imagen resultado. La única función eistente es iplremap. Procesamiento udiovisual 27 plicar un mapeo arbitrario: void iplremap (IplImage* src, IplImage* Map, IplImage* ymap, IplImage* dst, int interpolate) plica la transformación de mapeo: dst(,y):= src(map(,y), ymap(,y)) Es decir, f está dada en Map, y f 2 en ymap. Map e ymap deben ser imágenes solo canal, de profundidad float (IPL_DEPTH_32F) y del mismo tamaño que dst. La profundidad de las imágenes src y dst debe ser la misma. No admite modo in-place. Lo realmente importante de esta función es cómo calcular las imágenes Map e ymap para conseguir el efecto deseado. Procesamiento udiovisual 28 Ejemplo. Transf. aleatoria, de una imagen img, con un radio m: IplImage* res= cvcloneimage(img); IplImage* img= cvcreateimage(ggmgetsize(img), IPL_DEPTH_32F, ); IplImage* imgy= cvcreateimage(ggmgetsize(img), IPL_DEPTH_32F, ); float v, vy; for (int yy= ; yy<img->height; yy++) for (int = ; <img->width; ++) { v= + rand()%(2*m+) - m; // Esta es la parte variable, en X vy= yy + rand()%(2*m+) - m; // y en iplputpiel(img,, yy, &v); iplputpiel(imgy,, yy, &vy); } iplremap(img, img, imgy, res, IPL_INTER_CUBIC); cvreleaseimage(&img); cvreleaseimage(&imgy); Ejemplo. Transf. de acristalado. Sustituir las líneas marcadas por: v= - %m + yy%m; vy= yy - yy%m + %m; Procesamiento udiovisual 29 Ejercicios:. Escribir una operación que dada una transformación afín, bilineal o perspectiva, compare cuantitativamente la diferencia del resultado usando interpolación bilineal, bicúbica o vecino más próimo. La medida es % de diferencia promedio de los píeles. 2. Implementar una operación que realice una transformación afín, tomando como parámetros la escala del resultado, la rotación, inclinación (en X e ) y la posición final del píel central. 3. Escribir sendas operaciones que permitan realizar transf. bilineales y perspectivas dados 4 puntos de origen y 4 de destino. 4. Implementar la transformación de malla, tal y como es vista en el tema, permitiendo un tamaño de malla variable. 5. Implementar la transformación de superficie deformante, permitiendo ajustar el grado de la deformación. 6. Usando la anterior, implementar las transformaciones de pinchar y estirar, con radio y fuerza variables. Procesamiento udiovisual 3