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

Documentos relacionados