Determinacion de la Posicion de Objetos en
Transcripción
Determinacion de la Posicion de Objetos en
Determinación de la posición de objetos en imágenes usando la Transformada de Fourier-Mellin Analítica Autor: Mauricio Villegas Santamaría Directores: Juan Ramón Torregrosa Sánchez Jaime Riera Guasp UNIVERSIDAD POLITÉCNICA DE VALENCIA ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIÓN Proyecto Fin de Carrera Valencia, 13 de Octubre de 2004 A mi papá, Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Agradecimientos Primero que todo agradezco más que nadie a mis padres, que me han dado todo en esta vida y me han hecho la persona que soy ahora. Y en general a mi familia, que siempre me ha apoyado para conseguir mis metas. Sin ellos no habría podido venir a España, hacer mi proyecto de fin de carrera y finalmente graduarme como ingeniero. A mis amigos les agradezco por la buena amistad, por los buenos momentos, por entenderme, y por haberme enseñado tanto. Sin duda las cosas más importantes de la vida no se aprenden en un salón de clase. También agradezco a todas las personas que en el pasado han sido mis profesores y de una forma u otra han contribuido en mi formación y por lo tanto sus lecciones se verán reflejadas en todos los trabajos que hago. Gracias a la Universidad Santo Tomás y a la Universidad Politécnica de Valencia, las instituciones que han hecho esto posible. Por último quiero agradecer especialmente a los profesores D. Juan Ramón Torregrosa Sánchez y D. Jaime Riera Guasp por darme la oportunidad de trabajar con ellos en este proyecto. Espero que mi trabajo y mi esfuerzo hayan cumplido las expectativas que tenían, y que mi contribución les sea de gran utilidad. i Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Índice ACRÓNIMOS V INTRODUCCIÓN 1 OBJETIVOS 3 CAPÍTULO 1. 1.1. 1.1.1. 1.1.2. 1.1.3. 1.2. 1.2.1. 1.3. 1.3.1. 1.4. FUNDAMENTOS MATEMÁTICOS LA TRANSFORMADA DE FOURIER-MELLIN (FMT) INTERPRETACIÓN DE LA FMT LA FMT Y EL RECONOCIMIENTO DE FORMAS PROBLEMAS DE LOS DESCRIPTORES BASADOS EN EL MÓDULO DE LA FMT LA TRANSFORMADA DE FOURIER-MELLIN ANALÍTICA (AFMT) PROPIEDADES DE LA AFMT DESCRIPTORES AFMT INVARIANTES A CAMBIOS DE ESCALA Y ROTACIÓN PROPIEDADES DE LOS DESCRIPTORES INVARIANTES AFMT DISTANCIA ENTRE FORMAS CAPÍTULO 2. IMPLEMENTACIÓN DE LA AFMT Y LOS DESCRIPTORES INVARIANTES EN MATLAB 4 5 5 6 7 8 8 10 11 12 13 2.1. 2.1.1. 2.1.2. 2.2. 2.2.1. 2.2.2. 2.3. 2.4. 2.4.1. 2.5. CÁLCULO DE LA TRANSFORMADA DE FOURIER-MELLIN ANALÍTICA 14 EL ALGORITMO RÁPIDO PARA EL CÁLCULO DE LA AFMT 14 CONSECUENCIAS DE LA APROXIMACIÓN DISCRETA DE LA AFMT 16 PROGRAMA PARA CONVERTIR UNA IMAGEN A COORDENADAS LOG-POLARES 18 EJEMPLO 1 19 EJEMPLO 2 22 PROGRAMA PARA APROXIMAR LA AFMT USANDO EL ALGORITMO RÁPIDO 26 PROGRAMA PARA CALCULAR LOS DESCRIPTORES AFMT 27 EJEMPLO 3 27 PROGRAMA PARA CALCULAR LA DISTANCIA EUCLIDEA ENTRE DESCRIPTORES AFMT 32 2.5.1. EJEMPLO 4 32 CAPÍTULO 3. AFMT DETERMINACIÓN DE LA POSICIÓN DE OBJETOS USANDO LA 35 3.1. ALGORITMO SIMPLE PARA LA DETERMINACIÓN DE LA POSICIÓN DE OBJETOS 3.1.1. EJEMPLO 5 3.2. DESCRIPTORES AFMT PARA UN DISCO DE VALOR CONSTANTE 3.2.1. EJEMPLO 6 ii 36 36 41 44 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.3. NUEVA DEFINICIÓN DE LA DISTANCIA DE SIMILITUD 46 3.3.1. EJEMPLO 7 46 3.4. ALGORITMO PARA LA DETECCIÓN DEL MOVIMIENTO DE UN OBJETO EN UN VÍDEO 49 3.4.1. CARACTERÍSTICAS DE LOS VÍDEOS 49 3.4.2. ALGORITMO PARA OBJETOS QUE SE MUEVEN LENTAMENTE 50 3.4.3. ALGORITMO PARA OBJETOS QUE SE MUEVEN RÁPIDAMENTE 50 3.4.4. DETERMINACIÓN DE LA POSICIÓN INICIAL DEL OBJETO 53 3.4.5. ALGORITMO OPTIMIZADO PARA LA DETERMINACIÓN DE LAS POSICIONES DE UN OBJETO EN VÍDEOS 55 3.4.6. UN NUEVO PROBLEMA CON EL FONDO 56 CAPÍTULO 4. APLICACIÓN 58 4.1. POSIBLES CAMPOS DE APLICACIÓN 59 4.1.1. MEDIR LOS PARÁMETROS DE MOVIMIENTO PARA OBJETOS EN LABORATORIOS DE FÍSICA MECÁNICA 59 4.1.2. MEDICIÓN PRECISA DE LA POSICIÓN DE LA LUNA 59 4.1.3. SISTEMA AUTOMÁTICO PARA EL SEGUIMIENTO DE CUERPOS CELESTES 61 4.1.4. SEGUIMIENTO DEL MOVIMIENTO DE COCHES EN UNA CALLE 61 4.1.5. AYUDA PARA EL CONDUCTOR DE UN VEHÍCULO 62 4.2. ENTORNO GRÁFICO PARA DETERMINAR LA POSICIÓN DE UN OBJETO EN UN VÍDEO 63 4.3. RESULTADOS USANDO EL PROGRAMA OBMODE 70 4.3.1. RESULTADOS ESPECIFICANDO LA POSICIÓN INICIAL PARA EL PRIMER COCHE 71 4.3.2. RESULTADOS ESPECIFICANDO LA POSICIÓN INICIAL PARA EL SEGUNDO COCHE 72 4.3.3. RESULTADOS SIN ESPECIFICAR LA POSICIÓN INICIAL 73 4.3.4. RESULTADOS USANDO EL ALGORITMO DE RADIO VARIABLE 74 4.3.5. RESULTADOS USANDO EL MISMO VÍDEO PERO DIGITALIZADO SIN COMPRESIÓN Y COMPENSANDO EL ENTRELAZADO 77 CAPÍTULO 5. CONCLUSIONES 79 BIBLIOGRAFÍA 81 ANEXO A. 83 DEMOSTRACIONES MATEMÁTICAS A.1. DEDUCCIÓN DEL TEOREMA DE TRASLACIÓN EN COORDENADAS LOG-POLARES PARA LA AFMT 83 A.2. DEMOSTRACIÓN DE LA SIMETRÍA HERMITIANA DE LA AFMT 84 A.3. DEMOSTRACIÓN DE LA INVARIANZA A LAS SIMILITUDES PLANAS DE LOS DESCRIPTORES AFMT 85 A.4. DEMOSTRACIÓN DE LA NO INVARIANZA A LAS TRASLACIONES DE LOS DESCRIPTORES AFMT 86 ANEXO B. B.1. B.2. B.3. B.4. B.5. PROGRAMAS EN MATLAB 87 IM2LOGPOL.M F_AFMT.M AFMT_DESCRIPTORS.M IMDISTANCE.M OBMODE.M (SOLO LA PARTE EN QUE SE DETERMINAN LAS POSICIONES) iii 87 89 91 93 94 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ ANEXO C. C.1. C.2. C.3. C.4. C.5. C.6. C.7. C.8. C.9. C.10. RESULTADOS USANDO EL PROGRAMA OBMODE BOLA EN CAÍDA LIBRE, PRUEBA 1 BOLA EN CAÍDA LIBRE, PRUEBA 2 BOLA EN CAÍDA LIBRE, PRUEBA 3 BOLA EN CAÍDA LIBRE, PRUEBA 4 VIDEO DE TRÁFICO, PRUEBA 1 VIDEO DE TRÁFICO, PRUEBA 2 VIDEO DE TRÁFICO, PRUEBA 3 VIDEO DE TRÁFICO, PRUEBA 4 VIDEO DE TRÁFICO, PRUEBA 5 VIDEO DE TRÁFICO, PRUEBA 6 96 96 98 100 102 104 106 108 110 112 114 iv Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Acrónimos AFMT Analytical Fourier-Mellin Transform (Transformada de Fourier-Mellin Analítica) CHF Circular Harmonic Functions (Funciones Armónicas Circulares) FFT Fast Fourier Transform (Transformada Rápida de Fourier) FMT Fourier-Mellin Transform (Transformada de Fourier-Mellin) FT Fourier Transform (Transformada de Fourier) IAFMT Inverse Analytical Fourier-Mellin Transform (Inversa de la Transformada de Fourier-Mellin Analítica) MT Mellin Transform (Transformada de Mellin) v Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Introducción A medida que pasa el tiempo y que la población mundial aumenta, cada vez se requieren nuevos aparatos que nos ayuden en nuestras. Hasta el momento la tecnología ha permitido que se construyan máquinas que hacen cosas imposibles para una persona, pero se necesita que sean cada vez más inteligentes para que sean capaces de hacer tareas más específicas con poca o ninguna intervención humana. De esta necesidad surgen temas como la informática, la inteligencia artificial y la robótica, que son los campos de la ciencia llamados a solventar esas deficiencias. Una diferencia muy grande entre los seres humanos y las maquinas que creamos, es que nosotros somos capaces de interpretar y analizar rápidamente todas las imágenes que reciben nuestros ojos. Para cualquier persona es muy fácil identificar la especie de un animal con solo mirarlo un momento y no importa que tan diferente fuera de los que había visto antes. Lo importante es que el animal tenga las características que tienen todos los de su especie. Por otro lado, programar un ordenador para que identifique la especie de un animal es una tarea tremendamente complicada y los resultados se asemejan a la capacidad humana. Aunque en el momento es imposible lograr que un ordenador analice una imagen de la forma que lo hace una persona, si se han desarrollado muchas técnicas cuyo objetivo es extraer de ellas cierta información muy específica. Esto se hace usando el procesamiento digital de imágenes y lleva el nombre de análisis de imágenes digitales. La información que se extrae de las imágenes puede ser de cualquier tipo dependiendo de los requerimientos que se tienen pero cabe mencionar entre estos el reconocimiento de formas que pretende identificar un objeto o patrón particular. En la actualidad existe mucho interés en la Transformada de Fourier-Mellin Analítica como herramienta para el reconocimiento de formas. Esta transformada permite extraer fácilmente unos descriptores que identifican un objeto independientemente del tamaño o la orientación que tengan. Esa característica permite bastante flexibilidad en las imágenes que se toman de los objetos. Un ejemplo de una aplicación de esta transformada es en la identificación o autenticación de personas mediante huellas dactilares. Aunque la Transformada de Fourier-Mellin Analítica ya se usa en diferentes aplicaciones, sus características tan particulares pueden servir para otros 1 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ propósitos y no necesariamente en el reconocimiento de formas. Por esta razón este proyecto se enfoca en las posibles aplicaciones que se le pueden dar a esa herramienta matemática. 2 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Objetivos En general el objetivo de este proyecto es analizar las diferentes aplicaciones que se le pueden dar a la Transformada de Fourier-Mellin Analítica y los descriptores invariantes a las similitudes planas. De forma más específica para este proyecto se plantean los siguientes objetivos: Presentar de forma clara la Transformada de Fourier-Mellin Analítica, los descriptores invariantes a las similitudes planas y la distancia de similitud entre formas. Implementar la teoría presentada en lenguaje de programación. Comprobar que la teoría corresponde con los resultados que se obtienen en el ordenador. Desarrollar un algoritmo para determinar la posición de objetos en imágenes y en vídeos. Aplicar el algoritmo desarrollado en vídeos de una situación real. 3 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Capítulo 1. Fundamentos matemáticos En este capítulo se presentará toda la teoría matemática necesaria para el desarrollo del presente proyecto. Más específicamente, se tratarán los temas de la Transformada de Fourier-Mellin (FMT), la Transformada de Fourier-Mellin Analítica (AFMT) y el uso de estas para comparar imágenes que representan objetos similares. Esa es la base teórica que nos permite determinar la posición de objetos con la especial característica de ser bastante flexible comparado con otros métodos mas tradicionales. Antes de introducirnos en el mundo de las fórmulas y los números, valdría la pena mencionar a las primeras personas que trabajaron en el tema. La Transformada de Fourier-Mellin debe su nombre a dos grandes matemáticos. Ninguno de estos personajes la inventó, pero sus trabajos más importantes están muy relacionados y gracias a estos, surge esa transformada tan particular. La primera de las personas que mencionábamos es Jean Baptiste Joseph Fourier que nació en Auxerre, Francia en 1768 y murió en Paris en 1830. Su mayor logro fue el Análisis de Fourier (nombre con el que se conoce actualmente), el cual se define como una teoría matemática en la que una función periódica se descompone en unas funciones periódicas elementales (sinusoides) [1]. El segundo matemático llamado Robert Hjalmar Mellin nació en Liminka, Finlandia en 1854 y murió en 1933. Su trabajo se concentró en la teoría de funciones y estudió una transformada que ahora también lleva su nombre, la Transformada de Mellin (MT) [2]. 4 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 1.1. La Transformada de Fourier-Mellin (FMT) Consideremos una función de dos variables en coordenadas polares, r es la variable radial que está definida para todos los números reales positivos incluyendo el cero, y θ es la variable angular medida en radianes y definida para todos los números reales entre 0 y 2π. En notación matemática esto se escribe f (r ,θ ) , ∀(r ,θ ) ∈ R+* × S 1 . La forma natural de la Transformada de Fourier-Mellin está definida para funciones de este tipo por la siguiente ecuación [5] M f (k , v ) = 1 2π ∞ 2π ∫ ∫ f (r ,θ )r − jv e − jkθ dθ 0 0 dr r ∀(k , v ) ∈ Z × R El resultado de la Transformada de Fourier-Mellin es una nueva función de dos variables k y v. La variable k está definida para todos los números enteros positivos y negativos incluyendo el cero, y la variable v está definida para todos los números reales. 1.1.1. Interpretación de la FMT Para poder entender mejor lo que hace la Transformada de Fourier-Mellin, podemos relacionarla con el Análisis de Fourier y la Transformada de Mellin. Según el Análisis de Fourier cualquier función periódica se puede representar como una suma de funciones periódicas de la forma x a e jkx , que son armónicos de e jx. Esta representación de una función se conoce como la Serie de Fourier Compleja, y para una función periódica con respecto a la variable θ y con periodo 2π, esta serie es [3] f (θ ) = ∑ ck e jkθ . k∈Z 5 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ La sucesión ck se conoce como los Coeficientes de Fourier, y si θ se toma como una variable de tiempo, estos representan la distribución de la función en el dominio de la frecuencia. La fórmula para los Coeficientes de Fourier es la siguente ck = 1 2π ∫ 2π f (θ )e − jkθ dθ . 0 Si tenemos una función f(r,θ) de dos variables en coordenadas polares como la de la FMT, y analizamos la variable θ pero extendiéndola para todos los números reales, podemos decir que f es una función periódica con periodo 2π. Estas funciones se conocen como Funciones Armónicas Circulares (CHF). Como las CHFs son periódicas, se pueden representar mediante una Serie de Fourier. f (r ,θ ) = ∑ f k (r )e jkθ , f k (r ) = k∈Z 1 2π ∫ 2π 0 f (r ,θ )e − jkθ dθ . Por otra parte, la Transformada de Mellin se define de la siguiente forma [5] ∞ M f (v ) = ∫ f (r )r − jv 0 dr . r Si remplazamos f(r) en la Transformada de Mellin, por los Coeficientes de Fourier fk(r), obtenemos la Transformada de Fourier-Mellin. De esta deducción de la FMT podemos decir varias cosas. Primero, podemos ver que k está directamente relacionada con la variable angular y se le puede dar una interpretación muy similar a la de los Coeficientes de Fourier. También queda claro que v está relacionado con la variable radial y debe tener las mismas características que la Transformada de Mellin. Por último, para k = 0 la transformada representa el nivel DC de la función con respecto a circunferencias de radio fijo. 1.1.2. La FMT y el reconocimiento de formas Hay una característica principal de la FMT que la hace muy atractiva para reconocimiento de formas. Una rotación con respecto al origen o un cambio de escala, en el dominio original de la función se traducen en solo un cambio de fase en el dominio de Fourier-Mellin. Estos cambios en una función se conocen como similitudes planas, y en términos matemáticos, dos funciones f y g tienen este tipo de similitud si g (r ,θ ) = f (αr ,θ + β ) , 6 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ donde α y β son constantes que representan cambios de escala y orientación respectivamente. Si se cumple esta condición, sus Transformadas de Fourier-Mellin se relacionan por M g (k , v ) = α jv e jkβ M f (k , v ) . 1 Por analogía con la transformada de Fourier, esta propiedad se puede llamar el teorema de traslación en coordenadas log-polares de la FMT. Si sacamos el valor absoluto a ambos lados de esta expresión obtenemos M g (k , v ) = M f (k , v ) . Como el resultado es el mismo para ambas transformadas, se puede decir que estos son unos descriptores de la función invariantes a los cambios de escala y rotación. En otras palabras, esto significa que se puede representar un objeto independientemente de su tamaño u orientación. Estos descriptores pueden servir para hacer comparaciones entre diferentes imágenes u objetos y sirven para determinar si son equivalentes en el sentido de la similitud plana [4]. 1.1.3. Problemas de los descriptores basados en el módulo de la FMT La FMT y los descriptores invariantes mencionados anteriormente no cumplen bien todos los criterios necesarios para ser usados en una aplicación de reconocimiento de formas [7]. Cuando sacamos el valor absoluto de la FMT se pierde mucha información y existe la posibilidad de que dos objetos diferentes tengan los mismos descriptores. Además con un ejercicio muy sencillo [6] se puede demostrar que la mayor parte de la información se encuentra en la fase, lo que significa que usar solo el módulo no es muy eficiente. El ejercicio se trata de reconstruir una imagen a partir de una FMT formada por el modulo y la fase de funciones diferentes. El resultado es que la imagen se parece mas a la función de la cual se extrajo la fase. Otro problema que tiene la FMT es el término r -1. Cuando r tiende a cero, ese término tiende a infinito, lo que implica que la función debe tender a cero en el origen para que la FMT converja. En la aplicación de reconocimiento de formas, el origen es un punto sobre la imagen del objeto que se esta representando. Esto nos asegura que normalmente el origen es diferente de cero, por lo tanto al sacar la FMT de imágenes es muy posible que el resultado diverja. 1 Omitimos la deducción de esta fórmula porque el objetivo de este proyecto es usar la Transformada de Fourier-Mellin Analítica. 7 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 1.2. La Transformada de Fourier-Mellin Analítica (AFMT) Para solucionar el problema de convergencia de la FMT mencionado en la sección anterior, se puede modificar un poco esta transformada. La modificación consiste en sumar una constante σ a la potencia de r de tal forma que esta nunca sea -1. Con la modificación se obtiene lo que se conoce como la Transformada de Fourier-Mellin Analítica (AFMT) que es la siguiente [5] 1 M fσ (k , v ) = 2π ∞ 2π ∫ ∫ f (r,θ )r σ − jv − jkθ e dθ 0 0 dr r ∀(k , v ) ∈ Z × R Para que la integral converja, la constante σ debe ser un valor real positivo diferente de cero. En la mayoría de los textos sobre el tema, esta constante se asume igual a 0,5. Al igual que todas las transformadas, existe una fórmula para invertir la AFMT, que es la siguiente. f (r , θ ) = ∫ ∞ −∞ ∑ M (k , v )e k∈Z fσ jkθ r −σ + jv dv ∀(r ,θ ) ∈ R+* × S 1 1.2.1. Propiedades de la AFMT Para la AFMT también existe un teorema de traslación en coordenadas logpolares, cuya demostración se encuentra en el anexo A. Para dos funciones con similitud plana de tal forma que g(r,θ)=f(αr,θ+β), el teorema de traslación para la AFMT es M gσ (k , v ) = α −σ + jv e jkβ M fσ (k , v ) Podemos observar que la relación entre las AFMTs ya no es solo un cambio de fase, por lo que el valor absoluto ya no genera unos descriptores invariantes. Queda una multiplicación por α-σ y por lo tanto los descriptores dependen del tamaño del objeto, pero sigue siendo invariante a la rotación. La invarianza a la rotación puede seguir siendo útil para ciertas aplicaciones y ya no se tiene el 8 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ problema de convergencia de la transformada. Sin embargo todavía existe la posibilidad de que dos objetos diferentes tengan los mismos descriptores. Otra propiedad es que la AFMT tiene simetría hermitiana. Su representación matemática es la siguiente [6] M fσ (k , v ) = M fσ (− k ,−v ) , donde la línea superior denota el complejo conjugado. Debido a esta simetría, en un ordenador solo se requiere calcular la mitad de la AFMT y la otra mitad se puede obtener gracias a la simetría aplicando la fórmula anterior. 9 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 1.3. Descriptores AFMT invariantes a cambios de escala y rotación Es posible obtener unos descriptores invariantes a los cambios de escala y rotación eliminando los problemas que se han mencionado. Lo que se hace es normalizar la transformada con respecto al término α -σ+jv e jkβ aplicándole el teorema de traslación con una escala y orientación de referencia de la siguiente forma ( ) I fσ (k , v ) = Γ fσ −σ + jv e ( − jk Θ fσ ) M fσ (k , v ) . La escala y orientación de referencia designadas por las constantes Γ y Θ respectivamente deben depender de la AFMT para que ésta sea normalizada y se obtenga la invarianza. Existen muchas soluciones para las constantes que generan descriptores invariantes. En este proyecto se usara la siguiente solución [5] 1 Γ fσ = M fσ (0,0 )σ { } Θ fσ = − arg M fσ (1,0 ) Reemplazando la solución y simplificando un poco obtenemos la fórmula para los descriptores invariantes a las similitudes planas basados en la AFMT, que es la siguiente −1+ j I fσ (k , v ) = M fσ (0,0 ) v σ e { } M fσ (k , v ) − jk arg M fσ (1, 0 ) ∀(k , v ) ∈ Z × R Estos ya son unos descriptores invariantes a los cambios de escala y rotación, que además son únicos para cada grupo de funciones con similitud plana. Para entender que ocurre al aplicar esta fórmula a una transformada AFMT podemos mencionar un experimento [5], que consiste en aplicar la AFMT inversa a los descriptores. El resultado es la misma función, pero con una escala y rotación diferentes que se podría decir que son los naturales de la función. 10 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 1.3.1. Propiedades de los descriptores invariantes AFMT La propiedad más importante de todas es la que define la invarianza a las similitudes planas. La demostración se encuentra en el anexo A y dice que para todas las funciones tal que g(r,θ) = f(αr,θ+β) se cumple que I gσ (k , v ) = I fσ (k , v ) Otra propiedad que caracteriza los descriptores AFMT es que para k = 0, v = 0, el valor siempre es igual a uno independientemente de la función a la cual se le esta haciendo la transformación. I fσ (0,0 ) = I gσ (0,0 ) = 1 Por último, hay una propiedad que es totalmente necesaria para que los descriptores AFMT puedan ser usados para determinar la posición de un objeto. El requerimiento es que los descriptores no pueden ser invariantes a la traslación, ya que eso significaría que no contienen información de la posición. La traslación en coordenadas cartesianas se define como h(x,y) = f(x-xo,y-yo), por lo tanto para xo ≠ 0, yo ≠ 0 se requiere que I hσ (k , v ) ≠ I fσ (k , v ) Esta propiedad se cumple, como se puede ver en el anexo A. De aquí sale un método para extraer la posición de objetos. La función h representa a un objeto y se quiere encontrar su posición en la función f que representa la imagen. Se calculan los descriptores AFMT de la función f para diferentes valores de xo, yo y la posición del objeto será aquella para la cual sus descriptores son iguales a los de la función h. 11 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 1.4. Distancia entre formas Ya teniendo unos descriptores invariantes a las similitudes planas, es necesario definir una distancia de similitud entre formas que nos sirva para determinar si dos imágenes representan el mismo objeto o no. Para funciones que tienen similitud plana, esta distancia debe ser exactamente cero. Y mientras menos se asemejen las funciones, el valor debe aumentar. La forma más simple de definir esta distancia es con la distancia euclidea entre los descriptores AFMT. La ecuación se muestra a continuación. d I fσ , I gσ = ∫ ∑ I fσ (k , v ) − I gσ (k , v ) dv −∞ k∈Z ( ) ∞ 2 1 2 La distancia entre formas se puede definir de muchas otras maneras, por ejemplo teniendo más en cuenta ciertos valores de k o v. Haciendo esto es posible lograr que la comparación de los objetos sea más discriminatoria. Pero para beneficiarse de estas ventajas se debe saber por adelantado ciertas características del objeto que se va a detectar, por lo tanto esas distancias se deben definir para una aplicación específica y no en general. 12 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Capítulo 2. Implementación de la AFMT y los descriptores invariantes en Matlab En este capítulo, se pretende implementar toda la teoría sobre la Transformada de Fourier-Mellin Analítica y los descriptores invariantes a las similitudes planas. El objetivo es poder experimentar y visualizar los resultados, por el momento no se pretende desarrollar un software para ser comercializado. Para esta implementación, a nivel de software lo que se requiere es una herramienta que facilite los cálculos matemáticos complejos y además la posibilidad de realizar varias pruebas rápidamente sin necesidad de hacer muchos cambios. También es muy importante que el software sea capaz de manejar imágenes para no tener que preocuparse sobre temas como diferentes formatos de archivos, visualización de las imágenes, conversión entre datos de imagen y numéricos, etc. Estas son las principales razones para elegir a Matlab, que es una herramienta especializada para el desarrollo de aplicaciones de ingeniería y matemática con una larga experiencia en el mercado. La programación en Matlab es bastante simple e incluye un amplio abanico de funciones matemáticas. Adicionalmente incluye un paquete llamado “Image Processing Toolbox” que permite leer, escribir y visualizar muchos formatos de archivos de imagen. Asimismo contiene muchas funciones de procesamiento digital de imagen que pueden ser muy útiles, ya que al trabajar con imágenes se puede requerir mucho más que la AFMT y los descriptores invariantes que se van a implementar. Pero Matlab tiene unas cuantas desventajas, comenzando por la velocidad de procesamiento. Puede ser muy fácil programar funciones matemáticas complejas pero no es posible optimizar los tiempos de cálculo. Si se usa otro lenguaje de programación como C++ se puede lograr tiempos de ejecución mucho menores que con Matlab. Pensando en la posibilidad de desarrollar en el futuro un software comercial, si se tendrá que cambiar la herramienta. Es hasta posible que se requiera usar circuitos integrados especializados en procesamiento digital de imagen para lograr los tiempos de ejecución necesarios para alguna aplicación real. 13 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 2.1. Cálculo de la Transformada de Fourier-Mellin Analítica Toda la teoría sobre la AFMT y los descriptores invariantes que se presentó en el primer capítulo se aplica a funciones continuas y de extensión infinita. Pero esta teoría se debe aplicar a imágenes digitalizadas que implican el uso de únicamente matemática discreta. Esto ocurre en cualquier problema real cuando se trabaja con ordenadores. Por ejemplo en telecomunicaciones el análisis de señales normalmente se hace usando el Análisis de Fourier. Para ese caso se usa la Transformada de Fourier Discreta, que tiene las mismas propiedades que su equivalente continuo. Y además existe un algoritmo que permite calcular las FTs de forma muy óptima, que se llama la Transformada Rápida de Fourier o FFT por sus siglas en inglés. Desafortunadamente para el caso de Fourier-Mellin no existe un equivalente discreto, y es necesario usar métodos numéricos para aproximar las integrales. Se han propuesto tres algoritmos para aproximar la AFMT que son: el algoritmo directo, el algoritmo rápido y el algoritmo cartesiano. Basándonos en los resultados obtenidos por Stéphane Derrode [5] podemos decir que el mejor algoritmo por muchas razones es el rápido, y por lo tanto éste es el que se va a utilizar. 2.1.1. El algoritmo rápido para el cálculo de la AFMT El algoritmo rápido se basa en cambiar las variables de integración de la AFMT de tal forma que sea igual a una Transformada de Fourier en dos dimensiones. De esa forma es posible usar la FFT y como consecuencia el cálculo es mucho más veloz que con los otros algoritmos. Comenzamos con la fórmula de la AFMT. 1 M fσ (k , v ) = 2π ∞ 2π ∫ ∫ f (r,θ )r σ − jv − jkθ e 0 0 dθ dr , r y cambiamos las variables de integración por las siguientes r = e 2πt ⇒ dr = 2πe 2πt dt , θ = 2πs ⇒ dθ = 2πds . Los límites de las integrales cambian a los siguientes lim = −∞ r →0 lim = ∞ lim = 0 θ →0 , lim = 1 θ →2 π r →∞ 14 . Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Remplazando obtenemos M fσ (k , v ) = = 1 2π 1 2π ∞ 2π ∫ ∫ f (r ,θ )r e dθ 0 0 ∞ 1 ∫∫ ( dr r σ − jv )( ) f e 2πt ,2πs e 2πt e − jk (2πs ) 2πds −∞ 0 ∞ 1 = 2π σ − jv − jkθ ∫ ∫ f (e 2πt 2πe 2πt dt e 2πt ) ,2πs e 2πtσ e − j 2π (ks +tv ) dsdt . −∞ 0 Así pues 1 ∞ M fσ (k , v ) = 2π ∫ ∫ [e 2πtσ )] ( f e 2πt ,2πs e − j 2π (vt +ks )dtds . 0 −∞ Por lo tanto la AFMT representada de esta forma es 2π multiplicado por la FT en dos dimensiones de la función modificada que se encuentra entre los corchetes. Ahora, si pasamos esta transformada a forma discreta muestreando la variable v para los números enteros. M −1 N −1 Mˆ fσ (k , v ) = 2π ∑∑ e 2π (n∆t )σ f e 2π (n∆t ) ,2π (m∆s ) e − j 2π [k (m∆s )+v (n∆t )]∆t∆s [ )] ( m=0 n=0 2πn N1 σ = 2π ∑∑ e f e 2πn∆t ,2πm∆s m =0 n =0 M −1 N −1 ( − j 2π km M1 +vn N1 1 1 e . M N ) Por tanto 2π Mˆ fσ (k , v ) = MN n 2πσ N f e 2πn∆t ,2πm∆s e ∑∑ m = 0 n =0 M −1 N −1 ( vn + − j 2π km M N , e ) es decir n 2πσ 2π ˆ M fσ (k , v ) = FFT2 D e N f e n∆ρ , m∆θ MN ( ) Esta fórmula define el algoritmo rápido para la aproximación de la AFMT. Para implementarlo, el primer paso es muestrear la función continua f para una región circular limitada a intervalos regulares según las coordenadas log-polares. Las coordenadas log-polares se pueden observar en la Figura 1, las muestras se toman 15 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ en las intersecciones de las circunferencias con los radiales. Tras discretizar la función f, cada muestra se multiplica por el término de la izquierda. Finalmente se aplica la Transformada de Fourier en dos dimensiones usando el algoritmo FFT. Figura 1. Malla de muestreo en coordenadas log-polares. Para implementar esta transformada en Matlab se tomo la decisión de hacer dos funciones separadas. La primera toma una imagen digital en coordenadas cartesianas y la convierte a coordenadas log-polares haciendo interpolación. La segunda función calcula la AFMT mediante el algoritmo rápido usando la función anterior. 2.1.2. Consecuencias de la aproximación discreta de la AFMT Esta transformada se define para funciones continuas y de extensión infinita. Como únicamente se puede tener una cantidad finita de muestras de la función, solo se considera una región circular limitada centrada en el origen, y se toman las muestras a intervalos regulares según las coordenadas log-polares. Por fuera de esta región se asume que todos los valores son cero. Da como resultado que la aproximación de la AFMT necesariamente debe recortar la función. Lo que significa que para que la aproximación de la transformada sea buena, en el borde 16 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ de la región que se muestrea, los valores deben ser cercanos a cero. Si no ocurre esto tendremos discontinuidades al recortar la función, y la AFMT no corresponderá bien a la función original. Otra consecuencia inevitable de usar un ordenador para calcular la AFMT es que solo es una aproximación y por lo tanto el resultado nunca será exacto. Al definir una distancia de similitud entre objetos se debe saber que para funciones con similitud plana ya no se obtendrá el valor de cero. Las distancias serán cercanas a cero y no se puede saber con antelación cuales son los valores que corresponden al mismo objeto. 17 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 2.2. Programa para convertir una imagen a coordenadas logpolares El código de este programa se encuentra en el anexo B, y el archivo se llama im2logpol.m. Este programa es una función que toma como entrada una imagen (que ya debe estar en el workspace de Matlab) y varios argumentos de entrada opcionales. La imagen representa la función a la cual se va a calcular la AFMT, por lo tanto debe ser de dos dimensiones. Normalmente las imágenes son en colores que es una función en tres dimensiones, por lo tanto antes de hacer la conversión a log-polar esta debe estar en formato de escala de grises. Como el objetivo es usar esta función para encontrar la posición de un objeto en cada fotograma de un vídeo, es indispensable poder modificar la posición y el tamaño del área al cual se va a calcular la AFMT. Debido a esto, uno de los argumentos de entrada opcionales permite definir la región de la imagen de entrada que se desea convertir. Esta área es circular y se define especificando el centro y el radio de este disco en coordenadas de imagen2. Estos valores pueden ser no enteros lo que permitiría detectar la posición de objetos con precisiones mayores que la separación entre píxeles. Otro de los argumentos de entrada, es el tamaño de la imagen log-polar de salida. Este parámetro define en gran medida el tiempo de ejecución de la función ya que mientras más interpolaciones se hagan, mas va a tardar el proceso. Claro está que mientras menos datos se calculen, la imagen resultante se asemejará menos a la original. Por último, para esta función se puede definir el método de interpolación que se usará para obtener las muestras. Hay cuatro métodos posibles que son nearest, linear, cubic y spline. El primero nearest hace referencia a la frase inglesa “nearest neighbor interpolation” que significa interpolación del vecino más cercano. Como se puede entender, en este tipo de interpolación el valor de la muestra se toma igual al del punto más cercano. El segundo método es linear referente a la interpolación bilineal, en la que la muestra se calcula usando una función lineal de dos variables que satisfacen la función en los cuatro puntos más cercanos. El tercero cubic de interpolación bicúbica similar a la anterior pero se usa una función cúbica y considera los 16 puntos mas cercanos. El último método de interpolación spline no es muy usado en imágenes, pero Matlab también lo soporta. 2 En las coordenadas de imagen la posición de cada píxel se define mediante dos enteros, donde el primer píxel es (1,1) y es el que se encuentra en la esquina superior izquierda. La primera coordenada define la posición vertical y la segunda la posición horizontal. 18 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ La diferencia entre los diferentes métodos de interpolación es que mientras más puntos se tomen en cuenta para calcular el valor de la muestra, más se aproximará a la función continua que representa. Sin embargo, mientras más sofisticado es el método de interpolación, más tardará en calcularse. 2.2.1. Ejemplo 1 Como primer ejemplo convertiremos a coordenadas log-polares la imagen de una mariposa usando los cuatro métodos de interpolación disponibles. La imagen a utilizar es la siguiente. Figura 2. Imagen de una mariposa usada en el ejemplo 1. Lo primero que se debe decidir es el área de la imagen que se va a convertir a coordenadas log-polares. Como centro de la imagen, podemos tomar la cabeza de la mariposa que se encuentra en las coordenadas x = 127, y = 120. Como nos interesa que el área contenga toda la mariposa pero no más que esta, seleccionamos un radio de 100. Esta área la podemos observar en la Figura 3. Figura 3. Área de la imagen que se va a convertir a coordenadas log-polares en el ejemplo 1. 19 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Habiendo seleccionado el área de interés de la imagen, podemos hacer la conversión para cada uno de los métodos de interpolación. Los comandos en Matlab para: primero leer la imagen, segundo hacer las conversiones y tercero visualizar los resultados, son los siguientes. >> ejemplo1 = im2double(rgb2gray(imread('ejemplo1.bmp'))); >> >> >> >> nearest = im2logpol(ejemplo1,'Area',[127 120 100],'Method','nearest'); linear = im2logpol(ejemplo1,'Area',[127 120 100],'Method','linear'); cubic = im2logpol(ejemplo1,'Area',[127 120 100],'Method','cubic'); spline = im2logpol(ejemplo1,'Area',[127 120 100],'Method','spline'); >> >> >> >> subplot(1,4,1), subplot(1,4,2), subplot(1,4,3), subplot(1,4,4), imshow(nearest) imshow(linear) imshow(cubic) imshow(spline) En los resultados en la Figura 4 se puede observar la diferencia que se tiene al usar cada uno de los tipos de interpolación. El caso en que más claro se ve es comparando nearest con cualquier otro método. En la parte superior de la imagen se pueden ver unas figuras que forman unos arcos. Esto se debe a que en coordenadas log-polares se tienen muchas mas muestras cerca del origen. Como el algoritmo de nearest toma como valor del píxel, el del punto más cercano, se obtienen muchas muestras contiguas con el mismo valor cuando se esta cerca del origen. Esto sumado con la naturaleza log-polar es lo que genera esos arcos tan característicos. 20 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) (c) (d) Figura 4. Resultado de la conversión de la imagen de la mariposa del ejemplo 1 a coordenadas log-polares usando diferentes tipos de interpolación. (a) nearest. (b) linear. (c) cubic. (d) spline. Para los otros tres métodos no es muy fácil ver la diferencia ya que en todos se observa una imagen suave. Pero en términos reales, mientras se interpole teniendo en cuenta más puntos, mas se debería aproximar el resultado al objeto original. Sin embargo, esta diferencia se refleja en el tiempo de cálculo, como ya se mencionó. En promedio, los tiempos de ejecución3 de im2logpol.m para este ejemplo se observan en la siguiente tabla. 3 Tiempos de ejecución medidos en un ordenador Toshiba Satellite Pro M30 con procesador Intel Centrino 1.5 GHz, sistema operativo Windows XP Profesional y Matlab versión 6.5. El programa con el que se calcularon estos tiempos es ejemplo1_ medicion_de_tiempos_de_ejecucion.m. 21 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Método de interpolación Tiempo de ejecución [segundos] 0,0483 0,0641 0,1375 0,9436 Nearest Linear Cubic Spline Tabla 1. Tiempos de ejecución promedio para las conversiones de la imagen de una mariposa a coordenadas log-polares para el ejemplo 1. Como nos podemos dar cuenta, los tiempos de ejecución son muy diferentes para cada uno de los tipos de interpolación. Spline es muchísimo mas lento que los otros, por eso es que no se usa en imágenes. Cubic es la más usada en aplicaciones de imagen, como por ejemplo para cambiar el tamaño (en cantidad de píxeles) de una imagen. Pero para este proyecto, es muy importante que los tiempos de cálculo sean muy pequeños, por eso lo mejor es usar nearest o linear. 2.2.2. Ejemplo 2 Como segundo ejemplo se tomará la imagen de un caballito de mar y se convertirá variando el tamaño de la imagen log-polar de salida. La imagen del caballito de mar se observa en la siguiente figura. Figura 5. Imagen de un caballito de mar usada en el ejemplo 2. 22 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Siguiendo el mismo procedimiento del ejemplo anterior, para este caso el área de la imagen a convertir es un disco con el centro en las coordenadas x = 126, y = 138 y radio igual a 118. Nuevamente esta región se observa delimitada en la figura. Figura 6. Área de la imagen que se va a convertir a coordenadas log-polares en el ejemplo 2. Los tamaños de la imagen de salida que se calcularán son de 200x200, 100x100 y 50x50. El código en Matlab para hacer esto es el siguiente. Como no se especifica el método de interpolación, por defecto el programa usa linear. >> ejemplo2 = im2double(rgb2gray(imread('ejemplo2.bmp'))); >> size1 = im2logpol(ejemplo2,'Area',[126 138 118],'Size',200); >> size2 = im2logpol(ejemplo2,'Area',[126 138 118],'Size',100); >> size3 = im2logpol(ejemplo2,'Area',[126 138 118],'Size',50); >> subplot(1,3,1), imshow(size1) >> subplot(1,3,2), imshow(size2) >> subplot(1,3,3), imshow(size3) 23 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) (c) Figura 7. Resultado de la conversión de la imagen del caballito de mar del ejemplo 2 a coordenadas log-polares con diferentes tamaños de salida. (a) 200x200. (b) 100x100. (c) 50x50. En la figura de arriba se puede observar los resultados, que parecen la misma imagen pero con tres zooms diferentes. De esa forma no se puede observar bien la diferencia, pero en la Figura 8 las tres imágenes resultantes se muestran con el mismo tamaño de referencia. Sin duda, mientras menor es el tamaño (en píxeles) de la imagen, menor es el detalle de la imagen que representa el objeto. (a) (b) (c) Figura 8. Resultado de la conversión de la imagen del caballito de mar del ejemplo 2 a coordenadas log-polares con diferentes tamaños de salida vistos con el mismo tamaño de referencia. (a) 200x200. (b) 100x100. (c) 50x50. Para este ejemplo también hay grandes diferencias en los tiempos de ejecución, los cuales se encuentran en tabla4. Como es de esperarse, mientras mas pequeña es la imagen que toca calcular, menor es el tiempo de ejecución. 4 Tiempos de ejecución medidos en un ordenador Toshiba Satellite Pro M30 con procesador Intel Centrino 1.5 GHz, sistema operativo Windows XP Profesional y Matlab versión 6.5. El programa con el que se calcularon estos tiempos es ejemplo2_ medicion_de_tiempos_de_ejecucion.m. 24 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Tamaño de la imagen [píxeles] 200x200 100x100 50x50 Tiempo de ejecución [segundos] 0,0628 0,0243 0,0159 Tabla 2. Tiempos de ejecución promedio para las conversiones de una imagen de un caballito de mar a coordenadas log-polares para el ejemplo 2. 25 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 2.3. Programa para aproximar la AFMT usando el algoritmo rápido Este programa también se encuentra en el anexo B con el nombre de F_Afmt.m. Como argumentos de entrada acepta los mismos que el programa im2logpol.m, pero además se pueden definir los parámetros de la transformada K y V que son los valores máximos y mínimos que se calculan para esta. Esto significa que la transformada se calcula para los números enteros desde –K hasta +K y desde -V hasta +V. La salida de esta función son la AFMT y la imagen en coordenadas log-polares que se usó para calcular la transformada. Para este programa no mostraremos un ejemplo. En la siguiente sección si habrá un ejemplo que incluye el cálculo de una AFMT y los descriptores invariantes. De esta forma también se podrá observar las diferencias que hay entre los dos resultados y la relación entre ambos. 26 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 2.4. Programa para calcular los descriptores AFMT Este programa es prácticamente igual al programa anterior. Se llama Afmt_descriptors.m e igualmente se encuentra en el anexo B. Acepta los mismos argumentos de entrada que im2logpol.m además de K y V. La diferencia está en que como resultado además de la AFMT y la imagen en coordenadas log-polares, se obtienen los descriptores invariantes a las similitudes planas. 2.4.1. Ejemplo 3 Para este ejemplo usaremos la imagen de un pez y calcularemos la AFMT y los descriptores invariantes usando el programa Afmt_descriptors.m. Después graficaremos los resultados para poder analizarlos y compararlos. Figura 9. Imagen de un pez usada en el ejemplo 3. En este caso, el área esta delimitado por una circunferencia de radio 115 y centrado en las coordenadas x = 130, y = 123. La transformada se calculará para K = 10 y V = 10. El código en Matlab se encuentra a continuación. >> ejemplo3 = im2double(rgb2gray(imread('ejemplo3.bmp'))); >> [Iejemplo3,Mejemplo3,ejemplo3_logpolar] = Afmt_descriptors(ejemplo3, ... >> [10 10],'Area',[130 123 115],'Size',256); >> figure, imshow(ejemplo3_logpolar) >> >> >> >> absMejemplo3 argMejemplo3 absIejemplo3 argIejemplo3 = = = = abs(Mejemplo3); angle(Mejemplo3); abs(Iejemplo3); angle(Iejemplo3); 27 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ >> [K,V] = meshgrid([-10:10]); >> figure, plot3(K,V,absMejemplo3'), grid on, xlabel('k'), ylabel('v') >> figure, plot3(K,V,absIejemplo3'), grid on, xlabel('k'), ylabel('v') >> figure, imshow(argMejemplo3,[]), colormap(jet) >> figure, imshow(argIejemplo3,[]), colormap(jet) Primero se lee la imagen para que quede como una variable en el workspace de Matlab en escala de grises, y posteriormente se calculan los descriptores invariantes AFMT. Lo siguiente es desplegar los resultados. En la Figura 10(b) se observa la imagen en coordenadas log-polares. (a) (b) Figura 10. (a) Región de la imagen de un pez para la cual se va a calcular la AFMT y los descriptores invariantes en el ejemplo 3. (b) Imagen del pez en coordenadas log-polares. 28 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Figura 11. Gráfica del módulo de la AFMT calculado para la imagen de un pez en el ejemplo 3. Después se grafican el valor absoluto de la Transformada de Fourier-Mellin Analítica y los descriptores AFMT, que se encuentran en la Figura 11 y la Figura 12. Comparando estos dos resultados, nos podemos dar cuenta de que las graficas son idénticas si no tenemos en cuenta la escala vertical. El módulo de los descriptores es igual al módulo de la transformada AFMT pero normalizado con respecto al valor en k = 0 y v = 0, y como era de esperarse en ese punto los descriptores invariantes tienen un valor de uno. 29 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Figura 12. Gráfica del módulo de los descriptores AFMT calculados para la imagen de un pez en el ejemplo 3. Para la fase es preferible obtener su representación gráfica como una imagen porque varía mucho y no se puede ver bien como curvas. En la Figura 13 se puede observar que a diferencia del modulo, la fase de los descriptores si es bastante diferente de la transformada AFMT. Es fácil entender esta diferencia analizando la formula para los descriptores, ya que para estos la fase depende de k, v y las constantes de normalización Γ y Θ. 30 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) Figura 13. Gráficas de la fase calculada para la imagen de un pez en el ejemplo 3 de (a) la AFMT y (b) los descriptores AFMT respectivamente. 31 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 2.5. Programa para calcular la distancia euclidea entre descriptores AFMT En el primer capítulo se definió la fórmula para la distancia entre formas, pero para poder calcularla, primero se debe expresar en variables discretas. En el cálculo de los descriptores AFMT se tomó la variable v para los números enteros entre –V y V, entonces en la fórmula de la distancia entre formas solo es necesario cambiar la integral por sumas, y se obtiene 1 ( d Iˆ fσ , Iˆgσ ) 2 2 V K = ∑ ∑ Iˆ fσ (k , v ) − Iˆgσ (k , v ) v = −V k = − K Como se puede ver en el código de este programa (vea el anexo B imdistance.m), realmente el cálculo de la distancia euclidea entre descriptores AFMT se realiza con solo dos comandos. La razón para crear esta función es poder cambiar la definición de la distancia entre formas sin tener que modificar nada en otros programas que usen esta función. Los argumentos de entrada son los descriptores AFMT de las dos imágenes para las cuales se va a calcular la distancia. 2.5.1. Ejemplo 4 Como ejemplos conviene calcular la distancia primero para imágenes que representan objetos diferentes. Después se calcula para imágenes que representan el mismo objeto pero con un tamaño e inclinación diferentes. Usaremos la imagen del pez del ejemplo anterior, el mismo pez pero rotado 50º y un tamaño del 64%, y la imagen del caballito de mar. Las tres imágenes se pueden observar en la figura. 32 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) (c) Figura 14. Imágenes usadas en el ejemplo 4. (a) La misma imagen del ejemplo 3. (b) La imagen del ejemplo 3 pero rotada 50º y con un tamaño de 64% del original. (c) La misma imagen del ejemplo 2. Los comandos para calcular las distancias de similitud en Matlab son los siguientes >> ejemplo2 = im2double(rgb2gray(imread('ejemplo2.bmp'))); >> ejemplo3 = im2double(rgb2gray(imread('ejemplo3.bmp'))); >> ejemplo4 = im2double(rgb2gray(imread('ejemplo4.bmp'))); >> Iejemplo2 = Afmt_descriptors(ejemplo2,[10 10],'Area',[126 138 118],'Size',256); >> Iejemplo3 = Afmt_descriptors(ejemplo3,[10 10],'Area',[130 123 115],'Size',256); >> Iejemplo4 = Afmt_descriptors(ejemplo4,[10 10],'Area',[132.5 133 73.6],'Size',256); >> d32 = imdistance(Iejemplo3,Iejemplo2) >> d34 = imdistance(Iejemplo3,Iejemplo4) >> d24 = imdistance(Iejemplo2,Iejemplo4) Los resultados de la ejecución del código anterior son los siguientes d32 = 0.9445 d34 = 0.0760 d24 = 0.9311 Analizando los resultados se ve muy claramente que cuando se calcula la distancia entre dos imágenes que representan el mismo objeto independientemente de que el tamaño y la orientación sean diferentes, se obtiene un valor bajo. Podemos decir que es un valor bajo porque es mucho menor comparado con las otras distancias calculadas. Para este ejemplo la diferencia 33 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ entre la distancia del mismo objeto y objetos diferentes es del orden de doce veces menor. Con este tipo de resultados se puede concluir que la distancia euclidea basada en los descriptores AFMT es muy robusta en términos de reconocimiento de formas. Para este ejemplo conviene medir los tiempos de ejecución ya que nos dan una referencia para poder predecir cuanto tardan los programas que calculan distancias entre formas. Estos tiempos se encuentran en la siguiente tabla5. Comando Tiempo de ejecución [segundos] 0,1380 0,1389 0,1386 1 x 10-4 1 x 10-4 1 x 10-4 Iejemplo2 Iejemplo3 Iejemplo4 d32 d34 d24 Tabla 3. Tiempos de ejecución promedio para el cálculo de los descriptores AFMT y distancias para el ejemplo 4. El tiempo de cálculo para las distancias de similitud es muy pequeño y se puede ignorar. La demora se encuentra en el cálculo de los descriptores AFMT, que en su mayoría se debe a la conversión de coordenadas cartesianas a log-polares y el cálculo de la FFT. 5 Tiempos de ejecución medidos en un ordenador Toshiba Satellite Pro M30 con procesador Intel Centrino 1.5 GHz, sistema operativo Windows XP Profesional y Matlab versión 6.5. El programa con el que se calcularon estos tiempos es ejemplo4_ medicion_de_tiempos_de_ejecucion.m. 34 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Capítulo 3. Determinación de la posición de objetos usando la AFMT Uno de los objetivos de este proyecto es diseñar un algoritmo que permita determinar la posición de un objeto en una imagen y en un vídeo. Ese es el tema del presente capítulo. Primero se presentará un algoritmo muy simple que será analizado detenidamente. Es muy importante tener en cuenta el tiempo de cálculo porque sabemos que es el problema que tiene la AFMT en general (además de haberlo implementado en Matlab). Pero mas importante aun es estudiar la fiabilidad de los resultados que se obtienen y si es o no probable que se produzcan fácilmente errores. Usando el análisis mencionado en el párrafo anterior, el capítulo terminará con el desarrollo de un algoritmo más complejo especial para determinar la posición de objetos en vídeos. Finalmente cabe mencionar en la introducción de este capítulo, que una vez localizada la posición de un objeto, se puede extraer más información sobre su estado. Como ya se sabe la posición del objeto, se podría requerir saber cual es el tamaño y la orientación del objeto. Esto no se puede hacer usando los descriptores AFMT, ya que esa información fue eliminada. Pero usando la AFMT si se puede determinar esos parámetros. En la actualidad ya hay publicaciones donde se presenta este método [8], el cual no trataremos en el presente proyecto. 35 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.1. Algoritmo simple para la determinación de la posición de objetos Teóricamente es muy fácil determinar una posición dentro de una imagen ya teniendo los descriptores AFMT invariantes a las similitudes planas del objeto en cuestión. Para cada píxel de la imagen se calculan unos descriptores AFMT tomando la posición del píxel como el centro de la zona a la cual se le va a calcular la transformada. Como radio de esta área, se deja una cantidad fija que para el caso representa el máximo tamaño que puede tener el objeto que se va a detectar. Teniendo los descriptores AFMT del píxel, se obtiene la distancia euclidea entre estas con respecto a los descriptores del objeto. Calculando esto para todos los píxeles, como resultado se tiene una función de la similitud con el objeto para cada posible posición dentro de la imagen. Por lo tanto la posición del objeto es el punto donde la distancia sea menor, o mejor dicho, el mínimo de esta función. 3.1.1. Ejemplo 5 Figura 15. Imagen del objeto para el cual se va a detectar su posición en el ejemplo 5. En este ejemplo tomaremos la imagen de un coche [9] de juguete para el objeto y detectaremos su posición en un fotograma que tiene el mismo coche pero con una 36 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ orientación y tamaño diferentes. El objeto se define para un disco de radio 80 centrado en las coordenadas x = 128, y = 118. Figura 16. Fotograma usado en el ejemplo 5 para detectar la posición de un coche de juguete. Siguiendo como referencia el algoritmo simple de esta sección para detectar la posición de un objeto, el código en Matlab es el siguiente. >> objeto = im2double(rgb2gray(imread('ejemplo5_objeto.bmp'))); >> fotograma = im2double(rgb2gray(imread('ejemplo5_fotograma.bmp'))); >> tic >> Iobjeto = Afmt_descriptors(objeto,[10 10],'Area',[128 118 80],'Size',32); >> [Y,X] = size(fotograma); >> for x = 1:X >> for y = 1:Y >> Ifotograma = Afmt_descriptors(fotograma,[10 10],'Area',[x y 40],'Size',32); >> d(y,x) = imdistance(Iobjeto,Ifotograma); >> end >> end >> dmin = min(min(d)) >> [y,x] = find(d==dmin) >> tiempo_de_ejecucion = toc >> figure, imshow(d,[]), colormap(jet), colorbar, pixval Después de un largo periodo de espera el resultado fue dmin = 0.8773 37 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ x = 68 y = 193 tiempo_de_ejecucion = 1.0411e+003 Es importante aclarar que lo que se detecta es la posición del centro de la región circular que define al objeto. Teniendo esto en cuenta y comparando el fotograma (vea la Figura 16) con los resultados podemos decir que esta es la posición exacta en la que se encuentra el centro del coche de juguete. Este ejemplo nos confirma que toda la teoría presentada anteriormente funciona al aplicarlo a imágenes discretas. Y lo más importante es que se logra la invarianza a los cambios de tamaño y orientación. Además de estos resultados que aparecen en la consola, el último comando despliega la gráfica de la distancia de similitud en función de la posición, la cual se encuentra en la Figura 17. La función de similitud se representa como una imagen donde el color indica el valor para cada posición del fotograma. Este tipo de gráfica permite hacer una comparación directa con el fotograma. Además la barra de la derecha permite identificar la correspondencia entre cada color y el valor que representa. Figura 17. Gráfica de la distancia de similitud en función de la posición para la detección de la posición de un coche de juguete en el ejemplo 5. 38 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Hay muchas cosas que se deben analizar de la función de distancia de similitud. El valor mínimo es de 0,8773 que se encuentra en el centro del objeto que corresponde a un azul oscuro. Este punto esta rodeado por distancias que van aumentando cada vez más hasta el borde del objeto donde se llega a valores de alrededor de 2. Los resultados que se han analizado hasta el momento corresponden precisamente a los que se esperaban. Pero es importante que se comprenda bien el comportamiento de la función de similitud para las regiones por fuera del objeto. Para entender esto se debe tener en cuenta las consecuencias de la aproximación discreta de la AFMT, vea la página 16. Como sólo se puede tener una cantidad finita de muestras de la función, esta debe ser recortada y es posible que en los bordes haya discontinuidades. Cuando se está calculando la distancia para un punto cercano al objeto, la transformada solo incluye una parte del coche y en los bordes hay discontinuidades. Debido a esto, los descriptores representan un objeto totalmente diferente y se explica el por qué cerca del borde del coche es donde se obtienen las mayores distancias para la función de similitud. Pero los valores altos de la función de similitud no es importante no son importantes porque no presentan problema para la detección de la posición del objeto. Lo que si puede presentar problemas es en las regiones del fondo, donde las distancias de similitud están entre 1,6 y 1,7. Estos valores ni siquiera son el doble que el valor mínimo de la función, por lo tanto se puede pensar que en ciertos casos el mínimo quede en el fondo donde no hay nada, que implica un error en la determinación de la posición. Estas distancias relativamente pequeñas se deben a que el fondo en realidad no es completamente negro. En imágenes reales las superficies negras terminan siendo valores muy pequeños pero normalmente diferentes de cero. Debido a la aproximación de la AFMT, los descriptores del fondo son para un objeto que es un disco gris oscuro que cubre toda la región recortada. Si también consideramos el hecho de que en la imagen de referencia, alrededor del objeto también hay un fondo que no es completamente negro, nos damos cuenta que el objeto se encuentra sobre un disco muy similar al que se genera en el fondo del fotograma. Esto puede explicar el por qué de las distancias de similitud tan pequeñas. Lo último que se debe mencionar sobre este ejemplo es que el tiempo de cálculo fue de 17 minutos y 21,15 segundos, que evidentemente es demasiado lento. En promedio es un tiempo de 0,01589 por píxel. Con este mismo algoritmo, si se tratara de detectar un objeto en un vídeo, es necesario calcular la transformada para cada píxel de cada fotograma. Un vídeo normalmente genera 25 fotogramas por segundo con un tamaño de 570x714, lo que significaría calcular 10.174.500 distancias de similitud cada segundo. Si usamos como referencia el tiempo de cálculo por píxel de este ejemplo, para el procesamiento de un segundo de vídeo, Matlab tardaría unas 44 horas, 53 minutos y 59,11 segundos. 39 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ En conclusión, con el algoritmo simple se realizan demasiados cálculos que tardan un tiempo exagerado. Para poder pensar en usar este algoritmo se tendría que calcular cada distancia en 0,1µ segundos, que solo sería posible en súper ordenadores. Como el tiempo de calculo por píxel no se puede reducir mucho con respecto al de este ejemplo, la solución está en un algoritmo que realice muchos menos cálculos. 40 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.2. Descriptores AFMT para un disco de valor constante Para entender mejor el problema que causa calcular una distancia de similitud entre un objeto y un fondo que no es completamente negro, podemos analizar detenidamente los descriptores AFMT para este caso. El fondo se puede tomar como un disco muy oscuro sobre un fondo completamente negro, que es una figura geométrica muy simple. Para este objeto existe la transformada AFMT de forma analítica, que desarrollaremos a continuación. Comenzamos por definir la siguiente función: L f (r , θ ) = 0 para r = [0 ,R ], θ = [0 ,2π ] otros casos La AFMT se debe separar para los casos de k igual a cero y diferente de cero. Para k ≠ 0 M fσ (k , v ) = = 1 2π 1 2π ∞ 2π ∫ ∫ f (r ,θ )r σ − jv − jkθ e 0 0 R 2π ∫ ∫ Lr σ − jv − jkθ e dθ 0 0 dθ dr r dr r 2π R r σ − jv 1 − jkθ e 0 σ − jv 0 − jk σ − jv − j 2πk jL R e −1 = 2πk σ − jv L = 2π ( ) =0 Para k = 0 1 M fσ (0, v ) = 2π = 1 2π ∞ 2π ∫ ∫ f (r ,θ )r σ − jv − jkθ e 0 0 R 2π ∫ ∫ Lr σ − jv dθ 0 0 dθ dr r dr r R L r σ − jv 2π = [θ ]0 2π σ − jv 0 41 e − j 2πk = 1 para todo k Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ R σ − jv (2π ) σ − jv R σ − jv =L σ − jv = L 2π Por lo tanto para un disco centrado en el origen de radio R e intensidad L, la AFMT es R σ − jv L M fσ (k , v ) = σ − jv 0 para k = 0 otros casos Teniendo la AFMT también podemos obtener una expresión para sus descriptores. M fσ (0,0) = L Rσ σ M fσ (1,0 ) = 0 => v L −1+ j σ ( ) M 0 , 0 fσ = σ => [e { } − jk arg M fσ (1, 0 ) ]= 1 −1+ j v σ R −σ + jv arg{0} puede ser cualquier ángulo Para k ≠ 0 I fσ (k , v ) = 0 Para k = 0 I fσ (0, v ) = M fσ (0,0 ) −1+ j v σ e { } M fσ (k , v ) − jk arg M fσ (1, 0 ) v −1+ j σ L R σ − jv −σ + jv [1]L = R σ σ − jv L = σ j v σ σ σ − jv Y los descriptores AFMT invariantes a las similitudes planas para un disco centrado en el origen de radio R e intensidad L son 42 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ v j σ L 1 I fσ (k , v ) = σ 1 − j v σ 0 para k = 0 otros casos El valor de la intensidad L se puede tomar arbitrariamente y si es igual que σ la formula se simplifica un poco y es muy fácil representarla. 1 v I fσ (k , v ) = 1 − j σ 0 para k = 0 otros casos Figura 18. Gráfica del módulo de los descriptores AFMT de un disco centrado en el origen. 43 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.2.1. Ejemplo 6 Para estar seguros que éste es un buen modelo para los descriptores AFMT de un fondo casi negro, lo podemos comparar con una imagen real. En la Figura 19 están los descriptores AFMT calculados a partir del mismo fondo negro que se encuentra en el fotograma del ejemplo 5. El código para generar las gráficas de la Figura 18 y la Figura 19 es el siguiente. >> >> >> >> >> >> >> Idisco = zeros(21,21); for v = [-10:10] Idisco(11,v+11) = 1/(1-i*(v/0.5)); end absIdisco = abs(Idisco); [K,V] = meshgrid([-10:10]); figure, plot3(K,V,absIdisco'), grid on, xlabel('k'), ylabel('v') >> >> >> >> >> fotograma = im2double(rgb2gray(imread('ejemplo5_fotograma.bmp'))); Ifondo = Afmt_descriptors(fotograma,[10 10],'Area',[128 128 50],'Size',256); absIfondo = abs(Ifondo); [K,V] = meshgrid([-10:10]); figure, plot3(K,V,absIfondo'), grid on, xlabel('k'), ylabel('v') >> imdistance(Idisco,Ifondo) Figura 19. Gráfica del módulo de los descriptores AFMT de un fondo casi negro. 44 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Comparando las gráficas, son tan parecidas que se podría pensar que son la misma pero en realidad se obtuvieron de fuentes muy diferentes. Pero sí se alcanza a ver que en la gráfica de los descriptores del fondo negro las curvas para k diferente de cero no son perfectamente rectas como si ocurre en la otra. Como en este proyecto se definió una distancia de similitud entre formas, también se puede aplicar para estos descriptores, y es de sólo 0,0033. Es coincidencia que esta distancia de similitud sea tan pequeña porque depende del valor de la intensidad del disco L que por conveniencia lo tomamos igual a σ. Sin embargo este pequeño experimento demuestra que la hipótesis sobre el problema del fondo es correcta. Por último debemos mencionar que para k = 0 los descriptores de este ejemplo también son bastante similares a los del ejemplo 3. Esto puede ser consecuencia del fondo que rodea todos los objetos en una imagen como se mencionaba anteriormente. Pero también es un comportamiento innato de los descriptores AFMT comenzando por el hecho de que para k = 0, v = 0 siempre se tiene un valor constante de uno. 45 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.3. Nueva definición de la distancia de similitud Usando como referencia el análisis de la sección anterior, se puede redefinir la función para calcular la distancia de similitud entre formas. La idea es modificar los descriptores AFMT para lograr que las distancias de similitud entre un objeto y un fondo casi negro indique mejor la diferencia. Una posibilidad podría ser que de alguna forma se restaran los descriptores que describen el fondo. Ya tenemos una expresión matemática que modela bastante bien los descriptores AFMT de un fondo casi negro, y usando ésta se puede restar de los descriptores de cada objeto. Pero hay dos problemas, primero está que es necesario saber el nivel de gris L del fondo, información que evidentemente no se tiene. El segundo problema que es mas importante es que para los descriptores AFMT no se cumple el teorema de superposición, lo que significa que I fσ (k , v ) ± I gσ (k , v ) ≠ I σ { f (r , θ ) ± g (r , θ )} Como no se tiene esta propiedad, contrarrestar el efecto del fondo puede ser una operación matemática bastante compleja y esto se traduce en un gran incremento en el tiempo de cálculo. Una solución mucho mas simple es ignorar los valores para k = 0, ya que como se comprobó estos son los que definen el fondo. 3.3.1. Ejemplo 7 Para entender esa nueva definición para la distancia de similitud entre formas podemos calcular nuevamente la distancia de similitud para el ejemplo del coche de juguete. >> objeto = im2double(rgb2gray(imread('ejemplo5_objeto.bmp'))); >> fotograma = im2double(rgb2gray(imread('ejemplo5_fotograma.bmp'))); >> Iobjeto = Afmt_descriptors(objeto,[10 10],'Area',[128 118 80],'Size',32); >> Iobjeto(21,:) = zeros(1,21); >> dzero = imdistance(Iobjeto,zeros(21,21)) >> [Y,X] = size(fotograma); >> for x = 1:X >> for y = 1:Y >> Ifotograma = Afmt_descriptors(fotograma,[10 10],'Area',[x y 40],'Size',32); >> Ifotograma(K+1,:) = zeros(1,21); >> d(y,x) = imdistance(Iobjeto,Ifotograma); >> end >> end >> dmin = min(min(d)) >> [y,x] = find(d==dmin) >> figure, imshow(d,[]), colormap(jet), colorbar, pixval 46 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Los resultados del código anterior son dzero = 1.0013 dmin = 0.7552 x = 193 y = 68 La gráfica de la función de distancia de similitud se encuentra en la Figura 20. Figura 20. Gráfica de la nueva distancia de similitud en función de la posición para la detección de la posición de un coche de juguete. Aparentemente la función es igual a la que se calculó anteriormente. Para entender la diferencia hay que tomar en cuenta un nuevo concepto. Si comparamos la distancia de similitud mínima para el ejemplo del pez y el del coche de juguete vemos que son de 0,0760 y 0,8773 respectivamente. Son valores bastante diferentes y no se sabe que tan pequeño debe ser el valor para que indique que se trata del mismo objeto. Para saber que es una distancia pequeña, se calcula la distancia de similitud del objeto con respecto a una matriz 47 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ de ceros, la cual llamaremos distancia cero. El resultado de esta distancia nos sirve como referencia para saber si dos objetos se pueden considerar como el mismo. Volviendo a la comparación entre las dos definiciones de distancia de similitud, para la primera se tiene una distancia de cero de 2,3035 y para la segunda es de 1,0013. Entonces como se puede observar en la Figura 17, el fondo se compone de valores alrededor de 1,6 y 1,7 que son considerablemente menores a la distancia cero. Para el segundo caso los valores del fondo son muy cercanos a la distancia cero y si por ejemplo ignoramos todas las distancias que sean mayores al 90% de la distancia cero, solamente nos quedan los puntos cercanos al centro del objeto. Esta nueva definición tiene unas mejores características que pueden ser útiles, pero hay que tener en cuenta que en una aplicación real lo mas probable es que el fondo no sea negro y tampoco continuo. Ignorar los descriptores para k = 0 se puede dejar como opcional, y sin embargo el concepto de la distancia cero si se puede aplicar en ambos casos. 48 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.4. Algoritmo para la detección del movimiento de un objeto en un vídeo En las secciones anteriores se aplicó el algoritmo simple para la detección de la posición de un objeto en una imagen para un coche de juguete. Aunque ese algoritmo funciona perfectamente requiere mucho tiempo para ejecutarse, y se llegó a la conclusión de que la solución está en realizar menos cálculos. Este es el factor mas importante que se tendrá en cuenta para el presente algoritmo. Para reducir la cantidad de cálculos que se realizan, definimos una máscara. Hay una máscara para cada fotograma y es una matriz de un tamaño igual al de los fotogramas, que se compone solamente de unos y ceros. Un cero significa que en esa posición es muy poco probable que se encuentre el objeto y por lo tanto no es necesario calcular la distancia de similitud. Un uno significa que si se debe hacer el cálculo. Pero lo más importante es como saber si es o no probable que el objeto se encuentre en cada posición. 3.4.1. Características de los vídeos El objetivo del proyecto es determinar la posición y el movimiento de un objeto en una secuencia de fotogramas, o mejor dicho un vídeo. En el desarrollo de un algoritmo para este propósito se puede obtener ventaja de ciertas características que tienen todos los vídeos. Y no solamente podemos obtener ventaja de las características de los vídeos en general ya que se trata de un vídeo al cual se le va a detectar la posición de objetos. Por lo tanto podemos asumir lo siguiente: 1. El vídeo se compone de una sola escena y la cámara no se mueve, o se sabe cual es su movimiento. En otras palabras no hay cambios de cámara, como si ocurre en el cine y la televisión. 2. Cada fotograma es muy parecido al anterior. Siempre se componen de un fondo que no cambia considerablemente y de los objetos que se mueven. 49 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 3.4.2. Algoritmo para objetos que se mueven lentamente Teniendo en cuenta el primer punto de la sección anterior, si el objeto en el vídeo se mueve lentamente, se puede asegurar que la posición del objeto en un fotograma es muy cercana a la posición que tenía en el fotograma anterior. Por lo tanto para detectar la posición del objeto solo es necesario calcular la función de distancia de similitud en una región pequeña limitada centrada en la posición del objeto en el fotograma anterior. El tamaño de esa región determina la velocidad máxima a la cual se puede mover el objeto y que este algoritmo si funcione. Se puede decir que esta es una técnica para la predicción de la posición del objeto. Esta predicción puede hacerse de forma mas precisa, por ejemplo calculando la velocidad del objeto y la dirección en que se mueve. Con estos datos se predice aproximadamente la posición y se calcula la distancia de similitud en una región centrada en ese punto. Este método funcionaría incluso para objetos que se mueven más rápidamente. Esta alternativa puede ser buena para alguna aplicación, pero no la usaremos en este proyecto. Por último se debe mencionar que este algoritmo sirve para todos los fotogramas excepto el primero porque antes de éste no se puede saber cual era la posición del objeto. Para saber la posición inicial del objeto haciendo pocos cálculos, es necesario usar otras técnicas que se mencionarán mas adelante. 3.4.3. Algoritmo para objetos que se mueven rápidamente La segunda característica de los vídeos que se asumió en la sección 3.4.1. sirve para el caso en que los objetos se mueven rápidamente. Lo primero que se hace es del fotograma actual restar el anterior. Como cada fotograma necesariamente debe ser muy parecido al anterior, la resta genera valores pequeños para las zonas en que no hubo un gran cambio (el fondo). Por el contrario en las zonas donde la imagen si cambia bastante incluyendo un objeto que se mueve, la resta genera valores grandes. Usando esta información, la distancia de similitud solo se calcula para las zonas donde si hay cambios. Esta técnica detecta donde estaba el objeto y a donde se movió. Pero no se requiere calcular la similitud en las zonas donde se encontraba el objeto, porque sabemos que éste se mueve rápidamente y ya no está ahí. Para descartar estas zonas se puede usar la máscara anterior, quitando las áreas comunes. Usando comandos de Matlab, este algoritmo sería de la siguiente forma. >> diferencia = abs( fotograma{n-1} - fotograma{n} ); 50 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ >> >> >> >> maximo_diferencia = max( max( diferencia ) ); temporal1 = diferencia > maximo_diferencia/2; temporal2 = temporal1 & mascara{n-1}; mascara{n} = temporal1 - temporal2; Una vez definidos los dos algoritmos que dependen de la velocidad del objeto, se puede explicar bien cual es la diferencia entre un objeto que se mueve lentamente de otro que se mueve rápido. Para el algoritmo de movimiento lento, el objeto se puede mover hasta la velocidad máxima que se puede cambiar arbitrariamente. Pero mientras mayor sea la velocidad máxima, más tiempo durará la determinación de la posición del objeto. Por lo tanto mientras menor sea el movimiento, mejor, y no hay un umbral que separa los dos tipos de movimiento. Con el algoritmo de movimiento rápido se tiene un requisito, y es que la imagen debe cambiar significativamente. Para estar seguros de que el cambio sea suficiente, el objeto se debe mover para quedar totalmente por fuera de su posición anterior. Con esto ya se puede definir cual es el umbral, si un objeto se mueve mas que su propio radio se dice que es un movimiento rápido de lo contrario es uno lento. 3.4.3.1. Ejemplo 8 Un ejemplo de una mascara generada usando este algoritmo se encuentra en la Figura 21. Son tres fotogramas de un vídeo de una bola en caída libre, y se genera la máscara para el tercer fotograma. Claramente se observa que en la máscara, la zona blanca es donde se encuentra la bola en el tercer fotograma. 51 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) (c) (d) (e) (f) Figura 21. Ejemplo de la creación de una máscara con el algoritmo de movimiento rápido. (a) Fotograma 1. (b) Fotograma 2. (c) Fotograma 3. (d) Diferencia entre los fotogramas 2 y 3, diferencia. (e) Valores grandes de la diferencia, temporal1. (f) Mascara para el fotograma 3, mascara{3}. El código en Matlab para generar la Figura 21 es >> fotograma{1} = im2double(rgb2gray(imread('ejemplo8_fotograma1.bmp'))); >> fotograma{2} = im2double(rgb2gray(imread('ejemplo8_fotograma2.bmp'))); >> fotograma{3} = im2double(rgb2gray(imread('ejemplo8_fotograma3.bmp'))); >> n = 1; >> mascara{1} = fotograma{1} ~= fotograma{1}; >> >> >> >> >> >> n = 2; diferencia = abs( fotograma{n-1} - fotograma{n} ); maximo_diferencia = max( max( diferencia ) ); temporal1 = diferencia > maximo_diferencia/2; temporal2 = temporal1 & mascara{n-1}; mascara{n} = temporal1 - temporal2; >> >> >> >> >> >> n = 3; diferencia = abs( fotograma{n-1} - fotograma{n} ); maximo_diferencia = max( max( diferencia ) ); temporal1 = diferencia > maximo_diferencia/2; temporal2 = temporal1 & mascara{n-1}; mascara{n} = temporal1 - temporal2; Para este algoritmo sucede lo mismo que para el anterior, no funciona para el primer fotograma. En ambos casos es necesario tratar independiente la posición 52 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ inicial del objeto, y ese es el tema que se trata en la siguiente sección. Por esta razón, en el ejemplo la máscara para el primer fotograma se tomo como todo ceros. 3.4.4. Determinación de la posición inicial del objeto Pueden haber ciertas aplicaciones en que se sabe la posición inicial del objeto, en tal caso o la posición es fija o solo es necesario que una persona la suministre manualmente. Con esa posición, que en realidad solo es aproximada, se determina la posición inicial real usando el algoritmo para movimiento lento. Esto reduciría mucho el tiempo de ejecución, pero si no se sabe donde se encuentra el objeto en el primer fotograma, hay que determinarlo. Si asumimos que el objeto se mueve durante el vídeo, es posible detectar el movimiento usando la misma técnica que en el algoritmo para el movimiento rápido. En este caso hay que restar algún otro fotograma del primero, preferiblemente uno de los primeros para que no afecten cambios más lentos, como por ejemplo la iluminación. Si el movimiento del objeto entre el primer fotograma y el otro, no es suficiente para cumplir la condición de movimiento rápido, el método anterior no funciona. Una forma para solucionar este problema es usar procesamiento de imágenes binarias. La máscara que definimos se puede considerar como una imagen binaria porque se compone de unos y ceros solamente. El dígito 1 representa un píxel de color blanco y forma parte de un objeto, el dígito 0 representa un píxel negro, que es el fondo. Para las imágenes binarias existen unas operaciones llamadas erosión y dilatación [10]. La dilatación cambia los píxeles del fondo que quedan pegados al borde de los objetos, y el efecto es que los objetos aumentan de tamaño. La erosión hace lo contrario, removiendo píxeles del borde de los objetos, y por lo tanto encogiéndolos. La dilatación de una máscara agrandaría las zonas donde es probable que esté el objeto, pero evidentemente aumenta el tiempo de cálculo para la determinación de la posición. A partir de la erosión y la dilatación, se pueden hacer otras dos operaciones llamadas abrir o cerrar la imagen. Abrir una imagen es el proceso consistente en una erosión y después una dilatación. El resultado es que se eliminan objetos pequeños y delgados, separa objetos poco unidos y suaviza los bordes de objetos grandes. Cerrar una imagen es una dilatación y después una erosión. Sus efectos son rellenar pequeños huecos en los objetos, unir objetos cercanos y también suavizar el borde de los objetos grandes. 53 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Cuando el movimiento de un objeto es lento entre dos fotogramas, la diferencia genera una máscara solo para los bordes perpendiculares a la dirección del movimiento. Si se cierra esa imagen se podrán unir los bordes y rellenar toda la zona que encierran. Finalmente podemos abrir la imagen para eliminar los objetos pequeños y suavizar los bordes del verdadero objeto en cuestión, que debe ser el más grande. Para demostrar esto se plantea el siguiente ejemplo con la misma bola en caída libre. (a) (b) (c) (d) Figura 22. Ejemplo de la creación de la máscara para el primer fotograma. (a) Fotograma 1. (b) Fotograma 2. (c) Máscara creada usando solo la diferencia de las imágenes. (d) Máscara creada con la diferencia, cerrando la imagen y después abriéndola. 3.4.4.1. Ejemplo 9 Como se puede observar en la Figura 22, la mascara generada se compone de solo una región y une todas las partes que se movieron del objeto. La forma no es circular, igual que la bola, porque en los fotogramas una parte del objeto estaba oculto. Sin embargo la región si incluye la posición central del objeto, y ésta puede ser determinada satisfactoriamente. 54 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ El código en Matlab para este ejemplo es el siguiente. >> fotograma{1} = im2double(rgb2gray(imread('ejemplo9_fotograma1.bmp'))); >> fotograma{2} = im2double(rgb2gray(imread('ejemplo9_fotograma2.bmp'))); >> diferencia = abs( fotograma{2} - fotograma{1} ); >> maximo_diferencia = max( max( diferencia ) ); >> temporal1 = diferencia > maximo_diferencia/4; >> >> >> >> se = strel('disk',15); temporal2 = imclose(temporal1,se); se = strel('square',5); mask{1} = imopen(temporal2,se); 3.4.5. Algoritmo optimizado para la determinación de las posiciones de un objeto en vídeos Los anteriores algoritmos eran para crear las máscaras para cada uno de los fotogramas, y sólo son una parte del algoritmo optimizado para la determinación de la posición de objetos en vídeos. Hay que tener en cuenta que los dos algoritmos para movimientos rápido y lento no son excluyentes. Se puede generar una máscara con ambos algoritmos y se suman con una operación lógica and. Esto nos permitiría determinar la posición de un objeto que se mueve lentamente y también rápidamente durante el transcurso del vídeo. En la Figura 23 se encuentra el diagrama de flujo que representa el algoritmo completo que determina la posición de un objeto para todos los fotogramas de un vídeo incluyendo la posición inicial. 55 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Inicio No Si ¿Se suministró posición inicial? Generar máscara para el primer fotograma usando diferencia, cerrar y abrir imagen. Generar máscara para el primer fotograma usando algoritmo para movimiento lento. Calcular la función de distancia de similitud con respecto al objeto y determinar posición inicial real. No ¿Es este el último fotograma? Si Fin Continuar con el siguiente fotograma. Generar máscara usando el algoritmo para movimiento lento, si el objeto tiene este tipo de movimiento. Generar máscara usando el algoritmo para movimiento rápido, si el objeto tiene este tipo de movimiento. Sumar máscaras. Calcular la función de distancia de similitud con respecto al objeto y determinar posición. Figura 23. Algoritmo optimizado para la determinación de la posición de objetos en vídeos. 3.4.6. Un nuevo problema con el fondo Anteriormente habíamos asumido que los objetos en una imagen se encontraban en un fondo oscuro uniforme sin ningún tipo de formas. Pero un fondo con estas características solo se consigue en condiciones de laboratorio lo cual es una limitante para las posibles aplicaciones. Normalmente en los vídeos los objetos se mueven sobre un fondo bastante complejo. Nuestro algoritmo para la detección de la posición de objetos, toma una región circular que debe ser más grande que el objeto. Debido a esto y a que el objeto no es necesariamente circular, la región siempre incluirá una parte del fondo que para cada fotograma será diferente. Esto hace que las distancias de similitud aumenten y se puede dar el caso en que se cometa un error en la determinación de la posición. 56 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Si la cámara de vídeo no se mueve, sería posible generar una imagen que sólo incluya el fondo. Esto se puede lograr por ejemplo haciendo un promedio de las imágenes para una gran cantidad de fotogramas, pero también se puede tomar una foto cuando no hay ningún objeto. Con esa imagen se puede eliminar el fondo para cada fotograma usando la misma técnica de restar imágenes (el fondo y el fotograma) y en esta ocasión generar una mascara para los objetos que hay sobre el fondo. Con esto, eliminar el fondo sólo es cuestión de multiplicar el fotograma por la máscara. Esta solución para el problema del fondo funciona bien en pocas situaciones. No funcionaría por ejemplo si la cámara se encuentra al aire libre, el fondo cambiará mucho dependiendo de la hora del día y del clima que se tenga. La iluminación cambia dependiendo de la posición del sol, si hay muchas o pocas nubes, o si esta lloviendo o nevando. Otra solución para el problema del fondo es reducir al máximo el área del fondo que se incluye en la región circular que contiene al objeto. Esto se lograría si el radio de esa región es igual al radio del círculo más pequeño que contiene al objeto. Esto se puede incluir en el algoritmo de la sección anterior. Después de la determinación de la posición de objeto, se calcula la distancia de similitud para una región centrada en ese punto pero con diferentes radios. Para el siguiente fotograma se detecta la posición del objeto usando el radio que generó la mínima distancia de similitud. 57 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Capítulo 4. Aplicación El último objetivo específico del proyecto es usar toda la teoría de los descriptores AFMT y la determinación de la posición de objetos en vídeos para alguna aplicación real. Ese es el propósito del presente capítulo. Comenzaremos mencionando unas de las posibles aplicaciones que se pueden tener. Posteriormente se presenta un programa que se desarrollo en Matlab que hace uso de las funciones ya mencionadas. Mediante un entorno permite definir un objeto de forma gráfica y determinar su posición y el movimiento de éste en un vídeo. El capítulo termina con los resultados obtenidos usando el programa en un vídeo que representa una de las aplicaciones que se propusieron. 58 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 4.1. Posibles campos de aplicación 4.1.1. Medir los parámetros de movimiento para objetos en laboratorios de física mecánica Una aplicación muy simple pero didáctica, sería medir los parámetros de movimiento de objetos en experimentos para el aprendizaje de la física mecánica en los colegios y posiblemente también en las universidades. Como los resultados no se requieren en tiempo real, el largo tiempo de ejecución no es un problema. Específicamente el sistema mediría la posición de un objeto en el plano paralelo a la imagen de la cámara de vídeo. Una característica es que las mediciones son bastante precisas. Todos los movimientos perpendiculares se eliminan gracias a la invarianza a los cambios de tamaño. Teniendo esto en cuenta, unos pocos de los experimentos que se pueden realizar son los siguientes: 1. El movimiento de un objeto en caída libre, y determinar la aceleración de la gravedad. 2. Medición de la velocidad final de un objeto en caída libre para comprobar la ley de la conservación de la energía. 3. Movimiento parabólico de un proyectil. 4. Movimiento armónico simple proyectado por un objeto en movimiento circular. Este sistema requiere muy pocos recursos que son un ordenador, una cámara de vídeo y el software. Los ordenadores son una herramienta que ya es indispensable en todas las instituciones educativas por lo tanto esa inversión normalmente no es necesaria. Las cámaras de vídeo por ser un producto tan comercial, se consiguen en precios muy económicos. En conclusión, el precio de este sistema sería mucho menor comparado con alguno más especializado que logre una precisión equivalente. 4.1.2. Medición precisa de la posición de la luna En esta aplicación se trataría de hacer una medición de la posición de la luna relativamente en tiempo real. Gracias al hecho de que la luna tiene un movimiento bastante lento, el largo tiempo de cálculo de la AFMT no es un problema y se puede usar un ordenador convencional. Sin embargo cada 59 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ medición tendría que ser cada cierto periodo de tiempo, por ejemplo cada minuto. Para que las mediciones sean en coordenadas celestes y sean bien precisas primero se debe saber exactamente hacia que punto apunta la cámara de vídeo. Para saber esto convendría montar la cámara en un trípode del tipo que se usan en los telescopios. También es necesario saber que tamaño tiene la imagen del cielo, o mejor dicho cual es el área que cubre. Esta información no es fácil de determinar ya que depende del sistema óptico de la cámara que genera la imagen y no podemos asumir que se sabe como es. Una alternativa es medirlo experimentalmente que se podría hacer tomando como referencia las estrellas. El algoritmo para determinar la posición de la luna se debe modificar un poco comparado con el que ya se propuso para objetos que se mueven lentamente. Este sistema no sería muy preciso si la posición sólo puede ser en cada píxel. Como se mencionaba en capítulos anteriores, los descriptores AFMT se pueden calcular para una región que no necesariamente tiene que estar centrada en un píxel. Por lo tanto la precisión simplemente depende de cada cuanto se calculan los descriptores, claro que mientras mas puntos se procesen, mas tardará el cálculo. Un algoritmo eficiente para esta aplicación sería primero determinar la posición del mínimo de la función de similitud usando el algoritmo de movimiento lento. Después se toma el mínimo de la función y los ocho puntos más cercanos y se calculan las distancias de similitud para los puntos intermedios. Se busca el mínimo y se repite el proceso anterior. Mientras mas se repita ese ciclo mayor es la precisión. En la siguiente figura se observa una explicación gráfica para este algoritmo. … Puntos que se deben procesar Puntos que se procesaron previamente Valor mínimo encontrado Figura 24. Algoritmo para determinar la posición de un objeto con precisiones mayores a la distancia entre píxeles. 60 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 4.1.3. Sistema automático para el seguimiento de cuerpos celestes En astronomía los telescopios motorizados controlados por ordenador son capaces de hacer un seguimiento automático de los objetos celestes. Se podría diseñar un sistema de estos basado en los descriptores AFMT. Se caracterizaría por poder definir cual es el centro del objeto celeste al que se quiere hacer seguimiento, y este quedaría siempre en el centro de la imagen. Cuando se detecta que el objeto se ha movido más de medio píxel, se usarían los motores del telescopio para centrar nuevamente la imagen. 4.1.4. Seguimiento del movimiento de coches en una calle En todas las grandes ciudades del mundo hay instaladas cámaras de vídeo en las calles que permiten hacer diferentes controles sobre los coches que circulan. Sin embargo la mayoría de los usos que se le dan requieren de personas que estén observando continuamente la señal de vídeo. Esto limita mucho el uso que se le puede dar a la gran cantidad de información que pueden contener estas imágenes. Usando los algoritmos presentados en este proyecto se puede tomar a un coche como el objeto al cual se le va a determinar la posición y el movimiento. Entonces tenemos un sistema que nos dice cual fue el movimiento del coche para una cámara de vídeo determinada. Es posible que no se vea muy claramente para que sirva saber cual es el movimiento de un automóvil en una calle, porque en realidad es bastante predecible. Pero si se puede tomar en cuenta una característica de los descriptores AFMT y es que es muy robusta a la hora de diferenciar objetos muy parecidos. Por esta razón es que estos descriptores se usan por ejemplo en la identificación de personas usando fotografías de la cara. No obstante este ejemplo es sustancialmente diferente a las imágenes de una calle. La diferencia reside en que en una fotografía de una persona se puede asumir que solamente hay un objeto, que es la cara. Por otro lado en un vídeo de una calle se tienen muchos objetos que además se mueven, incluyendo coches, personas, bicicletas, mascotas, etc. Usando los algoritmos para determinar la posición de un coche sin asumir que este se encuentre en el vídeo, se pueden tener dos resultados muy diferentes. Si el vehículo si se encuentra en un fotograma determinado, sus posiciones trazarán un movimiento suave, y las distancias de similitud mínimas serán relativamente pequeñas. Si por el contrario el coche no está presente, las posiciones serán bastante irregulares y además las distancias de similitud serán considerablemente mayores comparado con el caso anterior. Estos resultados nos permiten detectar la presencia de un coche particular, por ejemplo uno robado. 61 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Existen varios algoritmos que pretenden hacer detección y rastreo de vehículos [11], [12], [13]. Pero ninguno se basa en los descriptores AFMT, que por sus características tan particulares, puede tener varias ventajas. 4.1.5. Ayuda para el conductor de un vehículo Esta aplicación usa la misma idea que la anterior en que los algoritmos para determinar la posiciones también se pueden usar para detectar si el objeto esta o no presente. Se coloca una cámara de vídeo en un vehículo filmando hacia la dirección en que se conduce. De las imágenes se pueden detectar todas las señales de tránsito, información que puede ser útil para recordárselo al conductor en caso de estar distraído. 62 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 4.2. Entorno gráfico para determinar la posición de un objeto en un vídeo El programa que se desarrolló se llama ObMoDe.m, una palabra formada por las primeras dos letras de las palabras “Determinación”, “Movimiento” y “Objeto”. El código completo no se incluye como anexo porque es demasiado lago y un poco complejo para comprender. Solo se incluye la parte en que se determina la posición del objeto usando el algoritmo optimizado. Para ejecutar el programa, en la consola de Matlab se navega hasta el directorio en que se encuentra y se escribe la palabra ObMoDe. Por ejemplo >> cd d:\matlab\ >> ObMoDe Una vez se ejecuta el programa aparece una ventana vacía con tres menús Archivo, Proyecto y Ayuda, como se observa en la siguiente figura. Figura 25. Ventana del programa ObMoDe después de ejecutarse. 63 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ El menú Proyecto inicialmente está deshabilitado, porque primero es necesario crear un proyecto. Para hacer eso, en el menú Archivo se selecciona la opción Nuevo... y se elige el directorio y el nombre del archivo donde se quieren guardar los resultados. Esto habilita el menú Proyecto. El primer paso es definir cual es el vídeo que se va a usar, esto se hace seleccionando Abrir video… del menú Proyecto. Para explicar el funcionamiento del programa se usara el video completo de la bola en caída libre que se ha usado en capítulos anteriores. Matlab solo puede leer archivos de vídeo con el formato AVI (Audio Video Interleaved) sin compresión. Una vez seleccionado el vídeo aparece en la ventana la imagen del primer fotograma y en la parte inferior derecha hay unos controles que permiten navegar por cada uno de los fotogramas. También hay un botón para ver el video completo Play. Estos controles se observan el la Figura 26. Figura 26. Programa ObMoDe en modo de visualización del vídeo. Posteriormente se debe definir cual es el objeto para el cual se va a encontrar sus posiciones en los fotogramas. Para hacer esto se tienen dos opciones, la primera es extraer el objeto de uno de los fotogramas. Primero se navega hasta el fotograma que se desea usando los controles de la Figura 26, y se selecciona la opción Definir objeto > Del fotograma en el menú Proyecto. La otra forma de definir el objeto es seleccionando un archivo independiente, que se hace seleccionando la opción Definir objeto > De un archivo que aparece en el menú 64 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Proyecto. Aparece una ventana para abrir el archivo, que para imágenes si se pueden usar muchos formatos entre los que están BMP, JPG, JPEG, GIF que son los más usados en Windows y en Internet. Una vez definida la imagen de donde se va a definir el objeto, ésta aparece en la ventana y el cursor cambia a una cruz que sirve para seleccionar el centro del objeto. El centro y el radio de la región que define el objeto se puede modificar con el teclado. Sobre la imagen en color verde claro, se observa un círculo y el centro como se definieron, ésta es una gran ayuda para definir el objeto. Ya definido el objeto, otras opciones que se pueden configurar son los parámetros K y V de la AFMT, el tamaño del objeto en coordenadas log-polares y el método de interpolación que se usará. En la figura se observa un objeto definido del quinto fotograma del vídeo que estamos usando de ejemplo. Figura 27. Programa ObMoDe en modo de definir objeto. Para terminar la definición del objeto se pulsa sobre el botón Listo, y quedan disponibles tres opciones. La primera, es ver la imagen con o sin el círculo que define el objeto. Segundo se puede observar el objeto convertido a coordenadas log-polares. Y por último se puede observar la gráfica del modulo de los descriptores AFMT que se encuentra en la Figura 28 para el presente ejemplo. 65 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Figura 28. Visualización del módulo de los descriptores AFMT del un objeto definido en el programa ObMoDe. El paso siguiente es poner al programa a determinar la posición del objeto en el vídeo. Se selecciona la opción Determinar movimiento en el menú Proyecto y la ventana cambia a una parecida a la de la Figura 29. En esa instancia se pueden configurar muchas cosas. Comencemos con que también aquí se pueden decidir cual será el tamaño de la imagen log-polar y la interpolación que se usará. Estas dos opciones son las que definen en gran medida el tiempo que se demora procesando cada píxel. Los parámetros K y V de la AFMT también se pueden cambiar afectando al vídeo y al objeto. Las otras opciones que se pueden cambiar son las que definen el algoritmo que se usa para generar las máscaras de cada fotograma. Estas determinan cuantos píxeles se deben procesar, y por lo tanto también afectan mucho el tiempo de ejecución. Las opciones son las mismas que se mencionaron en el final del capítulo 3 donde se define el algoritmo optimizado para determinar la posición del objeto. En orden descendente, la primera opción es si se especifica o no la posición inicial del objeto. Sólo afecta la máscara del primer fotograma. Si se selecciona, el cursor cambia a una cruz y permite seleccionar la posición inicial usando el ratón. En el píxel que uno selecciona aparece una pequeña cruz de color verde que sirve como ayuda. La posición inicial también se puede cambiar usando el teclado. Si no se selecciona posición inicial, el tiempo de cálculo es muchísimo mayor, este es el factor que más influye. 66 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ La segunda y tercera opciones son si el objeto se mueve de forma rápida o lenta. En el modo de visualización de vídeo, se puede analizarlo para saber que tipo de movimiento se tiene. Es necesario seleccionar alguno de los dos tipos, o seleccionar ambos. Adicionalmente si se selecciona el movimiento lento, se puede modificar la velocidad máxima. Esa velocidad es la máxima para el movimiento lento y debe tener un valor pequeño normalmente menor que diez, porque de lo contrario el tiempo de cálculo aumenta exageradamente. La última opción es si se usa o no un radio variable, como se explicaba en el capítulo anterior esto significa que el radio máximo para un fotograma es el radio que tenia el objeto en el fotograma anterior. El espacio que define el radio máximo del objeto es necesario adecuarlo al vídeo. Si no se usa radio variable, ese es el radio que se usa para todos los fotogramas. Si la opción de radio variable esta habilitada, ese radio define el máximo para todos los fotogramas y es el que se usa para el comienzo. Figura 29. Programa ObMoDe en modo de determinar movimiento. Para que el programa comience a procesar el vídeo determinando las posiciones del objeto, se pulsa en el botón Comenzar. La ejecución siempre dura varios minutos, por lo tanto hay que tener paciencia. Al terminar, el programa pasa al modo de ver resultados y se abre la aplicación de Windows notepad con los resultados en un archivo de texto. En el programa se tienen varias opciones para 67 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ visualizar los resultados. La primera opción muestra la función de distancia de similitud para cada uno de los fotogramas. Se cambia de fotograma con los mismos controles que se tenían en la visualización del vídeo. Hay que tener en cuenta que esta función no se calcula para todos los píxeles del fotograma. El fondo azul uniforme es la zona en que no se calculo la función. La segunda opción para la visualización de los resultados es la posición del objeto demarcada sobre el mismo fotograma con una cruz verde pequeña. Adicionalmente se tiene la opción de mostrar la traza del movimiento, que si esta seleccionada, en todas las posiciones donde estuvo el objeto desde el comienzo del vídeo se marcan con un punto verde. Nuevamente aquí se tienen los controles para cambiar de fotograma. En la Figura 30 se observa el modo de visualización de resultados para la posición del objeto del ejemplo en el fotograma 9 y con la traza del movimiento. Dejando de lado un momento la explicación de cómo usar el programa, las posiciones que se encontraron para el ejemplo de la bola, son perfectas excepto en el primer y último fotograma. Pero en esos dos fotogramas la bola no aparecía completa, lo que justifica el error, que de todas formas son cercanos a la posición real. En cuanto a los tiempos de cálculo fueron 4 minutos 17,84 segundos especificando la posición inicial y 4 minutos 40,47 segundos sin especificarla. Figura 30. Modo de visualización de resultados en el programa ObMoDe. 68 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ El siguiente tipo de visualización de resultados es una gráfica de tipo stem para el movimiento del objeto horizontal y vertical. El movimiento horizontal aparece como puntos de color azul, y el movimiento vertical demarcado con asteriscos de color verde. La última opción de visualización de resultados solamente abre el archivo de resultados en notepad. Ese archivo contiene mucha mas información que las posiciones del objeto en cada fotograma. Tiene el nombre del proyecto, el archivo del vídeo y el objeto, y toda la configuración que se usó para hacer los cálculos. También se tiene el tiempo que tardó el programa para determinar las posiciones. Por último se tiene la distancia cero del objeto y si la posición es o no confiable para cada uno de los fotogramas. 69 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 4.3. Resultados usando el programa ObMoDe Para probar el programa ObMoDe además de usar una pequeña bola en caída libre que representa la primera aplicación propuesta, también se usó el vídeo de una calle donde se observan muchos vehículos en movimiento. Ese ejemplo es de una grabación extraída de la cámara fija existente de la sección de tráfico del ayuntamiento de Valencia, España. Nos sirve para comprobar que la aplicación de seguimiento del movimiento de coches en una calle si se puede realizar. Se usaron solamente 28 fotogramas. En la Figura 31 se observa el primer fotograma de esa secuencia. Figura 31. Primer fotograma del vídeo de una calle usado como ejemplo. Primero debemos comenzar analizando cual es el tipo de movimiento que tienen los objetos de este vídeo. Los coches pueden alcanzar velocidades bastante altas, sin embargo en este caso, una zona urbana donde además hay un semáforo cerca, 70 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ no es posible andar muy rápido. Además los fotogramas son sólo cada 0,04 segundos, por lo tanto se puede concluir que el movimiento es solamente de tipo lento. Como velocidad máxima del objeto vamos a asumir 5 píxeles. Una característica de estos videos es que la velocidad de los objetos es mayor cuando están más cerca de la cámara lo que complica un poco la decisión de la velocidad máxima. Otros parámetros que se configuran son: K y V que se tomaron iguales a 10; el tamaño del objeto en coordenadas log-polares que se tomó como 32; y el método de interpolación que se uso principalmente fue nearest. Con respecto a las otras opciones restantes que se pueden configurar, se hicieron pruebas para cada caso: especificando la posición inicial; sin especificar la posición inicial; con radio variable. Todos los resultados que se obtuvieron, se encuentran en el Anexo C. 4.3.1. Resultados especificando la posición inicial para el primer coche En la Figura 32 se observa primero el coche seleccionado del primer fotograma; y segundo, su posición en el último fotograma y la traza de las posiciones en fotogramas anteriores. Podemos ver que el movimiento del coche si se detecta correctamente, pero no todos los puntos se encuentran en la línea recta que debe describir su desplazamiento. Esto incluso se puede ver en la última posición, que comparado con el objeto de referencia, el centro del coche se detecta un poco hacia la izquierda. 71 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) Figura 32. Primera prueba con el vídeo de la calle. (a) Coche seleccionado que define el objeto en el primer fotograma. (b) Posición del coche en el último fotograma con la traza de su movimiento. Analizando los dos métodos de interpolación nearest y linear, y teniendo en cuenta que el objeto cambia de tamaño, se puede decir que es más indicado usar el segundo método. La razón para llegar a esa conclusión es que los arcos que se forman usando interpolación nearest dependen de la separación entre píxeles. Por lo tanto cuando se cambia el tamaño del objeto, los arcos también cambian representando un objeto un poco diferente. Se realizó otra prueba para el mismo coche pero usando interpolación bilineal esperando que no ocurrieran los mismos errores. Pero los resultados fueron muy parecidos. 4.3.2. Resultados especificando la posición inicial para el segundo coche Otra posibilidad es que los errores se deben al hecho de que el vídeo se digitalizó usando compresión, y la calidad de la imagen se pierde mucho. Observando detenidamente ese coche, en cada uno de los fotogramas si se puede ver que cambia continuamente. La siguiente prueba se realizó con otro vehículo que aparentemente no cambia tanto y los resultados si son los esperados (Figura 33). 72 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) Figura 33. Segunda prueba con el vídeo de la calle. (a) Coche seleccionado que define el objeto en el primer fotograma. (b) Posición del coche en el último fotograma con la traza de su movimiento. Las dos pruebas presentadas aquí tardaron 6 minutos 30,67 segundos y 6 minutos 29,25 segundos respectivamente. En promedio esto es 14,369 segundos que no es tanto considerando que el ordenador en que se hicieron las pruebas no es el más indicado. La prueba que se realizó con interpolación bilineal tardó 0,78 segundos adicionales que comparado con los varios minutos que tarda todo el proceso la diferencia no es muy significativa. 4.3.3. Resultados sin especificar la posición inicial La tercera prueba que presentaremos se realizó para el mismo primer coche, pero sin especificar la posición inicial. Las posiciones encontradas son idénticas a las de la Figura 32, la diferencia está en el tiempo de ejecución que fue 26 minutos 30,95 segundos que es muchísimo mas lento. Esta diferencia tan grande se debe a que para el primer fotograma se calcula la distancia de similitud para todas las zonas en que hay movimiento (vea la Figura 34), en este caso todos los coches. En la figura se observa que la máscara cubría un área muy extensa comparado son los 37 píxeles que toca procesar en el caso que si se especifica la posición inicial. 73 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Figura 34. Tercera prueba con el vídeo de la calle, función de distancia de similitud para el primer fotograma cuando no se especifica la posición inicial. 4.3.4. Resultados usando el algoritmo de radio variable La cuarta prueba que se presentará también es para el mismo primer coche especificando la posición inicial y usando la opción de radio variable. Los resultados están en la siguiente figura y aunque las posiciones encontradas si cambian un poco no es muy fácil notar la diferencia. Lo que si se puede decir es que todavía se tiene el problema de unas posiciones un poco erróneas. 74 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ (a) (b) Figura 35. Cuarta prueba con el vídeo de la calle. (a) Coche seleccionado que define el objeto en el primer fotograma. (b) Posición del coche en el último fotograma con la traza de su movimiento. Para poder analizar si el uso del radio variable produce unos resultados mejores como es de esperarse según la teoría, debemos comparar las distancias de similitud mínimas para cada fotograma. Como el objeto es el mismo para la primera y cuarta prueba, sus distancias de similitud se pueden comparar directamente. Mientras más pequeñas sean las distancias de similitud, mejor es el algoritmo. En la Tabla 4 están esos valores que están graficados en la Figura 36. Fotograma No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Distancia de similitud mínima Radio fijo Radio variable 1,53003e-031 1,53003e-031 0,0029641 0,0029641 0,0087091 0,0087091 0,0080768 0,0080768 0,0205116 0,0205116 0,0216639 0,0216639 0,0215698 0,0215698 0,0205504 0,0205504 0,0223157 0,0192589 0,0265931 0,0364965 0,0408930 0,0172947 0,0605591 0,0439194 0,0463159 0,0234795 0,0496616 0,0322467 0,0601548 0,0632376 0,0569771 0,0569771 0,0610200 0,0610200 75 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 18 19 20 21 22 23 24 25 26 27 28 0,0738973 0,0785066 0,0800082 0,0780053 0,0622099 0,0772506 0,0928553 0,1020470 0,0886841 0,1018540 0,0985513 0,0588717 0,0498945 0,0545915 0,0540716 0,0424731 0,0455587 0,0565428 0,0518470 0,0416545 0,0382121 0,0673734 Tabla 4. Distancia de similitud mínima para cada fotograma. Distancia de similitud mínima 1.20E-01 8.00E-02 6.00E-02 4.00E-02 Radio variable 28 25 Fotograma 22 19 16 13 10 7 0.00E+00 4 2.00E-02 1 Distancia de similitud 1.00E-01 Radio fijo Figura 36. Gráfica de la distancia de similitud mínima para cada fotograma (Tabla 4). Como se puede observar en la gráfica, para el primer fotograma la distancia de similitud es prácticamente cero debido a que aquí se definió el objeto. Desde los fotogramas dos al ocho el valor permanece igual para ambos casos ya que el coche no ha cambiado mucho de tamaño y por lo tanto el radio no ha variado. Del nueve en adelante los resultados si son diferentes. Para las dos pruebas se puede observar que mientras mas pequeño es el coche, la distancia de similitud tiende a aumentar. Pero para el caso en que se usa el algoritmo en que varía el 76 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ radio, el aumento es considerablemente menor en casi todos los fotogramas, excepto en el diez y en el quince. Con estos resultados ya se puede concluir que añadir al algoritmo la variación del radio si mejora el desempeño del método para determinar la posición del objeto. Esto se traduce en que se podría seguir al vehículo hasta tamaños mas pequeños, o que si se está buscando la presencia o no del coche, la respuesta sería más confiable. 4.3.5. Resultados usando el mismo vídeo pero digitalizado sin compresión y compensando el entrelazado Como se mencionaba anteriormente, la calidad del vídeo de los coches no era muy buena, y por esta razón los resultados determinando la posición de los coches, no eran los mejores. La hipótesis era que la baja calidad de la imagen, que se debía a la compresión que usaba el formato del vídeo al ser digitalizado (MPEG). Por esta razón se tomó la decisión de digitalizar nuevamente el vídeo, pero usando algún formato sin compresión. Al hacer esto nos dimos cuenta que el problema principal no era la compresión. El mayor problema era el entrelazado del formato original, que era VHS. El video se digitalizó nuevamente sin usar compresión, y además se usó el programa Adobe Premiere para eliminar el efecto del entrelazado. En la Figura 37 primero se observa la como se ve la imagen cuando está entrelazada y comprimida en MPEG, y después como queda sin compresión y desentrelazada. (a) (b) Figura 37. (a) Imagen digitalizada en formato MPEG del formato análogo VHS con entrelazado. (b) La misma imagen (a) digitalizada sin compresión y procesada para compensar el entrelazado. 77 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ La última prueba que mencionaremos, es igual que la primera pero usando el video digitalizado nuevamente. La calidad del vídeo no es tan buena como se esperaba, pero los resultados si son mucho mejores. Como se puede ver en la Figura 38 el movimiento del coche si se asemeja a una línea recta, aunque todavía hay dos posiciones un poco erróneas. Esos resultados nos confirman que mientras mejor sea la calidad de la imagen, más confiables serán los resultados. Figura 38. Movimiento del primer coche usando el vídeo sin compresión y compensando el entrelazado. 78 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Capítulo 5. Conclusiones La Transformada de Fourier-Mellin Analítica es una herramienta matemática muy poderosa que se puede usar en muchas aplicaciones. En la actualidad se ha usado principalmente para el reconocimiento de formas en imágenes pero en el futuro se podría usar en la determinación de la posición de objetos, como se plantea en este proyecto. Pero incluso se podría aplicar en otros tipos de información que no sean necesariamente imágenes, por ejemplo para el reconocimiento de patrones en datos, o usando imágenes generadas con otras bandas de radiación electromagnética diferentes a la luz visible. El gran problema de la AFMT es que requiere una gran capacidad de procesamiento, que resulta en que la mayoría de las aplicaciones no sean viables porque los precios del procesador serían demasiado altos. Sin embargo con el constante incremento en las velocidades de procesamiento de los circuitos integrados y la reducción de los precios gracias a la economía en escala, será posible que en un futuro muy próximo sean realizables hasta las aplicaciones más exigentes. De todas formas en la actualidad si se pueden diseñar sistemas basados en la AFMT que sean viables. No se podrían usar ordenadores convencionales, sino sería necesario usar circuitos integrados especializados en el procesamiento digital de imagen. Estos tipos de integrados ya existen en la industria de las cámaras fotográficas digitales y podrían servir para estos propósitos. Como conclusiones más puntuales sobre la determinación de la posición de objetos en imágenes usando la AFMT, tenemos varias. Los algoritmos desarrollados funcionan muy bien y hay muchas otras variables por explorar para mejorarlos. Siempre y cuando el objeto no este obstaculizado por otro, la posición que se encuentra es exactamente el centro del objeto. Y de todas formas si el objeto no esta completo en la imagen, la posición determinada normalmente queda sobre este. Pero lo mas importante es que hay invarianza a los cambios de tamaño y orientación que es la gran ventaja que tiene la AFMT. No encontramos ninguna restricción para el ángulo en que se encontrara el objeto. Sin embargo debido a que las imágenes son digitales con una cantidad de muestras finita, si hay un límite para el tamaño que puede tener el objeto. Mientras mas pequeño es, se pierden mas los detalles. Para lograr determinar la posición de un objeto hasta los menores tamaños, llegamos a la conclusión que lo mejor es usar interpolación bilineal y usar el algoritmo de radio variable. Ese algoritmo requiere determinar el tamaño aproximado del objeto sin importar la invarianza a los cambios de escala, con lo que se pierde un poco la ventaja que se tenía con respecto al tamaño. 79 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Otra conclusión es que para usar la AFMT es muy importante que la calidad de la imagen sea buena. Se tiene bastante flexibilidad, pero mientras peor sea la resolución o si se tiene mucho ruido o distorsiones, menos fiables serán los resultados. Particularmente en el caso de los vídeos, los formatos digitales mas usados, emplean métodos de compresión en los que se pierde mucha información y por lo tanto calidad de la imagen. La compresión elimina todos los detalles que el ojo humano no percibe. Esto nos lleva a concluir que para aplicar las técnicas basadas en la AFMT en vídeos, no se pueden usar compresiones en que haya perdida de información, y mientras mayor sea la calidad de la imagen, mejores resultados se tendrán. Además de los resultados que se obtuvieron, los programas desarrollados en Matlab son una gran herramienta para poder experimentar y desarrollar algoritmos especiales para cada aplicación. Esta puede ser la base para trabajos futuros, y la posible implementación de algunas de las aplicaciones que se propusieron. 80 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Bibliografía [1] http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Fourier.html [2] http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Mellin.html [3] CARLSON, A. Bruce. Communication Systems. McGraw-Hill, Third Edition 1986. [4] MÖLLER, Roberto; SÁNCHEZ, Hugo; SÁNCHEZ, Edmundo. Image Recognition Using the Fourier-Mellin Transform. GSPx 2003 Papers. [5] DERRODE, Stéphane. Représentation de formes planes à niveaux de gris par différentes approximations de Fourier-Mellin analytique en vue d'indexation de bases d'images. Thèse ou HDR soutenue le 15/12/1999 à Enst-Bretagne. [6] DERRODE, Stéphane; GHORBEL, Faouzi. Robust and efficient FourierMellin transform approximations for gray-level image reconstruction and complete invariant description. Computer Vision and Image Understanding, 2001, Volume 83, No. 1, p. 57-78. [7] GHORBEL, Faouzi. A complete invariant description for gray-level images by the harmonic analysis approach. Pattern Recognition Letters, October 1994, Volume 15 Issue 10. [8] DERRODE, Stéphane; GHORBEL, Faouzi. Shape analysis and symmetry detection in gray-level objects using the analytical Fourier-Mellin representation. Signal Processing, January 2004, Volume 84, Issue 1, p. 25-39. [9] Columbia Object Image Library (COIL-20). [10] CASTLEMAN, Kenneth R. Digital Image Processing. Prentice-Hall, 1996. [11] WANG, Yiwei; VAN DYCK, Robert E.; DOHERTY, John F. Tracking Moving Objects In Video Sequences. Proc. CISS , Princeton, NJ, Mar. 2000. 81 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ [12] MEIER, Esther B.; ADE, Frank. Tracking Cars in Range Images Using the Condensation Algorithm. IEEE/IEEJ/JSAI International Conference on Intelligent Transportation Systems ITSC'99. Tokyo, Japan, 5th-8th October 1999, p. 129-134. [13] STEFANO, Luigi; VIARANI, Enrico. Vehicle Detection and Tracking Using the Block Matching Algorithm. Recent Advances in Signal Processing and Communications. N. Mastorakis Editor, World Scientific and Engineering Society Press, 1999. 82 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Anexo A. Demostraciones matemáticas A.1. Deducción del teorema de traslación en coordenadas logpolares para la AFMT Se tienen dos funciones f y g con similitud plana de tal forma que g (r ,θ ) = f (αr ,θ + β ) Para deducir este teorema se parte de la AFMT de la función g y se manipula para ser representado en términos de la AFMT de f. M gσ (k , v ) = = 1 2π 1 2π ∞ 2π ∫ ∫ g (r ,θ )r σ − jv − jkθ e dθ 0 0 ∞ 2π ∫ ∫ f (αr ,θ + β )r dr r σ − jv − jkθ e dθ 0 0 dr r R = αr ⇒ dR = αdr Θ = θ + β ⇒ dΘ = dθ Cambiando las variables de integración por = 1 2π =α ∞ 2π + β σ − jv − jk (Θ− β ) ∫ ∫β f (R, Θ)(R α ) e dΘ 0 −σ + jv e jkβ 1 2π ∞ 2π ∫ ∫ f (R, Θ)R σ − jv − jkΘ 0 0 e (dR α ) (R α ) dΘ dR R Y finalmente obtenemos M gσ (k , v ) = α −σ + jv e jkβ M fσ (k , v ) 83 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ A.2. Demostración de la simetría hermitiana de la AFMT Comenzamos con la fórmula de la AFMT M fσ (k , v ) = 1 2π ∞ 2π ∫ ∫ f (r,θ )r σ − jv − jkθ e 0 0 dθ dr r Y a esta le cambiamos las variables incluyendo un signo negativo y sacamos el complejo conjugado. M fσ (− k ,−v ) = = = = = 1 2π 1 2π 1 2π 1 2π 1 2π ∞ 2π ∫ ∫ f (r ,θ )r σ − j ( − v ) − j ( − k )θ e dθ 0 0 ∞ 2π ∫ ∫ f (αr,θ + β )r dr r σ r jv e jkθ dθ dr r σ r jv e jkθ dθ dr r σ r − jv e − jkθ dθ 0 0 ∞ 2π ∫ ∫ f (αr,θ + β )r 0 0 ∞ 2π ∫ ∫ f (αr,θ + β )r 0 0 ∞ 2π ∫ ∫ f (αr,θ + β )r σ − jv − jkθ e 0 0 dθ dr r dr r = M fσ (k , v ) M fσ (− k ,−v ) = M fσ (− k ,−v ) Esta relación solamente es valida siempre y cuando la función f sea estrictamente real. 84 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ A.3. Demostración de la invarianza a las similitudes planas de los descriptores AFMT Se tienen dos funciones f y g con similitud plana de tal forma que g (r ,θ ) = f (αr ,θ + β ) Para este tipo de funciones recordamos que la relación entre sus AFMTs está dada por el teorema de traslación en coordenadas log-polares M gσ (k , v ) = α −σ + jv e jkβ M fσ (k , v ) Comenzamos con la fórmula para los descriptores invariantes para la función g y reemplazamos usando el teorema de traslación. Después se trata de poner el lado derecho de la ecuación solo en términos de f. −1+ j I gσ (k , v ) = M gσ (0,0) ( = (α v e σ { } M gσ (k , v ) − jk arg M gσ (1, 0 ) −1+ j ) = α −σ + j (0 )e j (0 )β M fσ (0,0) −σ −1+ j ) M fσ (0,0 ) v σ −1+ j = α σ − jv M fσ (0,0 ) −1+ j = M fσ (0,0 ) −1+ j = M fσ (0,0 ) v σ e v σ e e e { } −σ + jv jkβ e M fσ (k , v ) α − jk arg α −σ + j ( 0 )e j (1 ) β M fσ (1, 0 ) { } −σ + jv jkβ e M fσ (k , v ) α { } −σ + jv jkβ e M fσ (k , v ) α − jk arg α −σ e jβ M fσ (1, 0 ) v σ v σ e − jk arg α −σ e jβ M fσ (1, 0 ) ( { } ) jkβ e M fσ (k , v ) − jk arg M fσ (1, 0 ) + β { } M fσ (k , v ) − jk arg M fσ (1, 0 ) = I fσ (k , v ) I fσ (k , v ) = I gσ (k , v ) El resultado es que los descriptores son los mismos para f que para g. Como f y g se relacionan por una similitud plana, esto demuestra que los descriptores si son invariantes para cualquier otra función con la misma similitud. 85 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ A.4. Demostración de la no invarianza a las traslaciones de los descriptores AFMT La Transformada de Fourier-Mellin Analítica en coordenadas cartesianas se expresa de la siguiente forma M hσ (k , v ) = 1 2π ∞ ∞ ∫ ∫ h(x, y )(x + jy ) −k (x 2 + y2 ) k − 2 +σ − jv 2 dxdy − ∞− ∞ Por otra parte, dos funciones f y g relacionadas por una traslación se expresan h( x , y ) = f ( x − x o , y − y o ) M hσ (k , v ) = = 1 2π 1 2π ∞ ∞ ∫ ) f ( x − xo , y − y o )(x + jy ) −k −k (x 2 − ∞− ∞ ∞ ∞ ∫∫ k − 2 +σ − jv 2 + y2 ∫ h(x, y )(x + jy ) (x 2 dxdy + y2 1 2π ∞ ∞ ∫∫ k − 2 +σ − jv 2 dxdy − ∞− ∞ X = x − x o ⇒ dX = dx Cambiando las variables de integración por = ) Y = y − y o ⇒ dY = dy −k f ( X , Y )[( X + xo ) + j (Y + y o )] [( X + x ) o 2 + (Y + y o ) 2 k − 2 +σ − jv 2 ] dX dY − ∞− ∞ Esa expresión no se puede simplificar de tal forma que sea igual a la AFMT de la función f. ≠ 1 2π ∞ ∞ ∫∫ −k f ( X , Y )[ X + jY ] [X 2 +Y2 k − 2 +σ − jv 2 ] dX dY − ∞− ∞ M hσ (k , v ) ≠ M fσ (k , v ) Por lo tanto no existe invarianza a la traslación de la AFMT ni tampoco de sus descriptores invariantes a las similitudes planas, o mediante una expresión matemática que I fσ (k , v ) ≠ I hσ (k , v ) 86 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Anexo B. Programas en Matlab B.1. im2logpol.m function logpolar = im2logpol(varargin) % Convierte una imagen de coordenadas cartesianas a coordenadas log-polares % % LOGPOLAR = im2logpol(IMAGE,'PropertyName',PropertyValue,...) % % LOGPOLAR es una matriz que representa una imagen en escala de grices % con coordenadas log-polares, obtenida de la imagen original IMAGE. Las % siguientes propiedades opcionales se pueden modificar: % % ----------------------------------------------------------------% | PropertyName | PropertyValue | % ----------------------------------------------------------------% | 'Area' | [X0 YO R], vector de tres elementos que | % | | especifica el centro y el radio del area | % | | circular de la imagen que sera convertida. | % ----------------------------------------------------------------% | 'Size' | [M N], especifica el tamaño de la imagen | % | | log-polar de salida. M y N se refieren a | % | | las coordenadas de angulo y log-radio | % | | respectivamente. Si solo se especifica M | % | | la salida es cuadrada de tamaño M. | % ----------------------------------------------------------------% | 'Method' | Cadena de caracteres con el nombre del | % | | metodo de interpolacion. | % | | 'nearest' - nearest neighbor interpolation | % | | 'linear' - bilinear interpolation | % | | 'cubic' - bicubic interpolation | % | | 'spline' - spline interpolation | % ----------------------------------------------------------------% % Version: 4-A Fecha: 08/07/2004 % % Mauricio Villegas Santamaria if nargin == 0 error('Hacen falta argumentos de entrada.'); end cartesian = varargin{1}; [Y,X] = size(cartesian); AreaCentreX = (X-1)/2+1; AreaCentreY = (Y-1)/2+1; AreaRadius = sqrt(((X-1)^2)+((Y-1)^2))/2; M = max([X Y]); % Convertir la imagen a tipo de dato double % Obtener el tamaño de la imagen % Coordenadas predeterminadas del centro de la imagen % Radio predeterminado de la imagen % Tamaño predeterminado de la imagen log-polar N = M; Method = 'linear'; % Metodo de interpolacion predeterminado if nargin > 1 for index = 2:2:nargin if nargin == index break end switch varargin{index} case 'Area' Area = varargin{index+1}; % Si se especifica Area % Cambiar las coordenadas del centro y el 87 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ radio del area de la imagen AreaCentreX = Area(1); AreaCentreY = Area(2); AreaRadius = Area(3); M = 2*AreaRadius; N = M; case 'Size' Size = varargin{index+1}; M = Size(1); if size(Size,2) == 2 N = Size(2); else N = M; end case 'Method' Method = varargin{index+1}; end end end % Si se especifica Size % Cambiar el tamaño de la imagen log-polar % Si se especifica Method % Cambiar metodo de interpolacion theta = [0:2*pi/M:2*pi-2*pi/M]; rho = transpose(logspace(0,log10(AreaRadius),N)); x = rho*cos(theta)+AreaCentreX; % Vector con el angulo con respecto al origen % Vector con el radio con respecto al origen % Coordenadas x para la malla de muestras log-polares % Coordenadas y para la malla de muestras log-polares y = rho*sin(theta)+AreaCentreY; logpolar = interp2(cartesian,x,y,Method); mask = (x>X) | (x<1) | (y>Y) | (y<1); logpolar(mask) = 0; % Hacer la interpolacion % Si las muestras estaban por fuera del area original de la imagen ponerlas como negro 88 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ B.2. F_Afmt.m function [Mf,logpolar] = F_Afmt(varargin) % Transformada de Fourier-Mellin Analitica (AFMT) de una imagen usando el algoritmo rapido % % [AFMT,LOGPOLAR] = F_Afmt(IMAGE,[K V],IM2LOGPOL_PROPERTIES) % % Donde IMAGE es una matriz que representa una imagen en escala de grises; % K, V, son los parametros de la transformada; IM2LOGPOL_PROPERTIES son % las propiedades opcionales que pueden ser especificadas para la transformacion % a log-polar, vea HELP IM2LOGPOL. % % AFMT es la Transformada de Fourier-Mellin Analitica calculada usando el % algoritmo rapido; y LOGPOLAR es la imagen convertida a coordenadas log-polares. % % Version: 3-A Fecha: 08/07/2004 % % Mauricio Villegas Santamaria if nargin == 0 error('Hacen falta argumentos de entrada.'); end f = varargin{1}; [Y,X] = size(f); % Obtener el tamaño de la imagen Area = [(X-1)/2+1, (Y-1)/2+1, sqrt(((X-1)^2)+((Y-1)^2))/2]; % Area predeterminada Size = max([X Y]); % Tamaño de la imagen log-polar predeterminado Method = 'linear'; % Metodo de interpolacion predeterminado sigma = 0.5; % Sigma = 0.5 predeterminado if nargin > 2 for index = 3:2:nargin if nargin == index break end switch varargin{index} case 'Area' Area = varargin{index+1}; case 'Size' Size = varargin{index+1}; case 'Method' Method = varargin{index+1}; case 'Sigma' sigma = varargin{index+1}; end end end if nargin == 1 K = floor((min(Size)-1)/2); V = K; else K = varargin{2}(1); V = varargin{2}(2); end % Si se especifica Area % Cambiar las coordenadas del centro y el radio del area de la imagen % Si se especifica Size % Cambiar el tamaño de la imagen log-polar % Si se especifica Method % Cambiar metodo de interpolacion % Si se especifica Sigma % Cambiar sigma % % % % % K predeterminado V predeterminado Si los parametros AFMT se especifican Cambiar K Cambiar V logpolar = im2logpol(f,'Area',Area,'Size',Size,'Method',Method); f = logpolar; % Convertir la imagen de coordendas cartesianas a log-polares: % % 2*pi*n/N % f(e , 2*pi*m/M) M = size(f,2); N = size(f,1); % Obtener el tamaño de la imagen nueva a = 2*pi*sigma/N; 89 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ for n = 0:N-1 b = a*n; for m = 0:M-1 f(n+1,m+1) = exp(b)*f(n+1,m+1); end end % Calcular: 2*pi*sigma*n/N 2*pi*n/N % e * f(e , 2*pi*m/M) Mf = (2*pi/(N*M)).*fftshift(fft2(f)); % Calcular: 2*pi M-1 N-1 2*pi*sigma*n/N 2*pi*n/N -j2*pi*(km/M+vn/N) % ---- sum sum e * f(e , 2*pi*m/M) * e % MN m=0 n=0 Mf = Mf((N/2+1-V):(N/2+1+V),(M/2+1-K):(M/2+1+K)); % Si los parametros K y V son suministrados, descartar el resto de los resultados Mf = transpose(Mf); 90 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ B.3. Afmt_descriptors.m function [If,Mf,logpolar] = Afmt_descriptors(varargin) % Familia completa de descriptores AFMT de una imagen invariantes a cambios de tamaño y rotacion % % [AFMTD,AFMT,LOGPOLAR] = AFMT_descriptors(IMAGE,[K V],IM2LOGPOL_PROPERTIES) % % Donde IMAGE es una matriz que representa una imagen en escala de grises; % K, V, son los parametros de la transformada; IM2LOGPOL_PROPERTIES son % las propiedades opcionales que pueden ser especificadas para la transformacion % a log-polar, vea HELP IM2LOGPOL. % % AFMT es la Transformada de Fourier-Mellin Analitica calculada usando el % algoritmo rapido; y LOGPOLAR es la imagen convertida a coordenadas log-polares. % % AFMTD es una matriz con los descriptores basados en la Transformada de % Fourier-Mellin Analitica (AFMT) invariantes a cambios de tamaño y rotacion; % AFMT es la Transformada de Fourier-Mellin Analitica calculada usando el % algoritmo rapido; y LOGPOLAR es la imagen IMAGE convertida a coordenadas % log-polares. % % Version: 5-A Fecha: 18/08/2004 % % Mauricio Villegas Santamaria if nargin == 0 error('Hacen falta argumentos de entrada.'); end f = varargin{1}; [Y,X] = size(f); % Obtener el tamaño de la imagen Area = [(X-1)/2+1, (Y-1)/2+1, sqrt(((X-1)^2)+((Y-1)^2))/2]; % Area predeterminada Size = max([X Y]); % Tamaño de la imagen log-polar predeterminado Method = 'linear'; % Metodo de interpolacion predeterminado sigma = 0.5; % Sigma = 0.5 predeterminado if nargin > 2 for index = 3:2:nargin if nargin == index break end switch varargin{index} case 'Area' Area = varargin{index+1}; case 'Size' Size = varargin{index+1}; case 'Method' Method = varargin{index+1}; case 'Sigma' sigma = varargin{index+1}; end end end if nargin == 1 K = floor((min(Size)-1)/2); V = K; else K = varargin{2}(1); V = varargin{2}(2); end % Si se especifica Area % Cambiar las coordenadas del centro y el radio del area de la imagen % Si se especifica Size % Cambiar el tamaño de la imagen log-polar % Si se especifica Method % Cambiar metodo de interpolacion % Si se especifica Sigma % Cambiar sigma % % % % % K predeterminado V predeterminado Si los parametros AFMT se especifican Cambiar K Cambiar V logpolar = im2logpol(f,'Area',Area,'Size',Size,'Method',Method); f = logpolar; % Convertir la imagen de coordendas cartesianas a log-polares: % % 2*pi*n/N 91 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ % f(e , 2*pi*m/M) M = size(f,2); N = size(f,1); % Obtener el tamaño de la imagen nueva a = 2*pi*sigma/N; for n = 0:N-1 b = a*n; for m = 0:M-1 f(n+1,m+1) = exp(b)*f(n+1,m+1); end end % Calcular: 2*pi*sigma*n/N 2*pi*n/N % e * f(e , 2*pi*m/M) Mf = (2*pi/(N*M)).*fftshift(fft2(f)); % Calcular: 2*pi M-1 N-1 2*pi*sigma*n/N 2*pi*n/N -j2*pi*(km/M+vn/N) % ---- sum sum e * f(e , 2*pi*m/M) * e % MN m=0 n=0 Mf = Mf((N/2+1-V):(N/2+1+V),(M/2+1-K):(M/2+1+K)); % Si los parametros K y V son suministrados, decartar el resto de los resultados Mf = transpose(Mf); M00 = Mf(K+1,V+1); argM10 = angle(Mf(K+2,V+1)); % Guardar Mf(0,0) % Guardar arg{Mf(1,0)} if M00 ~= 0 for k = -K:K % Para todos los valores de k=[-K,K] y v=[-V,V] for v = -V:V If(k+K+1,v+V+1) = (M00^((i*v-sigma)/sigma))*exp(-i*k*argM10)*Mf(k+K+1,v+V+1); end end % Calcular: (jv-sigma)/sigma -jk*arg{Mf(1,0)} % Mf(0,0) * e * Mf(k,v) else If = Mf; end 92 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ B.4. imdistance.m function d = imdistance(I1,I2) % Distancia de similitud entre dos imagenes invariante a cambios de tamaño y rotacion (AFMT) % % DISTANCIA = imdistance(AFMT_DESCRIPTORS1,AFMT_DESCRIPTORS2) % % Donde AFMT_DESCRIPTORS1 y AFMT_DESCRIPTORS2 son los descriptores AFMT invariantes % a cambios de tamaño y rotacion calculados usando AFMT_DESCRIPTORS.M. DISTANCIA es % un escalar que represente la similitud entre las dos imagenes. % % Version: 2-A Fecha: 18/08/2004 % % Mauricio Villegas Santamaria if nargin < 2 error('Hacen falta argumentos de entrada.'); elseif nargin > 2 error('Demasiados argumentos de entrada.'); end d = I1-I2; d = abs(sum(sum(d.*conj(d)))); 93 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ B.5. ObMoDe.m (Solo la parte en que se determinan las posiciones) tic K = str2double(get(handles.K_edit,'String')); V = str2double(get(handles.V_edit,'String')); ObjectSize = str2double(get(handles.ObjectLogpolarSize_edit,'String')); ObjectMethod = get(handles.ObjectInterpolationMethod_popupmenu,'String'); ObjectMethod = ObjectMethod{get(handles.ObjectInterpolationMethod_popupmenu,'Value')}; ObjectCentreX = str2double(get(handles.ObjectCentreX_edit,'String')); ObjectCentreY = str2double(get(handles.ObjectCentreY_edit,'String')); ObjectRadius = str2double(get(handles.ObjectRadius_edit,'String')); Project = getappdata(handles.ObMoDe,'Project'); Iobject = Afmt_descriptors(rgb2gray(Project.ObjectCartesian),[K V], ... 'Area',[ObjectCentreX ObjectCentreY ObjectRadius], ... 'Method',ObjectMethod,'Size',ObjectSize); if get(handles.IgnoreK0_checkbox,'Value') == 1 Iobject(K+1,:) = zeros(1,2*V+1); end dzero = imdistance(Iobject,zeros(2*K+1,2*V+1)); Movie = getappdata(handles.ObMoDe,'Movie'); X = Project.MovieSizeX; Y = Project.MovieSizeY; Z = Project.MovieSizeZ; for z = 1:Z [CurrentFrame,Map] = frame2im(Movie(z)); frame{z} = im2double(ind2gray(CurrentFrame,Map)); end clear Object Movie MaxRadius = str2double(get(handles.MaximumObjectRadius_edit,'String')); MaxSpeed = str2double(get(handles.MaximumSpeed_edit,'String')); Size = str2double(get(handles.VideoLogpolarSize_edit,'String')); Method = get(handles.VideoInterpolationMethod_popupmenu,'String'); Method = Method{get(handles.VideoInterpolationMethod_popupmenu,'Value')}; for z = 1:Z if z == 1 if get(handles.SpecifyInitialPosition_checkbox,'Value') == 1 X0 = str2num(get(handles.InitialPositionX_edit,'String')); Y0 = str2num(get(handles.InitialPositionY_edit,'String')); mask{z} = logical(zeros(Y,X)); mask{z}(Y0,X0) = logical(1); se = strel('disk',4); mask{z} = imdilate(mask{z},se); else dif = abs(frame{z}-frame{z+1}); dif_max = max(max(dif)); temp1 = dif > dif_max/4; se = strel('disk',MaxRadius); temp2 = imclose(temp1,se); se = strel('disk',floor(MaxRadius/3)); mask{z} = imopen(temp2,se); end Radius(z) = MaxRadius; else mask{z} = logical(zeros(Y,X)); se = strel('disk',MaxSpeed); if get(handles.SlowMovement_checkbox,'Value') == 1 temp = logical(zeros(Y,X)); temp(PositionY(z-1),PositionX(z-1)) = logical(1); temp = imdilate(temp,se); mask{z} = mask{z} | temp; end if get(handles.FastMovement_checkbox,'Value') == 1 94 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ temp = logical(zeros(Y,X)); dif = abs(frame{z}-frame{z-1}); dif_max = max(max(dif)); temp = dif > dif_max/2; temp2 = temp & mask{z-1}; temp = temp-temp2; mask{z} = mask{z} | temp; end end for x = 1:X for y = 1:Y if mask{z}(y,x) Iframe = Afmt_descriptors(frame{z},[K V], ... 'Area',[x y Radius(z)], ... 'Method',Method,'Size',Size); if get(handles.IgnoreK0_checkbox,'Value') == 1 Iframe(K+1,:) = zeros(1,2*V+1); end d{z}(y,x) = imdistance(Iobject,Iframe); else d{z}(y,x) = NaN; end end end dmin(z) = min(min(d{z})); [PositionY(z),PositionX(z)] = find(d{z}==dmin(z)); if get(handles.VariableRadius_checkbox,'Value') == 1 NumRadius = 25; for r = 1:NumRadius VarRadius = (r-1)*(MaxRadius-(MaxRadius/3))/(NumRadius-1) + (MaxRadius/3); Iframe = Afmt_descriptors(frame{z},[K V], ... 'Area',[PositionX(z) PositionY(z) VarRadius], ... 'Method',Method,'Size',Size); d2{z}(r) = imdistance(Iobject,Iframe); end d2min(z) = min(min(d2{z})); r = find(d2{z}==d2min(z)); Radius(z+1) = (r-1)*(MaxRadius-(MaxRadius/3))/(NumRadius-1) + (MaxRadius/3); else Radius(z+1) = MaxRadius; end end for z = 1:Z if dmin(z) < 0.9*dzero Trusted(z) = logical(1); else Trusted(z) = logical(0); end end time = toc; 95 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Anexo C. Resultados usando el programa ObMoDe C.1. Bola en caída libre, prueba 1 Prueba con el vídeo de la bola en caída libre, especificando la posición inicial: Proyecto: Caida_con_posicion_inicial Video: c:\PFC\caida.avi Tamaño = 512 x 512 Fotogramas = 10 Objeto: c:\PFC\bola.bmp Centro = [ 33, 32 ] Radio = 15 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 15 Posicion inicial especificada -> si x=280, y=39 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> si Radio variable -> no Tiempo de calculo: 4 minutos 17.841 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 x y 281 279 279 279 279 279 279 279 280 280 39 40 50 75 114 167 233 312 405 503 dmin 0.330927 0.21683 0.026887 0.00824656 0.00814286 0.00721438 0.00479522 0.0134195 0.00853141 0.287115 96 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Posicion confiable: dcero = 1.44423 1 2 3 4 5 6 7 8 9 10 si si si si si si si si si si 97 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.2. Bola en caída libre, prueba 2 Prueba con el vídeo de la bola en caída libre, sin especificar la posición inicial: Proyecto: Caida_sin_posicion_inicial Video: c:\PFC\caida.avi Tamaño = 512 x 512 Fotogramas = 10 Objeto: c:\PFC\bola.bmp Centro = [ 33, 32 ] Radio = 15 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 15 Posicion inicial especificada -> no Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> si Radio variable -> no Tiempo de calculo: 4 minutos 40.473 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 x y 281 279 279 279 279 279 279 279 280 280 39 40 49 75 114 167 233 312 405 503 dmin 0.330927 0.21683 0.0138467 0.00824656 0.00814286 0.00721438 0.00479522 0.0134195 0.00853141 0.287115 Posicion confiable: dcero = 1.44423 1 2 3 4 5 6 7 si si si si si si si 98 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 8 9 10 si si si 99 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.3. Bola en caída libre, prueba 3 Prueba con el vídeo de la bola en caída libre, especificando la posición inicial y usando radio variable: Proyecto: Caida_con_radio_variable Video: c:\PFC\caida.avi Tamaño = 512 x 512 Fotogramas = 10 Objeto: c:\PFC\bola.bmp Centro = [ 33, 32 ] Radio = 15 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 15 Posicion inicial especificada -> no Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> si Radio variable -> si 1 15.00 2 10.00 3 10.00 4 10.00 5 11.67 6 14.17 7 15.00 8 15.00 9 15.00 10 15.00 Tiempo de calculo: 4 minutos 53.341 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 x y 281 280 283 281 281 279 279 279 280 280 39 41 44 69 110 167 233 312 405 503 dmin 0.330927 0.198684 0.179918 0.179082 0.139775 0.0211565 0.00479522 0.0134195 0.00853141 0.287115 Posicion confiable: 100 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ dcero = 1.44423 1 2 3 4 5 6 7 8 9 10 si si si si si si si si si si 101 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.4. Bola en caída libre, prueba 4 Prueba con el vídeo de la bola en caída libre, especificando la posición inicial e ignorando k = 0: Proyecto: Caida_con_posicion_inicial_ignorando_k0 Video: c:\PFC\caida.avi Tamaño = 512 x 512 Fotogramas = 10 Objeto: c:\PFC\bola.bmp Centro = [ 33, 32 ] Radio = 15 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> si Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 15 Posicion inicial especificada -> si x=281, y=39 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> si Radio variable -> no Tiempo de calculo: 4 minutos 17.09 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 x y 284 284 279 279 279 279 279 279 280 282 39 40 50 75 114 167 233 312 405 409 dmin 0.214646 0.151945 0.0226691 0.00554445 0.00674421 0.00475231 0.00292301 0.011144 0.00410605 0.0417353 Posicion confiable: dcero = 0.0460686 1 2 3 4 5 6 no no si si si si 102 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 7 8 9 10 si si si no 103 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.5. Video de tráfico, prueba 1 Prueba con el vídeo de coches en una vía para el primer coche, especificando la posición inicial: Proyecto: Coches_con_posicion_inicial Video: c:\PFC\coches.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 420, 250 ] Radio = 25 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 25 Posicion inicial especificada -> si x=420, y=250 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> no Tiempo de calculo: 6 minutos 30.672 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 x y 420 420 421 420 419 419 418 419 419 419 420 418 418 418 418 416 420 418 418 418 416 250 248 246 244 242 240 238 236 234 232 230 229 226 225 223 222 220 219 217 215 213 dmin 1.53003e-031 0.00296411 0.00870912 0.00807683 0.0205116 0.0216639 0.0215698 0.0205504 0.0223157 0.0265931 0.040893 0.0605591 0.0463159 0.0496616 0.0601548 0.0569771 0.06102 0.0738973 0.0785066 0.0800082 0.0780053 104 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 22 23 24 25 26 27 28 417 419 418 414 418 418 414 212 210 209 207 205 204 202 0.0622099 0.0772506 0.0928553 0.102047 0.0886841 0.101854 0.0985513 Posicion confiable: dcero = 1.55347 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 105 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.6. Video de tráfico, prueba 2 Prueba con el vídeo de coches en una vía para el segundo coche, especificando la posición inicial: Proyecto: Coches_con_posicion_inicial_2 Video: c:\PFC\coches.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 465, 228 ] Radio = 23 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 23 Posicion inicial especificada -> si x=466, y=229 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> no Tiempo de calculo: 6 minutos 29.25 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 x y 465 465 464 464 463 463 462 462 461 461 460 460 460 459 459 458 458 458 457 458 457 228 226 224 223 222 220 218 216 215 213 212 210 208 207 205 204 202 201 199 198 196 dmin 1.26679e-031 0.00666422 0.0171151 0.0181771 0.0171718 0.0159431 0.0154979 0.0180648 0.025794 0.023035 0.0267353 0.0303597 0.025723 0.0295593 0.0378323 0.0386289 0.0390489 0.044309 0.0398885 0.0418932 0.0454168 106 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 22 23 24 25 26 27 28 457 457 456 456 456 455 455 195 194 193 191 190 188 188 0.0407611 0.0432201 0.0454939 0.0430412 0.0530836 0.0550204 0.0457099 Posicion confiable: dcero = 1.61185 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 107 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.7. Video de tráfico, prueba 3 Prueba con el vídeo de coches en una vía para el primer coche, sin especificar la posición inicial: Proyecto: Coches_sin_posicion_inicial Video: c:\PFC\coches.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 420, 250 ] Radio = 25 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 25 Posicion inicial especificada -> no Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> no Tiempo de calculo: 26 minutos 30.948 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 x y 420 420 421 420 419 419 418 419 419 419 420 418 418 418 418 416 420 418 418 418 416 417 250 248 246 244 242 240 238 236 234 232 230 229 226 225 223 222 220 219 217 215 213 212 dmin 1.53003e-031 0.00296411 0.00870912 0.00807683 0.0205116 0.0216639 0.0215698 0.0205504 0.0223157 0.0265931 0.040893 0.0605591 0.0463159 0.0496616 0.0601548 0.0569771 0.06102 0.0738973 0.0785066 0.0800082 0.0780053 0.0622099 108 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 23 24 25 26 27 28 419 418 414 418 418 414 210 209 207 205 204 202 0.0772506 0.0928553 0.102047 0.0886841 0.101854 0.0985513 Posicion confiable: dcero = 1.55347 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 109 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.8. Video de tráfico, prueba 4 Prueba con el vídeo de coches en una vía para el primer coche, especificando la posición inicial y usando radio variable: Proyecto: Coches_con_radio_variable Video: c:\PFC\coches.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 420, 250 ] Radio = 25 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 25 Posicion inicial especificada -> si x=420, y=251 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> si 1 25.00 2 25.00 3 25.00 4 25.00 5 25.00 6 25.00 7 25.00 8 25.00 9 24.31 10 24.31 11 23.61 12 23.61 13 22.92 14 22.22 15 22.92 16 25.00 17 25.00 18 23.61 19 22.92 20 22.92 21 22.92 22 22.92 23 22.92 24 20.83 25 19.44 26 20.14 27 19.44 28 19.44 110 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ Tiempo de calculo: 7 minutos 21.345 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 x y 420 420 421 420 419 419 418 419 419 419 419 420 418 418 418 416 420 418 418 417 416 417 418 419 415 418 416 414 250 248 246 244 242 240 238 236 234 232 230 228 226 225 223 222 220 219 217 215 213 212 210 208 206 205 203 201 dmin 1.53003e-031 0.00296411 0.00870912 0.00807683 0.0205116 0.0216639 0.0215698 0.0205504 0.0192589 0.0364965 0.0172947 0.0439194 0.0234795 0.0322467 0.0632376 0.0569771 0.06102 0.0588717 0.0498945 0.0545915 0.0540716 0.0424731 0.0455587 0.0565428 0.051847 0.0416545 0.0382121 0.0673734 Posicion confiable: dcero = 1.55347 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 111 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.9. Video de tráfico, prueba 5 Prueba con el mismo vídeo de coches, pero digitalizado sin compresión y compensando por el entrelazado. Para el primer coche, especificando la posición inicial: Proyecto: Coches2_con_posicion_inicial Video: c:\PFC\Coches2.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 420, 250 ] Radio = 25 Tamaño = 32 x 32 Metodo de interpolacion = nearest Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = nearest Radio maximo del objeto = 25 Posicion inicial especificada -> si x=419, y=251 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> no Tiempo de calculo: 6 minutos 58.352 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 x y 420 420 420 419 419 419 419 419 418 419 418 418 418 418 418 416 418 418 417 250 248 246 244 242 240 238 236 234 232 230 229 227 225 223 221 220 219 217 dmin 1.43864e-031 0.00682935 0.00884323 0.00917912 0.0152779 0.0178657 0.0187988 0.0196352 0.0215433 0.0303127 0.0304038 0.0388993 0.039214 0.042547 0.047115 0.0528559 0.0474957 0.0532026 0.0501531 112 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 20 21 22 23 24 25 26 27 28 416 416 416 417 417 417 415 415 417 215 213 211 210 208 206 205 203 202 0.0624397 0.0620621 0.0721109 0.0688744 0.0689072 0.0807965 0.0784683 0.0831674 0.0856042 Posicion confiable: dcero = 1.52753 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 113 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ C.10. Video de tráfico, prueba 6 Prueba con el mismo vídeo de coches, pero digitalizado sin compresión y compensando por el entrelazado. Para el primer coche, especificando la posición inicial usando interpolación bilineal: Proyecto: Coches2_con_interpolacion_linear Video: c:\PFC\Coches2.avi Tamaño = 720 x 576 Fotogramas = 28 Objeto: Movie frame no. 1 Centro = [ 420, 250 ] Radio = 25 Tamaño = 32 x 32 Metodo de interpolacion = linear Determinacion de las posiciones: K = 10 V = 10 Ignorar k = 0 -> no Tamaño = 32 x 32 Metodo de interpolacion = linear Radio maximo del objeto = 25 Posicion inicial especificada -> si x=421, y=251 Movimiento lento -> si velocidad maxima = 5 Movimiento rapido -> no Radio variable -> no Tiempo de calculo: 6 minutos 48.257 segundos Posiciones: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 x y 420 420 419 419 418 418 418 419 418 419 418 419 418 417 417 416 417 417 417 250 248 246 244 242 240 238 236 234 232 230 228 227 225 223 221 220 219 217 dmin 4.76442e-032 0.00320878 0.00962361 0.00946262 0.0180781 0.0187868 0.0189941 0.020658 0.0203819 0.0243617 0.0286942 0.0377882 0.0401915 0.0413421 0.045174 0.0491888 0.0460469 0.0523431 0.0473538 114 Determinación de la posición de objetos en imágenes usando la AFMT Proyecto Fin de Carrera ______________________________________________________________________________________________ 20 21 22 23 24 25 26 27 28 416 416 415 417 417 415 415 416 417 215 213 211 210 208 207 205 203 202 0.060895 0.0572296 0.0675528 0.063721 0.067468 0.0772211 0.073373 0.0795433 0.0806659 Posicion confiable: dcero = 1.52425 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 si si si si si si si si si si si si si si si si si si si si si si si si si si si si 115