PROYECTO TERMINAL “PROCESAMIENTO DE IMÁGENES PARA LA DETECCION DE OBJETOS EN MOVIMIENTO” HERRERA ARVEA ANDRES SANTIAGO NUÑEZ AVILA MARIO SANCHEZ OCAMPO SALMA LUCERO AL DR. LEONARDO TRAVERSONI DOMINGUEZ: Por la oportunidad brindada para la realización de este proyecto y el compartir sus conocimientos para el logro de éste. Gracias por su tiempo, dedicación y apoyo. A JESUS BARRERA MENDEZ Por ayudarnos a comprender y superar este reto, y por la gran amistad brindada a lo largo de estos mese, simplemente muchas gracias. Herrera Arvea Andrés Santiago Núñez Avila Mario Sánchez Ocampo Salma Lucero A MI FAMILIA: Quienes me dieron apoyo y consejo durante los momentos más difíciles en este camino de mi carrera profesional, ya que sin ustedes el recorrido hubiera sido más difícil. Porque siempre han estado cuando los he necesitado y sobre todo por el amor y cariño brindados en toda mi vida; los amo. A SALMA: Gracias por estar a mi lado y a ayudarme a superar todos mis temores y obstáculos en esta etapa de mi vida, gracias por tu apoyo, cariño, paciencia y tu consejo, eres mi vida. A MARIO NUÑEZ: Gracias por ser un amigo y compartir todos estos momentos durante la realización del proyecto. Andrés Santiago Herrera Arvea. A MIS PADRES: Por estar conmigo en cada momento de mi vida. Que con su incondicional apoyo me han demostrado el gran cariño y amor que sienten por mí. No hay palabras para agradecer todo lo que me han brindado. Teniendo como única forma de agradecimiento la promesa de seguir adelante con la esperanza de llenarlos de orgullo. A MIS HERMANOS: Que me han apoyado de mil maneras diferentes, por inspirarme a seguir siempre adelante, por ser más que mis hermanos mis compañeros y amigos. A MIS COMPAÑEROS DE PROYECTO: Salma y Andrés gracias por todo el apoyo no solo en lo académico. En verdad estoy feliz de haber compartido todo este tiempo con ustedes. A MIS COMPAÑEROS DE CARRERA: Que me ayudaron disfrutar la mayor experiencia académica de mi vida. Mario Núñez Avila. A MIS PADRES: Por su apoyo, cariño y comprensión, por hacer de mí la persona que soy y por que hoy puedo decir que este éxito logrado nos pertenece a todos gracias. A ANDRÉS SANTIAGO HERRERA ARVEA: Por tu amistad incondicional tú apoyo y cariño y porque ahora se que a tú lado no hay barrera que no pueda ser derribada solo me queda decirte gracias. A MARIO NUÑEZ AVILA: Por la gran amistad brindada durante estos meses y por tu ayuda incondicional para lograr la culminación de este proyecto. Salma Lucero Sánchez Ocampo INDICE. CAPITULO I Fundamentos de Geometría Proyectiva 1 Introducción…………………………………………………………... 1.1 El plano proyectivo…………………………………………………. 1.1.1 Coordenadas homogéneas………………………………… 1.1.2 Rectas proyectivas………………………………………… 1.1.3 Parametrización de rectas proyectivas……………………. 1.2 El espacio proyectivo……………………………………………….. 1.3 Subespacios proyectivos……………………………………………. 1.3.1 Intersección de subespacios proyectivos………………….. CAPITULO II Geometría de la cámara 2 Introducción…………………………………………………………... 2.1 Geometría de imágenes……………………………………………... 2.1.1 Proyección en perspectiva………………………………… 2.1.2 Sistema coordinador de la imagen………………………... 2.1.3 Matriz de calibración de la cámara……………………….. 2.1.4 Parámetros de la cámara externa………………………….. 2.2 Una cámara proyectiva……………………………………………… 2.2.1 ¿Qué da la calibración?........................................................ 2.2.2 Ángulos entre líneas………………………………………. 2.2.3 Calibración de la cámara………………………………….. 2.2.3.1. Ejemplos de objetos calibrados………………… 2.3 Perspectiva débil……………………………………………............. 2.3.1 La cámara afín…………………………………………….. 2.4 Transformación del plano proyectivo………………………………. 2.4.1 Cuatro puntos definen una transformación proyectiva…… 2.5 Ejemplos prácticos………………………………………………….. 2.5.1 Removiendo la distorsión de la perspectiva………………. 2.5.1.1 El cono de líneas………………………………… 2.5.2 Rotaciones sintéticas……………………………………… 2.5.3 Relación entre la coordenada de un píxel y la coordenada en pantalla…………………………………. 2.6 Geometría de dos vistas…………………………………………….. 2.6.1 Imágenes del plano………………………………………... 2.6.2 Geometría de la correspondencia…………………………. CAPITULO III Generación de bordes 3 Introducción…………………………………………………………... 3.1 Concepto de derivada en la extracción de bordes…………………... 3.2 Operadores primera derivada……………………………………….. 3.2.1 Operadores gradiente……………………………………… 3.2.2 Operadores de Sobel………………………………………. 3.2.3 Operador de Prewitt………………………………………. 3.2.4 Operador de Roberts………………………………………. 3.3 Extensión de operadores……………………………………………. 3.4 Algoritmo de Canny………………………………………………… 3.5 Operadores segunda derivada………………………………………. 3.5.1 Operador laplaciana……………………………………….. 2 2 2 3 4 4 6 6 8 8 8 8 9 9 10 10 11 11 12 13 13 14 15 15 15 16 16 16 17 18 18 20 20 21 21 22 23 23 23 24 26 26 CAPITULO IV Cuaterniones y álgebra geométrica 4 Introducción…………………………………………………………... 4.1 Historia……………………………………………………………… 4.2 Detalles Algebraicos………………………………………………... 4.3 Aplicaciones………………………………………………………… 4.4 Representaciones de los Cuaterniones……………………………… 4.4.1 Vectoriales………………………………………………. 4.4.2 Matriciales………………………………………………. 4.5 Aritmética Básica de Cuaterniones…………………………………. 4.5.1 Adición………………………………………………….. 4.5.2 Producto…………………………………………………. 4.5.3 Cociente…………………………………………………. 4.6 Cuaterniones y rotación en el espacio………………………………. 4.6.1 Descubriendo la fórmula……………………………….. 4.6.2 La fórmula……………………………………………… 4.6.3 Un ejemplo……………………………………………... 4.6.4 Cuaterniones y Ángulos de Euler………………………. 4.7 El algebra geométrica en espacios 3d y 4d…………………………. 4.8 Espacio tridimensional e imagen del plano bidimensional…………. 4.9 Algebra geométrica del espacio euclidiano en 3D………………….. 4.10 Algebra geométrica para espacios proyectivos……………………. 4.10.1 Transformaciones proyectivas…………………………... 4.10.2 La línea proyectiva……………………………………… 29 29 29 30 30 30 31 31 31 31 32 32 32 33 33 34 35 35 36 37 37 38 CAPITULO V Aplicaciones de álgebra geométrica 5 Introducción…………………………………………………………... 5.1 El bracket (soporte)…………………………………………………. 5.2 El principio de dualidad y las operaciones de encuentro y unión…... 5.3 Algebra en espacio proyectivo……………………………………… 5.4 Intersección de una línea y un plano………………………………... 5.5 Intersección de dos planos………………………………………….. 5.6 Intersección de dos líneas…………………………………………... 42 42 43 45 46 46 47 CAPITULO VI Aplicaciones de geometría epipolar 6 Introducción…………………………………………………………... 6.1 Geometría epipolar………………………………………………….. 6.2 Autovalor y autovector de una aplicación lineal……………………. 6.2.1 Autovalor de una matriz…………………………………... 6.3 La matriz pseudoinversa……………………………………………... 6.4 La matriz antisimétrica……………………………………………… 6.5 La transformada SVD………………………………………………. 6.6 La matriz fundamental……………………………………………… 6.7 Solución lineal (Algoritmo de los ocho puntos)……………………. 6.7.1 Algoritmo de los ocho puntos normalizado………………. ANEXOS BIBLIOGRAFIA 49 49 52 53 53 54 54 56 56 56 CAPITULO I Capítulo I Fundamentos de Geometría Proyectiva 2 Fundamentos de geometría proyectiva. 1. Introducción. La exposición de geometría proyectiva que a continuación se dará, no esta basada en axiomas como disciplina matemática independiente, si no que partiremos de los axiomas de espacios vectoriales. Esto nos permitirá utilizar los elementos de un cuerpo para expresar los elementos del espacio proyectivo por coordenadas. Consideremos entonces el hecho de mirar un objeto, los rayos de luz que parten de este entran en el ojo, si se pusiera una pantalla transparente entre el ojo y el objeto, estos rayos de luz cortarían a la pantalla en una colección de puntos, a esta colección de puntos le llamaremos proyección del objeto sobre la pantalla. Es así como comenzaremos a adentrarnos en el mundo de la geometría proyectiva. 1.1 El plano proyectivo. A continuación se generará una definición analítica, generalizando la idea de coordenadas homogéneas, lo que nos permitirá hacer cálculos y definir objetos geométricos de manera precisa. Para tener una intuición geométrica del plano proyectivo, que es muy importante, veremos también otros modelos. Es preciso remarcar, una y otra vez, que cada modelo tiene ventajas y desventajas, no hay una manera de “ver” todo el plano proyectivo de golpe, como creemos tener la idea del plano euclidiano. Pero observemos que esto último tampoco es cierto. Lo que intuitivamente sabemos del plano euclidiano es por pequeñas porciones de él, el pizarrón, el piso o una hoja de papel. Lo mismo sucede con el plano proyectivo, en pequeñas porciones es como el euclidiano pero también incluye un cierto comportamiento al infinito que se convierte en parte integral de él. 1.1.1 Coordenadas homogéneas. Dado x = (x, y, z) ℜ 3 tal que x ≠ 0 (esto es, tal que alguna de las tres coordenadas de x es distinta de cero). Sea [x] = [x : y : z] := {(tx, ty, tz) | t ∈ ℜ , t ≠ 0}. Es decir, [x] es la recta por el origen con dirección x, menos el origen. Se tiene entonces que, [x] = [t x] para cualquier t ≠ 0. Y además consideraremos a [0] o [0 : 0 : 0] como una expresión sin sentido. Definimos al plano proyectivo P 2 como: P 2 := {[x] | x ∈ ℜ 3 , x ≠ 0.} Nos referimos a los elementos de P 2 como puntos y a la expresión [x : y : z] o [x] como un punto de P 2 dado por coordenadas homogéneas. Nótese que las coordenadas homogéneas de un punto en P 2 no son únicas (a diferencia de ℜ 2 , donde sí lo son). Hay cierta ambigüedad, pero no es tan grave, pues. [x] = [y] si y sólo si y = t x para alguna t ≠ 0. Capítulo I Fundamentos de Geometría Proyectiva 3 1.1.2 Rectas proyectivas. Tenemos que los puntos de P 2 corresponden de manera biunívoca con las rectas en ℜ 3 que pasan por el origen. Podemos definir entonces a los subconjuntos distinguidos de P 2 que llamaremos rectas correspondiendo a los planos por el origen en ℜ 3 , es decir, una recta en P 2 es el conjunto de puntos cuyas correspondientes rectas en ℜ 3 forman un plano. Tiene sentido, pues en la sección anterior vimos que los puntos de una recta proyectiva corresponden biunívocamente a las rectas por el origen en un plano. Puesto que los planos en R3 están dados por una ecuación lineal, podemos ser más explícitos: Sea n un vector no nulo en ℜ 3 , definimos la recta dada por n en P 2 como. l n := {[x] ∈ P 2 | n · x = 0}. Esta bien definida pues si tomamos t ≠ 0, entonces. n · x = 0 ⇔ n · t x = 0. Dado que n · t x = t(n · x), lo cual implica que no importa qué representante de un punto tomemos ([x] o [t x]) la condición para pertenecer al conjunto da el mismo resultado (es cierta o no dependiendo del punto en P 2 , no del representante en ℜ 3 ). Si n = (a, b, c) entonces l n se describe por coordenadas homogéneas como. l n := {[x : y : z] ∈ P 2 | ax + by + cz = 0} . Y podemos decir que las rectas de P 2 son precisamente los conjuntos l n para n ∈ ℜ 3 , n ≠ 0. Notemos además que si t ≠ 0, entonces l n = l tn , (pues t n·x = t(n·x) = 0 ⇔ n · x = 0). Así que la recta proyectiva l n depende no de n (un vector no nulo en ℜ 3 ) sino de [n] (el correspondiente punto en P 2 ); entonces podemos definir para [n] ∈ P 2 su recta dual. l [n ] := l n . Dicho de otra manera, a cada recta por el origen en ℜ 3 ([n]) le asociamos su plano perpendicular que pasa por el origen ( l [n ] ). Pero además como cada plano por el origen tiene una única recta perpendicular por el origen, se tiene que. l n = l m ⇔ [n ] = [m] . Así que hemos establecido una biyección entre las rectas de P 2 y los puntos de P 2 . l [n ] ↔ [n ] . Capítulo I Fundamentos de Geometría Proyectiva 4 Al cual llamaremos dualidad. La dualidad cumple propiedades muy bonitas que vienen de una básica que dice que un punto está en una recta si y sólo si su recta dual contiene al punto dual; es decir, dados [p] y [q] en P 2 . [p] ∈ l[q ] ⇔ [q] ∈ l[ p ] . Cuya demostración es obvia pues ambas condiciones son, por definición, equivalentes a, p · q = 0. 1.1.3 Parametrización de rectas proyectivas. Dados puntos [a], [b] ∈ P 2 , tales que [a] ≠ [b] tenemos una parametrización de la recta que pasa por ellos dada por la función. P1 → P 2 [x : y] → [xa + yb] Que corresponde a la manera natural de generar un plano por dos vectores dados. Esta función es inyectiva y nos dice que cada recta del plano es como la recta proyectiva modelo P1. Sin embargo no está unívocamente determinada por los puntos [a] y [b] (aunque sí por sus representantes a y b). Si tomamos t a en vez de a, con t ≠ 0 por supuesto, entonces la asignación [x: y] → [x (t a) + yb] sigue mandando pero en el resto de los puntos es diferente (si t ≠ 1). Esto corresponde a que una transformación proyectiva de P1 está determinada por su valor en tres puntos, no sólo en dos. Pero dado cualquier otro punto [c] ∈ 〈 [a] , [b] 〉 i se tiene que c = t a + s b para algunos t y s que son distintos de cero si [a] ≠ [c] ≠ [b]. Y entonces la función. P1 → P 2 [x : y] → [x(ta) + y(sb)] Que manda si está unívocamente determinada. Estas inclusiones de P1 en P 2 se llaman funciones proyectivas. Tenemos entonces que todas las rectas de P 2 son como nuestro modelo ideal de recta proyectiva P1. 1.2 El espacio proyectivo Consideremos el plano de la geometría elemental y en el una recta r y un punto O, no perteneciente a la misma. Hagamos corresponder a cada punto A de r la recta a ≡ OA que lo proyecta desde O. Se tiene así una correspondencia entre los puntos de la recta r y las rectas del haz con base en O. Esta correspondencia no es biunívoca, pues a la recta r’, paralela a r, no le corresponde ningún punto de r. Para que la correspondencia sea biunívoca se conviene en decir que a la recta r’ le corresponde también un punto, al cual se le llama punto impropio o punto del infinito de la recta r. Si a los puntos de la recta r se le añade el punto impropio, se tiene la recta proyectiva: “Es equivalente al conjunto de rectas del plano que pasan por un punto" (considerándose estas rectas como los puntos de la recta proyectiva). Capítulo I Fundamentos de Geometría Proyectiva 5 Consideremos ahora el espacio ordinario y en él un plano π y un punto O exterior a él. Hagamos corresponder a cada punto A de π la recta a ≡ OA que lo proyecta desde O. A cada punto de ¼ le corresponde una recta, pero esta correspondencia no es biunívoca, pues a las rectas por O paralelas a π (que están en el plano π ’ paralelo a π por O) no les corresponde ningún punto en π . Para hacer que la correspondencia sea biyectiva se puede convenir en que a cada recta que pasa por O paralela a π le corresponde un punto impropio o punto del infinito del plano π (p → P ∞ ; q → Q ∞ ). A las rectas r de π les corresponden los planos que las proyectan desde O y al punto de intersección de dos rectas le corresponde la recta intersección de los planos proyectantes. Si las rectas en π son paralelas, la recta intersección de los planos correspondientes es paralela a π . Se puede decir que las rectas paralelas tienen un punto impropio o del infinito común. El conjunto de los puntos impropios de π corresponden a las rectas contenidas en π ’ que pasan por O y como a los planos por O corresponden rectas de π , es natural decir que los puntos impropios constituyen la recta impropia o recta del infinito del plano π . Si a los puntos del plano π se les añaden los puntos impropios, se tiene el plano proyectivo: “Es equivalente al conjunto de rectas que pasan por un punto del espacio" (considerando a estas rectas como puntos y a los planos como rectas del plano proyectivo). Figura1.1.El espacio Proyectivo. Para hacer que la correspondencia sea biyectiva se puede convenir en que a cada recta que pasa por O paralela a π le corresponde un punto impropio o punto del infinito del plano π (p → P ∞ ; q → Q ∞ ). A las rectas r de π les corresponden los planos que las proyectan desde O y al punto de intersección de dos rectas le corresponde la recta intersección de los planos proyectantes. Si las rectas en π son paralelas, la recta intersección de los planos correspondientes es paralela a π . Se puede decir que las rectas paralelas tienen un punto impropio o del infinito común. El conjunto de los puntos impropios de π corresponden a las rectas contenidas en π ’ que pasan por O y como a los planos por O corresponden rectas de π , es natural decir que los puntos impropios constituyen la recta impropia o recta del infinito del plano π . Capítulo I Fundamentos de Geometría Proyectiva 6 Si a los puntos del plano π se les añaden los puntos impropios, se tiene el plano proyectivo: “Es equivalente al conjunto de rectas que pasan por un punto del espacio" (considerando a estas rectas como puntos y a los planos como rectas del plano proyectivo). 1.3 Subespacios proyectivos. Sea E un espacio vectorial de dimensión n+1, sobre un cuerpo conmutativo K, P(E) el espacio → proyectivo asociado a E y ϕ :E – { 0 } → P(E) la proyección canónica. En la interpretación intuitiva de las rectas del plano proyectivo, (apartado B de la página 3), estas quedan determinadas por los planos (subespacios de dimensión dos) que las proyectan desde O; o sea, las rectas son las imágenes de los subespacios bidimensionales mediante la proyección canónica. Esto justifica la siguiente definición general: → Se denomina variedad lineal proyectiva de P(E) a la imagen ϕ (F – { 0 }), donde F es un subespacio vectorial de E. Toda variedad lineal proyectiva correspondiente a un subespacio vectorial F ⊂ E, coincide con el espacio proyectivo P(F) asociado a F. → Demostración: Es evidente que la relación de equivalencia definida en F – { 0 } para construir el espacio P(F) es la inducida por la correspondiente relación de equivalencia definida en E – → { 0 } para obtener P(E). Esta proposición nos da pie para denominar a las variedades lineales proyectivas subespacios proyectivos. Casos particulares de subespacios proyectivos: a) Si dim F = 2, a P(F) se le denomina recta (subespacio proyectivo de dim P(F) = 1). b) Si dim F = 3, a P(F) se le denomina plano (subespacio proyectivo de dim P(F) = 2). c) Si dim F = n, a P(F) se le denomina hiperplano (subespacio proyectivo de dim P(F) = n -1). 1.3.1 Intersección de subespacios proyectivos. Si P(F) y P(G) son subespacios proyectivos de P(E) deducido de los subespacios vectoriales F y G, respectivamente, entonces. P(F) ∩ P(G) = P(F ∩ G) Es decir, la intersección de subespacios proyectivos es un espacio proyectivo. Demostración.→ → X ∈ P(F ∩ G) ⇔ ( ∃ x ∈ F ∩ G - { 0 } / → → ϕ ( x ) =X) → → → → ⇔ ( ∃ x ∈ F - { 0 } / ϕ ( x ) =X) y → ( ∃ x ∈ G - { 0 } / ϕ ( x ) =X) ⇒ X ∈ P(F) ∩ P(G) . → → → → → → X ∈ P(F) ∩ P(G) ⇔ ( ∃ x ∈ F - { 0 } / ϕ ( x ) =X) y ( ∃ x ∈ G - { 0 } / ϕ ( x ) =X) ⇒ ∃ λ ∈ K – {0} e y = λ x ⇒ y ∈ F ∩ G – {0} ⇒ ϕ (y) ∈ P(F ∩ G). CAPITULO II Capítulo II Geometría de la cámara 8 Geometría de la cámara. 2 Introducción. Los puntos principales que se ven en esta parte son: • • • Una proyección perspectiva de la cámara es representada por una matriz de3x4. La transformación de perspectiva mas general entre dos planos (un mundo plano y la imagen plana, o dos imágenes planas inducidas en un mundo plano) es la transformación de un plano proyectivo. Esto puede ser computado por la correspondencia de cuatro (o más) puntos. El conocer los valores de una coordenada en píxeles, puede ser de utilidad para obtener el valor de la coordenada en pantalla mediante una operación matricial simple. 2.1. Geometría de imágenes. 2.1.1. Proyección en perspectiva ⎛x ⎞ ⎛x⎞ ⎜ ⎟ ⎜ ⎟ λ ⎜ y ⎟=⎜ y⎟ ⎜ f ⎟ ⎜z ⎟ ⎝ ⎠ ⎝ ⎠ En donde λ =z / f Figura2.1.Proyección en perspectiva de una imagen. Esto puede ser escrito como un mapeo lineal entre coordenadas homogéneas: ⎛x ⎞ ⎜ ⎟ ⎜y⎟ ⎜f⎟ ⎝ ⎠ = ⎡1000 ⎤ ⎢0100⎥ ⎥ ⎢ ⎢⎣0010⎥⎦ ⎛x⎞ ⎜ ⎟ ⎜ y⎟ ⎜z ⎟ ⎜ ⎟ ⎜1 ⎟ ⎝ ⎠ Donde una matriz de proyección de 3x4, representa un mapa desde 3D a 2D. 2.1.2. Sistema coordinador de imagen. Parámetros internos de la cámara: kx xcam = x-x0 ky ycam = y-y0 Figura2.2.Parámetros internos de la cámara. Capítulo II Geometría de la cámara 9 Donde las unidades de kx, ky están dado por pixeles/longitud. ⎡ ⎛x⎞ ⎜ ⎟ 1 ⎢α X X =⎜ y⎟ = ⎢ ⎜1 ⎟ f ⎢ ⎝ ⎠ ⎣ α ⎛ xcam ⎞ X 0⎤ ⎛⎜ xcam ⎞⎟ ⎜ ⎟ ⎥⎜ ⎜ ⎟ Y0⎥ y =K y ⎟ ⎜ cam ⎟ ⎜ cam ⎟ 1 ⎥⎦ ⎜ f ⎟ ⎜f ⎟ ⎝ ⎝ ⎠ ⎠ Y En donde α x = f kx y α y = f ky 2.1.3. Matriz de calibración de la cámara. k es una matriz diagonal superior de 3x3, llamada matriz de calibración de la cámara: ⎡α X ⎢ K= ⎢ ⎢⎣ • • α Y X 0⎤ ⎥ Y0⎥ 1 ⎥⎦ Hay cuatro parámetros: (i) La escala de la imagen en la dirección x y y, αx y αy (ii) El punto principal (xo, yo), que el punto donde el eje óptico interfecta el plano. La razón de aspecto es: (αx / αy) 2.1.4. Parámetros de la cámara externa Figura2.2 Transformación entre el mundo y las coordenadas de la cámara. Transformación euclidiana entre el mundo y las coordenadas de la cámara • R es una matriz de rotación de 3x3 • T es un vector de translación de 3x1 Concatenando las tres matrices. ⎛x⎞ ⎜ ⎟ X= ⎜ y ⎟ =K ⎜1 ⎟ ⎝ ⎠ ⎛X⎞ ⎜ ⎟ ⎡1 0 0 0 ⎤ ⎢0 1 0 0⎥ ⎡ ℜ t ⎤ ⎜ Y ⎟ =K [ℜ | t ] X ⎥ ⎢ T 1⎥ ⎜ Z ⎟ ⎢ ⎦⎜ ⎟ ⎢⎣0 0 1 0⎥⎦ ⎣0 ⎜1 ⎟ ⎝ ⎠ Capítulo II Geometría de la cámara 10 Que define la matriz de proyección de 3 x 4 de el espacio tridimensional euclidiano a la imagen como X=PX [ P= K [ℜ | t ] =K ℜ I | ℜ T t ] Nota, el centro de la cámara esta en (X,Y,Z)T= - ℜ Tt En adelante será común solo la forma 3x4 de p que es importante, preferible a su descomposición. 2.2 Una cámara proyectiva. El modelo de la cámara para la proyección perspectiva es un mapa lineal entre los puntos coordinados homogéneos ⎛X⎞ ⎜ ⎟ ⎛x⎞ ⎜ ⎟ ⎜Y ⎟ ⎜ y ⎟ [P(3 × 4)] ⎜ ⎟ Z ⎜1 ⎟ ⎜ ⎟ ⎝ ⎠ ⎜1 ⎟ ⎝ ⎠ • • • El centro de la cámara es el vector nulo de p, es decir Si P=[I | 0] entonces el centro es X=(0,0,0,1)Τ . P tiene 11 grados de libertad (parámetros esenciales). P tiene rango 3 2.2.1. ¿Qué da la calibración? • • • K proporciona la transformación entre el punto de una imagen y un rayo en el espacio tridimensional de euclides Una vez que K es conocido la cámara está calibrada Una cámara calibrada es un sensor de dirección, capaz de medir la dirección del rayo – como un transportador de 2D. ⎛ x ⎞ ⎡α X ⎜ ⎟ ⎢ X= ⎜ y ⎟ = ⎢ ⎜1 ⎟ ⎢ ⎝ ⎠ ⎣ α Y X 0⎤ ⎛⎜ xcam ⎞⎟ ⎥ Y 0 ⎥ ⎜ y ⎟ =Kd ⎜ cam ⎟ 1 ⎥⎦ ⎜ f ⎟ ⎝ ⎠ Capítulo II Geometría de la cámara 11 2.2.2. Ángulos entre líneas. En donde ω = (KKT)-1 2.2.3. Calibración de la cámara. Declaración de problema: Dadas n correspondencias xi ↔ Xi donde Xi es un punto en el lugar y xi su imagen: Calcular P= [R | t] tal que xi =PXi . El algoritmo para la calibración de la cámara tiene dos partes (i) calcular la matriz P de un conjunto de puntos de correspondencia. (ii) Descomponer P en K, R a través de la descomposición QP. Paso 1 del algoritmo: Calcular la matriz P: Xi=PXi Cada correspondencia genera dos ecuaciones: p +p y+p z+p x p +p y+p +p x z i 11 = 12 i 31 32 i 13 i i 33 i p x+p y+p z+p y p x+p y+p z+p 14 = 21 i 22 i 23 i 24 31 i 32 i 33 i 34 i 31 Despejando obtenemos las ecuaciones lineales en la matriz de elementos de P x (p x + p y + p z + p ) = p x + p y + p z + p y (p x + p y + p z + p ) = p x + p y + p z + p i i 31 31 i 32 i 32 33 i i 33 i 34 i 34 i 11 21 12 i 13 i 22 i 23 i 14 i Estas ecuaciones podemos arreglarlas como: ⎛X ⎜⎜ ⎝0 Y 0 Z 0 1 0 0 X 0 Y 0 Z 0 − xX 1 − yX − xY − yY Con p=(p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34) Un 12-vector − xZ − yZ − x⎞ ⎟ p=0 − y ⎟⎠ 34 Capítulo II Geometría de la cámara 12 Resolviendo para P (i) concatenamos la ecuación de (n≥6) correspondencias para generar 2n ecuaciones simultáneas, que pueden ser escritas: Ap=0, donde A es una matriz de 2n x 12. (ii) En general esta no será una solución exacta, pero una solución (lineal) que minimiza |Ap|, sujeto a |p|=1 es obtenido del eigenvector con al menos un eigenvalor de AΤA. O equivalentemente de un vector correspondiente a un valor singular más pequeño del SVD de A. (iii) Esta solución lineal es entonces usada como el punto inicial para una minimización no lineal de las diferencias entre las mediciones y el punto de proyección: min p ∑ ((x , y ) − P(x , y , z ,1)) 2 i i i i i i 2.2.3.1. Ejemplos de objetos calibrados. Figura2.3 Ejemplo de objetos calibrados . Determinar la posición exacta de la esquina mediante: (i) extraer y ligar las orillas usando el operador de orillas astutas (ii) ajustar las líneas de las orillas usando regresiones ortogonales (iii) intersectar líneas para obtener las esquinas por precisión de sub-pixeles. El error final entre los puntos medidos y proyectados es típicamente menor a 0.2 pixeles. Paso 2 del algoritmo: descomponer P en K, R y t La primer submatriz de 3x 3, M, es el producto de (M=KR) de una matriz triangular de rotación superior. (i) Factorizar M en KR usando la matriz de descomposición QR. Esto determina K y R. (ii) Entonces. t= K (p , p , p −1 14 24 ) T 34 Capítulo II Geometría de la cámara 13 Nota. Esto produce una matriz con un parámetro extra distorsionado s ⎡α X ⎢ K= ⎢ ⎢⎣ α Y X 0⎤ ⎥ Y0⎥ 1 ⎥⎦ Con s=tan θ, y θ el ángulo entre los ejes de la imágenes. 2.3. Perspectiva débil. Proyectar, mientras se enfoca para mantener el tamaño de la imagen fija. Figura 2.4. Proyección de una imagen . Las líneas de la imagen se convierten paralelas, y el resultado es: ⎡ r11 ⎢ P=K ⎢r 21 ⎢⎣ 0 r r 12 22 0 r r *⎤ ⎥ *⎥ *⎥⎦ 13 23 0 Una generalización de la cámara afín 2.3.1. La cámara afín. ⎡ m11 ⎢ P= ⎢m21 ⎢⎣ 0 m m t ⎤⎥ m m t⎥ 12 13 22 23 0 0 1 2 1 ⎥⎦ La matriz M2x3 tiene rango dos. La proyección bajo la cámara afín es un mapa lineal sobre coordenadas no homogéneas compuestas con una transición: ⎛ x ⎞ ⎡ m11 ⎜⎜ ⎟⎟ = ⎢ ⎝ y ⎠ ⎣m21 m m 12 22 ⎛X⎞ ⎤ ⎜ ⎟ ⎛ t1 ⎞ ⎥ ⎜ Y ⎟ + ⎜⎜ ⎟⎟ 23⎦ ⎜ ⎟ ⎝t 2 ⎠ ⎝Z ⎠ m m El punto (t1, t2) es una imagen del mundo original. • El centro de la cámara afín es el infinito • Una cámara afín tiene 8 grados de libertad • Modela perspectiva débil y para-perspectiva 13 Capítulo II Geometría de la cámara 14 2.4. Transformación del plano proyectivo. Figura 2.5. El plano proyectivo. Se escoge el sistema coordinado del espacio tal que el plano de los puntos tenga coordenada cero z. Entonces la matriz P de 3x4 se reduce a ⎛ x1 ⎞ ⎡ p ⎜ ⎟ ⎢ 11 ⎜x ⎟=⎢p ⎜ 2 ⎟ ⎢ 21 ⎜ ⎟ ⎢p ⎝ x3 ⎠ ⎣ 31 p p p 12 22 32 p p p 13 23 33 ⎤ ⎥ ⎥ 24 ⎥ 34 ⎥ ⎦ p p p 14 ⎛X⎞ ⎡ ⎜ ⎟ p11 ⎜Y ⎟ ⎢ ⎜ 0 ⎟ = ⎢ p21 ⎜ ⎟ ⎢p ⎜1 ⎟ ⎢⎣ 31 ⎝ ⎠ p p p 12 22 32 ⎤ ⎛X ⎞ ⎥⎜ ⎟ ⎥ ⎜Y ⎟ 24 ⎥⎜ ⎟ 1 34 ⎥ ⎦⎝ ⎠ p p p 14 Que es una matriz de 3x3 que representa una transformación del plano general al plano proyectivo. ⎛ '⎞ ⎜ x1 ⎟ ⎡ h11 ⎜ '⎟ ⎢ ⎜ x2 ⎟ = ⎢h21 ⎜⎜ ' ⎟⎟ ⎢⎣h31 ⎝ x3 ⎠ h h h 12 22 32 ⎤ ⎛⎜ x1 ⎞⎟ ⎥⎜ ⎟ 23⎥ x 2 ⎜ ⎟ ⎥⎜ ⎟ 33 ⎦ ⎝ x3 ⎠ h h h 13 O x’ =Hx, donde H es una matriz no particular homogénea de 3x3. • • • • Esta es la transformación más general entre el mundo y el plano de la imagen bajo la perspectiva de la imagen de la cámara. Es por lo general solo la forma de la matriz 3x3 que es importante para establecer propiedades de esta transformación. Una transformación proyectiva es también llamada una “homografía” y una “colineación”. H tiene 8 grados de libertad. Capítulo II Geometría de la cámara 15 2.4.1. Cuatro puntos definen una transformación proyectiva. Dado un punto de correspondencia n (x, y) ↔ (x’, y’) Calcular H tal que x’i = Hxi ' x h x= = x h ' • • 1 ' 11 3 31 x + h12 y + h13 x + h32 y + h33 2 ' 21 3 31 x + h22 y + h23 x + h32 y + h33 Cada punto de correspondencia da dos limitaciones y despejando genera dos ecuaciones lineales para elementos de H x (h y (h ' 31 ' 31 • • ' y =x =h x h ' x + h32 y + h33 ) = h11 x + h12 y + h13 x + h32 y + h33 ) = h21 x + h22 y + h23 Si n≥4 (tres puntos no colineales), entonces H determinado únicamente. La conversión de esto es lo que hace posible la transformación de cualesquiera cuatro puntos la posición general a cualesquiera otros cuatro puntos de la posición general por una proyección. 2.5. Ejemplos prácticos. 2.5.1. Removiendo la distorsión de la perspectiva. Dadas las coordenadas de cuatro puntos en el plano encontrar la rectificación proyectiva en el plano. Figura 2.6.Rectificación proyectiva del plano • • Esta rectificación no requiere conocimiento de ninguno de los parámetros de la cámara o de la postura del plano No es siempre necesario conocer coordenadas para cuatro puntos Capítulo II Geometría de la cámara 16 2.5.1. 1. El cono de líneas. Una imagen es la intersección de un plano con el cono de líneas entre puntos en el espacio tridimensional y el centro óptico. Cualesquiera dos imágenes (con el mismo centro de cámara) están relacionadas por la transformación proyectiva del plano. Es decir, rotación con respecto al centro de la cámara. 2.5.2. Rotaciones sintéticas. Figura 2.7.Rotaciones Sintéticas Las imágenes sintéticas son producidas por el barrido proyectivo de la imagen original, de tal modo que las cuatro esquinas del mapa de la imagen del rectángulo van a las esquinas del rectángulo. Ambos barridos corresponden a la rotación sintética de la cámara con respecto al centro de la cámara (ajustada). 2.5.3. Relación entre la cordeada de un píxel y la coordenada en pantalla. Hay una relación entre coordenada del píxel y coordenada en la pantalla. De una manera intuitiva se ve que se puede pasar de una a la otra por un cambio de la marca de referencia que resulta adentro. U=C*(x/f) Figura 2.7.Relación entre las coordenadas del píxel y las de la pantalla. Capítulo II Geometría de la cámara 17 En donde: U=(u,v) : Son las coordenadas del píxel. x=(x,y,f): Son las coordenadas de pantalla. f Es el foco. ⎛α ⎜ C= ⎜ γ ⎜0 ⎝ β δ 0 u ⎞⎟ v ⎟⎟ 0 0 1⎠ l y h son el largo y ancho del plano de la imagen respectivamente, nl y nh, el número del pixel en longitud y altura en la pantalla. Estos elementos permiten definir la siguiente matriz. C= nl /(l / f ) nl / 2 ⎞ 0 ⎛ ⎜ ⎟ nh / 2 ⎟ 0 ⎜ − nh /( h / f ) ⎜ 0 0 1 ⎟⎠ ⎝ Al conocer la coordenada del pixel, uno puede encontrar la coordenada en la pantalla usando una operación matricial simple. (x/f)= C −1 *u Para mas detalles con respecto a este punto ver Anexo III 2.6 Geometría de dos vistas. • • Cámaras P y P’ de tal modo que X=PX x’=PX La línea de fondo entre las cámaras no es cero Dado un punto de la imagen en la primera vista, ¿donde está el punto de correspondencia de la segunda vista? ¿Cuál es la posición relativa de las cámaras? ¿Cuál es la geometría tridimensional de la escena? Capítulo II Geometría de la cámara 18 2.6.1. Imágenes del plano • H puede ser calculado desde la correspondencia de cuatro puntos sobre el plano. 2.6.2. Geometría de la correspondencia Dada la imagen de un punto en una vista, que podemos decir con respecto a su posición en otra vista? Un punto en una imagen “genera” una línea en otra imagen. Esta línea es conocida como línea epipolar, y la geometría que le da lugar es conocida como geometría epipolar. CAPITULO III Capítulo III Generación de bordes 20 Generación de bordes. 3 Introducción. Podemos definir el término borde como píxeles alrededor de los cuales la imagen presenta una brusca variación en los niveles de gris. Borde se refiere a cadenas conectadas de puntos de borde, es decir, fragmentos de contorno, cabe mencionar que esto no impide que la imagen también pueda contener puntos aislados que presentan un alto contraste en los niveles de gris. Los puntos de borde son también denominados en terminología anglosajona “edgels”. Existen varias razones que sostienen el interés por los bordes, de manera particular, las líneas de las imágenes, las curvas y contornos son elementos básicos para muchas aplicaciones tales como estereopsis, calibración, movimiento o reconocimiento, así como sistemas de visión. Cabe mencionar que la filosofía básica de muchos algoritmos de detección de bordes es el cómputo de operadores derivada locales (primera o segunda). 3.1 Concepto de Derivada en la extracción de Bordes. Podemos observar en la imagen 3.1 que los bordes se modelan como una rampa en lugar de hacerlo como un cambio brusco de intensidad, debido a que en la imagen original suelen estar desdibujados como resultado del muestreo. La primera derivada es cero en rodas las regiones de intensidad constante y tiene un valor constante en toda la transacción de intensidad. Por otra parte la segunda derivada es cero en todos los puntos, excepto en el comienzo y el final de una transacción de intensidad. Por lo tanto un cambio de intensidad se manifiesta como un cambio brusco en la primera derivada y presenta un paso por cero, es decir, produce un cambio de signo en su valor, en la segunda derivada. En base a lo anterior podemos determinar que el valor de la primera derivada puede utilizarse para detectar la presencia de un borde, así como el signo de la segunda derivada. Capítulo III Generación de bordes 21 3.2 Operadores Primera Derivada. 3.2.1 Operador Gradiente. El gradiente de una imagen f(x,y) en un punto (x,y) se define como un vector bidimensional dado por la ecuación (3.1 ),siendo un vector perpendicular al borde donde ⎤ ⎡∂ ⎡G x ⎤ ⎢ ∂x f ( x, y )⎥ ⎥ G [ f ( x, y ) ] = ⎢ ⎥ = ⎢ ⎢⎣G y ⎥⎦ ⎢ ∂ f ( x, y ⎥ ⎥⎦ ⎢⎣ ∂y Ecuación 3.1 Gradiente de una imagen. el vector G apunta en la dirección de variación máxima de f en el punto (x,y) por unidad de distancia con la magnitud y dirección dadas por. G= G 2 x + G φ ( x, y ) = tan 2 y Ecuación 3.2 Magnitud de G −1 G G y x Ecuación 3.3 Dirección de G Podemos aproximar la magnitud del gradiente mediante valores absolutos G ≈ G +G x y Ecuación 3.4 Aproximación de la magnitud del gradiente. Esto se hace debido a que la magnitud del gradiente no es tan importante como la relación entre diferentes valores. Es decir se va a decidir si un punto es de borde según si la magnitud del gradiente supere o no un determinado umbral. Para calcular la derivada en la ecuación 3.1 se pueden utilizar las diferencias de primer orden entre dos pixeles adyacentes como se muestra a continuación. G = x f ( x + Δx) − f ( x − Δx) 2Δx G y = f ( y + Δy ) − f ( y − Δy ) 2Δy Ecuación 3.5 Diferencias entre dos pixeles. Esta es la forma más elemental de obtener el gradiente de un punto. La magnitud del gradiente puede tomar cualquier valor real, y el ángulo también puede obtener valores entre 0o y 360o. Capítulo III Generación de bordes 22 3.2.2 Operadores de Sobel En general los operadores gradiente tienen el efecto de magnificar el ruido subyacente en la imagen, tanto los operadores de Sobel como el resto de los operadores de vecindad tienen la propiedad añadida de suavizar la imagen, eliminando parte del ruido y por consiguiente minimizar la aparición de falsos bordes debido al efecto de magnificación del ruido por parte de los operadores derivada. Podemos entonces determinar los operadores de Sobel como sigue. Gx =(z3+2z6+z9) - (z1+2z4+z7) Gy =(z7+2z8+z9) - (z1+2z2+z3) Ecuación 3.6 Operadores de Sobel. En donde los distintos valores de z son los niveles de gris de los píxeles solapados por las mascaras en cualquier localización de la imagen. Para obtener los valores de las componentes del vector gradiente en el punto definido por el píxel central de la región se utiliza la ecuación 3.6 por lo que la magnitud y el ángulo se pueden obtener a partir de las ecuaciones 3.2, 3.3 y 3.4. En otras palabras podemos decir obtenemos un valor del gradiente en dicho punto. Para obtener el siguiente valor las mascaras se mueven a la siguiente posición del nuevo píxel y se repite el proceso, después de haber barrido todas las posible posiciones, el resultado es una imagen gradiente. Es preciso tener en cuenta que en los bordes de la imagen los valores del gradiente no se pueden calcular por sobrepasar las mascaras de la propia imagen. Una vez que se ha obtenido la magnitud del gradiente se puede decir si un determinado punto es de borde o no aplicando la siguiente ecuación que nos permite obtener una imagen binaria como resultado. ⎧1 si G[f(x, y)] > T g(x,y)= ⎨ ⎩0 si G[f(x, y)] ≤ T Ecuación 3.7 Generación de una imagen binaria. En donde T es un umbral no negativo. Solo los píxeles de borde cuyo gradiente excedan el valor de T se consideran importantes. De manera que la ecuación (3.7) se puede ver como un procedimiento que extrae solo aquellos píxeles caracterizados por transiciones de intensidad significativas (dependiendo de T). ⎡ z1 z 2 z 3 ⎤ ⎥ ⎢ ⎢ z 4 z5 z 6⎥ ⎥ ⎢ ⎢⎣ z 7 z8 z 9 ⎥⎦ (a) ⎡ − 1 0 1⎤ ⎢ − 2 0 2⎥ ⎥ ⎢ ⎢⎣ − 1 0 1 ⎥⎦ (b) ⎡− 1 − 2 − 1⎤ ⎢0 0 0 ⎥⎥ ⎢ ⎢⎣ 1 2 1 ⎥⎦ (c) Figura 3.1 (a) Región de la imagen de dimensión 3x3; (b) Máscara usada para obtener G para obtener G y. x; (c) Máscara usada Capítulo III Generación de bordes 23 3.2.3 Operador de Prewitt. Este operador es similar al operador de Sobel la diferencias radica en los coeficientes de las mascaras. ⎡− 1 0 1⎤ ⎢− 1 0 1⎥ ⎥ ⎢ ⎢⎣− 1 0 1⎥⎦ (a) 1 1⎤ ⎡1 ⎢0 0 0 ⎥⎥ ⎢ ⎢⎣− 1 − 1 − 1⎥⎦ (b) Figura 3.2 (a) Máscara usada para obtener G x en el punto central de una región de dimensión 3x3; (b) Máscara usada para obtener G y en el mismo punto. Estas máscaras de denominan operadores de Prewitt. La magnitud y dirección del gradiente se obtienen como en el caso de Sobel ver ecuaciones (3.2),(3.3) y (3.4). 3.2.4 Operador de Roberts. Este operador a diferencia de los anteriores, marca solamente los puntos de borde, sin informarnos sobre la orientación de éstos. Existen dos formas del operador de Roberts: 1) raíz cuadrada de la suma de las diferencias de los vecinos diagonales al cuadrado. ([ f ( x, y) − f ( x − 1, y − 1] 2 + [ f ( x, y − 1) − f ( x − 1, y )] 2 ) Ecuación 3.8 Primer forma del operador de Prewitt. 2) suma de magnitud de las diferencias de los vecinos diagonales. f ( x, y ) − f ( x − 1, y − 1) + f ( x, y − 1) − f ( x − 1, y ) Ecuación 3.9 Segunda forma del operador de Prewitt. 3.3 Extensión de Operadores. Si una imagen contiene ruido el resultado de la detección de bordes es relativamente malo. Para esto podemos procesar previamente la imagen con la intención de eliminar el ruido. Otra manera es expandir los operadores de borde. Capítulo III Generación de bordes 24 Una manera de generar mascaras para obtener G y en el caso de Sobel y G x en el caso de Prewitt es la siguiente. ⎡1 ⎢1 ⎢ ⎢1 ⎢ ⎢1 ⎢1 ⎢ ⎢1 ⎢1 ⎣ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 −1 −1 −1 −1 −1 −1 −1 (a) −1 −1 −1 −1 −1 −1 −1 − 1⎤ − 1⎥⎥ − 1⎥ ⎥ − 1⎥ − 1⎥ ⎥ − 1⎥ − 1⎥⎦ ⎡− 1 − 1 − 1 − 2 − 1 − 1 − 1⎤ ⎢− 1 − 1 − 1 − 2 − 1 − 1 − 1⎥ ⎢ ⎥ ⎢− 1 − 1 − 1 − 2 − 1 − 1 − 1⎥ ⎢ ⎥ 0 0 0 0⎥ ⎢0 0 0 ⎢1 1 1 2 1 1 1⎥ ⎥ ⎢ 2 1 1 1⎥ ⎢1 1 1 ⎢1 1 1 2 1 1 1 ⎥⎦ ⎣ (b) Figura 3.3 (a) Extensión de los operadores de Prewitt para obtener G x ;(b) Extensión de los operadores de Sobel para obtener G y . Una ventaja es que se pueden rotar estas máscaras 90o en cualquiera de los dos sentidos para obtener las mascaras complementarias, es decir las mascaras utilizadas para calcular G y en el caso de Prewitt, y G x en el caso de Sobel, por lo que se podría obtener la magnitud y dirección del gradiente. 3.4 Algoritmo de Canny. Este esta fundamentado en la teoría de operadores primera derivada, una de sus particularidades es extraer bordes y cerrar contornos evitando posibles rupturas de los mismos durante su extracción. Lo podemos desglosar en tres módulos. 1) Obtención del gradiente (magnitud y ángulo en cada píxel). 2) Adelgazamiento del ancho de los bordes, hasta lograr bordes de un píxel de ancho. 3) Histéresis de umbral al resultado de la supresión no máxima. 1) Obtención del gradiente. La entrada es una imagen I corrompida por el ruido. Sea H un núcleo Gaussiano discreto con media de cero y desviación estándar σ . a) Suavizar la imagen con dicho núcleo para obtener una imagen de salida J. b) Para cada píxel (i,j) en J obtener la magnitud y módulo del gradiente como se ha explicado anteriormente. Se obtienen dos imágenes de salida: Em de la magnitud del gradiente y Ea del ángulo del gradiente, de acuerdo a las ecuaciones (3.2), (3.3) y (3.4). 2) Supresión no máxima al resultado del gradiente. Con Em y Ea como entradas y una nueva imagen IN como salida, considerar las cuatro direcciones d1, d2, d3, d4 identificarlas por las orientaciones de 0o, 45o, 90o, y 135o con respecto al eje horizontal para cada píxel (i,j): a) Encontrar la dirección dk que mejor se aproxima a la dirección Ea(i,j) (la perpendicular al borde). Capítulo III Generación de bordes 25 b) Si Em(i,j) es mas pequeño que al menos uno de sus dos vecinos en la dirección dk, al píxel (i,j) de IN se le asigna el valor 0, In(i,j)=0 (supresión); de otro modo In(i,j)=Em(i,j). La salida IN(i,j) es una imagen con los bordes adelgazados (esto es Em(i,j) después de la supresión no máxima de puntos de borde). 3) Histéresis de umbral a la supresión máxima. La salida IN(i,j) suele contener máximos locales creados por el ruido, por lo cual se podría intentar eliminar los píxeles por debajo de un determinado umbral, sin embargo esto presenta dos problemas. a) Si se elige un umbral bajo en el intento de capturar bordes verdaderos pero con un valor pequeño en la magnitud del gradiente, algunos puntos de ruido serán también aceptados solo como validos (falsos bordes). b) Los valores de bordes verdaderos máximos pueden fluctuar por arriba y por debajo del umbral lo que produce un fragmentado del borde. Una solución puede ser la histéresis de umbral cuyo algoritmo es el siguiente. a) Tomar como entrada, IN que es la salida del módulo anterior, E0 la orientación de los puntos de borde de la imagen y dos umbrales t1 y t2 tales que t1 < t2. b) Para todos los puntos de IN y explorando IN en un orden fijo. b.1) Localizar el siguiente punto de borde no explorado previamente, IN(i,j), talque IN(i,j) > t2. b.2) Comenzar a partir de IN(i,j), seguir las cadenas de máximos locales conectados en ambas direcciones perpendiculares a la normal del borde, siempre que IN>t1. Marcar todos los puntos explorados y salvar la lista de todos los puntos en el contorno conectado encontrado. c) La salida es un conjunto de bordes conectados de contornos de la imagen, así como la magnitud y orientación, describiendo las propiedades de los puntos de borde. La histéresis encuentra cadenas de píxeles conectados por lo que, además, se puede utilizar para la obtención de curvas. 4) Cierre de contornos abiertos. Al extraer contornos en la imagen no suele presentarse con los contornos cerrados. Esto quiere decir que a la hora de determinar si un contorno delimita una región o no, existe la problemática de determinar su cierre. Capítulo III Generación de bordes 26 A continuación se presenta el algoritmo de Deriche y Cocquerez para llevar a cabo el cierre de bordes. Este algoritmo busca los extremos de los contornos abiertos y sigue la dirección del máximo gradiente hasta cerrarlos con otro extremo abierto. Algoritmo de Deriche y Cocquerez. a) La imagen de entrada es una imagen de contornos de borde binarizada, donde los puntos de borde se codifican con valor 1 y el resto con valor 0. b) Para cada punto de borde perteneciente al extremo de un contorno abierto de la imagen de entrada, determinar a cuál de los ocho patrones de puntos extremos corresponde el borde de dicho punto. A cada patrón se le asigna un código que codifica las coordenadas de los píxeles que determinan tres posibles direcciones por las que se debe buscar el cierre del contorno. c) Cuando alguno de los tres píxeles que marcan la dirección de búsqueda es ya un píxel de borde, se asume que el contorno se ha cerrado. d) En caso contrario, se examina el valor del gradiente en los píxeles que definen las tres direcciones posibles y se elige el píxel con el valor del máximo gradiente. Dicho píxel se marca como nuevo píxel de borde. e) Se repiten los pasos anteriores para este nuevo extremo abierto hasta encontrar el cierre del contorno. También se podría determinar la parada tras un cierto número de iteraciones o cuando el número de píxeles que cambian de una iteración a la siguiente es inferior a un determinado valor f. Conviene reseñar que una de las características que se le exigen al detector de bordes es que los bordes que produzca tengan una anchura de un píxel. 3.5 Operadores Segunda Derivada. 3.5.1 Operador Laplaciana. La Laplaciana de una función 2-D f(x,y) es un operador segunda derivada definido como. 2 ∂2 f ∂2 f ∇ f= 2 + 2 ∂x ∂y Ecuación 3.10 Definición de la Laplaciana Como en el caso del gradiente, la ecuación (3.10) se puede implementar en forma digital de varias formas, una de ellas es la siguiente. 2 ∇ f =4z5-(z2+z4+z6+z8) Ecuación 3.11 Definición de la Laplaciana en forma digital. El requisito básico para definir la Laplaciana digital es que los coeficientes asociados con el píxel central y los coeficientes asociados con el resto de píxeles sean negativos. Puesto que la Laplaciana es una derivada, la suma de los coeficientes debe ser cero. Por tanto, la respuesta es cero siempre que el punto en cuestión y sus vecinos tienen el mismo valor. Capítulo III Generación de bordes 27 Las tres máscaras Laplacianas de la figura (3.4) representan diferentes aproximaciones del operador laplaciano. A diferencia de las máscaras primera derivada, éstas son simétricas rotacionalmente, lo que significa que son capaces de detectar bordes en todas las direcciones espaciales. Se aplican seleccionando una máscara y realizando una operación de convolución sobre la imagen. El signo del resultado (positivo o negativo) de dos píxeles adyacentes proporciona información direccional y nos dice qué lado del borde es más o menos oscuro. ⎡ 0 −1 0 ⎤ ⎢− 1 4 − 1⎥ ⎢ ⎥ ⎢⎣ 0 − 1 0 ⎥⎦ ⎡ 1 −2 1 ⎤ ⎢ − 2 4 − 2⎥ ⎢ ⎥ ⎢⎣ 1 − 2 1 ⎥⎦ ⎡− 1 − 1 − 1⎤ ⎢− 1 8 − 1⎥ ⎢ ⎥ ⎢⎣− 1 − 1 − 1⎥⎦ (a) (b) (c) Figura 3.4 (a) Implementación digital del operador Laplaciano Para ver las aplicaciones correspondientes a este capítulo ver Anexo II CAPITULO IV Capítulo IV Cuaterniones y álgebra geométrica 29 Cuaterniones y algebra geométrica. 4 Introducción Los Cuaterniones son una extensión de los números reales, similar a la de los números complejos. Mientras que los números complejos son una extensión de los reales por la adición de la unidad imaginaria i, tal que i2 = − 1, los cuaterniones son una extensión generada de manera análoga añadiendo las unidades imaginarias: i, j y k a los números reales y tal que i2 = j2 = k2 = ijk = − 1. Esto se puede resumir en esta tabla de multiplicación. 1 i j k 1 1 i j k i i -1 k -j j j -k -1 i k k j -i -1 1, i, j, k, son entonces las "bases" de las componentes de un cuaternión. 4.1 Historia Los cuaterniones fueron descubiertos por William Rowan Hamilton en 1843. Hamilton buscaba formas de extender los números complejos (que pueden interpretarse como puntos en un plano) a un número mayor de dimensiones. No pudo hacerlo para 3 dimensiones, pero para 4 dimensiones obtuvo los cuaterniones. Según una historia relatada por el propio Hamilton, la solución al problema que le ocupaba le sobrevino un día que estaba paseando con su esposa, bajo la forma de la ecuación: i² = j² = k² = ijk = 1. Inmediatamente, grabó esta expresión en el lateral del puente de Brougham, que estaba muy cerca del lugar. Hamilton popularizó los cuaterniones con varios libros, el último de los cuales, Elements of Quaternions, tenía 800 páginas y fue publicado poco después de su muerte. 4.2 Detalles Algebraicos Los cuaterniones son un ejemplo de cuerpo asimétrico (a veces llamado anillo con división), una estructura algebraica parecida a un cuerpo pero no conmutativo en la multiplicación, es decir: satisfacen todas las propiedades de un campo con excepción de M2 . La multiplicación es asociativa y todo cuaternión no nulo posee un único inverso. Forman un álgebra asociativa 4-dimensional sobre los reales y los complejos forman un subconjunto de ella, los cuaterniones no forman un álgebra asociativa sobre los complejos. Usando la función distancia definida como d(z,w) = |z - w|, los cuaterniones forman un espacio métrico y todas las operaciones aritméticas son continuas. Capítulo IV Cuaterniones y álgebra geométrica 30 El conjunto de los cuaterniones de valor absoluto 1 forman una esfera 3-dimensional S³ y un grupo (incluso grupo de Lie) con la multiplicación. Este grupo actúa, mediante conjugación, sobre la copia de R³ constituida por los cuaterniones cuya parte real es cero. No es difícil comprobar que la conjugación por un cuaternión unidad de parte real cos t es una rotación de ángulo 2t con el eje de giro en la dirección de la parte imaginaria. Así, S³ constituye un recubrimiento doble del grupo SO(3) de matrices ortogonales 3x3 de determinante 1; es isomorfo a SU(2), el grupo de matrices 2x2 complejas unitarias y de determinante unidad. Sea A el conjunto de cuaterniones de la forma a + bi + cj + dk donde a, b, c y d son, o todos enteros o todos racionales con numerador impar y denominador 2. El conjunto A es un anillo y un retículo . Hay 24 cuaterniones unitarios en este anillo y son los vértices de un politopo regular, llamado {3,4,3} en la notación de Schlafli. 4.3 Aplicaciones En la teoría de números los cuaterniones pueden ser usados para llevar a cabo las pruebas de varios teoremas como los de Lagrange. Los cuaterniones en física representan rotaciones en el espacio, véase cuaterniones y rotación en el espacio. Además tienen aplicaciones en el electromagnetismo y la mecánica cuántica. Los cuaterniones se utilizan a menudo en gráficos por computadora (y en el análisis geométrico asociado) para representar la orientación de un objeto en un espacio tridimensional. Las ventajas son: conforman una representación no singular (comparada con, por ejemplo, los ángulos de Euler), más compacta y más rápida que las matrices. 4.4 Representaciones de los Cuaterniones 4.4.1 Vectoriales Un cuaternión puede expresarse como el conjunto: Entonces un cuaternión es un número de la forma a + bi + cj + dk, donde a, b, c, y d son números reales unívocamente determinados por cada cuaternión. Análogamente, un cuaternión puede expresarse como el producto interno (componente a componente) de dos vectores, de los cuales uno es el de las componentes , y el otro el de las "bases": [1, i, j, k]. En este caso, el elemento a_1 que forma la componente real se anota aparte, y para el producto interno se consideran solamente las tres bases i', j, k: Esta representación tiene algunas ventajas que pueden ser vistas en algunas operaciones como el producto de cuaterniones. Capítulo IV Cuaterniones y álgebra geométrica 31 4.4.2 Matriciales Además hay, al menos, dos maneras de representar cuaterniones con matrices. Usando matrices complejas de 2x2: Una propiedad interesante de esta representación es que todos los números complejos son matrices que sólo tienen componentes reales. Usando matrices reales de 4x4: El conjugado de un cuaternión x = x1 + x2i + x3j + x4k está dado por: . En otras palabras, el conjugado invierte el signo de los componentes "agregados" del cuaternión. La medida o valor absoluto de un cuaternión x está dado por: Se cumple que |zw| = |z| |w| para cualesquiera cuaterniones z y w. Usando como norma el valor absoluto, los cuaterniones conforman un álgebra de Banach real. El inverso multiplicativo de un cuaternión x está dado por: 4.5 Aritmética Básica de Cuaterniones a = a1 + a2i + a3j + a4kb = b1 + b2i + b3j + b4k 4.5.1 Adición La adición se realiza análogamente a como se hace con los complejos, es decir: término a término: a + b = (a1 + b1) + (a2 + b2)i + (a3 + b3)j + (a4 + b4)k 4.5.2 Producto El producto se realiza componente a componente, y está dado en su forma completa por: ab = (a1b1 − a2b2 − a3b3 − a4b4) + (a1b2 + a2b1 + a3b4 − a4b3)i + (a1b3 − a2b4 + a3b1 + a4b2)j + (a1b4 + a2b3 − a3b2 + a4b1)k Una forma ligeramente más reducida puede ser: El producto entre cuaterniones es asociativo, no conmutativo. Capítulo IV Cuaterniones y álgebra geométrica 32 4.5.3 Cociente Usando la forma del inverso, es posible escribir el cociente de dos cuaterniones como: 4.6 Cuaterniones y rotación en el espacio Se recuerda la versión geométrica del producto de dos cuaterniones, q = (a, u) y q´= (a', u'), donde a y a´ son las partes reales, u y u´ son las partes imaginarias, también vistas como vectores del espacio tridimensional R 3 : q.q' = (aa' - u·u', au' + a'u + u×u'). u·u´ designa el producto escalar, y u×u´ el producto vectorial. Notaremos q~ el cuaternión conjugado de q: q~ = (a, -u). Para permanecer en el espacio tridimensional, hace falta hacer desaparecer las partes reales. Tomemos a = a´= 0. Entonces q . q~ = (0, u)(0, u') = ( - u·u' , u×u´ ). Bien es sabido que el producto vectorial está relacionado con la rotación en el espacio. Por lo tanto, a base de productos, debe ser posible expresar cualquier rotación tridimensional. El objetivo es obtener una fórmula parecida a la expresión compleja de la rotación en el plano: z´= wz, con w = e iθ cuando se gira alrededor del origen, y z´ = w(z-c) + c si se rota alrededor del punto c. 4.6.1 Descubriendo la fórmula Tomemos el ejemplo más sencillo: ¿Cómo expresar analíticamente la rotación alrededor de eje de los x,(O,i) con un ángulo de 90 grados? El vector i debe tener un papel. Miremos a la multiplicación por i por la izquierda: ij = k (como i×j =k) e ik = -j (como i×k =-j). Parece por lo tanto que la función f: q → iq es la respuesta a la pregunta. En el plano (j, k) esa función rota de 90 grados. ¿Pero qué pasa en el resto del espacio? f(i) = ii = -1 y f(1) = i. Por linearidad, nos damos cuenta que hace girar el plano (1, i) de 90 grados también, y esto ¡no lo queremos! El punto i tiene que permanecer inmóvil, y la función f no tiene que enviar ni un punto del espacio usual iR + jR + kR en la cuarta dimensión (aquí, en 1R). Como sabemos que la multiplicación no es conmutativa en H, cuerpo de los cuaterniones, miremos al producto por la derecha, por i: g : q → qi. q(j)= ji = - k; q(k) = ki = j lo que corresponde a la rotación inversa en el plano (j, k). Pero q(1) = i e q(i) = - 1 da la misma rotación parásita que f sobre (i,j). Si tomamos la función opuesta (e inversa) : h = -g : q → -qi = q(-i) nos damos cuenta que h tiene la misma acción sobre el plano (j, k) que f pero la acción opuesta sobre (1, i). Entonces f y h se compensan en (1, j), pero se cumulan en (j,k), y la función compuesta: m = foh (=hof): q → iq(-i) deja el plano (1, i) quieto, pero gira el plano (j, k) dos veces de 90 grados, o sea de 180 grados: m(j)=ij(-i)= -iji = - ki = -j y m(k)= - k. Capítulo IV Cuaterniones y álgebra geométrica 33 Hemos obtenido por lo tanto una rotación alrededor de eje (O,i), pero con un ángulo doble de lo deseado. Basta con dividir los ángulos de f e h por dos para obtener la fórmula. i= e iπ/2 = cos(π/2) + i.sin(π/2) = cos 90º + i·sin 90º. El número que corresponde al medio ángulo es e i.π/4 = (1+i)/√2 = w, y la función que realiza la rotación pedida es r:q→wqw~. Este raciocinio se generaliza a cualquier eje de rotación, y no soló a los tres ejes (O,i) (O, j) y (O, k). Si se quiere girar alrededor del eje (O,u) donde u es un vector unitario, hay que considerar el plano (1, u) y otro plano perpendicular (ortogonal) en H, y emplear el número cos(θ/2) + u·sin(θ/2). 4.6.2 La fórmula Sea q = xi + yj + zk un punto (o un vector) del espacio, u un vector unitario del mismo espacio y θ un real. La rotación alrededor del eje (0,u) de un ángulo θ envía el punto q sobre el punto q' = a'i + b'j + c'k dado por la fórmula: q´= h·q·h~ donde h = cos(θ/2) + u·sin(θ/2) Para obtener la rotación alrededor de un eje (c,u), donde c es un punto cualquiera del espacio, basta con componer la función anterior por dos translaciones: q´ = h·(q-c)·h~ + c Note que h es un cuaternión unitario, como en el caso de los complejos. La fórmula resulta algo más complicada que en el plano complejo porque trabajamos en cuatro dimensiones con los cuaterniones pero queremos permanecer en el espacio usual de tres dimensiones. Una simple multiplicación, a la izquierda o a la derecha, daría dos rotaciones simultáneas en dos planos perpendiculares (ortogonales) en el espacio cuadridimensional. 4.6.3 Un ejemplo Consideremos la rotación alrededor del eje (O, i+j+k), con un ángulo de 120º o sea 2π/3 radios. Nos proponemos calcular la imagen del vector j. Puesto que el vector i+j+k no es de unitario, lo dividimos por su norma: u = (i+j+k)/√3. El medio ángulo es π/3, por lo tanto: h = cos(π/3) + u.sin(π/3) = (1+i+j+k)/2, y su conjugado es h~ = (1-i-j-k)/2. El vector (o punto correspondiente) j será enviado en hjh~. hjh~ =(1+i+j+k)j(1-i-j-k)/4 = (j + k - 1 - i)(1 - i - j - k)/4 y, distribuyendo los factores, hallamos: hjh~ = ( (j+k+1-i) + (k-j+i+1) + (-1+i+j+k) + (-i-1+k-j) )/4 = 4k/4 = k. Del mismo modo hallaríamos que hkh~ = i e hih~ = j, lo que da la expresión analítica de la rotación: r(xi + yj + zk ) = zi + xj + yk. Capítulo IV Cuaterniones y álgebra geométrica 34 4.6.4 Cuaterniones y Ángulos de Euler En el programa Matemática , la rotación de un objeto tridimensional se puede hacer con RotateShape[obj, α,θ,φ ] con θ є [0, ]. La rotación dada por los ángulos de Euler α, θ y φ puede ser descompuesta en una sucesión de tres rotaciones sucesivas. La primera rota un ángulo α alrededor del eje Z, la segunda rota un ángulo θ alrededor del eje X y la tercera rota un ángulo φ alrededor del eje Z nuevamente. RotateShape[ ] determina la matriz de rotación correspondiente y la aplica a todas los puntos del objeto geométrico. El comando RotationMatrix3D[α, θ, φ ] da la matriz de rotación correspondiente a las tres rotaciones sucesivas determinadas por los ángulos de Euler. El problema es: dado Φ y u, cuál es la relación entre los ángulos de Euler y Φ y u?. La relación más sencilla se obtiene usando cuaterniones. Los cuaterniones son objetos [a,v], donde a es un escalar y v є IR3. La suma y la multiplicación (no conmutativa) de cuaterniones se definen así: [a1,v] + [a2,u] = [a1 + a2, v + u] [a1,v][a2,u] = [a1a2 - v . u, a1u + a2v + u×v] La norma de un cuaternión se define como ||[a, v]|| = a 2 + v • v Si 1l = [1,(0, 0, 0)] entonces [a, v]1l = 1l[a, v]. [a,−v] , i.e. [a, v][a, v]- 1 = 1l [a, v]- 1= 2 [a, v] Con esta álgebra se puede mostrar que un vector v puede ser rotado alrededor de un eje aplicando la operación qvq- 1. Lo que hacemos es, abusando del lenguaje, identificar v con [0, v]. De esta manera, si u = {u1, u2, u3} (unitario), si q = [cos(Φ/2), sen(Φ /2)u] y si [0,v'] = q [0, v] q- 1, se tiene que v' es una rotación de v, de ángulo Φ, alrededor de u. Con este último resultado podemos determinar una relación entre los ángulos de Euler y una rotación de ángulo Φ, alrededor de u. Para esto, ponemos las rotaciones correspondientes a los ángulos de Euler en lenguaje de cuaterniones e igualamos: [cos(Φ/2),sen(Φ/2)u]= =[cos( /2),sen( /2)k] [cos( /2), sen( /2)j] [cos(ψ/2), sen(ψ /2)k] luego, desarrollando la multiplicación de la derecha e igualando, se obtiene: cos(Φ/2) = u1 = u2 = u3 = cos( /2) cos ( + ψ) - (sen Φ)-1 sen sen ( - ψ) Φ)-1 sen cos ( - ψ) (sen (sen Φ)-1 cos sen ( + ψ) Esto nos dice que, en general, para hacer animaciones que involucran rotaciones de objetos tridimensionales alrededor de una recta, es mejor usar una implementación matricial (o en términos de cuaterniones). Capítulo 4.7 IV Cuaterniones y álgebra geométrica 35 El algebra geométrica en espacios 3d y 4d La necesidad para un marco matemático para entender y procesar imágenes en cámaras digitales en un mundo en 3D, se enfocó en investigaciones a finales de los años setenta en la utilización de geometría proyectiva. Usando coordenadas homogéneas, encajamos el espacio visual del espacio euclidiano tridimensional en un espacio proyectivo P3 o P4 y el espacio euclidiano bidimensional del plano de la imagen en el espacio proyectivo P2 o R3. Como resultado, las inherentes transformaciones proyectivas no lineales del espacio tridimensional al espacio bidimensional de la imagen se convierten en lineal. En adición, los puntos y direcciones son diferenciados en lugar de ser representados por las mismas cantidades. La elección de geometría proyectiva es de hecho un gran paso. De cualquier manera es necesario un sistema que reconcilie la geometría proyectiva y el algebra multilíneal. En mucha de la literatura de la visión computacional podemos encontrar que son dos sistemas matemáticos divorciados. Cuando se requiere, es común ver requerimientos de un sistema con respecto al otro. 4.8 Espacio tridimensional e imagen del plano bidimensional. Para introducir los modelos de geometría básica en visión computacional, imaginemos la imagen de un punto X que pertenece a R4 dentro de un punto x que pertenece a R3. El centro óptico de la cámara (C) puede ser diferente al sistema coordenado del mundo real, como se ve en la figura. P3 2 P X x C El mapeo de P:X→x está dado por la matriz P= P11 P12........P14 P21 P22 P31...............P34 Que se descompone como producto de 3 matrices: P=KPoMoc Capítulo IV Cuaterniones y álgebra geométrica 36 Donde Po, K y Moc serán definidos como: Por es una matriz de 3x4 ⎛1 0 0 0⎞ ⎟ ⎜ ⎜0 1 0 0⎟ ⎜0 0 1 0⎟ ⎟ ⎜ ⎟ ⎜ ⎠ ⎝ que simplemente proyecta desde 4D a 3D, representando una proyección de coordenadas homogéneas del espacio a coordenadas homogéneas del plano de la imagen. Moc representa una matriz de 4x4 que contiene la rotación y translación. Lleva el marco real al marco de la cámara. Y finalmente la matriz K, de 3x3 que asume el modelo de la cámara como la transformación afín entre el plano de la cámara y el sistema coordinado. 4.9 Algebra geométrica del espacio euclidiano en 3D El espacio tridimensional está dado por tres vectores básicos (σ1, σ2, σ3) lo que da 23=8 elementos • • • • escalar 1, vectores{ σ1, σ2, σ3} bivectores{σ1σ2, σ1σ3, σ2, σ3} áreas orientadas trivectores{σ1σ2σ3}volúmenes orientados, pseudoescalar. Los bivectores pueden ser interpretados como áreas orientadas, los trivectores como volúmenes orientados. El elemento de mayor grado es el trivector llamado pseudoescalar, fácilmente se puede verificar que es un cuadro escalar de –1 y que conmuta con todos los multivectores (un multivector es generalmente una combinación lineal en cualquiera de los elementos en álgebra) en un espacio tridimensional. La unidad pseudoescalar I es crucial cuando discutimos la dualidad. Es un espacio de dimensión 3 podemos construir un trivector a^b^c. El pseudoescalar I nos sirve para formar los bivectores base Iσ1=σ2σ3 i Iσ2=σ1σ3 j Iσ3=σ1σ2 k Si identificamos los i, j, k del álgebra de cuaterniones con σ2σ3, -σ1σ3 y σ1σ2 podemos recuperar las famosas relaciones de Hamillton i2=j2=k2=ijk=-1 Capítulo IV Cuaterniones y álgebra geométrica 37 En álgebra geométrica un rotor, R, es un elemento de grado par del álgebra que satisface RR=1. La relación entre cuaterniones y el rotor es como sigue, Q={q0,q1,q2,q3} representa a un cuaternión, entonces el rotor que desarrolla la misma rotación esta simplemente dada por R=qo+q1(Iσ1)- q2(σ2)+ q3(σ3) El álgebra de cuaterniones es vista por lo tanto como un subconjunto del álgebra geométrica en un 3-espacio. 4.10 Algebra geométrica para espacios proyectivos. Para el modelado del plano de la imagen utilizamos G3,0,0 que es la firma estándar euclidiana. Mostraremos que si escogemos un mapa entre espacios proyectivos y el espacio euclidiano en 3D a través de líneas proyectivas, estamos forzando a utilizar álgebra geométrica en 4D G3,0,0 para P3. El álgebra Lorenziana en 4D tiene sus vectores básicos γ1, γ2, γ3, γ4, donde γ4 2=+1, γk=-1 para k=1,2,3. Esto genera los siguientes multivectores base: • • • • • escalar 1 4 vectores γk 6 vectores γ2γ3, γ3γ1, γ1γ2, γ4γ1, γ4γ2, γ4γ3 trivectores Iγk pseudoescalar I El pseudoescalar I=γ1γ2γ3γ4 con I2=(γ1γ2γ3γ4)(γ1γ2γ3γ4)= -(γ3γ4)(γ3γ4)= -1 Al tomar productos geométricos con γ4 podemos relacionar bivectores del espacio 4D con vectores del espacio 3D. 4.10.1 Transformaciones proyectivas Históricamente, el éxito de las coordenadas homogéneas se debe en parte a la habilidad que tienen para representar desplazamientos como matrices sencillas de 4x4 y de linealizar las transformaciones no lineales. Un punto (x,y,z) que pertenece a 3D se puede proyectar con la transformación: x′ = α 1 x + β1 y + δ 1 z + ε 1 αx + β y + δ z + ε y′ = α2 x + β2 y + δ2 z + ε 2 αx + β y + δ z + ε Capítulo IV Cuaterniones y álgebra geométrica 38 Esta transformación, que es representada como el radio de dos transformaciones lineales, es en si misma una no lineal. Con la finalidad de convertir estas transformaciones no lineales en un espacio de dimensión 3 en transformaciones lineales en R4 definimos una función f-p que mapea vectores dentro de vectores en R4 tal que la acción de f-p sobre los vectores básicos {γi } está dado por: f-p(γ1)=α1γ1+α2γ2+α3γ3+α4γ4 f-p(γ2)=β1γ1+β2γ2+β3γ3+β4γ4 f-p(γ3)=δ1γ1+δ2γ2+δ3γ3+δ4γ4 f-p(γ4)=ε1γ1+ε2γ2+ε3γ3+ε4γ4 cuando usamos coordenadas homogéneas, un punto P en ε3 dado por x=xσ1+yσ2+xσ3 se convierte en el punto X=(Xγ1+Yγ2+Zγ3+Wγ4) en R4 donde x=X/W, y=Y/W, z=Z/W Ahora usamos f-p el mapa lineal de X sobre X’ esta dado por: X’= Σi{(αiX+βiY+δiZ+εiW)γi}{άX+βY+δZ+έW}γ4 Las coordenadas del vector x’=x’σ1+y’σ2+z’σ3 en ε3 que corresponden a X’ están dados por: x’=( α1X+β1Y+δ1Z+ε1W))/( άX+βY+δZ+έW)=( α1x+β1y+δ1z+ε1w)/( άx+βy+δz+έ) Análogamente, y’=( α2x+β2y+δ2z+ε2w)/( άx+βy+δz+έ) z’=( α3x+β3y+δ3z+ε3w)/( άx+βy+δz+έ) si lo anterior representa la proyección desde el mundo real sobre el plano de la imagen de la cámara, se debe tomar en cuenta la profundidad de la cámara. Esto requiere de α3=f α’, β3= β ‘, …. Por lo que podemos definir como z’=f (profundidad focal), que no depende del punto escogido. Con esto una transformación no lineal en ε3 se convierte en una transformación lineal, f-p, en R4. 4.10.2 La línea proyectiva Asociemos puntos a través de la línea proyectiva Para un vector X=X1γ1+X2γ2+X3γ3+X4γ4 en R4 la línea proyectiva se obtiene tomando el producto geométrico de X y γ4: Xγ4=Xγ4+X^γ4=X4(1+( X^ γ4)/( X4))≡ X4(1+x) Capítulo IV Cuaterniones y álgebra geométrica 39 Si elegimos γ4 como una dirección seleccionada en R4, podemos definir un mapeo que asocie los bivectores γiγ4 i=1, 2, 3 en R4 con los vectores σi i=1, 2, 3 en ε3. σ1≡γ1γ4, σ2≡γ2γ4, σ3≡γ3γ4, con esto podemos asociar X^γ4/ X4 en R4 con el vector x en ε3 De manera similar, si empezamos con un vector X=Xσ1+Xσ2+Xσ3 en ε3,lo representamos en R4 por el vector X=X1γ1+X2γ2+X3γ3+X4γ4 tal que X= X^γ4/ X4 =(X1/X4)γ1γ4 +(X2/X4)γ2γ4 +(X3/X4)γ3γ4 =(X1/X4)σ1+(X2/X4)σ2+(X3/X4)σ3 Que implica xi=xi/x4, para i=1,2,3 La aproximación de la representación de x en un espacio dimensional mas alto puede por lo tanto ser visto como una equivalencia de las coordinadas homogénea de X para x. Veamos ahora la representación de una línea L en R4, una línea esta dada por el producto externo de dos vectores L=A^B L=(L14γ1γ4+ L24γ2γ4+ L34γ3γ4)+( L23γ2γ3+ L31γ3γ1+ L12γ1γ2) L=(L14γ1γ4+ L24γ2γ4+ L34γ3γ4)+I( L23γ1γ4+ L31γ1γ4+ L12γ3γ4) L=n-Im L14, L24, L34 Son los coeficientes de la parte espacial del bivector que representan la dirección de la línea (n). L23, L31, L12 Son los coeficientes de la parte no espacial del bivector que representan el momento de la línea (m). Ahora podemos relacionar esta representación de la línea con la representación en ε3 por medio de la línea proyectiva. Tomamos una línea (L), uniendo A y B. L=A^B=<AB>2 =<Aγ4γ4B>2 Aquí, la notación <M>k, nos indica que tomemos la parte del grado k del multivector M. Usando la expansión anterior de Xγ4 en la línea proyectiva para vectores, podemos escribir. L= (Aγ4)(Bγ4)<(1+a)(1-b)>2 Donde a=A^γ4/Aγ4 b=B^γ4/Bγ4 que son las representaciones de A y B en ε3 escribiendo A4= A·γ4 y B4= B·γ4 tenemos que L=A4B4<1+(a-b)-ab2>= A4B4{(a-b)+a^b} normalizamos las partes espaciales y no espaciales por encima del bivector Capítulo IV Cuaterniones y álgebra geométrica 40 L’=L/(A4B4|a-b|)=(a-b)/|a-b|+(a^b) |a-b| =(nxσ1+nσ2+nzσ3)+(mxσ2σ3+myσ3σ1+mzσ1σ2) =( nxσ1+nσ2+nzσ3)+I(mxσ1+myσ2+mzσ3) =n’+I3m’ I3=σ1σ2σ3≡I4 Nota: En ε3 la línea tiene 2 componentes • • Un vector representando la dirección de la línea n Un vector dual (bivector) que representa el momento m de la línea Esto nos da la posición en el espacio 3D especificando el plano en el que yace y la distancia perpendicular de la línea del origen. CAPITULO V Capítulo V Aplicaciones de álgebra geométrica 42 5 Introducción. En este capítulo se estudiara la teoría correspondiente al álgebra geométrica así como las diversas aplicaciones que se pueden generar con la misma; tales como la intersección de una línea y un plano, intersección de dos planos e intersección de dos líneas. Las operaciones que se usaran para tales aplicaciones, serán el bracket, la función meet y la función join. Aplicaciones de algebra geométrica. 5.1 El bracket (soporte) En un espacio de n dimensiones cualquier pseudoescalar se expandirá a un hipervolumen de dimensión n. todos los pseudoescalares (P) son múltiplos de un pseudoescalar unitario (I). I P=αI P pseudoescalar α escalar pseudoescalar unitario Calculamos a este escalar multiplicando el pseudoescalar P, con el inverso de I PI-1=αII-1=α≡[P] Así, el bracket del pseudoescalar P, [P], es su magnitud y llegamos a {el multiplicando por la derecha I-1. El bracket de n vectores {xi} es [X1X2X3…Xn]=[ X1^X2^X3^…^Xn]=( X1^X2^X3^…^Xn)I-1 También puede mostrarse que es equivalente a la definición del determinante de la matriz cuyos vectores columna son los vectores xi. Para entender como podemos expresar un bracket en el espacio proyectivo en términos de vectores en el espacio euclidiano podemos expandir un pseudoescalar P usando la línea proyectiva para vectores: P=X1^X2^X3^X4 =< X1^X2^X3^X4 >=W1W2W3W4<(1+X1)( 1-X2)( 1+X3)( 1-X4)>4 Donde Wi=Xiγ4 Capítulo V Aplicaciones de álgebra geométrica 43 Una parte pseudoescalar es producida tomando el producto de tres vectores espaciales (no ha términos [espacio bivectorial]x[espacio vectorial]), es decir: P=W1W2W3W4<-X1X2X3- X1X2X4+ X1X2X4+ X2X3X4)>4 P=W1W2W3W4<(X2-X1)( X3-X1)( X4-X1)>4 P=W1W2W3W4{(X2-X1) ^ ( X3-X1) ^ ( X4-X1)}4 Si Wi=1 (cualquier W=1), podemos establecer una relación entre los brackets de 4 puntos en R4 y ε3 como sigue [X1X2X3X4]=(X1^X2^X3^X4)I4-1 ={(X2-X1) ^ ( X3-X1) ^ ( X4-X1)} I3-1 5.2 El principio de dualidad y las operaciones de encuentro y unión Para introducir el concepto de dualidad debemos introducir el dual A* de un r-vector A como: A*=AI-1 Esta notación A* relaciona las ideas de dualidad a la notación de Hodge dual en geometría diferencial. Nótese que en general I-1 no necesariamente conmuta con A. Usando las ideas de dualidad somos capaces de relacionar el producto interno (producto punto) a operadores de incidencia y lo veremos como sigue: En un espacio n-dimensional supongamos que tenemos un r-vector A y un s-vector B, donde B tiene un dual B*=BI-1≡B·I-1 Aquí, desde BI-1=B·I-1+B^I-1 podemos reemplazar el producto geométrico por el producto interno como el producto externo que da cero (No es un vector (n+1)dimensional) Ahora usando la identidad Ar·Bs·Ct=(Ar·Bs) ·Ct para r+s≤t A·(BI-1)=A·(B·I-1)= (A^B)·I-1=(A^B)I-1 Esta expresión puede ser reescrita usando la definición de el dual como sigue: A·B*=(A^B)* Esta ecuación muestra la relación entre el producto interno y el externo en términos de operador de dualidad. Ahora si r+s=n, entonces A^B es de grado n y es por lo tanto un pseudoescalar, usando la ecuación PI-1= α II-1=α≡[P] nos queda que: A·B*=(A^B)*=(A^B)I-1=([A^B])I-1 =[ A^B] Con esto observamos que el bracket relaciona los productos interno y externo con los cuantificadores no numéricos. Capítulo V Aplicaciones de álgebra geométrica 44 Ahora cuando trabajamos con líneas y planos, es claro que será necesario tener operaciones para calcular las intersecciones y uniones de dichos objetos geométricos. Necesitamos una forma de desarrollar las operaciones de teoría de conjuntos de la intersección, ∩ y unión, U. Si en algebra geométrica de n-dimensiones, el r-vector A y el s-vector B no tienen subespacios en común, podemos definir la unión de ambos vectores como sigue: J=A^B La unión es simplemente el producto externo (un vector r+s) de los 2 vectores. De cualquier manera, si A y B no tienen subespacios en común, la unión no será dada por la sección (de unión) pero por el subespacio en el que se expanden. La operación de unión J (Join) puede ser interpretada como el mínimo común divisor y es definido hasta un factor escalar. La unión da un pseudoescalar si (r+s)≥n. Usaremos ^ para la unión solo cuando las “navajas” A y B tengan un subespacio en común, de otra manera el producto exterior ordinario ^ será utilizado. (AvB)*=A*^B* El dual de intersección es igual a la unión de los duales. El dual de A y B será tomado con respecto a la unión de A y B, debemos tener cuidado al especificar que espacio usamos para el dual en la ecuación anterior. AvB=((AvB)*)*=(A*^B*)I(I-1I)I= (A*·B) Una función lineal f que mapea vectores a vectores en el mismo espacio, la extensión de f para actuar linealmente sobre multivectores es posible a través de los llamados exomorfismos, f_, definiendo la acción de f sobre la r-“navajas” por: f_ (a1^a2^…^ar)=f_(a1) ^f_(a2) ^f_(a3) ^….^f_(ar) f_ es llamado en exomorfismo, porque f_ preserva el grado de cualquier r-vector sobre el que actúa. La acción de f_ sobre multivectores es definida a través de la linealidad. f_ debe por los tanto satisfacer las condiciones siguientes: f_ (a1^a2)=f_(a1) ^f_(a2) f_ (Ar)=<f_(Ar)>r f_(α1a1+α2a2)= α1f_(a1)+ α2f_(a2) el exomorfismo del producto de dos funciones lineales es el producto de exomorfismos, es decir, f(a)=f2(f1(a)) y lo escribimos f=f2f1. El empalme f¯ de una función lineal f_ que actúa sobre los vectores a y b puede ser definido por la propiedad f_(a)·b=a·f¯ (b) Capítulo V Aplicaciones de álgebra geométrica 45 si f_=f¯, la función se sobre-empalma a sí misma y puede ser representada por la matriz simétrica F, con F=FT desde que el automorfismo preserva el grado, el pseudoescalar unitario debe ser mapeado sobre algún múltiplo de si mismo, este múltiplo es un determinante de f_: f_(I)=det(f_)I 5.3 Algebra en espacio proyectivo Consideremos tres puntos no colineales, P1, P2, P3, representado por vectores x1, x2, x3, en ε3 y por vectores X1, X2, X3 en R4. la línea L12 que une los puntos P1 y P2 puede ser expresada en R4 por el bisector L12=X1^X2. Cualquier punto P, representado en R4 por X, sobre la línea a través de P1 y P2 satisfacirá X^L12=X^X1^X2 Esto es por lo tanto la ecuación de la línea en R4. en general dicha ecuación nos dice que X pertenece al subespacio expandido por X1 y X2, es decir que X=α1X1+α2X2 con α2 y α2 cualesquiera En computación lo podemos usar como una restricción geométrica para probar cuando un punto X yace sobre L12. El plano Φ123 que pasa por los puntos P1, P2, P3 es expresado por el siguiente trivector en R4. Φ123= X^1X2^X3 En el espacio tridimensional hay generalmente 3 tipos de intersecciones • Intersección de línea y plano • Intersección de plano y plano • Intersección de línea y línea Para calcular estas intersecciones utilizaremos la siguiente fórmula general, dando el producto de una r-“navaja”. Ar=a1^a2^…^ar, y una s-“navaja”, Bs=b1^b2^…^bs con s≤r Bs·(a1^a2^…^ar)=∑j є(j1j2…jr)Bs· (aj1^aj2^…^ajs) ajs +1^…^ajr Donde sumamos sobre todas las combinaciones j=(j1, j2, …, jr) una permutación par de (1, 2, 3,…, r) y -1 si es una permutación impar. Capítulo V Aplicaciones de álgebra geométrica 46 5.4 Intersección de una línea y un plano En el espacio de R4 consideremos la línea A=X1^X2 intersectando el plano Φ=Y1^Y2^Y3. podemos calcular el punto de intersección usando la operación de intersección como sigue: AvΦ=( X1^X2)v(Y1^Y2^Y3)=AΦ=A*·Φ…………….(1) Esto lo hacemos utilizando la ecuación vista anteriormente de AvB=(A*·B) y el hecho de que la unión es el espacio completo. Notemos que el pseudoescalar I4, conmuta con el bisector pero no conmuta con vectores y trivectores y tiene inverso I4-1=-I4. Esto por lo tanto nos lleva a A*·Φ=(AI-1) ·Φ=-(AI)·Φ Ahora usando la ecuación (1) podemos extender la intersección como: AvΦ=-(AI)·(Y1^Y2^Y3)=-{(AI)·(Y2^Y3)}Y1+{(AI)·(Y3^Y1)}Y2+{(AI)·(Y1^Y2)}Y3 Nada como (AI)·(Yi^Yj) es un escalar, podemos evaluar lo anterior tomando partes escalares. Por ejemplo (AI)·(Y2^Y3)=< (X1^X2)(Y2^Y3)>= I(X1^X2^Y2^Y3). De la definición dada del bracket anteriormente, podemos ver que si P= X1^X2^Y2^Y3, entonces [P]=(X1^X2^Y2^Y3)I4-1. Y por lo tanto escribimos [A1A2A3A4] como abreviatura para la magnitud del pseudoescalar formado por 4 vectores, con esto podemos ver que el encuentro se reduce a: AvΦ=[X1X2Y2Y3]Y1+[X1X2Y3Y1]Y2+[X1X2Y1Y2]Y3 dando el punto de intersección (vector en R4). 5.5 Intersección de 2 planos La línea de intersección de dos planos, Φ=X1X2X3 y Φ=Y1Y2Y3 Puede ser calculado a través de Φ1 y Φ2 y de su intersección. Φ1vΦ2=(X1X2X3)v(Y1Y2Y3) Esto se puede expandir como. Φ1vΦ2=Φ*1·(Y1^Y2^Y3) =-{( Φ1I)·Y1}(Y2^Y3)+{( Φ1I)·Y2}(Y3^Y1)+{(Φ1I)·Y3}(Y1^Y2) De nuevo, la unión es el espacio completo y entonces el dual es formado fácilmente. Capítulo V Aplicaciones de álgebra geométrica 47 Podemos mostrar que. (Φ1I)·Y1≡-[X1X2X3Y1](Y2^Y3)+[X1X2X3Y3](Y3^Y1)+[X1X2X3Y3][(Y1^Y2). Produciendo una línea de intersección o bisector en R4 5.6 Intersección de dos líneas Dos líneas se intersectan solo si son coplanares. Dignifica que tienen representación en R4, A=X1^X2, y B= Y1^Y2 satisfacen: A^B=0 Este hecho sugiere que el cálculo de la intersección debe ser llevada a un espacio euclidiano en 2D que tiene una asociación con una contraparte proyectiva tridimensional, R3. En este plano el punto de intersección está dado por: AvB=A*·B=-(AI3)·(Y1^Y2) ={((AI3)·Y1)Y2-((AI3)·Y2)Y1}. Donde I3 es el pseudoescalar para R3. una vez mas evaluamos (AI3)·Yi) tomando la parte escalar (AI3)·Yi)=<X1X2I3Yi>=I3X1X2Yi=[X1X2Yi]. La intersección puede por lo tanto ser escrita como: AvB=[X1X2Y1]Y2-[X1X2Y2]Y1. Donde el bracket [A1A2A3] en R3 es entendido como (A1^A2^A3)I3-1 CAPITULO VI Capítulo VI Aplicaciones de geometría epipolar 49 6 Introducción El objetivo de este capitulo es la obtención de la matriz fundamental por medio de la transformada SVD ya que con esta podemos obtener las líneas epipolares sobre el plano de la imagen, las cuales son de gran ayuda junto con el epipolo y el foco de la cámara para obtener un punto en común sobre dos imágenes. Para llegar a esto es necesario el análisis del uso del autovalor y autovector así como las matrices pseudoinversa y antisimétrica. Aplicaciones de geometría epipolar. 6.1. Geometría epipolar. El hecho de disponer de dos imágenes del mismo entorno nos permite descubrir nuevas informaciones sobre el entorno. Supongamos que tenemos un punto del espacio, que se proyecta en el punto p1 de la primera imagen, y el punto p2 de la segunda imagen. M e1 e2 m1 11 l2 m2 Tenemos el sistema de ecuaciones matriciales: • • • • • • • λ1m1=P1M. λ2m2=P2M. P1 es la matriz de proyección de la primera imagen. P2 es la matriz de proyección de la segunda imagen. M son las coordenadas homogéneas del punto en el espacio. λ1 es el factor de escalado para la primera imagen. λ2 es el factor de escalado para la segunda imagen. m1 son las coordenadas homogéneas en el plano de proyección de la primera imagen de la primera proyección del punto. m2 son las coordenadas homogéneas en el plano de proyección de la segunda imagen de la segunda proyección del punto. Capítulo VI Aplicaciones de geometría epipolar 50 Definimos visión estéreo como aquella en la que empleamos más de una imagen para obtener una idea de tridimensionalidad. Según el número de imágenes que empleemos, hablaremos de visión bifocal -dos imágenes-, trifocal -tres imágenes-, quadrifocal cuatro imágenes- o N-focal -N imágenes-. Para nuestro caso, estudiaremos los conceptos de un sistema bifocal; aunque lo estudiado es extrapolable a cualquier sistema N-focal. El primer concepto que necesitaremos es el de geometría epipolar. Denominamos geometría epipolar como a la geometría generada por dos vistas; y se basa en dos conceptos fundamentales, que son la línea epipolar y el epipolo. Dado un sistema bifocal, definimos como epipolo de una de las dos imágenes el sistema a la proyección del centro óptico de la otra imagen. Un sistema bifocal tiene exactamente dos epipolos, uno por cada imagen. Los dos epipolos pueden tener las mismas coordenadas, o coordenadas distintas. Definimos como línea epipolar li para uno de los dos planos de proyección a la línea que pasa por el epipolo ei contenido en el plano de proyección y la proyección mi. Observamos que la línea epipolar eimi es también la proyección de la línea que pasa por el centro óptico Єi y la proyección mi sobre el plano de proyección. Tenemos exactamente dos líneas epipolares, una por cada imagen. Las dos líneas epipolares pueden tener las mismas coordenadas, o coordenadas distintas. Definimos como plano epipolar al plano definido por los centros ópticos de las dos imágenes, y el punto M del espacio tridimensional. Tanto las dos proyecciones m1 y m2 del punto como sus epipolos e1 y e2 están contenidos en el plano epipolar. Si M está fuera de los dos planos de proyección y los planos de proyección no son paralelos, existe un único plano epipolar. Para deducir la formulación de la matriz fundamental tomaremos las ecuaciones ??, que son: λ1m1=P1M. λ2m2=P2M. El primer paso que tomaremos será buscar la formulación matemática de la línea epipolar para la segunda proyección P2, que será l2 ; nos interesa que sea función de m1, P1 y P2 .Podríamos usar como punto M si lo conociéramos, pero partimos de M que es desconocido. Para encontrar el primer punto usaremos un punto arbitrario Ma, cuya formulación es: M a = P1+ m1 . Capítulo VI Aplicaciones de geometría epipolar 51 Es decir, nuestro punto será el producto de la pseudoinversa de la primera matriz de proyección por la primera proyección del punto. Siendo P1 de 4x3 elementos, P1+ será forzosamente de 3x4 elementos según la definición de pseudoinversa por la derecha estudiada en la primera sección de estas transparencias. Este punto cuya ecuación hemos definido tiene una propiedad importante. Si lo aplicamos a la primeras ecuaciones ??, tendremos: λ1m1(Ma)=P1Ma. Sustituyendo el valor de Ma, obtenemos: λ1m1(Ma)=P1P1+m1. Aplicando la definición de pseudoinversa, tenemos que P1P1+=I, por lo que tenemos que: λ1m1(Ma)=Im1. Esto quiere decir que la proyección ma de este punto Ma es igual a m1, por lo que el punto está en la línea entre el centro óptico C1 y la proyección m1 en P1 del punto M. Ya tenemos uno de los dos puntos que estamos buscando: Ma por lo tanto hacemos: m2(Ma)=P2Ma. Aplicando la definición de Ma de ??: m2(Ma)=P2 P1+m1. Para el segundo punto, vamos a aplicar a la segunda ecuación ??, el centro óptico de la primera imagen, con objeto de obtener el segundo epipolo. Tendremos: e2=m2(C1)=P2C1. Conocidos estos dos puntos, el cálculo de la línea epipolar es trivial: l2=e2xm2(Ma). Sustituyendo el cálculo de de ?? y de ma(Ma) de ??, tenemos: l2=P2C2x P2P2+m1. Podemos aún simplificar más la formulación de la línea epipolar l2de la segunda proyección P2, sustituyendo la matriz resultado del producto de P2C2 por su antisimétrica; así tenemos que la nueva formulación de la línea epipolar l2es: l2=[P2C2]x P2P2+m1. Capítulo VI Aplicaciones de geometría epipolar 52 Definamos la matriz £ como: £=[P2C1]xP2P1+. La línea epipolar l2 pasa a ser: l2=£m1. Y la llamaremos matriz fundamental. La matriz fundamental depende exclusivamente de la geometría bifocal, y es independiente de los puntos del sistema y de sus proyecciones, es decir, no depende de M, ni de m1, ni de m2. La forma de usar esta matriz es para relacionar las dos proyecciones m1 y m2 de un punto en el espacio. Para deducir la expresión que relaciona las dos proyecciones, analizaremos la línea epipolar l2 de nuevo. Como m2 pertenece a la línea epipolar l2 , tendremos que: m2T t 2 = 0 Aplicando la nueva definición de línea epipolar de ??, tenemos que: m2T £ m1 = 0 Por lo que podremos usar la matriz fundamental para relacionar las dos proyecciones de un punto en el espacio. 6.2 Autovalor y autovector de una aplicación lineal. Sea V un espacio vectorial de dimensión finita sobre un cuerpo K (en general suele ser R, el cuerpo de los números reales) y sea f;VÆV una aplicación lineal. Diremos que el escalar λ∈ K (o a R) es un Autovalor o Valor Propio de f si existe un cierto vector v∈ V (siendo v un vector no nulo de V) tal que f(v) = λ v. Al vector v se le denomina Autovector o Vector Propio de f asociado al autovalor λ . F1(u): [u2, u1]. ¿Cuáles son sus autovalores y autovectores? Consideremos un vector genérico de R2. v: [v1, v2]. ¿Qué deberá verificar el valor a, y el vector v para que a sea el autovalor y v el autovector de esta aplicación lineal? Por definición tendrá que cumplirse que. F(v)=a·v. expresión que una vez simplificada nos da. [v2=a·v1,v1=a·v2] Capítulo VI Aplicaciones de geometría epipolar 53 En estas circunstancias si consideramos por ejemplo a=1, tendremos. a=1 [v2=v1, v1=v2] Esto quiere decir que un autovalor sería a=1 y los autovectores serían de la forma (x,x) Y si a=-1, tendremos que a=-1. [v2=-v1, v1=-v2] En cuyo caso un autovalor sería a=-1 y los autovectores serían de la forma (x,-x). 6.2.1 Autovalor de una matriz. Sea A una matriz de orden n, diremos que λ∈ R es un Autovalor de una matriz A si existe cierto vector x ∈ R n tal que A x =λ x al vector x le llamaremos Autovector asociado al autovalor λ. Según esta definición, y partiendo de la proposición anterior, es fácil observar que los autovalores de una aplicación lineal, coinciden con los autovalores de su matriz asociada. Una cosa diferente, sucede con los autocevtores. Como se observa en la proposición si u es un autovector de la aplicación lineal f, entonces el vector x (coordenadas del vector u la base B) será autovector de la matriz asociada A respecto de la base B. Según esta observación anterior es evidente que si A es la matriz asociada a una aplicación lineal f respecto de las bases canónicas podemos afirmas que los autovalores y los autovectores de la matriz y la aplicación lineal coinciden. Por consiguiente, si deseamos obtener los autovalores y autovectores de una aplicación lineal, será suficiente construir la matriz asociada de f respecto de las bases canónicas y obtener autovalores y autovectores de dicha matriz. Es decir: Los autovalores y autovectores de una aplicación lineal y su matriz asociada respecto de las bases canónicas coinciden. 6.3 La matriz pseudoinversa. Definimos como pseudoinversa por la derecha de una matriz A, que denotamos como A+, a una matriz que multiplicada por la derecha por A da la matriz diagonal con todos los elementos diagonales iguales a 1, -matriz I-; es decir: I=AA+ Capítulo VI Aplicaciones de geometría epipolar 54 Calculamos la pseudoinversa de A con la ecuación: A+=AT[ATA]-1 como la matriz [ATA] es cuadrada, suponiendo que sea una matriz regular, es una matriz que puede ser invertida, y su inversa es única; por lo que el cálculo de esta expresión no debe tener ningún problema adicional. 6.4 La matriz antisimétrica. Definimos matriz antisimétrica por la izquierda [A]x de una matriz A a aquella matriz tal que: AxB=[A]xB En las demostraciones que necesitaremos para llegar a una formulación simple de la matriz epipolar, necesitaremos conocer la matriz antisimétrica por la izquierda de una matriz de 3x1 posiciones. Si tenemos la matriz: Su antisimétrica [A]x será: ⎛ a0 ⎞ ⎜ ⎟ A= ⎜ a1 ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ a2 ⎠ ⎛ 0 ⎜ [A]x= ⎜ a2 ⎜ ⎝ − a1 −a 0 a 0 2 a ⎞⎟ − a ⎟⎟ 1 0 0 ⎠ 6.5 La transformada SVD. La transformada SVD -Singular Value Decompositiones: • • Una herramienta común para resolver sistemas de ecuaciones. Una herramienta para diagonalizar matrices singulares o mal condicionadas. Definición. Cualquier matriz, sea singular o no, puede ser descompuesta en un producto de tres matrices, de la forma: A=UDVT donde U y V son matrices ortogonales, por lo que sus inversas son iguales a sus transpuestas; y D es una matriz diagonal. Capítulo VI Aplicaciones de geometría epipolar 55 Aplicación estrella. La aplicación más común de la SVD es el cálculo rápido de la inversa de una matriz para resolver un sistema de ecuaciones. La inversa de la matriz , conocida su descomposición SVD, es: A-1=VD-1UT Nuestro interés en la SVD. SVD es interesante para nosotros porque: • Define un espacio ortogonal en U cuyo número de vectores directores coincide con el rango de la matriz A, y este espacio define la parte no-singular de la matriz. • Define un espacio ortogonal en V cuyo número de vectores directores coincide con la dimensión de la matriz A menos su rango y este espacio define la parte singular de la matriz. Matriz mal condicionada. Sea A=UDVT una descomposición mal condicionada SVD, σ1 el mayor elemento diagonal de D. llamamos grado de singularidad al cociente σ1/σn; y si la inversa del grado de singularidad es el orden de magnitud que la precisión de la máquina, denominamos a la matriz mal condicionada, y la podemos considerar singular. Pseudoinversa de una matriz. Sea A=UDVT una descomposición SVD, y A una matriz cuadrada singular. La pseudoinversa de A será: A+=VD0-1UT Donde D0 es una matriz en la que sustituimos los elementes de la diagonal que valgan 0 o ∞, lo que es lo mismo que decir que los elementos de D0-1 que valgan ∞ los sustituiremos por 0. Propiedades de la SVD. • • • Los autovalores no nulos de ATA y de AAT son los cuadrados de los valores singulares no nulos de A. Sea A=UDVT una descomposición SVD, las columnas de U son los autovectores de AAT y las columnas de V son los autovectores de ATA. Sea A=UDVT una descomposición SVD, todo elemento de la diagonal σk cumple que: Auk=σkuk y que: ATvk= uk Siendo: • • vk la columna de U correspondiente a σk uk la columna de V correspondiente a σk Capítulo VI Aplicaciones de geometría epipolar 56 6.6 La matriz fundamental. F’ es la representación algebraica de le geometría epipolar. Es una proyección que lleva puntos (de una imagen) a líneas (epipolar, en otra imagen). Las características de la matriz fundamental son: • Rango (F)=2 • Incluye información sobre parámetros intrínsecos y extrínsecos. • Permite la reconstrucción completa de la geometría epipolar. • Es el sistema de coordenadas de pixeles sin ningún conocimientos de parámetros. p F p 1 = 0 ⇒ (u r T r vr ⎛ F11 ⎜ 1) * ⎜ F21 ⎜F ⎝ 31 F12 F22 F32 F13 ⎞⎛ u1 ⎞ ⎟⎜ ⎟ F23 ⎟⎜ v 1 ⎟ = 0 F33 ⎟⎠⎜⎝ 1 ⎟⎠ 6.7 Solución lineal (Algoritmo de los ocho puntos). En este método, la solución para f es el vector singular correspondiente al valor singular más pequeño de A, esto es, la ultima columna de V en la descomposición en valores singulares (SVD) de A = UDVt. el vector f encontrado de esta manera minimiza ||Af|| sujeto a ||f||=1. Una propiedad muy importante de F es que es singular, de rango 2. Muchas de las aplicaciones de F dependen de este hecho. Por ejemplo, el calculo de las líneas epipolares. Generalmente este método no genera una matriz F de rango 2. Sin embargo esta propiedad se puede forzar. La forma más conveniente de hacerlo es reemplazar F con la F' que minimice la norma de Frobenius ||F - F'|| sujeto a que det F' = 0. La manera de hacerlo es, otra vez, con SVD. Sea F = UDVt, con D = diag(r, s, t) y r >= s >= t. Entonces F' = U diag(r, s, 0) Vt minimiza la norma de Frobenius definida arriba. Existe un algoritmo que utiliza solo 7 puntos pero solo puede utilizarse cuando la matriz A tiene rango siete y generalmente se obtienen dos o tres soluciones. 6.7.1 Algoritmo de los ocho puntos normalizado. El algoritmo anterior es el mas simple, y si se realiza con cuidado puede generar una solución extremadamente buena. La clave para lograrlo consiste en normalizar las coordenadas del conjunto de pares de puntos correspondientes. Es posible que los puntos que se elijan estén muy alejados entre si, dentro del marco de referencia de la imagen. Lo que se sugiere Hartley, es una translación y un escalamiento de cada imagen de manera que el centroide de los puntos quede en el origen del marco de referencia de cada cámara. Capítulo VI Aplicaciones de geometría epipolar 57 Algoritmo de 8 puntos normalizado: 1. Normalización: Transformar las coordenadas de la imagen de la siguiente manera: û1i = T1u1i y de la misma manera para v con T2; donde T1 y T2 son transformaciones de normalización que consiste en una translación y escalamiento. A partir de ahora ui y vi son las coordenadas de los puntos normalizados. 2. Encontrar la matriz Fundamental F que corresponde a los puntos correspondientes p1 ↔ p2 de la siguiente manera: a. Solución lineal: Determinar F del vector singular correspondiente al valor singular más pequeño de la matriz A. b. Cumplimiento de la restricción forzoso. Remplazar F por la matriz fundamental cuyo determinante sea cero; usando SVD. 3. Regresar las coordenadas de los puntos a su posición original. ANEXOS Anexo I Anexo I. Presentación de las aplicaciones del proyecto. A continuación se mostrarán las distintas aplicaciones generadas a lo largo del proyecto de investigación, las cuales se desarrollaron en el lenguaje de programación Matlab 7.0. Para ejecutar la aplicación se debe abrir el archivo llamado ‘compara_imagenes.m’, posteriormente en la ventana de Command Window se escribe la siguiente instrucción. compara_imagenes(0,’100_0907.jpg’,’100_0908.jpg’) En donde ’100_0907.jpg’,’100_0908.jpg’, son los nombres de las imágenes con las cuales se trabajara. Una vez ejecutado el programa aparecerá la siguiente pantalla de menú, con la cual se podrá acceder a las diferentes aplicaciones del programa. Anexo I Al seleccionar la opción de ‘Bienvenida’ en la barra de menú. Aparecerá el siguiente mensaje. Anexo I Para ejecutar la aplicación de generación de bordes deseada, basta con dar click en la opción. Esta aplicación se explica a detalle en el Anexo II. Para ejecutar la opción de relación entre la coordenada de un píxel y la coordenada en pantalla, se puede elegir la opción de ‘Imagen sin borde’, o cualquiera de las opciones para generación de borde. Esta aplicación se explica a detalle en el Anexo III. Para ejecutar las aplicaciones de Geometría epipolar se selecciona la opción de ‘Geometría epipolar’ en el menú principal con lo cual aparecerán las siguientes opciones. Al seleccionar la opción de ‘Como usarme’ se mostrara la siguiente pantalla la cal indica los pasos a seguir para ejecutar la aplicación. Esta aplicación se explica a detalle en el Anexo IV. Anexo II Anexo II. Generación de bordes. A continuación se muestran las aplicaciones correspondientes al Capitulo III. Como se menciono anteriormente basta con seleccionar la opción del borde deseado dentro del menú principal con lo cual aparecerán las siguientes pantallas. Comenzaremos con los operadores Laplaciano de Gauss y el Método de Canny. Selección de la opción de Laplaciano de Gauss. Selección de la opción de Método Canny. Anexo II A continuación se muestran el Método Zero-Cross y el Método de Roberts. Selección de la opción de Método Zero-Cross. Selección de la opción de Método Roberts. Anexo II A continuación se muestra las aplicaciones de el Método de Prewitt y el Método de Sobel. Selección de la opción de Método Prewitt. Selección de la opción de Método Sobel.. Anexo III Anexo III. Relación entre la coordenada de un píxel y la coordenada en pantalla. Esta aplicación puede ejecutarse con imágenes a las cuales se les puede aplicar algún tipo de borde o ya sea con imágenes libres de bordes. La finalidad de esta aplicación es, dado que se selecciona un punto o varios puntos sobre la imagen, encontrar la relación de la coordenada en píxeles y las coordenadas en pantalla o números reales del punto o puntos seleccionados. A continuación se muestra la ejecución de la aplicación para una imagen libre de bordes. Como primer se selecciona la opción de ‘Imagen sin borde’ del menú principal como se muestra a continuación. Una vez seleccionada la opción de imagen sin borde aparecerá la pantalla de ‘Comparación de imágenes’, así como pantallas de mensajes que le ayudarán a trabajar con la aplicación de manera amigable, esto se muestra a continuación. Anexo III Este es un mensaje de inicio de la aplicación una vez que se da click en el mensaje de comienzo de aplicación aparecerá la siguiente pantalla. Posterior a esto aparece un mensaje para comenzar a trabajar con la imagen izquierda. Una vez seleccionado el punto o los puntos deseados en la imagen izquierda y presionar la tecla Enter, aparecerá el siguiente mensaje para trabajar con la imagen derecha. Una vez seleccionado el punto o los puntos deseados en la imagen derecha y presionar la tecla Enter, aparecerá el siguiente mensaje para el análisis de los resultados. Anexo III Antes de comenzar a analizar los resultados observemos como fueron seleccionados los puntos en la imagen. Podemos observar los puntos seleccionados marcados por asteriscos de color rojo, en este caso en particular solo se selecciono un punto por imagen, en particular este punto se selecciono en una región que nosotros consideramos como el centro de la imagen, es decir que el valor de este punto visto en coordenadas en pantalla debe ser muy aproximado a cero, esto se presenta a continuación. En el Command Window del lenguaje de programación Matlab 7.0, se pueden observar los resultados de la ejecución de esta aplicación. En la imagen que se presenta a continuación se puede observar el resultado en coordenadas en píxel de los puntos seleccionados por cada imagen. Una vez con los puntos seleccionados se procede a generar la relación entre la coordenada de un píxel y la coordenada en pantalla, los resultados se muestran a continuación. Anexo III Como podemos observar los resultados son muy aproximados al valor de cero como era de suponerse. Por otra parte podemos seleccionar puntos sobre cualquier parte de las imágenes y mediante el mismo método obtener las coordenadas en pantalla. La selección de los puntos para esta aplicación, como ya se había comentado puede ser hecha mediante la extracción de algún borde de los posibles a elegir. Anexo IV Anexo IV. Aplicaciones de geometría epipolar. Utilizando el algoritmo de los ocho puntos comenzaremos obteniendo la Matriz Fundamental mediante la Transformada SVD. Como primer paso para la obtención de la Matriz Fundamental seleccionaremos un mínimo de ocho puntos por imagen en nuestro caso se seleccionaron veinte puntos por imagen los cuales fueron guardados en una tabla para su posterior utilización. Para la selección de los puntos se elige del menú principal en la parte correspondiente a ‘Geometría epipolar’, se selecciona la opción de ‘Puntos sobre la imagen’ como aparece en la siguiente pantalla. Anexo IV La selección de los puntos se muestra a continuación. Una vez seleccionados los puntos somos capaces de generar la Matriz Fundamental con la cual obtendremos las líneas epipolares de las dos imágenes. En el menú principal dentro de las aplicaciones de ‘Geometría epipolar’ se selecciona la opción de ‘Líneas Epipolares’ como se muestra en la siguiente pantalla. Anexo IV Una vez seleccionada esta opción se muestra la generación de las líneas epipolares . En la imagen anterior se puede observar los resultados de la obtención de líneas mediante el uso de la matriz fundamental. Bibliografía Bibliografía • • • • • • • Adams A; Rogers, D. ``Mathematical Elements for Computer Graphics". McGraw-Hill, NY, 1990. Altmann, S. ``Rotations, Quaternions and Double Groups". Clarendon Press, Oxford. 1986. Noble, B; Daniel, J.``Algebra Lineal Aplicada".Prentice-Hall. 1989. Vince, J ``3-D Computer Animation". Addison-Wesley, 1992. Wolfram, S. ``The Mathematica Book". 4a ed. Wolfram Media/Cambridge University Press, 1999 Gonzalo Pajares, Martinsanz; de la Cruz garcía, Jesús M.. “Visión por computador”, Ed Alfaomega, México, 2002. Castelnuovo, Guido. “Lecciones de Geometría Analítica”, Ed. Palomino. Argentina, 1959. Referencias de Internet • • • • • • http://www.matem.unam.mx/~rgomez/geometria/Capitulo6.pdf http://www1.cs.columbia.edu/~jebara/htmlpapers/SFM/node8.html http://wwwsop.inria.fr/robotvis/personnel/sbougnou/Meta3DViewer/EpipolarGeo.html http://www1.cs.columbia.edu/~jebara/htmlpapers/SFM/sfm.html http://www.cs.unc.edu/~marc/tutorial/node8.html http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MOHR_TRIGGS /node47.html • Artículos • • • Puente Montejano, Cesar Augusto. “reconstrucción de objetos presentes en una escena utilizando el esquema de la siguiente mejor imagen”, ensenada baja california, méxico. abril 2005 Santo Orcero, David. “La matriz fundamental y la matriz esencial. Conceptos y aplicaciones”, mayo de 2002. Figueroa, Pablo. “reconstrucción 3d geometría de dos vistas”, 2005