Superior de Ensenada, Baja California
MR
Maestr´ıa en Ciencias
en Ciencias de la Computaci ´
on
Optimizaci ´
on del flujo ´
optico usando programaci ´
on gen ´etica
multi- ´arbol
Tesis
para cubrir parcialmente los requisitos necesarios para obtener el grado de Maestro en Ciencias
Presenta:
H ´ector Cepeda Ju ´arez
H ´ector Cepeda Ju ´arez
y aprobada por el siguiente Comit ´e
Dr. Gustavo Olague Caballero
Codirector del Comit ´e
Dr. Pedro Gilberto L ´opez Mariscal
Codirector del Comit ´e
Dr. Ubaldo Ru´ız L ´opez
Dra. Mar´ıa del Carmen Maya Sanch ´ez
Dra. Carmen Guadalupe Paniagua Ch ´avez
Dr. Jes ´us Favela Vara
Coordinador del Programa de Posgrado en Ciencias de la Computaci ´on
Dra. Rufina Hern ´andez Mart´ınez Directora de Estudios de Posgrado
H ´ector Cepeda Ju ´arez © 2017
Resumen de la tesis que presentaH ´ector Cepeda Ju ´arez como requisito parcial para la obten-ci ´on del grado de Maestro en Cienobten-cias en Cienobten-cias de la Computaobten-ci ´on
Optimizaci ´on del flujo ´optico usando programaci ´on gen ´etica multi- ´arbol
Resumen aprobado por:
Dr. Gustavo Olague Caballero
Codirector de Tesis
Dr. Pedro Gilberto L ´opez Mariscal
Codirector de Tesis
La visi ´on por computadora es una rama de la inteligencia artificial, que tiene por objetivo mo-delar matem ´aticamente los procesos de percepci ´on visual en los seres vivos y generar programas que permitan simular estas capacidades visuales en una computadora. La estimaci ´on del flujo ´optico es uno de los problemas en la visi ´on por computadora que lleva estudiandose desde hace varias d ´ecadas, se origina por el cambio en los patrones de la intensidad en la imagen debido al movimiento aparente de los objetos que se encuentran en la escena. ConsiderandoI(x, y, t)como la intensidad de la imagen en un punto(x, y)en un tiempot, el objetivo es estimar un vector(u, v)
para cada punto en la imagen, tal queI(x, y, t)yI(x+u, y+v, t+ 1)sean correspondientes. En este trabajo de tesis se describe una t ´ecnica basada en la programaci ´on gen ´etica, que es capaz de construir operadores de manera autom ´atica para optimizar el flujo ´optico de una secuencia de im ´agenes, con la finalidad de mejorar la precisi ´on en la estimaci ´on y as´ı obtener resultados com-petitivos comparado con m ´etodos propuestos por expertos. Para medir la precisi ´on del flujo ´optico obtenido, se emplea el conjunto de secuencias de im ´agenes de la base de datos de Middlebury para flujo ´optico.
Abstract of the thesis presented byH ´ector Cepeda Ju ´arez as a partial requirement to obtain the Master of Science degree in Master in Computer Science in Computer science.
Optical flow optimization using multi-tree genetic programming
Abstract approved by:
Dr. Gustavo Olague Caballero
Thesis Co-Director
Dr. Pedro Gilberto L ´opez Mariscal
Thesis Co-Director
Computer vision is a branch of Artificial Intelligence with the aim of generating computer pro-grams that imitate the human visual process. Optical flow is a computer vision problem that origi-nates from the change of pattern intensities on the image due to the apparent motion of objects in the scene. We can defineI(x, y, t)as the intensity function of image at a point(x, y)at timet, the goal is estimate a vector(u, v)for each point in the image such thatI(x, y, t)andI(x+u, y+v, t+1)
are corresponding. This document describes a technique based on genetic programming which is able to construct automatically operators to optimize the optical flow of a sequence of images, in order to improve the precision in the estimation and thus obtaining competitive results compared with methods proposed by experts. In order to measure the precision of the optical flow, we use the set of image sequences from the Middlebury database for optical flow.
Dedicatoria
Agradecimientos
A mi familia, en especial a mis padres, que siempre me han impulsado a seguir adelante,
por creer en m´ı y ser parte fundamental en el cumplimiento de mis metas, por estar siempre
ah´ı d ´andome consejos, una llamada de atenci ´on cuando la merecia y unas palabras de aliento
cuando m ´as las he necesitado. Estar ´e eternamente agradecido con ustedes.
Agradezco a mis asesores, el Dr. Gustavo Olague y el Dr. Gilberto L ´opez por su paciencia y
por haberme guiado a la culminaci ´on de esta tesis, as´ı como a los miembros de mi comit ´e por sus
comentarios y aportes para este trabajo.
Gracias a mis compa ˜neros del posgrado y amigos Mariana, Juan, Selene, Jessica y Luis, por
su amistad y por haber hecho m ´as amena mi estad´ıa en estos a ˜nos de estudio.
A mis amigos de hace ya varios a ˜nos que se mantuvieron al pendiente de m´ı durante el tiempo
que pas ´e en la ciudad de Ensenada, en especial a Jonathan, N ´estor, Javier, Gloria y Araceli, que
de una u otra manera me han brindado su apoyo y buena vibra, se los agradezco.
Al Centro de Investigaci ´on Cient´ıfica y de Educaci ´on Superior de Ensenada.
Al Consejo Nacional de Ciencia y Tecnolog´ıa (CONACyT) por brindarme el apoyo econ ´omico
Tabla de contenido
P ´agina
Resumen en espa ˜nol . . . ii
Resumen en ingl ´es . . . iii
Dedicatoria . . . iv
Agradecimientos . . . v
Lista de figuras . . . vii
Lista de tablas . . . xi
1. Introducci ´on . . . . 1
1.1 Objetivo General . . . 1
1.2 Objetivos Espec´ıficos . . . 2
1.3 Organizaci ´on del documento . . . 2
2. Marco te ´orico . . . . 3
2.1 Introducci ´on . . . 3
2.2 Flujo ´Optico . . . 4
2.2.1 Clasificaci ´on de los m ´etodos . . . 8
2.2.2 M ´etodo de Horn & Schunck . . . 8
2.2.3 M ´etodo de Lucas & Kanade . . . 11
2.2.4 Flujo ´optico usando un esquema multi-resoluci ´on. . . 13
2.2.5 Representaci ´on visual del flujo ´optico . . . 16
2.3 C ´omputo evolutivo y flujo ´optico . . . 18
2.4 Medidas de evaluaci ´on en la estimaci ´on de flujo ´optico. . . 19
3. Programaci ´on Gen ´etica . . . . 21
3.1 C ´omputo Evolutivo . . . 21
3.2 Conceptos b ´asicos de la programacion gen ´etica . . . 21
3.2.1 Funciones y terminales . . . 23
3.2.2 M ´etodos de inicializaci ´on de la poblaci ´on . . . 24
3.3 Aptitud y selecci ´on . . . 25
3.3.1 Operadores gen ´eticos . . . 25
4. Desarrollo de la propuesta . . . . 28
4.1 Funci ´on de transformaci ´on de imagen . . . 28
4.1.1 Mapeo hacia adelante . . . 29
4.1.2 Mapeo hacia atr ´as . . . 30
4.2 Descripci ´on del algoritmo propuesto . . . 31
4.2.1 Primera propuesta . . . 32
4.2.2 Segunda propuesta . . . 42
4.3 Implementaci ´on . . . 45
5. Experimentos y resultados . . . . 46
5.1 Experimentos realizados . . . 46
5.1.1 gpPLK . . . 50
5.1.2 gpPLKColor . . . 67
6. Conclusiones . . . . 88
6.1 Conclusiones . . . 88
6.2 Trabajo Futuro . . . 89
Lista de figuras
Figura P ´agina
1 Flujo ´optico al momento de un aterrizaje (Gibson, 1950) . . . 3
2 Flujo ´optico. Secuencia Yosemite . . . 4
3 Ejemplo de la restricci ´on de conservaci ´on de los Datos. . . 5
4 Discontinuidades en el movimiento dentro de un vecindario de p´ıxeles (Black,1992) 6 5 Problema de apertura (Mallot, 2000) . . . 7
6 Esquema Multi-resoluci ´on. . . 14
7 Representaci ´on del flujo por medio de vectores . . . 17
8 Representaci ´on del flujo por medio de c ´odigo de colores . . . 17
9 Representaci ´on gr ´afica de los errores AAE y EPE . . . 20
10 Diagrama de flujo de un algoritmo evolutivo . . . 22
11 Rama de un ´arbol . . . 23
12 Ejemplo del operador cruce . . . 26
13 Ejemplo del operador mutaci ´on . . . 27
14 Mapeo hacia adelante . . . 30
15 Mapeo hacia atr ´as . . . 31
16 Estructura de un individuo . . . 37
17 Cruce a nivel gen . . . 38
18 Cruce a nivel gen . . . 38
19 Cruce a nivel cromosoma . . . 39
20 Mutaci ´on a nivel cromosoma . . . 39
21 Secuencias evaluadas . . . 47
22 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Di-metrodon . . . 51
23 Evoluci ´on de la mejor ejecuci ´on para la secuencia Dimetrodon . . . 51
24 Frecuencia de uso de funciones para la secuencia Dimetrodon . . . 52
25 Flujo estimado para la secuencia Dimetrodon — AAE 11.2592 EPE 0.5514 . . . 52
26 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Groove2 53 27 Evoluci ´on de la mejor ejecuci ´on para la secuencia Groove2 . . . 53
28 Frecuencia de uso de funciones para la secuencia Groove2 . . . 54
Figura P ´agina
30 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia
Groo-ve3 . . . 55
31 Evoluci ´on de la mejor ejecuci ´on para la secuencia Groove3 . . . 55
32 Frecuencia de uso de funciones para la secuencia Groove2 . . . 56
33 Flujo estimado para la secuencia Groove3 — AAE 13.5088 EPE 1.4215 . . . 56
34 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Hy-drangea . . . 57
35 Evoluci ´on de la mejor ejecuci ´on para la secuencia Hydrangea . . . 57
36 Frecuencia de uso de funciones para la secuencia Hydrangea . . . 58
37 Flujo estimado para la secuencia Hydrangea — AAE 6.3062 EPE 0.5769 . . . 58
38 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Rub-berWhale . . . 59
39 Evoluci ´on de la mejor ejecuci ´on para la secuencia RubberWhale . . . 59
40 Frecuencia de uso de funciones para la secuencia RubberWhale . . . 60
41 Flujo estimado para la secuencia RubberWhale — AAE 11.1924 EPE 0.3565 . . . . 60
42 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Urban2 61 43 Evoluci ´on de la mejor ejecuci ´on para la secuencia Urban2 . . . 61
44 Frecuencia de uso de funciones para la secuencia Urban2 . . . 62
45 Flujo estimado para la secuencia Urban2 — AAE 23.8622 EPE 5.4499 . . . 62
46 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Urban3 63 47 Evoluci ´on de la mejor ejecuci ´on para la secuencia Urban3 . . . 63
48 Frecuencia de uso de funciones para la secuencia Urban2 . . . 64
49 Flujo estimado para la secuencia Urban3 — AAE 31.2206 EPE 5.0296 . . . 64
50 Evoluci ´on promedio de 30 ejecuciones del programa de GP para la secuencia Venus 65 51 Evoluci ´on de la mejor ejecuci ´on para la secuencia Venus . . . 65
52 Frecuencia de uso de funciones para la secuencia Venus . . . 66
53 Flujo estimado para la secuencia Venus — AAE 19.0584 EPE 1.4211 . . . 66
54 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Di-metrodon . . . 68
55 Frecuencia de uso de funciones y terminales del operador de color en la secuencia Dimetrodon . . . 68
Figura P ´agina
57 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la secuencia Dimetrodon . . . 69
58 Flujo estimado para la secuencia Dimetrodon— AAE 3.4191 EPE 0.1686 . . . 70 59 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Groove2 70
60 Frecuencia de uso de funciones y terminales del operador de color en la secuencia Groove2 . . . 71
61 Frecuencia de uso de funciones del operador de flujo en la secuencia Groove2 . . . 71 62 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la
secuencia Groove2 . . . 72 63 Flujo estimado para la secuencia Dimetrodon— AAE 4.4269 EPE 0.30338 . . . 72
64 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Groove3 73 65 Frecuencia de uso de funciones y terminales del operador de color en la secuencia
Groove3 . . . 73 66 Frecuencia de uso de funciones del operador de flujo en la secuencia Groove3 . . . 74
67 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la secuencia Groove3 . . . 74 68 Flujo estimado para la secuencia Groove3— AAE 11.579 EPE 1.2465 . . . 75
69 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Hy-drangea . . . 75
70 Frecuencia de uso de funciones y terminales del operador de color en la secuencia Hydrangea . . . 76
71 Frecuencia de uso de funciones del operador de flujo en la secuencia Hydrangea . 76 72 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la
secuencia Hydrangea . . . 77 73 Flujo estimado para la secuencia Hydrangea— AAE 5.1464 EPE 0.46108 . . . 77
74 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Rub-berWhale . . . 78 75 Frecuencia de uso de funciones y terminales del operador de color en la secuencia
RubberWhale . . . 78 76 Frecuencia de uso de funciones del operador de flujo en la secuencia RubberWhale 79
77 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la secuencia RubberWhale . . . 79
Figura P ´agina
80 Frecuencia de uso de funciones y terminales del operador de color en la secuencia Urban2 . . . 81
81 Frecuencia de uso de funciones del operador de flujo en la secuencia Urban2 . . . . 81 82 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la
secuencia Urban2 . . . 82
83 Flujo estimado para la secuencia Urban2— AAE 23.5533 EPE 5.407 . . . 82
84 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Urban3 83 85 Frecuencia de uso de funciones y terminales del operador de color en la secuencia
Urban3 . . . 83
86 Frecuencia de uso de funciones del operador de flujo en la secuencia Urban3 . . . . 84 87 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la
secuencia Urban3 . . . 84 88 Flujo estimado para la secuencia Urban3— AAE 26.1154 EPE 5.0262 . . . 85
89 Evoluci ´on promedio de 15 ejecuciones del programa de GP para la secuencia Venus 85 90 Frecuencia de uso de funciones y terminales del operador de color en la secuencia
Venus . . . 86 91 Frecuencia de uso de funciones del operador de flujo en la secuencia Venus . . . . 86
92 Frecuencia de uso de funciones y terminales de la funci ´on de integraci ´on en la secuencia Venus . . . 87
Lista de tablas
Tabla P ´agina
1 Funciones y terminales . . . 35
2 Funciones y terminales para la dimensi ´on de color . . . 43
3 Funciones y terminales para la correcci ´on de flujo . . . 43
4 Funciones y terminales para la funci ´on de integraci ´on de operadores . . . 43
5 Tabla comparativa — M ´etodos de estimaci ´on de flujo ´optico . . . 46
6 Tabla comparativa — resultados preliminares . . . 48
7 Evaluaci ´on de los mejores individuos obtenidos en todas las secuencias . . . 49
8 Tabla comparativa—resultados finales . . . 49
9 Parametros GP . . . 50
Cap´ıtulo 1.
Introducci ´
on
La visi ´on por computadora es una rama de la inteligencia artificial, que tiene por objetivo mo-delar matem ´aticamente los procesos de percepci ´on visual en los seres vivos y generar programas que permitan simular estas capacidades visuales en una computadora. La estimaci ´on del flujo ´opti-co es uno de los problemas que pertenece a la visi ´on por ´opti-computadora que m ´as se ha estudiado en los ultimos a ˜nos as´ı; nuevos m ´etodos se han introducido y algunos otros m ´as se han mejorado. Dentro de las aplicaci ´ones que tiene y no limitandos ´e a ´estas podemos encontrar seguimiento de objetos, detecci ´on de movimiento , segmentaci ´on de objetos.
El flujo ´optico se puede definir como el campo de velocidad en 2D que se origina debido al movimiento aparente de los objetos dentro de una secuencia de im ´agenes. ConsiderandoI(x, y, t)
como la intensidad de la imagen en un punto(x, y)en un tiempot, el objetivo es estimar un vector de velocidad(u, v) para cada punto en la imagen, tal que I(x, y, t) y I(x+u, y+v, t+ 1)sean correspondientes.
Dentro de los m ´etodos que se encuentran en la literatura para realizar la estimaci ´on del flujo ´optico destaca el propuesto por (Horn, 1981), en el cual introdujo una restricci ´on global para el campo de velocidad en la que se asume que el flujo var´ıa de manera suave. Este m ´etodo ha servido como base para otros m ´as que se han venido desarrollando y perfeccionando a lo largo del tiempo y m ´as adelante se abordar ´a con m ´as detalle.
A pesar de la diversidad de los m ´etodos existentes y la precisi ´on con la que estos estiman el flujo ´optico, hoy en d´ıa siguen presentandose ciertas dificultades al momento de realizar la esti-maci ´on, como lo son las discontinuidades de movimiento debido al solapamiento entre objetos, desplazamientos largos, cambios en la iluminaci ´on de la escena as´ı como los costos computacio-nales, lo que lo hace un problema que sigue abierto para la propuesta de nuevos m ´etodos que realicen de manera m ´as precisa y r ´apida la estimaci ´on de los vectores de flujo.
1.1. Objetivo General
precisi ´on en la estimaci ´on mejor a la que es obtenida por m ´etodos propuestos por expertos. Para medir el rendimiento de la estimaci ´on se usar ´a el conjunto de secuencias de la base de datos de Middlebury para flujo ´optico.
1.2. Objetivos Espec´ıficos
• Analizar algunos de los m ´etodos que realicen la estimaci ´on del flujo ´optico que se encuentren en la literatura.
• Proponer un m ´etodo para realizar la estimaci ´on del flujo ´optico bajo la estrategia de programa-ci ´on gen ´etica.
• Realizar la implementaci ´on del m ´etodo en Matlab.
• Evaluar los resultados obtenidos con la implementaci ´on.
1.3. Organizaci ´on del documento
En el Cap´ıtulo 2 se revisa los conceptos de la estimaci ´on del flujo ´optico, se abordan los m ´etodos propuestos por Horn-Schunck as´ı como el de Lucas-Kanade. Tambi ´en se ven los tipos de representaci ´on visual para el flujo ´optico, as´ı como las m ´etricas para evaluar la precisi ´on en su estimaci ´on.
El Cap´ıtulo 3 trata sobre programaci ´on gen ´etica, que es una t ´ecnica de computo evolutivo usada en el desarrollo del presente trabajo de tesis.
El Cap´ıtulo 4 trata del m ´etodo propuesto para mejorar la precisi ´on en la estimaci ´on del flujo ´optico. Se describen los detalles de la implementaci ´on asi como algunas t ´ecnicas de procesa-miento de im ´agenes utilizadas.
Cap´ıtulo 2.
Marco te ´
orico
2.1. Introducci ´on
La estimaci ´on del Flujo ´optico es uno de los problemas en la visi ´on por computadora que lleva estudiandose desde hace varias d ´ecadas. El fen ´omeno estudiado se origina por el cambio en los patrones de la intensidad en la imagen debido a el movimiento aparente de los objetos que se encuentran en la escena o bien del movimiento del observador.
Este t ´ermino fue introducido por primera vez por el psic ´ologo James J. Gibson, mientras reali-zaba investigaci ´on en psicolog´ıa de la aviaci ´on durante la segunda guerra mundial. En su trabajo (Gibson, 1950) habla sobre informaci ´on percibida por un observador y como esta es usada para guiar su movimiento dentro de su entorno, as´ı descubri ´o que los cambios en lo que el deno-min ´o como ”patrones de flujo ´optico”, proveen de informaci ´on al observador acerca de que tipo de movimiento se esta realizando.
Figura 1.Flujo ´optico al momento de un aterrizaje (Gibson, 1950)
corta distancia ya que su movimiento es r ´apido, mientras que para las flechas de menor tama ˜no es todo lo contrario es decir, son puntos que se encuentran a mayor distancia con respecto al observador y que aparentemente su movimiento es lento.
2.2. Flujo ´Optico
El flujo ´optico es originado por el movimiento aparente de los objetos en una secuencia de im ´agenes. Se defineI(x, y, t)como una funci ´on de la intensidad de la imagen en un punto(x, y)
en un tiempot. Cuando este punto se mueve a lo largo de la secuencia, existe un vectorv que describe su desplazamiento tanto horizontal como vertical. El objetivo es estimar un vector de velocidad(u, v)para cada punto en la imagen, tal queI(x, y, t)yI(x+u, y+v, t+ 1)sean corres-pondientes.
Entre las aplicaciones que tiene, por mencionar algunas podemos encontrar seguimiento de objetos, detecci ´on de movimiento, segmentaci ´on de objetos en base a movimiento.
Figura 2.Flujo ´optico. Secuencia Yosemite
los objetos dentro de la escena pero los valores de la intensidad deben permanecer constantes.
I(x+u, y+v, t+ 1) =I(x, y, t) (1)
Figura 3.Ejemplo de la restricci ´on de conservaci ´on de los Datos.
Esto es que la intensidad en la imagen en un punto(x, y) en un tiempo t, es la misma para la imagen en un instantet+ 1, en donde el punto(x, y)ha tenido un desplazamientou en el eje horizontal y un desplazamientoven el vertical. En la pr ´actica esta restricci ´on puede ser infringida al existir cambios en la iluminaci ´on de la escena o simplemente por ruido que pudiera generar el sensor.
Asumiendo que esta restricci ´on se cumple para todos los pixeles en la imagen, se puede formular una funci ´on objetivo a minimizar de la siguiente forma:
ED(u,v) = X
S
(I(x+u, y+v, t+ 1)−I(x, y, t))2 (2)
en dondeED es una suma que considera todos los p´ıxeles de la imagen y es una funci ´on de los
vectores de flujouyvque corresponden a los desplazamientos horizontales y verticales.
Otra suposici ´on que se hace con respecto al flujo dice que puntos vecinos en una regi ´on de la imagen pertenecen a un mismo objeto ´o superficie y por lo tanto se espera que el flujo varie de manera suave.
Up=Un n∈G(p) (3)
Esta restricci ´on en ocasiones tambi ´en es violada debido a las discontinuidades que pueden presentarse en el movimiento de los objetos, como al existir solapamiento entre ellos y considerar que un conjunto de puntos pertenecen a un mismo objeto cuando en realidad podria pertenecer a otro y tener un movimiento completamente diferente.
Figura 4.Discontinuidades en el movimiento dentro de un vecindario de p´ıxeles (Black,1992)
De manera formal esta restricci ´on puede ser escrita como:
ES(u,v) = X
n∈G(s)
(us−un)2+ X
n∈G(s)
(vs−vn)2 (4)
Considerando ambas restricciones tenemos una funci ´on de minimizacion de energia:
E(u,v) =ED(u,v) +λES(u,v) (5)
De manera desarrollada
E(u,v) =X S
(I(x+u, y+v, t+ 1)−I(x, y, t))2
+λ
X
n∈G(s)
(us−un)2+ X
n∈G(s)
(vs−vn)2
(6)
utiliza una aproximaci ´on por serie de Taylor.
ED(u,v) = X
S
(I(x+u, y+v, t+ 1)−I(x, y, t))2
dx=u, dy=v, dt= 1
I(x, y, t) +dx ∂
∂xI(x, y, t) +dy ∂
∂yI(x, y, t) +dt ∂
∂tI(x, y, t)−I(x, y, t) = 0
Simplificando:
u ∂
∂xI(x, y, t) +v ∂
∂yI(x, y, t) + ∂
∂tI(x, y, t) = 0
La ecuaci ´on anterior puede reescribirse como:
Ixu+Iyv+It= 0 (7)
o bien
∇I·~v=−It
en donde u, v son los vectores de desplazamiento horizontal y vertical en un punto en la ima-gen.Ix, Iy y It corresponde a las derivadas parciales de la intensidad de la imagen enx, y y t
respectivamente. A esta ecuaci ´on se le conoce como la ecuaci ´on de restricci ´on de flujo ´optico.
Evaluando la Ecuaci ´on 7 en un solo punto en la imagen, tenemos una ecuaci ´on con dos in-cognitas (u, v), por lo que es necesario contar con m ´as informaci ´on. Esto da origen a lo que se conoce como ”Problema de apertura”, en el cual al observar el movimiento en un punto de un borde a trav ´es de una apertura, el movimiento que se tiene es ambiguo y solo se puede recuperar el movimiento que es perpendicular a la orientaci ´on de dicho borde.
2.2.1. Clasificaci ´on de los m ´etodos
Los m ´etodos que existen dentro de la literatura para la estimaci ´on del flujo ´optico pueden ser clasificados de acuerdo a (Barron, 1994) de la siguiente manera:
• M ´etodos Diferenciales.
En ellos, se calcula el desplazamiento que tienen los p´ıxeles usando derivadas espaciotem-porales de las intensidades de la imagen. Uno de los m ´etodos m ´as representativos de esta clasificaci ´on es el propuesto por (Horn, 1981), el cual se abordar ´a m ´as adelante.
• M ´etodos basados en la correlaci ´on.
En este tipo de m ´etodos se realiza la busqueda de correspondencia utilizando peque ˜nas ventanas o patrones alrededor de cada p´ıxel que componen la imagen, con la finalidad de maximizar alguna medida de similaridad. Algunos m ´etodos que caben dentro de esta clasifi-caci ´on son los propuestos por Kalivas (1991), Kories (1986), Sutton (1983), Little (1988), por mencionar algunos.
• M ´etodos basados en la Frecuencia.
Utilizan la transformada de Fourier para calcular el flujo ´optico a trav ´es del dominio de la frecuencia. Algunos de los trabajos que destacan en esta clasificaci ´on son los de Watson (1985), Adelson (1985), Fleet (1990), Heeger (1988).
2.2.2. M ´etodo de Horn & Schunck
Uno los primeros trabajos en formalizar un m ´etodo computacional para determinar el flujo ´optico entre un par de im ´agenes fue el propuesto por (Horn, 1981). En el parten de la formulaci ´on cl ´asica de la funci ´on objetivo del flujo ´optico y proponen un m ´etodo para optimizarla.
E(u,v) =X S
(Ixu+Iyv+It)2+λ X
n∈G(s)
(us−un)2+ (vs−vn)2
Para aproximar las derivadas parciales de la intensidad de la imagen (Ix, Iy, It), se utilizan
kcorresponde al tiempo.
Ix≈ 1 4
Ii,j+1,k−Ii,j,k+Ii+1,j+1,k−Ii+1,j,k+
Ii,j+1,k+1−Ii,j,k+1+Ii+1,j+1,k+1−Ii+1,j,k+1
Iy ≈ 1 4
Ii+1,j,k−Ii,j,k+Ii+1,j+1,k−Ii,j+1,k+
Ii+1,j,k+1−Ii,j,k+1+Ii+1,j+1,k+1−Ii,j+1,k+1
It≈ 1 4
Ii,j,k+1−Ii,j,k+Ii+1,j,k+1−Ii+1,j,k+
Ii,j+1,k+1−Ii,j+1,k+Ii+1,j+1,k+1−Ii+1,j+1,k
(8)
Acorde al trabajo de Horn-Schunck, una manera de expresar la restricci ´on de suavidad de la Ecuaci ´on (4), es minimizando el cuadrado de la magnitud del gradiente de los vectores de flujo.
∂u ∂x 2 + ∂u ∂y 2 y ∂v ∂x 2 + ∂v ∂y 2 (9) ´
O tambi ´en como la suma de los cuadrados del Laplaciano de las componentes enxyydel flujo, que son definidos como:
∇2u= ∂2u
∂x2 +
∂2u
∂y2 y ∇
2v= ∂2v
∂x2 +
∂2v
∂y2 (10)
Para realizar la aproximaci ´on del Laplaciano deuyv:
Dondeuyv, son los promedios deuyvdentro de un vecindario y estan definidos como:
ui,j,k = 1 6
ui−1,j,k+ui,j+1,k+ui+1,j,k+ui,j−1,k +
1 12
ui−1,j−1,k+ui−1,j+1,k+ui+1,j+1,k+ui+1,j−1,k
vi,j,k = 1 6
vi−1,j,k+vi,j+1,k+vi+1,j,k+vi,j−1,k +
1 12
vi−1,j−1,k+vi−1,j+1,k+vi+1,j+1,k+vi+1,j−1,k
(11)
Para realizar la estimaci ´on del flujo ´optico, Horn-Schunck propone un m ´etodo iterativo por medio del m ´etodoGauss-Seidel.
un+1 = u n−I
x[Ixun+Iyvn+It] (α2+I2
x+Iy2)
vn+1= v
n−Ix[I
xun+Iyvn+It] (α2+I2
x+Iy2)
(12)
donde el super´ındicendenota en este caso el n ´umero de iteraci ´on,Ix, Iy y Itson las
Algoritmo 1M ´etodo de Horn-Schunck
Descripci ´on: Realiza la estimaci ´on del flujo ´optico entre dos im ´agenes mediante el m ´etodo de Horn-Schunck.
Entrada:
• Im1, Im2: Dos im ´agenes subsecuentes en escala de grises.
• α: Par ´ametro que indica la influencia de la restricci ´on de suavidad.
• nIter: N ´umero de iteraci ´ones.
Variables:
• u, v: Componentes de flujo ´optico en direcci ´onx, yrespectivamente.
• Ix, Iy, It: Derivadas parciales de la intensidad de la imagen con respecto ax, y, t. • u y v: Promedios deu y v dentro de un vecindario.
• n: Contador de iteraci ´ones.
Salida:(u, v)Componentes del flujo ´optico para la secuencia de entrada.
Inicio
1: u←0
2: v←0
3: n←0
4: Ix, Iy, It←calcular mediante (8)→Im1, Im2
5: whilen < nIterdo
6: u, v←Calculau, vmediante (11)
7: u, v←Calculau, vmediante (12)
8: n←n+ 1
9: end while
10: return[u, v]
2.2.3. M ´etodo de Lucas & Kanade
Otro de los m ´etodos cl ´asicos para realizar la estimaci ´on del flujo ´optico es el que fue propuesto por (Lucas, 1981). Este parte de que la Ecuaci ´on (7) se cumple para todos los pixeles dentro de un vecindario de tama ˜no n que tiene como centro un pixel p, de tal forma que se resuelve el sistema de ecuaciones resultantes para dicho vecindario y el vector resultante v se asigna a el puntop.
Para un vecindario de tama ˜nonse tendr´ıa un sistema de ecuaciones de la siguiente manera:
Ix1u + Iy1v = −It1
Ix2u + Iy2v = −It2
.. .
en dondeIxi, Iyi y Iti, corresponden a las derivadas parciales de la intensidad con
respec-to a x, y, t respectivamente evaluadas en el punto i de la imagen. Como podemos observar se tiene un sistema de ecuaciones sobredeterminado, ya que el n ´umero de ecuaciones sobrepasa al n ´umero de inc ´ognitas. Reescribiendo el sistema de ecuaciones de manera matricial de la forma
Av=b:
A=
Ix1 Iy1
Ix2 Iy2
.. . ...
Ixn Iyn
, v=
u
v
, b=
−It1
−It2
.. . −Itn
El vectorvse obtiene de la siguiente manera:
Av=b
ATAv=ATb
v= (ATA)−1ATb
Donde:
ATA=
Pn
i=1Ixi2
Pn
i=1IxiIyi Pn
i=1IxiIyi
Pn i=1Iyi2
−1
ATb=
Pn
i=1IxiIti Pn
i=1IyiIti
Para dar soluci ´on a la ecuaci ´onv = (ATA)−1ATb , la matrizATA debe de ser invertible. En la
Algoritmo 2M ´etodo de Lucas-Kanade
Descripci ´on: Realiza la estimaci ´on del flujo ´optico entre dos im ´agenes mediante el m ´etodo de Lucas-Kanade.
Entrada:
• Im1, Im2 : Dos im ´agenes subsecuentes en escala de grises.
• w : N ´umero entero que indica el tama ˜no del vecindario.
Variables:
• u, v: Arreglos bidimensionales que contendr ´an las componentes de flujo ´optico en direcci ´on
x, yrespectivamente.
• Ix, Iy, It: Derivadas parciales de la intensidad de la imagen con respecto ax, y, t.
• Ixw, Iyw, Itw : Arreglos para las derivadas parciales de la intensidad de la imagen con
res-pecto ax, y, tdentro de un vecindario.
• i, j: Contadores.
• A, b, uv : Arreglos.
Salida:(u, v)Componentes del flujo ´optico para la secuencia de entrada.
Inicio
1: u, v←Im1.size
2: w←round(w/2)
3: i, j ←0
4: Ix, Iy, It←calcular mediante (8)→Im1, Im2
5: for i=w+ 1toIm1.rows−wstep1do
6: for j=w+ 1toIm1.cols−wstep1do
7: Ixw ←Ix(i−w:i+w, j−w:j+w)
8: Iyw←Iy(i−w:i+w, j−w:j+w)
9: Itw←It(i−w:i+w, j−w:j+w)
10: b← −Itw
11: A←[IxwIyw]
12: uv ←pseudoInv(A)∗b
13: u(i, j)←uv[1]
14: v(i, j)←uv[2]
15: end for
16: end for
2.2.4. Flujo ´optico usando un esquema multi-resoluci ´on.
Para tratar con este problema se han implementado algunas estrategias como lo es la esti-maci ´on de flujo ´optico sobre un esquema piramidal. En este esquema, se contruye una piramide en donde la base corresponde a las im ´agenes de la secuencia en su dimensi ´on original. Los ni-veles superiores se conforman de una versi ´on dimensionalmente reducida dado cierto factor de re-escalamiento.
La estimaci ´on del flujo ´optico se comienza en el nivel superior y consiste en un proceso ite-rativo proyectando dicha estimaci ´on al siguiente nivel realizando el correspondiente cambio de resoluci ´on hasta llegar a la base de la piramide, en donde se obtendr´ıa una estimaci ´on del flujo con las dimensiones originales para la secuencia de entrada.
Figura 6.Esquema Multi-resoluci ´on.
Este esquema puede ser aplicado a m ´etodos para estimar el flujo ´optico como el del Horn-Schunck, con la finalidad de obtener una estimaci ´on precisa.
Algoritmo 3Obtener n ´umero de niveles
Descripci ´on: Devuelve el n ´umero de niveles que tendr ´a la pir ´amide considerando las dimen-siones de la secuencia de entrada, asegurandos ´e que la dimensi ´on final sea divisible entre
2n Entrada:
• Im: Marco perteneciente a la secuencia.
Variables:
• nLvl : N ´umero de niveles para la pir ´amide.
• i, j, n: Contadores.
Salida:(u, v)N ´umero de niveles para la pir ´amide.
1: i, j ←1
2: n←0
3: while1do
4: n←2i
5: ifIm.cols%n== 0then
6: i←i+ 1
7: else
8: break
9: end if
10: end while
11: n←0
12: while1do
13: n←2j
14: ifIm.rows%n== 0then
15: j ←j+ 1
16: else
17: break
18: end if
19: end while
20: ifi < j then
21: nLvl←i
22: else
23: nLvl←j
24: end if
25: returnnLvl
Algoritmo 4Genera pir ´amide
Descripci ´on: Genera esquema piramidal con la secuencia de entrada
Entrada:
• Im1, Im2: Dos im ´agenes subsecuentes en escala de grises.
• nLvl : N ´umero de niveles para la piramide.
Variables:
• Im1p, Im2p : Dos arreglos, que representan cada marco de la secuencia de entrada en el esquema piramidal.
• i, n: Contadores.
Salida:Im1p, Im2p Inicio
1: n←1
2: whilen < nLvldo
3: Imp1[n]←resize(Im1)∗0.5
4: Imp2[n]←resize(Im2)∗0.5
5: n←n+ 1
6: end while
7: ImgP[1]←Im1p
8: ImgP[2]←Im2p
Algoritmo 5M ´etodo de Horn-Schunck con esquema piramidal
Descripci ´on: Realiza la estimaci ´on del Flujo ´Optico entre dos im ´agenes mediante el m ´etodo de Horn-Schunck usando un esquema multiresoluci ´on.
Entrada:
• Im1, Im2: Dos im ´agenes subsecuentes en escala de grises.
• a: Par ´ametro que indica la influencia de la restricci ´on de suavidad.
• nIter: N ´umero de iteraciones.
Variables:
• u, v: Componentes de flujo ´optico en direcci ´onx, yrespectivamente.
• uP rev, vP rev: Componentes de flujo ´optico en direcci ´onx, yrespectivamente obtenidos en el nivel previo en la pir ´amide.
• nLvl : N ´umero de niveles para la pir ´amide.
• ImgP : Arreglo que contiene la secuencia en el esquema piramidal.
• i: Contador.
Salida:(u, v)Componentes del flujo ´optico para la secuencia de entrada.
Inicio
1: nLvl ←Algoritmo 3(Im1)
2: ImgP ←Algoritmo 4(Im1, Img2, nLvl)
3: [u, v]←Algoritmo1(ImgP[1, nLvl], ImgP[2, nLvl], nIter, a)
4: i←nLvl−1
5: whilei >0do
6: u←resize(u)∗2
7: v←resize(v)∗2
8: [uP rev, vP rev]←Algoritmo1(ImgP[1, i], ImgP[2, i], nIter, a)
9: [u, v] = [u, v] + [uP rev, vP rev]
10: i←i−1
11: end while 12: return[u, v]
2.2.5. Representaci ´on visual del flujo ´optico
Figura 7.Representaci ´on del flujo por medio de vectores
Otro tipo de visualizaci ´on es por medio de un c ´odigo de colores, en donde la tonalidad indica la direcci ´on y la saturaci ´on la magnitud del vector de flujo en ese punto de la imagen. En la Figura 8 puede observarse este tipo de visualizaci ´on para el flujo ´optico estimado en la secuencia Dimetrodon.
2.3. C ´omputo evolutivo y flujo ´optico
En la literatura se han abordado problemas de visi ´on por computadora utilizando t ´ecnicas de c ´omputo evolutivo para resolverlos. M ´etodos para la estimaci ´on de movimiento se pueden encon-trar en trabajos propuestos por Li (1999), Gong (2002) y Zavala-Romero (2011) por mencionar algunos.
Un ejemplo de c ´omputo evolutivo y flujo ´optico es el m ´etodo propuesto por (Tagliasacchi, 2006). ´Este m ´etodo consta principalmente de dos etapas que se describen a continuaci ´on:
• En la primera etapa se realiza una segmentaci ´on de la im ´agen agrupando aquellos p´ıxeles cuyos vecinos compartan valores similares de intesidad, ya que se asume que el flujo varia de manera suave y que p´ıxeles correspondientes a una misma regi ´on espacial pose ´en un desplazamiento similar.
• Despu ´es mediante un algoritmo gen ´etico, se buscan seis par ´ametros para un modelo de mo-vimiento af´ın para cada uno de los puntos dentro de las regiones obtenidas en la fase de segmentaci ´on.
Una vez que los par ´ametros son conocidos, las componentes del flujo para cualquier puntox,y
estan dados por:
vx(xi, yi) =a1+a3
xi Cx
+a5
yi Cy
vy(xi, yi) =a2+a4
xi Cx
+a6
yi Cy
En dondevx(xi, yi) yvy(xi, yi) corresponden a las componentes del flujo en la direcci ´on de x, y
respectivamente. El vectora =(a1, a2, a3, a4, a5, a6) contiene los par ´ametros del modelo de
mo-vimiento af´ın y Cx y Cy son las coordenadas de los centroides de cada una de las regiones
segmentadas.
La funci ´on objetivo consiste en encontrar el vectoraque minimize el promedio de la diferencia entre los niveles de intensidad del marco actual y el marco de referencia siguiendo la trayectoria descrita por el flujo ´optico calculado.
a=min 1
MΣ
M
En dondeI(x, y, t) es la funci ´on de intensidad de la im ´agen en un puntox, yen el tiempo ty
M es el total de p´ıxeles correspondientes a una regi ´on
´
Este m ´etodo reporta un error ´angular promedio de 12.13° en la estimaci ´on del flujo ´optico para la secuencia Yosemite, que corresponde al conjunto de prueba de la base de datos de Middlebury.
Los Algoritmos Evolutivos son ´utiles cuando se requiere resolver un problema cuyo espacio
de soluciones sea muy grande, si este se delimita de manera razonable es posible encontrar soluciones que con los m ´etodos tradicionales normalmente no se encontrarian. En el cap´ıtulo siguiente se tratan conceptos de laProgramaci ´on Gen ´etica (Koza, 1992), sobre la cual se basa la estrategia empleada en este trabajo.
2.4. Medidas de evaluaci ´on en la estimaci ´on de flujo ´optico.
Para el proceso de evaluaci ´on de resultados en este trabajo se utilizar ´a el conjunto de se-cuencia de im ´agenes de Middlebury para flujo ´optico. Esta base de datos consta de un conjunto de entrenamiento y otro de prueba cada uno de doce secuencias disponibles tanto en escala de grises como a color, en donde para ocho de ellas del conjunto de entrenamiento se encuentra disponible los valores de referencia del flujo ´optico (ground-truth).
En esta base de datos se reportan principalmente dos medidas de precisi ´on, originalmente propuestas por (Barron, 1994) que son:
• Error de punto final (End-Point Error), que es una distancia Euclidiana:
EP E= 1
N N X
i=1
q
(ui−ugti )2+ (vi−vigt)2 (13)
• Error angular promedio (Average Angular error), que es el ´angulo formado entre los vectores estimados y los vectores de referencia:
AAE= 1
N N X
i=1
arc cos
uiugti +vivgti q
u2i +vi2+ 1 q
u2i,gt+v2i,gt+ 1
donde N es el total de p´ıxeles en la imagen,u, vson los vectores de desplazamiento para el p´ıxeli del flujo estimado yugt, vgt el de referencia (ground-truth).
Cap´ıtulo 3.
Programaci ´
on Gen ´etica
3.1. C ´omputo Evolutivo
El C ´omputo Evolutivo (EC, del ingl ´es Evolutionary Computing) es un ´area de la inteligencia ar-tificial, la cual est ´a inspirada en la teor´ıa de la evoluci ´on presentada por Charles Robert Darwin en ”El origen de las especies” (Darwin, 1859), que explica el proceso de adaptaci ´on de las especies por medio de la selecci ´on natural, donde se favorecen a aquellos individuos que se adaptan con mayor facilidad a su entorno y por consecuencia ser ´an los que sobrevivir ´an.
Esta t ´ecnica bio-inspirada provee de una metodolog´ıa para resolver problemas de optimizaci ´on de manera autom ´atica, siguiendo una estrategia de busqueda guiada utilizando un proceso de prueba y error que se basa en el paradigma de la evoluci ´on artificial.
Dentro de la literatura se destacan cuatro subramas en computo evolutivo que son:
• Algoritmos Gen ´eticos, propuesto por (Holland, 1975).
• Estrateg´ıas Evolutivas (Rechenberg, 1973), (Schwefel, 1995).
• Programaci ´on Evolutiva, (Fogel, 1966).
• Programaci ´on Gen ´etica, propuesto por (Koza, 1992).
En el presente trabajo se utiliz ´o la metodolog´ıa presentada por Koza (1992), que se conoce como programaci ´on gen ´etica, la cual se aborda con m ´as detalle en las siguientes secciones.
3.2. Conceptos b ´asicos de la programacion gen ´etica
Figura 10.Diagrama de flujo de un algoritmo evolutivo
En cuanto a la estructura de un programa de GP, podemos decir que es muy similar al resto de t ´ecnicas de EC pero se distingue por la forma de representar las soluciones, ya que en un pro-grama de GP los individuos es decir, las posibles soluciones al problema son codificados usando una estructura de ´arbol. Cada individuo se contruye en base a dos conjuntos finitos, los nodos internos pertenecen a un conjunto denominadoFunciones y para los nodos que se encuentran en los ´ultimos niveles de los ´arboles tambien conocidos como hojas se toman de otro conjunto llamadoTerminales.
3.2.1. Funciones y terminales
La definici ´on de estos conjuntos depende directamente del tipo de problema que se este abor-dando usando GP. Algunos de los elementos por los cuales puede estar formado el conjunto de funciones son:
• Operadores Aritm ´eticos: {+,-,*,/,etc.}
• Operadores Booleanos:{AND, OR, NOT}
• Funciones Matem ´aticas:{Sin, Cos, Tan, etc}
• Sentencias Condicionales:{If, Then, Else, Case}
• Sentencias de Ciclos:{While...Do,Repeat...Until, For,etc}
• Sentencias de Control de Transferencia:{Go to, Call, Jump}
Los elementos pertenecientes tanto al conjunto de Funciones como al de terminales, son de-nominadosnodoscuando la representaci ´on de los programas es en forma de ´arboles. El conjunto de terminales esta formado por:
• Variables, las cuales son las entradas al programa.
• Constantes, que como su nombre lo dice son elementos que no cambian su valor a lo largo de la ejecuci ´on del programa.
Figura 11.Rama de un ´arbol
3.2.2. M ´etodos de inicializaci ´on de la poblaci ´on
Basandonos en la Figura 11, el primer paso que se debe llevar acabo en un programa de GP, es la inicializaci ´on de la poblaci ´on, es decir generar un conjunto de tama ˜no P, con estructu-ras en forma de ´arboles los cuales tendr ´an unam ´axima profundidad previamente definida en el programa.
Para inicializar la estructura de los ´arboles existen algunos m ´etodos los cuales se explican a continuaci ´on.
3.2.2.1. M ´etodo Completo y Crecimiento
En el m ´etodo Completo(del ingl ´es full), cada rama que compone el arbol tiene una profundidad m ´axima que podemos denotar comoDmax y se componen de la siguiente manera:
• Los nodos que se encuentran a un niveld < Dmax, son elegidos aletoriamente del conjunto de
Funciones F.
• Los nodos del niveld=Dmax, aleatoriamente son elegidos del conjunto de TerminalesT.
Las ramas de los ´arboles generados mediante el m ´etodo de Crecimiento(del ingl ´es grow) a diferencia del m ´etodo Completo, pueden tener una profundidad diferente siempre y cuando sean ≤Dmax.
• Los nodos que se encuentran a un niveld < Dmax, se eligen aleatoriamente del conjuntoF∪T.
• Similar a el m ´etodo Completo, los nodos que se encuentran a un nivel d < Dmax, son elegidos
3.2.2.2. M ´etodo Expansi ´on Mitad y Mitad
En el m ´etodo Expansi ´on Mitad y Mitad (del ingl ´es ”ramped half-and-half”), los ´arboles son ini-cializados usando tanto el m ´etodoCompletoyCrecimiento, eligiendo cada m ´etodo en base a una probabilidad. Cada individuo sigue gener ´andose a partir de los conjuntos T y F y una m ´axima produndidad Dmax. ´Esto se hace con la finalidad de que exista una mayor diversidad entre los
individuos que componen la poblaci ´on.
3.3. Aptitud y selecci ´on
Siguiendo con el diagrama de la Figura 10, el siguiente paso es la evaluaci ´on de la aptitud (Fitness en ingl ´es) de los individuos que componen la poblaci ´on en base a unafunci ´on objetivo. La aptitud de cada uno de los individuos se espera que mejore conforme avance el proceso de evoluci ´on artificial, y es con ´esta que se realiza la selecci ´on y se determinar ´a cuales individuos entrar ´an al proceso de combinaci ´on, cu ´ales sobrevivir ´an y cu ´ales no.
3.3.1. Operadores gen ´eticos
Una vez obtenida la poblaci ´on inicial as´ı como la aptitud de cada uno de los individuos, se continua el proceso evolutivo aplicando sobre dicha poblaci ´on los operadores gen ´eticos decruza
ymutaci ´on, los cuales se explican a continuaci ´on.
3.3.1.1. Cruza
En un programa de GP, el operador de cruce m ´as com ´un se realiza de la siguiente forma:
Figura 12.Ejemplo del operador cruce
• De la poblaci ´on, se seleccionan dos individuos lo cual puede ser de manera aleatoria o usando alg ´un otro m ´etodo de selecci ´on.
• En cada uno de los padres, se selecciona aleatoriamente un nodo el cual ser ´a el punto de cruce. Cada nodo posee la misma probabilidad de ser seleccionado.
• Por ´ultimo, se intercambian los sub ´arboles que se desprenden de los nodos seleccionado con anterioridad
Dando origen as´ı a dos nuevos hijos. Cabe mencionar que la profundidad de los ´arboles puede superar a la de los padres despu ´es de este paso.
3.3.1.2. Mutaci ´on
introduciendo nueva informaci ´on y asi sirviendo de mecanismo que ayude al proceso evolutivo a poder escapar de posibles ´optimos locales.
La mutaci ´on m ´as com ´un que se realiza a un inviduo es remplazando un sub ´arbol elegido aleatoriamente por otro que es generado de igual manera.
Cap´ıtulo 4.
Desarrollo de la propuesta
En este cap´ıtulo, se describe el algoritmo propuesto para el dise ˜no autom ´atico de operadores que actuar ´an sobre la estimaci ´on de flujo ´optico con la finalidad de obtener una precisi ´on mayor a la de los m ´etodos existentes en la literatura propuestos por expertos. Primeramente se describen algunos conceptos de funciones de transformaci ´on espaciales en im ´agenes que fueron emplea-das, despu ´es se abordan otros aspectos del algoritmo como lo es el espacio de b ´usqueda que es formado por el conjunto de funciones y terminales propuesto; la forma de evaluaci ´on de las soluciones candidatas encontradas por el algoritmo y finalmente se describen detalles correspon-dientes a la implementaci ´on.
4.1. Funci ´on de transformaci ´on de imagen
Dentro de las funciones de transformaci ´on de im ´agenes podemos encontrar las funciones de transformaci ´on espaciales, este tipo de transformaciones tienen el prop ´osito de modificar las propiedades geom ´etricas de la imagen e idealmente, los valores de la intensidad entre la imagen sobre la que act ´ua la transformaci ´on y la imagen resultante deben de permanecer iguales.
Una imagen digitalI(x)puede definirse como:
I(x):D ⊆Rn→ C ⊆Rm
x7→I(x)
en dondemindica el n ´umero de canales o bandas que conforman la imagen (por ejemplo, 3 en el caso de una imagen RGB, 1 para una imagen en escala de grises, etc.) ynindica la dimensi ´on de ´esta.
Para este trabajo nos centraremos en un tipo de transformaci ´ones que son conocidas como
Funciones de mapeo. Este tipo de funciones requieren como entrada una imagen y dado un vector
de par ´ametrosθ, toma puntos que la componen y los proyecta a otro plano. Para una imagen en 2D se puede definir como :
Tθ(x):R2→R2
en dondeθes un vector que indica los par ´ametros de la transformaci ´on yxes el punto a ser mapeado. Podemos mencionar dos tipos de mapeo: mapeo en direcci ´on hacia adelante, y mapeo en direcci ´on hacia atr ´as
4.1.1. Mapeo hacia adelante
El funcionamiento de este tipo de mapeo resulta ser sencillo, para cada punto en la imagen de entrada se toma el valor de su intensidad y ´este es ubicado en la posici ´on(x,y)que indique la funci ´on de mapeo en el plano de salida.
A continuaci ´on se presenta el algoritmo que describe este proceso.
Algoritmo 6Mapeo hacia adelante — forwardMapping()
Descripci ´on: Algoritmo de la funci ´on de mapeo hacia adelante.
Entrada:
• img: Arreglo que representa una imagen.
• T(): Funci ´on que mapea los puntos de un espacio de entrada a otro.
Variables:
• [xy]: Arreglo que contiene las coordenadas de un punto.
Salida:imgT : Arreglo que representa la imagen transformada.
Inicio
1: fori←1toimg.rowsstep1do
2: fori←1toimg.colsstep1do
3: [xy]←T(img(i, j))
4: imgT(xy[1], xy[2])←img(i, j)
5: end for
6: end for
7: returnimgT
Figura 14.Mapeo hacia adelante
Con la finalidad anular las desventajas que presenta el mapeo hacia adelante, existe otro tipo de estrategia que es elmapeo hacia atr ´aso tambi ´en conocido comomapeo inverso.
4.1.2. Mapeo hacia atr ´as
Este m ´etodo de mapeo, para cada punto en el plano de salida (x, y) aplica la funci ´on de tranformaci ´on inversaT−1 para conocer la posici ´on correspondiente de este punto en el plano de entrada con coordenada(u, v)
Isrc(ui, vi) =T−1(Idst(xi, yi))
Una vez conocida esta posici ´on, se consideran los puntos cercanos a esta y usando un m ´eto-do de interpolaci ´on se apr ´oxima el valor de intensidad. Finalmente este valor de intensidad es asignado al puntoIdst(xi, yi)en el plano de salida.
Figura 15.Mapeo hacia atr ´as
Algoritmo 7Mapeo hacia atr ´as — inverseMapping()
Descripci ´on: Algoritmo de la funci ´on de mapeo hacia atr ´as.
Entrada:
• img: Arreglo que representa una imagen.
• T(): Funci ´on que mapea los puntos de un espacio de entrada a otro.
Variables:
• [xy]: Arreglo que contiene las coordenadas de un punto.
Salida:imgT : Arreglo que representa la imagen transformada.
Inicio
1: for eachpinimgT do
2: [xy]←T−1(p)
3: imgT(p)←img(xy[1], xy[2])
4: end for each
5: returnimgT
4.2. Descripci ´on del algoritmo propuesto
im ´agenes en escala de grises. La segunda versi ´on integra la informaci ´on que proveen diferentes bandas de color correspondientes a las secuencias de im ´agenes para la estimaci ´on del flujo y de igual manera genera de manera autom ´atica operadores para la correcci ´on del flujo con la finalidad de obtener una estimaci ´on de mayor precisi ´on.
4.2.1. Primera propuesta
El dise ˜no de la primera versi ´on del algoritmo propuesto consta a grandes rasgos de dos pasos: una estimaci ´on previa del flujo ´optico y posteriormente la generaci ´on autom ´atica de operadores para la correcci ´on del flujo. Para la primera parte se realiza una estimaci ´on previa de flujo ´optico utilizando la secuencia en escala de grises, para ´esto se emplea el m ´etodo propuesto por Lukas-Kanade en su enfoque piramidal; se eligi ´o este m ´etodo debido a la simplicidad de implementaci ´on. Por otro lado, la generaci ´on autom ´atica de los operadores se realiza a trav ´es del proceso evolu-tivo, los cuales aplicados a la estimaci ´on previamente obtenida se busca que brinden un mejor desempe ˜no en cuanto a la precisi ´on en la estimaci ´on de los vectores de flujo.
De acuerdo a la Figura 10, el primer paso en un algoritmo evolutivo es la generaci ´on de la poblaci ´on. En este trabajo se utiliz ´o una estrategia conocida comoprogramaci ´on cerebral (Dozal, 2014). En esta t ´ecnica los individuos o posibles soluciones son definidos por arreglos con diversos ´arboles y no con uno solo, a diferencia de los algoritmos de GP. Dichos individuos son formados por conjuntos de operaciones b ´asicas definidos en el cap´ıtulo 3 como conjunto defunciones y terminales.
Algoritmo 8Algoritmo de GP - proceso evolutivo
Descripci ´on: Algoritmo que describe el proceso evolutivo.
Entrada:
• Im1, Im2: Dos im ´agenes subsecuentes en escala de grises.
• nGen: Numero de generaci ´ones.
• popSize: Tama ˜no de la poblaci ´on
• maxT rees: N ´umero m ´aximo de ´arboles para cada individuo.
Variables:
• U V : Arreglo que representa el flujo ´optico para la secuencia de entrada.
• maxLevel: N ´umero m ´aximo de niveles que un ´arbol puede tener.
• n: Contador de iteraciones para el n ´umero de generaciones.
• pChromCross: Probabilidad de cruce a nivel cromosoma.
• pGenCross: Probabilidad de cruce a nivel gen.
• pChromM ut: Probabilidad de mutaci ´on a nivel cromosoma.
• pGenM ut: Probablilidad de mutaci ´on a nivel gen.
• newGen: Arreglo que almacenar ´a a la nueva poblaci ´on.
• parents : Arreglo que contiene los individuos seleccionados a los que se le aplicar ´a algun operador gen ´etico.
• of f Spring: Arreglo que almacena el resultado de aplicar un operador gen ´etico.
Salida:bestInd: Arreglo que representa al individuo con mejor desempe ˜no.
Inicio
1: U V ← calcOpF low(Im1, Im2) /*Realiza la estimaci ´on de flujo ´optico para la secuencia de entrada*/
2: pop ← initP op(popSize, maxT rees, maxLevel, setF unctions, setT erminals)/*Inicializa la po-blaci ´on*/
3: whilen < nGendo
4: evalP opF itness(pop, U V)/*Evaluaci ´on de la aptitud*/
5: newP op.clear()
6: whilenewGen.length < popSizedo
7: parents←roulette(pop)
8: operator ←rouletteOp(pChromCross, pGenCross, pChromeM ut, pGenM ut)
9: of f Spring←applyOpe(operator, parents)/*Aplica operadores gen ´eticos*/
10: newP op.add(of f Spring)
11: of f Spring.clear()
12: end while
13: pop.replace(newP op) /*Reemplaza los individuos de la nueva poblaci ´on en la poblaci ´on original*/
14: bestInd←getBest(pop)/*Obtiene el mejor individuo de la poblaci ´on*/
15: n=n+ 1
El algoritmo anterior que va de la linea (1) a la (17), inicia con la asignaci ´on de la variableU V, que representa una estimaci ´on previa del flujo ´optico para la secuencia de entrada utilizando el m ´etodo de Lukas-Kanade en su variante piramidal abordado en el Cap´ıtulo 2. Adem ´as,initP opes el m ´etodo de inicializaci ´on de la poblaci ´on que en este caso corresponde al m ´etodomitad y mitad, requiere como par ´ametros de entrada el tama ˜no de la poblaci ´on (popSize), el n ´umero m ´aximo de ´arboles que puede conformar a un individuo(maxTrees) as´ı como el tama ˜no m ´aximo de estos (maxLevel) .
A continuaci ´on, se eval ´ua el desempe ˜no para cada individuo de la poblaci ´on inicial (4) y pos-teriormente se seleccionan aquellos que entrar ´an al proceso de s´ıntesis por medio del m ´etodo de la ruleta (7), basandos ´e en los valores de la aptitud obtenidos en el paso anterior: mientras este valor sea mayor entonces tendr ´a mayor probabilidad de ser seleccionado. Mediante el mismo m ´etodo de selecci ´on por ruleta, se elige uno de los cuatro operadores gen ´eticos para la etapa de variaci ´on (8), estos operadores son: cruce a nivel gen, cruce a nivel cromosoma, mutaci ´on a nivel gen y mutaci ´on a nivel cromosoma. Una vez elegido el operador, ´este es aplicado (9) y despu ´es el resultado es a ˜nadido al arreglonewP op. Posteriormente este arreglo reemplaza a la generaci ´on anterior (13) y se almacena el mejor individuo de la generaci ´on enbestInd, este proceso se repite hasta alcanzar el n ´umero de generaciones previamente definido.
Algoritmo 9initPop()
Descripci ´on: Algoritmo que describe el proceso de inicializaci ´on de la poblaci ´on.
Entrada:
• popSize: Tama ˜no de la poblaci ´on
• maxT rees: N ´umero m ´aximo de ´arboles para cada individuo.
• maxLevel: N ´umero m ´aximo de niveles que un ´arbol puede tener.
• setF unctions: Arreglo que contiene el conjunto de funciones para generar los ´arboles
• setT erminals: Arreglo que contiene el conjunto de terminales para generar los ´arboles
Variables:
• trees: N ´umero de ´arboles generado aleatoriamente.
Salida:pop: Poblaci ´on generada aleatoriamente
Inicio
1: fori←1topopSizestep1do
2: trees←random(2, maxT rees)/*Genera un n ´umero aleatorio entre 2 ymaxTrees*/
4: fort←1totreesstep1do
5: newInd.tree(t)←makeT ree(setF unctions, setT erminals, maxLevel)
6: end for
7: pop(i)←newInd
8: end for
9: returnpop
El algoritmo crea una poblaci ´on basado en los par ´ametros de entrada. Se genera de manera aleatoria para cada individuo un n ´umero que representa la cantidad de ´arboles que lo compondr ´an, este var´ıa entre dos ymaxT rees.
Despu ´es cada ´arbol es generado de manera autom ´atica utilizando los arreglos setTerminals
ysetFunctions, que representan a los conjuntos de terminales y de funciones que son definidos
previamente. Dichos conjuntos establecen elEspacio de b ´usquedapara el algoritmo evolutivo.
4.2.1.1. Funciones y terminales
En la Tabla 1, se muestran los conjuntos de funciones y terminales. El objetivo de los elementos que componen a estos dos conjuntos es que de manera autom ´atica construyan operadores que al ser sometidos al proceso de evoluci ´on y aplicados a la estimaci ´on del flujo ´optico se mejore la precisi ´on de ´esta. A continuaci ´on se somete a evaluaci ´on el resultado obtenido usando la base de datos de Middlebury para flujo ´optico cuyas m ´etricas de evaluaci ´on se han descrito en la Secci ´on 2.4.
Tabla 1.Funciones y terminales
F ={+,−,×,÷, M F3, M F5, M F7, log2(), Dx(), Dy(), kT imes, kM inus, kP lus, kDiv}
T ={uv, Dx(uv), Dy(uv), Dxx(uv), Dyy(uv), M F3, M F5, M F7}
En la Tabla 1,uvrepresenta una estimaci ´on del flujo ´optico. M Fses un filtro de medianas ys
indica el tama ˜no de este.Durepresenta la derivada en la direcci ´on deu∈x, y, xx, yy. Las
primiti-vaskT imes, kM inus, kP lus, kDiv, realizan la operaci ´on que su nombre indica por una constante
4.2.1.2. Evaluaci ´on de aptitud
La aptitud de cada posible soluci ´on generada durante el proceso evolutivo se asigna evaluando la ecuaci ´on siguiente, dondeM es el tama ˜no de la imagen,I(x, y, t)la funci ´on de intensidad de la imagen en el punto(x, y)al tiempot, las componentes del flujo ´optico sonuyv.
f itness=min 1
MΣ
M
i=1|Iref(xi, yi)−I(xi+vi, yi+vi)|
En el algoritmo propuesto se utiliza una estrategia de mapeo hacia atr ´as, mapeando los puntos de la imagen acorde al arreglouv que corresponde a la estimaci ´on del flujo ´optico a la que le han sido aplicados los operadores generados autom ´aticamente por el algoritmo evolutivo. Se aplica la funci ´on de transformaci ´on al cuadro correspondiente at1de la secuencia de entrada dando como
resultado un nuevo cuadro en el que cada punto (x, y) del cuadro t1 ha sido desplazado lo que
indica las componentesuyv. Posteriormente se calcula la diferencia entre el cuadro de referencia
t2 de la secuencia de entrada y el cuadro obtenido en el paso anterior. Se considera mejor la
aptitud del individuo evaluado mientras menor sea esta diferencia. A continuaci ´on se muestra el algoritmo de la funci ´on de evaluaci ´on.
Algoritmo 10Proceso de evaluaci ´on de aptitud
Descripci ´on: Algoritmo del proceso de evaluaci ´on de aptitud.
Entrada:
• ind: Arreglo que representa un individuo de la poblaci ´on.
• uv : Arreglo que representa la estimaci ´on previa del flujo.
Variables:
• im1: Arreglo que reprenta el cuadro ent1.
• im2: Arreglo que reprenta el cuadro ent2.
• nU V : Arreglo que almacena la nueva estimaci ´on del flujo.
Salida:
• f itness: Aptitud del individuo evaluado.
Inicio
1: for eachtreeinind.treesdo
2: nU V ←nU V +eval(tree(uv))
3: end for each
4: remappedImg←inverseM apping(im1, nU V)
5: f itness←mean(abs(im2−remappedImg))
4.2.1.3. Operadores gen ´eticos
Aplicando el Algoritmo 8 despu ´es de creada la poblaci ´on inicial y evaluado el rendimiento de cada individuo, el siguiente paso corresponde a la selecci ´on y variaci ´on aplicando los correspon-dientes operadores gen ´eticos como lo sonselecci ´on, cruce y mutaci ´on.
Figura 16.Estructura de un individuo
En la Figura 16 puede observarse un ejemplo de como est ´a compuesto cada individuo de la poblaci ´on. Cada ´arbolt que forma parte de la estructura del inviduo est ´a a su vez conformado por otras estructuras b ´asicas conocidas comonodos. Debido a que un individuo consiste de un arreglo de ´arboles, los operadores gen ´eticos definidos en el Cap´ıtulo 4 no pueden ser aplicados sin realizar antes algunas moficaciones.
Figura 17.Cruce a nivel gen
Mientras que para la mutaci ´on es necesario solo un individuo, para cada ´arbol que lo compone se elige de manera aleatoria un nodo a partir del cual se aplicar ´a el operador.
Figura 18.Cruce a nivel gen
Figura 19.Cruce a nivel cromosoma
La mutaci ´on a nivel cromosoma consiste en cambiar por completo cada ´arbol que compone al individuo seleccionado dando como resultado uno nuevo, este operador solo requiere como en-trada un solo individuo.
Figura 20.Mutaci ´on a nivel cromosoma
El algoritmo que describe el operador de cruce a nivel Gen, recibe como entrada dos arreglos que representan a dos individuos de la poblaci ´on(p1, p2), que fueron elegidos previamente para entrar al proceso de combinaci ´on a nivel gen. En la l´ınea (1) de entre los dos cromosomas de entrada se obtiene el tama ˜no del menor de ellos, esto con la finalidad de que elpunto de cruceno exceda los l´ımites de la estructura de menor tama ˜no.
Algoritmo 11Cruce a nivel Gen
Descripci ´on: Algoritmo que describe el proceso cruce a nivel gen.
Entrada:
• p1, p2: Arreglos que representan a los cromosomas.
Variables:
• minLen: Indica el menor tama ˜no de entre los cromosomas de entrada.
• cp1, cp2: Puntos de cruce.
Salida:c1, c2: Arreglos resultantes del proceso de combinaci ´on a nivel gen.
Inicio
1: minLen←min(p1.length, p2.length)
2: c1←p1
3: c2←p2
4: fori←1tominLenstep1do
5: cp1←random(p1[i])
6: cp2←random(p2[i])
7: c1[i]←swap(p1[i], p2[i], cp1, cp2)
8: c2[i]←swap(p2[i], p1[i], cp2, cp1)
9: end for 10: returnc1, c2
Algoritmo 12Cruce de cromosoma
Descripci ´on: Algoritmo que describe el proceso de cruce a nivel cromosoma.
Entrada:
• p1, p2: Arreglos que representan a los cromosomas.
Variables:
• minLen: Indica el menor tama ˜no de entre los cromosmas de entrada.
• cp: Punto de cruce.
Salida:c1, c2: Arreglos resultantes del proceso de combinaci ´on a nivel cromosoma.
Inicio
1: minLen←min(p1.length, p2.length)
2: c1←p1
3: c2←p2
4: ifp1.length==p2.lengththen
5: minLen←minLen−1
6: end if
7: cp←random(1, minLen)
8: fori←1tocpstep1do
9: c1[i]←p1[i]
10: c2[i]←p2[i]
11: end for
Al igual que el cruce a nivel gen, este algoritmo recibe como par ´ametro de entrada dos arreglos los cuales representan a los cromosomas. Se comienza por obtener de entre ´estos el tama ˜no del menor de ellos (l´ınea 1) y en caso de que ambos sean del mismo tama ˜no esta cantidad se disminuye en uno, ya que de lo contrario cuando se obtenga de manera aleatoria el punto de cruce existe la posibilidad de que ´este sea igual a la longitud del cromosoma. As´ı se obtendr´ıa como resultado para este procedimiento un intercambio total de ´arboles es decir, la salida consistir´ıa en una r ´eplica de los arreglos de entrada. Una vez obtenido el punto de cruce se procede a realizar el intercambio de ´arboles que componen al individuo, desde la primera posici ´on y teniendo como l´ımite este punto (l´ıneas 8-11). Por ´ultimo los nuevos cromosomas son retornados.
Algoritmo 13Mutaci ´on a nivel gen
Descripci ´on: Algoritmo que describe el proceso mutaci ´on a nivel gen.
Entrada:
• p: Arreglo que representa un cromosoma al que ser ´a aplicado el operador.
• maxLevel: Tama ˜no m ´aximo que puede tener el cromosoma.
Variables:
• mp: N ´umero aleatorio que indica el nodo a partir del cual el operador ser ´a aplicado.
• mpLvl: Indica el nivel en el cual se encuentra el nodo al que apuntamp • new: Arreglo que almacena la nueva rama.
Salida:c: Arreglo resultante del proceso de mutaci ´on a nivel gen.
Inicio
1: fori←1top.lengthstep1do
2: mp←random(p[i])
3: mpLlv←getN odeLvl(mp)
4: new←makeT ree(setF unctions, setT erminals, maxLevel−mpLvl+ 1)
5: c[i]←joinT rees(p[i], new, mp)
6: end for 7: returnc
Algoritmo 14Mutaci ´on de cromosoma
Descripci ´on: Algoritmo que describe el proceso mutaci ´on de cromosoma.
Entrada:
• p: Arreglo que representa un cromosoma al que ser ´a aplicado el operador.
• maxLevel: Tama ˜no m ´aximo que puede tener el cromosoma.
Variables:
• new: Arreglo que almacena el nuevo cromosoma.
Salida:c: Arreglo resultante del proceso de mutaci ´on a nivel cromosoma.
Inicio
1: fori←1top.lengthstep1do
2: new←makeT ree(setF uncions, setT erminals, maxLevel)
3: c[i]←new
4: end for
5: returnc
Este algoritmo es b ´asico en su funcionamiento, ya que recibe como entrada un arreglo que representa a un individuo y cada uno de los ´arboles que lo componen son reemplazados por unos nuevos que son generados de manera aleatoria dado el conjunto de funciones y terminales, respetando los l´ımites de tama ˜no m ´aximo definidos enmaxLevel.
4.2.2. Segunda propuesta