Estimación del movimiento de objetos en secuencias de imágenes de intensidad y profundidad
Abstract
Máster Universitario en Sistemas Inteligentes y Aplicaciones Numéricas en Ingeniería (SIANI)
Full text
Máster Oficial en Sistemas Inteligentes y Aplicaciones Numéricas en Ingeniería Trabajo Fin de Máster Diciembre 2013 Estimación del Movimiento de Objetos en Secuencias de Imágenes de Intensidad y Profundidad Nelson Monzón López Instituto Universitario de Sistemas Inteligentes y Aplicaciones Numéricas en Ingeniería Universidad de Las Palmas de G.C.
I Trabajo Fin de Máster Título: Estimación del movimiento de objetos en secuencias de imágenes de intensidad y profundidad. Apellidos y nombre del alumno: Monzón López, Nelson Tutor del IUSIANI: Dr. Modesto Castrillón Santana Profesor titular de universidad en la Universidad de Las Palmas de Gran Canaria. Área de Conocimiento: Ciencias de la Computación e Inteligencia Artificial. Grupo de Investigación: Robótica y Oceanografía Computacional (ROC). Tutor del CTIM: Dr. Javier Sánchez Pérez Profesor titular de universidad en la Universidad de Las Palmas de Gran Canaria. Área de Conocimiento: Ciencias de la Computación e Inteligencia Artificial. Grupo de Investigación: Análisis de Imágenes e Ingeniería del Software (AIIS).
II Agradecimientos El estudio de un Máster supone un gran esfuerzo en el que han intervenido un gran número de personas. Aprovecho este momento para agradecer la ayuda y el apoyo recibido durante este periodo. Sin ellos, no habría sido capaz de conseguir todos los objetivos que me he fijado durante estos últimos años. A mis padres: Nicolás y Maryeli y mis hermanos: Iván e Iris. A mi novia: Ana. A mis compañeros del laboratorio de investigación del CTIM: Daniel, Kilian, Pedro y Airam. A mis tutores: Javier Sánchez y Modesto Castrillón. A los miembros del CTIM: Agustín Salgado, Agustín Trujllo, Luis Mazorra y Luís Álvarez. A todos ellos… Muchas gracias
III Contexto y motivación del proyecto La visión por ordenador es uno de los campos de investigación más importantes dentro de la inteligencia artificial. Permite diseñar sistemas que interpreten la información que se recibe de una cámara (o varias) a partir de las características de una imagen o de una escena, normalmente utilizando métodos numéricos. A partir de esta información, es posible desarrollar un amplio conjunto de aplicaciones, como pueden ser: la detección de movimiento, el seguimiento de objetos y personas, aplicaciones para la seguridad y vigilancia, detección y segmentación de objetos, guiado de robots, etc. En este contexto, el profesor D. Modesto Castrillón Santana, miembro de la división de Robótica y Oceanografía Computacional (ROC), perteneciente al Instituto Universitario de Sistemas Inteligentes y Aplicaciones Numéricas en Ingeniería (IUSIANI) en la Universidad de Las Palmas de Gran Canaria ha abordado, en etapas recientes, el problema de detección, seguimiento y caracterización utilizando datos capturados por sensores RGB-D. Por otro lado, el profesor D. Javier Sánchez Pérez, director del grupo Análisis de Imágenes e Ingeniería del Software (AIIS), perteneciente al Centro de Tecnologías de la Imagen (CTIM) en la Universidad de Las Palmas de Gran Canaria, posee una experiencia importante en el estudio de técnicas de estimación del flujo óptico. Esta línea de investigación representa uno de los temas fundamentales en el campo de la visión por ordenador. Con el flujo óptico se persigue estimar el desplazamiento aparente que sufren los píxeles en una secuencia de imágenes. De esta manera, se puede determinar cómo se desplazan los objetos de una escena obtenida mediante de dispositivos de captura digitales. En este sentido, D. Nelson Monzón López, ha colaborado durante los últimos años con D. Javier, en diferentes trabajos de investigación dentro este campo. Por todo lo anterior y, como resultado de la colaboración entre estos dos grupos de investigación, nace este Trabajo Fin de Máster dentro del contexto de la detección y seguimiento de objetos y personas.
IV ABSTRACT The aim of this research work is to perform a system that uses optical flow for detecting and monitoring one or more objects in a sequence of images, including depth ones, with the objective of designing an application that can differentiate between the moving objects in the sequence and that can follow their trajectories. In this sense, this work uses an implementation of a well-known optical flow method that uses isotropic TV-L1 regularization and two variants of this approximation. These variants rise from the fact that the methods that use this smoothing strategy, typically creates rounded effects at flow boundaries, which usually do not coincide with object contours. Thus, the original implementation has been modified by adding a decreasing function in the regularization term to inhibit the diffusion at high image gradients, where the flow discontinuities are located. This second approach presents a good contours definition that mitigate the rounded effects. However, it may produce some instabilities in the estimation of the optical flow. To cope with this situation, a third implementation has been made to ameliorate this problem using a constant value in the decreasing function that assures a minimum isotropic diffusion to prevent these instabilities. On the other hand, once studied the displacement fields reached by depth images and seen their results it was concluded that a combination of these with their corresponding mask will be interesting. In this sense, it has been developed a program that mixes the information of mobile objects in that type of images with the background information of the scene that brings its corresponding mask. This creates a new image richer in details than the original. Thus, the optical flow calculation is favored. Building on the accuracy of these methods, it has been implemented different applications: (i) a system that generate videos matching the original sequence with its respective flow field (ii) a tracking system that follows an area selected by the user (iii) a more complex tracking system that follows different areas in the scene, (iv) a system to segment the moving objects in the scene (v) a system that mixes the depth images and their mask information.
Índice 1. Introducción .......................................................................................................................... 2 2. Estado del arte ...................................................................................................................... 6 2.1. Métodos variacionales para el cálculo de campos de movimiento .............................. 6 2.2. Problema de preservación de discontinuidades en el flujo óptico ............................... 7 2.3. Imágenes de profundidad con sensores RGB-D ............................................................ 9 3. Estimación del movimiento de objetos en secuencias de imágenes .................................. 12 3.1. Cálculo del flujo óptico ................................................................................................ 12 3.2. Estructura piramidal .................................................................................................... 16 3.3. Algoritmo que implementa el método ........................................................................ 17 3.4. Estrategias de regularización ...................................................................................... 19 3.5. Resultados numéricos ................................................................................................. 20 3.5.1. Imágenes utilizadas ................................................................................................. 20 3.5.2. Análisis comparativo de los métodos ...................................................................... 24 3.5.3. Determinando el valor de β ..................................................................................... 32 4. Desarrollo de sistemas de detección y seguimiento de objetos en movimiento ............... 35 4.5. Sistema de representación del flujo mediante videos ................................................ 35 4.6. Seguimiento de una zona de la imagen ...................................................................... 43 4.7. Seguimiento de múltiples zonas de la imagen ............................................................ 48 4.8. Segmentación de objetos en movimiento .................................................................. 51 4.9. Sistema de creación de secuencias a partir de la profundidad y la máscara .............. 55 4.10. Desarrollo de una aplicación web ........................................................................... 56 5. Conclusiones y líneas de trabajo futuras ............................................................................ 60 Referencias .................................................................................................................................. 62
2 1. Introducción La visión por ordenador engloba un amplio campo de investigación que persigue extraer propiedades del mundo real a partir de la información captada por una serie de sensores en una imagen o una secuencia de ellas. En este contexto, este Trabajo Fin de Máster se centra en el estudio del movimiento de objetos registrado en una escena con el objetivo de obtener aplicaciones reales que permitan su detección y seguimiento. Para ello, se han utilizado las imágenes captadas por una cámara de vídeo y dos secuencias sintéticas clásicas en cualquier trabajo de investigación de esta temática. Además, se han utilizado imágenes de profundidad (y sus máscaras) captadas por un sensor RGB-D bajo cambios de luminosidad severos y dos secuencias donde se desplazan dos figuras geométricas sobre un fondo texturado. Para el estudio del movimiento se han utilizado técnicas de estimación de flujo óptico, que es uno de los temas fundamentales en el campo de la visión por ordenador. Este se puede definir como el desplazamiento aparente entre los píxeles de imágenes bidimensionales tomadas por una cámara en distintos instantes de tiempo, de tal manera que permita determinar cómo se desplazan los objetos de una escena a través de una secuencia de imágenes. Se ofrece un ejemplo de lo que significa la estimación del flujo óptico en la figura 1. Utilizamos para ello la secuencia de Yosemite con nubes1. Esta representa una imagen sintética del parque nacional de Yosemite en Sierra Nevada, California, donde la cámara simula una navegación aérea que se adentra en el parque. Figura 1: Ejemplo de flujo óptico. En la parte superior, vemos algunas imágenes de la secuencia de Yosemite con nubes. En la imagen inferior, vemos un campo de flujo representando el movimiento presente en esta secuencia. 1 http://www.informatik.uni-ulm.de/ni/staff/PBayerl/homepage/animations/index.html
3 La importancia del cálculo del flujo óptico es muy elevada ya que sirve como base para un amplio número de aplicaciones dentro del campo de la visión artificial, así como para resolver muchos tipos de problemas, como pueden ser: la visión estereoscópica, la reconstrucción 3D de objetos, el guiado de robots, la detección de colisiones, la compresión de vídeo, el registrado de imágenes médicas, la reconstrucción de escenas a partir del movimiento, la segmentación de objetos, el análisis de imágenes meteorológicas, el análisis de la dinámica de fluidos, la vigilancia y seguridad, la monitorización de objetos, aplicaciones en defensa militar y otros. Toda esta variedad de aplicaciones nos da una idea de la importancia que tiene el flujo óptico dentro de esta área de investigación. A medida que aumenta la automatización en la industria, se hace más importante la utilización de técnicas de la inteligencia artificial y de la visión por ordenador en particular. En la literatura se han propuesto distintos tipos de aproximaciones para calcular los campos de flujo, entre las que destacan los métodos variacionales, ya que se encuentran entre las técnicas más robustas y precisas que se conocen [1]. Generalmente se suele proponer una energía global que, al minimizarla, genera un sistema de ecuaciones en derivadas parciales cuya solución debe cumplir una serie de restricciones impuestas en el modelo. Este sistema se traduce en un esquema numérico que se resuelve por medio de técnicas de análisis numérico y cuya solución se puede implementar en un lenguaje de programación estándar. Actualmente, existen algunas limitaciones en este tipo de métodos como, por ejemplo, el manejo de las oclusiones que surgen cuando una parte de la imagen es visible en un fotograma, pero no así en su sucesiva, la estimación de grandes desplazamientos, que dificulta correlacionar la información de una imagen con su sucesiva o la preservación de discontinuidades en el campo de desplazamiento. Las figuras 2, 3 y 4 presentan ejemplos de estas tres limitaciones respectivamente. Se han utilizado imágenes de la secuencia de Rheinhafen la cual comentaremos en el apartado 3.5.1 de este documento. Figura 2: Ejemplo de oclusión. En la imagen aparecen numerosas oclusiones en los automóviles como consecuencia de las distintas farolas, semáforos y postes que hay en la escena.
4 Figura 3: Ejemplo de desplazamiento largo. La posición del coche entre la imagen de la izquierda y su consecutiva de la derecha supone un desplazamiento largo. Figura 4: En la imagen de la derecha se observa la representación del coche de la imagen de la izquierda. Se observa como el flujo (representado por el esquema de colores de la figura 6) delimita el contorno del objeto. En líneas generales, una discontinuidad en el flujo significa que hemos detectado el contorno de un objeto de la imagen. Sin embargo, lo contrario no tiene porque ser necesariamente cierto, ya que objetos adyacentes, moviéndose en la misma dirección, pueden pertenecer a la misma región del flujo óptico, sin que existan discontinuidades de movimiento entre ellos. Damos cuenta entonces que este es un problema importante a resolver y que ha sido uno los principales desafíos durante los últimos años. Por lo anterior, este problema es la base del proceso de investigación que se ha realizado en el cálculo del flujo en este trabajo. En este sentido, se ha utilizado para la estimación de los campos de movimiento una modificación de la implementación realizada por los autores en Sánchez et al. [3], incorporando al método original dos aproximaciones que nacen de las conclusiones obtenidas en ese trabajo, así como los realizados en Monzón et al. [4,13] respecto al tratamiento de discontinuidades en el flujo. Usando como base ésta implementación, se ha desarrollado una aplicación que acopla en un vídeo la imagen original y una representación del flujo asociado a
11 Las imágenes de profundidad ofrecen un tipo de representación de una escena que contiene información relativa a la distancia de las superficies de los objetos de la imagen desde un determinado punto de vista. En este sentido, según se expone en Harville [25], las imágenes de profundidad son prácticamente insensibles a las sombras y los cambios de iluminación, además de incluir información relativa a la oclusión. A partir de lo anterior, y aprovechando que el sensor Kinect captura tanto imágenes de profundidad como imágenes RGB, los autores de Lorenzo-Navarro et al [12, 26] estudiaron el uso de este dispositivo para la re-identificación de individuos en imágenes RGB-D grabadas desde una vista cenital bajo cambios severos de luminosidad. Se trata de una aportación novedosa ya que, hasta ese momento, no se había considerado el uso desde este punto de vista en esas condiciones sino que, en muchos casos, se observaba todo el cuerpo en condiciones óptimas de iluminación. En [12], detectan y modelan a los individuos de una escena utilizando exclusivamente la información de la trayectoria de estos, haciendo uso de la profundidad, reduciendo así, el impacto que ejerce la luz sobre la escena. Para la obtención del fondo se utilizó la técnica expuesta en [27] fijando en el sensor las condiciones de la cámara y la iluminación. La información que aporta la profundidad de la imagen permite simplificar el proceso de segmentación de la escena. Gracias a esto, al modelo de substracción del fondo utilizado y a la visualización desde un punto de vista cenital, las imágenes de profundidad resultantes permiten distinguir de manera precisa a las personas que aparecen. Como consecuencia de los resultados de [12] se ha planteado, entre los objetivos de este Trabajo Fin de Máster, el uso de la secuencia allí expuesta (y sus máscaras) para el cálculo del flujo óptico utilizando los modelos descritos en este documento. En futuros apartados se expondrán los resultados obtenidos en este nuevo estudio.
12 3. Estimación del movimiento de objetos en secuencias de imágenes Esta sección presenta el modelo numérico sobre el que se sustentan las tres aproximaciones desarrolladas en este trabajo. A continuación, se muestra la estructura piramidal donde está embebido el método y el algoritmo que lo implementa. Posteriormente se explican las distintas técnicas de regularización empleadas para, finalmente, mostrar resultados numéricos que justifiquen la elección de estas técnicas para el desarrollo de nuestras aplicaciones de detección y seguimiento de objetos. 3.1. Cálculo del flujo óptico Dadas dos imágenes que pertenecen a una secuencia, I1 e I2: Ω de imágenes en el espacio y tiempo, definimos el campo de flujo siendo . representa el desplazamiento horizontal mientras representa el desplazamiento vertical. El gradiente espacial es representado utilizando siendo las derivadas de primer orden en x e y respectivamente. Asumiendo que la intensidad de la imagen no varía entre las distintas imágenes de la secuencia, es decir, que la relación se mantiene en todas ellas. Nuestro funcional de energía es el siguiente: (2) Nuestro término de ligadura sería entonces: Mientras que nuestro termino de regularización sería: Ω (4) Siendo y . es un valor constante que impide la anulación de representa la estrategia de regularización, dependiendo del método que referencie. son parámetros que aumentan o disminuyen la importancia de
13 los términos de suavizado y de ligadura, respectivamente. En el apartado 3.4 se comentará más detalladamente la función . Cuando minimizamos esta energía, obtenemos un sistema de ecuaciones en derivadas parciales de Euler-Lagrange como el de la siguiente expresión: (5) Siendo y . Es interesante destacar que hemos utilizado la notación (6) con el objetivo de simplificar la ecuación. (6) . Se trata de un sistema no lineal debido al argumento w y a las funciones , por lo que, con el objetivo de linealizar el sistema, encuadramos nuestro esquema numérico en dos puntos fijos, n y m, que iteramos hasta eliminar su naturaleza no lineal. En primer lugar, utilizamos el índice n para remover la no linealidad de w empleando para ello derivadas de primer orden de Taylor. Son las siguientes: (7) De igual manera que en [2] utilizamos motion increment ( , por lo que el flujo óptico se estima iterativamente a partir de las siguientes expresiones: .
14 Para eliminar la no linealidad de utilizamos el índice m. Combinando ambos esquemas, obtenemos el siguiente sistema de ecuaciones: (8) Siendo Este sistema es resuelto utilizando el método iterativo SOR. De esta manera, nuestras incognitas y , en el píxel (i, j) se pueden calcular iterativamente hasta que el método converja en una solución estacionaria. En este sentido, introducimos un punto adicional, s, en nuestro esquema. Lo vemos en la ecuación (13). Las derivadas parciales se aproximan utilizando diferencias centrales. La discretización de la divergencia se separa en tres variables: = div_u discretiza el primer término de la divergencía mientras que los otros dos corresponden con el segundo término. Estas variables surgen de las expresiones (9), (10) y (11) para la dirección u. Estas expresiones serían identicas en caso de la v solo que modificando u por v.
15 A continuación, separamos la ecuación en distintas partes para poder aplicar el método SOR.
16 ) ) ) (12) A partir de todo lo anterior, podemos enclaustrar el método en un esquema SOR. Es el siguiente: , (13) La variable w es el parámetro de relajación del esquema SOR. Su valor oscila entre 0 y 2, en este trabajo se ha fijado su valor a 1.9. Se ha añadido además un criterio de parada que limite el número de iteraciones posible hasta alcanzar la convergencia. Es el siguiente: N es el total de píxeles que hay en cada una de las imágenes utilizadas mientras que ε es el criterio de parada. Se permite iterar mientras se cumpla (13) o no se haya alcance el tope de iteraciones. Una vez converge el método se avanza hasta la siguiente iteración m y reinicializamos (12). 3.2. Estructura piramidal En el estado del arte comentamos que nuestro sistema utiliza una estructura piramidal, similar a la expuesta en el trabajo [19], con la intención de estimar el flujo en desplazamientos largos. De esta manera, el algoritmo que representa el método está embebido en un algoritmo adicional que crea un sistema piramidal que reduce el tamaño de las imágenes por un factor ɳ que toma valores entre 0 y 1. Antes de disminuir la resolución, las imágenes se suavizan con una Gaussiana cuyo valor de desviación depende del factor mencionado. Entonces, para un valor de escala s = 0,1,…, Nscales – 1; siendo Nscales el número total de escalas que permite la pirámide. Se construye como: (15)
17 Después de la convolución, las imágenes se muestrean usando interpolación bicúbica. El valor de depende de y es calculado como: (16) Entonces, a partir de la escala de mayor valor, el sistema de ecuaciones se resuelve en cada escala para obtener aproximaciones sucesivas del flujo óptico. Cada solución intermedia se utiliza como la inicialización en la siguiente escala. Para transferir los valores a partir de una escala mayor, el campo de flujo se actualiza a partir de las siguientes expresiones: 3.3. Algoritmo que implementa el método A continuación, se describe el algoritmo que implementa el esquema numérico anterior. Este toma un conjunto de imágenes como datos de entrada y calcula los flujos ópticos entre cada par de imágenes consecutivas. Separamos el algoritmo en dos módulos: un procedimiento que calcula el flujo óptico en cada escala (algoritmo 1), y el algoritmo principal que se encarga de manejar la estructura piramidal (algoritmo 2). También se hace uso de una variable (regularization_type) que se encarga de seleccionar el tipo de regularización a emplear. Esta función se detalla en el apartado 3.4 de este documento. En el procedimiento, MAXITER es el número máximo de iteraciones permitidas para la convergencia del método SOR. Su valor es constante y es lo suficientemente alto como para permitir que el método alcance la convergencia. Inner_iterations referencia al punto n del esquema numérico mientras que Outer_iterations equivale a m. Este método utiliza interpolación bicúbica para el cálculo de expresiones del tipo . α, γ son los parámetros propios del método. λ es un parámetro adicional que se usa en dos de las estrategias de regularización. ɳ, ε y Nscales se utilizan con el objetivo comentado en el apartado anterior. Finalmente, destacar que se ha utilizado la librería OpenMP para paralelizar el algoritmo.
18 Algoritmo 1: Cálculo del flujo óptico en cada escala de la imagen. Algoritmo 2: Estructura piramidal donde está embebido el algoritmo 1. Procedimiento Pyramidal Structure (I,u,v,α,γ,λ,ε, Nscales, inner_iterations, outer_iterations, regularization_type) Normalizar la imagen entre 0 y 255 Convolucionar la imagen con una Gaussiana de σ = 0.8 Crear la pirámide de imágenes Is usando (con s = 0,…, Nscales -1) Para s desde Nscales-1 hasta 0 hacer regularization_optic_flow (I,u,v,α,γ,λ,ε,inner_iterations, outer_iterations, regularization_type) Si s > 0 entonces ) := ) := fin fin Procedimiento regularization_optic_flow (I,u,v,α,γ,λ,ε,Inner_iterations, Outer_iterations, regularization_type) Calcular Cálculo de la función de suavizado a partir del esquema de regularización seleccionado Calcular Para n_outer desde 0 hasta Outer_iterations-1 hacer Calcular usando interpolación bicúbica Calcular usando interpolación bicúbica Calcular Calcular a partir de la ecuación (6) y la función de suavizado Calcular div_u, div_v, div_d usando (9) y (10) du 0, dv 0 para n_inner desde 0 hasta Inner_iterations-1 hacer Calcular , a partir de la ecuación (6) Calcular Au, Av, Du, Dv y D usando la ecuación (12) Mientras error > ε y nsor < MAXITER hacer du (1-w) du + w (auD dv + α div_du) / Du dv (1-w) dv + w (auD du + α div_dv) / Dv Calcular el error con la ecuación (14) nsor nsor +1 fin fin u u + du , v v + du fin
19 3.4. Estrategias de regularización A partir de la expresión general del método, deducimos que el comportamiento del suavizado varía según la función . Esta función puede utilizar tres valores diferentes, lo que determinará que aproximación se va a emplear (tabla 1). En este texto las denominaremos como Brox, Exponencial y Exponencial Beta. Estrategia Brox 1 Exponencial Exponencial Beta + β Tabla 1: Estrategias de regularización. Observando con detenimiento la tabla anterior, vemos que la principal diferencia es el uso o no de una función exponencial. En el caso de que se quiera utilizar el método de Brox sin alteraciones, simplemente se utilizará el valor de la unidad. En caso de querer utilizar cualquiera de sus dos modificaciones, se hará uso de una función exponencial cuyo valor decrecerá acorde a la variación del gradiente de la imagen, potenciando o disminuyendo este efecto mediante un nuevo parámetro ( . Según aumente su valor, la función exponencial inhibirá la difusión de manera más abrupta. El beneficio esperado es aumentar la fuerza de suavizado del método (obteniendo flujos más continuos), pero respetando los contornos de los objetos, ya que, de manera habitual, un cambio fuerte del gradiente implica un contorno. Este “corte” en la difusión acarrea un posible efecto perjudicial. En ocasiones, puede producir una anulación demasiado fuerte del término de suavizado, lo que puede provocar valores atípicos en el flujo y empeorar el resultado. Cómo solución a este problema, nace la aproximación que hemos denominado Exponencial Beta. Consiste en utilizar la misma función decreciente pero acompañada de la constante β, con el objetivo de asegurar que se produzca siempre un mínimo de difusión isotrópica, impidiendo que ésta se anule del todo. El valor de esta constante se ha fijado en 0,0001. En el apartado de resultados numéricos, se ofrece una explicación más detallada del motivo de este valor.
20 3.5. Resultados numéricos En esta sección evaluaremos los métodos desarrollados a partir de varios resultados experimentales en diferentes secuencias sintéticas e imágenes reales, observando si la solución obtenida mejora el tratamiento de los límites del flujo. Es interesante destacar que este estudio no persigue evaluar prioritariamente la precisión del método, sino realizar una comparativa donde se puede observar la posible mejora en la problemática de las discontinuidades. En primer lugar, describiremos detalladamente las imágenes utilizadas para posteriormente proceder a la comparativa mencionada. 3.5.1. Imágenes utilizadas En este apartado se describen las distintas imágenes utilizadas en la comparativa del apartado 3.3.2. En primer lugar se han utilizado dos secuencias desarrolladas por el grupo AIIS, que denominamos Cuadrado y Estrella. En ellas aparecen las figuras geométricas de un cuadrado y una estrella de color negro, desplazándose horizontalmente de izquierda a derecha sobre un fondo texturado. La velocidad de estas figuras es uniforme y de quince píxeles. La textura utilizada es una hoja de papel rugosa. Se tratan de secuencias simples con un fuerte cambio en el gradiente en los límites de ambos objetos. Las vemos en la siguiente figura.. Figura 9: De arriba hacia abajo y de izquierda a derecha, vemos el primer frame y su sucesivo en las secuencias del Cuadrado y de la Estrella.
27 Primer Frame Ground Truth Brox Exponencial Exponencial Beta Figura 14: Experimentos realizados en las secuencias de Cuadrado y Estrella (columnas 1 y 2).
28 Primer Frame Ground Truth Brox Exponencial Exponencial Beta Figura 15: Experimentos realizados en las secuencias de Hydrangea y Grove2 (columnas 1 y 2).
29 Primer Frame Brox Exponencial Exponencial Beta Figura 16: Experimentos realizados en las secuencias de Rheinhafen y MovingArm (columnas 1 y 2).
30 Primer Frame Brox Exponencial Exponencial Beta Figura 17: Experimentos realizados en las secuencias Depth y Mask (columnas 1 y 2).
31 Primer Frame Brox Exponencial Exponencial Beta Figura 18: Experimentos realizados en OpenDoor y DepthMask (columnas 1 y 2).
32 3.5.3. Determinando el valor de β En esta sección comentaremos el motivo de la asignación de 0,0001 como valor constante para β. Para ello haremos uso de las secuencias del Cuadrado, la Estrella, Hydrangea y Grove2 en las figuras 19, 20, 21 y 22 respectivamente. En todos los casos, la primera fila muestra la imagen original, el ground truth y la solución del método Exponencial que usamos como base de nuestro experimento. La segunda fila muestra los resultados de Exponencial Beta utilizando los valores de 0,00001, 0,0001 y 0,001 como constante en las columnas 1, 2 y 3, respectivamente. Se han utilizado valores altos de α y λ. γ se ha fijado a cero por el mismo motivo del apartado anterior. La figura 19 muestra un ejemplo del efecto beneficioso que produce fijar la constate a 0,0001. Damos cuenta que los errores producidos en la solución provista por el método Exponencial se mitigan enormemente con este valor. Por el contrario, uno mayor produce una difusión descontrolada. Figura 19: Evolución de la secuencia del Cuadrado según crece la constante β. La figura 20 muestra un buen ejemplo de cómo el método Exponencial Beta acerca sus soluciones a los resultados de Brox. Se observa claramente cómo según aumenta el valor de la constante, se acentúan también los efectos de redondeo en el contorno de la estrella.
33 Figura 20: Evolución de la secuencia de la Estrella según aumenta la constante β. En las dos secuencias de Middlebury (figuras 21 y 22) se ve que el flujo resultante de la aproximación Exponencial es muy prometedor ya que se han preservado las discontinuidades de manera precisa, especialmente en la secuencia de Hydrangea. Sin embargo, los errores en el flujo que aparecen son muy numerosos. Figura 21: Evolución de la secuencia de Hydrangea según aumenta la constante β.
34 En este sentido, un valor pequeño de β consigue eliminar estos errores sin perder excesiva calidad en lo que a la preservación del contorno se refiere. Sin embargo, si utilizamos un valor mayor a la constante, la solución difumina en exceso el flujo. Como conclusión de este experimento podemos determinar que el valor que mejor podría adaptarse al método es el de 0,0001. Figura 22: Evolución de la secuencia de Grove2 según aumenta la constante β. .
35 4. Desarrollo de sistemas de detección y seguimiento de objetos en movimiento En diferentes apartados de este Trabajo Fin de Máster se ha comentado que el flujo óptico es la base de diferentes tipos de aplicaciones. Llegados a este punto, y una vez conocemos el fundamento teórico detrás de los métodos que comprenden este trabajo, resulta interesante indicar las aplicaciones desarrolladas. 4.5. Sistema de representación del flujo mediante vídeos En primera instancia, se ha desarrollado un programa que elabora vídeos que acoplen la imagen original con la representación del flujo correspondiente entre ésta y su sucesiva. El programa (algoritmo 3) recibe como entrada el nombre del video, además de los distintos parámetros necesarios para procesar el flujo óptico. También es necesario especificar qué tipo de estrategia de suavizado se desea utilizar. Para simplificar la entrada de parámetros se utiliza Iter_Macro. Según sea su valor, nos indicará posibles combinaciones de las Inner_iterations, las Outer_iterations y el factor de escala a utilizar por el método. La aplicación hace uso del programa Imagemagick para compaginar la imagen real con la representación del flujo y de ffmpeg para crear el vídeo final. Algoritmo 3: Algoritmo que calcula los flujos ópticos. Procedimiento Video_flow_creator (Video, Iter_macro, α,γ,λ, regularization_type, Flow normalization value) Inicialización de parámetros y variables Selección de factor de escala e iteraciones según Iter_macro Definición de rutas a utilizar por el programa Si no hay repositorio asociado a esa secuencia Crear estructura del repositorio de almacenamiento Fin Descomposición del vídeo en imágenes Cálculo del total de imágenes para calcular su flujo y almacenamiento de estas en un vector Para i desde 1 hasta total_imagenes hacer regularization_optic_flow (I,u,v,α,γ,λ,ε, Inner_iterations, Outer_iterations, regularization_type) Representación del flujo según esquema de la figura 6. Cálculo de la resolución de la nueva imagen Crear imagen acoplando imagen real y representación del flujo. Fin Creación del vídeo
36 En las figuras 23, 24, 25, 26, 27 y 28 se muestran diferentes instantes de los distintos vídeos generados. Recordemos que la representación del flujo sigue el esquema de colores de la figura 7. En todos los casos se han adaptado los parámetros dependiendo de la escena, ya que Mask y DepthMask funcionan de manera diferente a las secuencias reales. Como en los casos anteriores se ha anulado el valor del término de ligadura. En la figura 23 se observa la secuencia MovingArm y su campo de desplazamiento correspondiente utilizando el método Exponencial. Según la información que aporta el flujo óptico, el brazo se desplaza hacia la derecha en la primera imagen, para posteriormente realizar un movimiento hacía la dirección contraria. En la tercera imagen, se denota que el brazo se está moviendo hacia la zona superior derecha de la escena hasta alcanzar un desplazamiento similar al inicial en la última imagen. En el caso de la figura 24, utilizamos una escena que no hemos mencionado hasta ahora. Se trata de MovingHead. En esta, el individuo de la secuencia anterior desplaza su cabeza (y la zona superior de su cuerpo) por diferentes zonas de la escena. Se observa un desplazamiento frontal en los dos primeros frames mientras que en las dos últimas filas, se puede apreciar un movimiento hacia atrás del cuerpo. La figura 25 muestra la evolución de dos personas de la secuencia Mask. Se observa un flujo muy preciso. No obstante, se detecta un leve brillo en el fondo de la escena por lo que no ha habido un corte de la difusión perfecto. Este efecto es menos pronunciado en la secuencia DepthMask en la figura 26. En ambos casos se ha utilizado el método Exponencial. A continuación se muestra otra escena no mencionada con anterioridad. Se trata de una secuencia extraída del sitio web6 del investigador Domingo Mery, profesor a tiempo completo de la Universidad Católica de Chile. En ella se observa a varias personas caminando por un pasillo. En este caso se ha calculado el flujo con el método Exponencial. Finalmente, podemos ver una secuencia, en escala de grises, en la que diferentes personas se entrecruzan mientras caminan por un parque7. En este trabajo nos referiremos a ella como Park. Se ha usado Exponencial Beta. 6 http://dmery.ing.puc.cl/index.php/teaching/vision/ 7 http://www.svcl.ucsd.edu/projects/anomaly/dataset.html
43 4.6. Seguimiento de una zona de la imagen Una vez conocido el desplazamiento de los objetos en una escena, se han desarrollado diferentes aplicaciones que hagan uso de dicha información. La primera de ellas es un sistema de seguimiento de los objetos que aparecen en una zona determinada de la imagen. El usuario seleccionará los valores x e y que determinan el centro del área que se desea “perseguir” y el programa utilizará la información del flujo para determinar hacia donde se desplaza. Para ello hace uso de un programa (algoritmo 4) implementado en lenguaje C++ que está embebido en un programa realizado en Bash (algoritmo 5), que generará el vídeo a partir de las imágenes creadas por el anterior. El algoritmo 5 necesita conocer el nombre del video a utilizar, el método que generó los ficheros que almacenan la información del flujo, el punto central de la zona a la que se quiere realizar el seguimiento y el tamaño de esta. Si no se indicase un tamaño, el programa asignaría automáticamente un tamaño de 3x3. Si la zona seleccionada no fuera válida, la aplicación finalizaría avisando del error. En caso contrario, utilizaría el algoritmo 4 para crear una imagen nueva a partir de la original modificando el área escogida con un punto rojo. Para “pintar” este punto en la imagen el programa calcula el índice que representa la posición de los puntos x e y. Entonces procede a crear la imagen nueva modificando la información de ese punto y de todos sus vecinos hasta alcanzar el tamaño de la zona seleccionada. Esta modificación supone sustituir la información original, anulando la información de los canales verde y azul y poniendo el valor de 255 al canal rojo. El resto de la imagen sería una copia exacta de la original. Finalmente modifica los valores x e y, por la nueva posición que indican los vectores de representación del flujo óptico, u y v. Algoritmo 4: Algoritmo de seguimiento de una zona. Procedimiento putPoint (I, Flow, x_displacement, y_displacement, size_zone) Lee imagen de entrada y la almacena en vectores RGB. Lee fichero de flujo y almacena u y v Para i desde – size_zone hasta size_zone hacer Cálcula índices de los píxeles a modificar Asigna 255 al canal rojo de la nueva imagen y anula los canales azul y verde Fin x_displacement x_displacement + u; y_displacement y_displacement + v Almacena la imagen nueva Retorna x_displacement e y_displacement
44 Algoritmo 5: Algoritmo que genera el vídeo a partir del algoritmo 4. En el apartado de creación de videos, se obtuvo la información del flujo de una serie de secuencias. Las figuras 29, 30 y 31 muestran el resultado de seguir un objeto determinado de la imagen. La primera columna de la figura 29 representa como el programa rastrea una zona de la mano que aparece en la escena, mientras que la segunda muestra la persecución por parte del programa de de un punto de la nariz de esa secuencia. En la figura 30 se aprecia la detección y seguimiento de un punto de la cabeza de la persona que aparece al inicio de la secuencia OpenDoor, pero utilizando la información del flujo obtenidas por Mask y DepthMask. Se percibe que al ser un flujo más preciso, DepthMask ha permitido mantener fija la zona seleccionada sin propagarse de manera apreciable por la escena. Finalmente, la figura 31 muestra un ejemplo de seguimiento de objetos en las secuencias Hall y Park. En la primera columna, gracias a la información del flujo, se ha podido vigilar el desplazamiento de la chaqueta que porta la mujer de la escena. En la segunda se ha realizado el seguimiento de la bicicleta que aparece en la escena del parque. Un posible uso de esta aplicación podría ser un sistema de vigilancia en un aparcamiento, un local comercial, un parque, etc., en el que el usuario seleccionaría el objeto que desea rastrear, para que luego el programa se encargara de informar en todo momento de en qué lugar se encuentra el objeto a partir del flujo óptico Procedimiento video_point_generator (Video, regularization_type, x_displacement, y_displacement, size_zone) Inicialización de parámetros y variables Definición de rutas a utilizar por el programa Cálculo del total de imágenes a utilizar Almacenar imágenes y flujos en dos vectores Si x_displacement o y_displacement fuera de la imagen entonces Avisar de error y salir fin Para i desde 1 hasta total_imagenes hacer putPoint (I, Flow, x_displacement, y_displacement, size_zone) fin Creación del vídeo
45 Figura 29: Diferentes instantes de tiempo en las secuencias MovingArm y MovingHead.
46 Figura 30: Diferentes instantes de tiempo en las secuencias Mask y DepthMask.
47 Figura 31: Diferentes instantes de tiempo en las secuencias Hall y Park.
48 4.7. Seguimiento de múltiples zonas de la imagen A partir del algoritmo 4, se puede diseñar un sistema más complejo que no realice únicamente el seguimiento de una zona, sino que “persiga” varias a la vez. Con este objetivo, se ha implementado el algoritmo 6. La información de entrada es muy similar al algoritmo 5, con la diferencia de que se incluyen nuevas áreas. El programa no limita en ningún caso el total de zonas a seguir. Las únicas restricciones que impone es que todo punto x tenga un equivalente punto y; y que el área seleccionada pertenezca a la imagen. Algoritmo 6: Algoritmo que genera el vídeo de múltiples zonas a partir del algoritmo 4. Las figuras 32 y 33 representan las mismas escenas de a las figuras 29 y 31 del apartado anterior, solo que en esta ocasión, se lleva a cabo el seguimiento de diferentes zonas de la imagen. Por ejemplo, en la secuencia MovingHead se sigue el desplazamiento de los ojos, la nariz y la boca de la persona de la escena. Otro ejemplo de las posibilidades que ofrece este programa es la escena del parque, donde se “persigue” a diferentes personas de la escena. Procedimiento video_multiple_points_generator (Video, regularization_type, x_displacement, y_displacement, size_zone) Inicialización de parámetros y variables Definición de rutas a utilizar por el programa Almacenar zonas seleccionadas en vectores X e Y Si total de puntos introducidos no es par Avisar del error y salir fin Cálculo del total de imágenes a utilizar Almacenar imágenes y flujos en dos vectores Para j desde 1 hasta Total_points hacer Si Xj o Yj fuera de la imagen entonces Avisar de error y salir Fin fin Para k desde 1 hasta total_imagenes hacer Para i desde 1 hasta total_points hacer putPoint (I, Flow, Xi, Yi, size_zone) fin fin Creación del vídeo
49 Figura 32: Diferentes instantes de tiempo en las secuencias MovingArm y MovingHead.
50 Figura 33: Diferentes instantes de tiempo en las secuencias Hall y Park.
51 4.8. Segmentación de objetos en movimiento Conociendo el desplazamiento aparente de los objetos de una imagen se puede crear una nueva escena que separe a los objetos que se mueven de aquellos que no. En base a este objetivo, se ha desarrollado una tercera aplicación de detección y seguimiento de objetos que permite crear un nuevo video a partir del flujo y de la secuencia original, donde aparezcan únicamente los objetos en movimiento. Esta aplicación hace uso de un programa en C++ que es el encargado de modificar las distintas imágenes (algoritmo 7). El algoritmo principal utiliza como información de entrada el nombre de la secuencia con la que va a trabajar, el método que se utilizó para calcular el flujo óptico y un valor de umbral que permita al algoritmo 7 establecer la magnitud de aquello que considere movimiento. De esta manera se considera que hay movimiento si la suma de los cuadrados del desplazamiento en u y v supera el valor de umbral. En ese caso, la nueva imagen almacena la información original, mientras que en el caso contrario pone a cero (negro) la información de los tres canales de la nueva imagen. Algoritmo 7: Algoritmo que genera el vídeo de múltiples zonas a partir del algoritmo 4. El algoritmo principal es muy similar a los algoritmos principales anteriores con la única diferencia de que usa el algoritmo 6. Por este motivo no se detallará en esta memoria. Las siguientes figuras muestran diferentes ejemplos del resultado que se consigue con este programa. Procedimiento MovingObjectsSegmentation (I, Flow, Threshold) Lee imagen de entrada y la almacena en vectores RGB. Lee fichero de flujo y almacena en vectores u y v Crea vector f para almacenar la información de los tres canales Para i desde 0 hasta alto_de_la_imagen hacer Para j desde 0 hasta ancho_de_la_imagen hacer uv u*u + v*v si uv > Threshold entonces f RGB sino f 0 fin fin fin Almacena la información de f como una imagen
52 Figura 34: Segmentación del brazo en la secuencia MovingArm y de la persona que aparece en MovingHead.
59 Utilizando pocas iteraciones se puede estimar del campo de desplazamiento entre dos imágenes en un tiempo aproximado entre veinte y treinta segundos aunque se perdería en la calidad del flujo. Este intervalo de tiempo permite una interacción más o menos realista con el usuario si quisiera calcular una secuencia relativamente corta, pero, por lo habitual, una escena completa ocupa un mínimo de trescientos frames. Es más, secuencias como Rheinhafen engloban mil frames y las secuencias Depth y OpenDoor están formadas por más de quince mil frames. De esta manera, el cálculo del flujo óptico de toda una secuencia, como por ejemplo Rheinhafen, supondría un tiempo aproximado de treinta mil segundos (cercano a 20 días). Este intervalo temporal hace imposible una interacción realista con un usuario. Por el motivo anterior se decidió no incluir directamente la aplicación web como parte de este Trabajo Fin de Máster y utilizar las aplicaciones directamente desde la consola de Linux.
60 5. Conclusiones y líneas de trabajo futuras El principal objetivo de este Trabajo Fin de Máster ha sido presentar métodos robustos de flujo óptico que mejoren, en la mayor medida posible, la detección y tratamiento de discontinuidades en secuencias de imágenes, tanto de intensidad como de profundidad. Asimismo, como resultado de lo anterior, se han desarrollado varias aplicaciones de detección y seguimiento de objetos a partir de la información sobre el movimiento que estos nos aportan. En este sentido, en este Trabajo Fin de Máster se han utilizado tres técnicas de estimación del movimiento de tipo TV-L1. En base a ello, se ha introducido un marco general que permita albergar tres tipos diferentes de estrategias de regularización y hemos centrado nuestro estudio en el terreno de la preservación de las discontinuidades en el flujo. Con el objetivo de preservar los contornos de los objetos, se ha incluido entre nuestras estrategias de regularización, dos alternativas que incluyen una función decreciente en el término de suavizado que paralice la difusión en zonas donde se produzca un fuerte cambio de gradiente. En anteriores trabajos, se advirtió que usar una función decreciente pura funciona bien mitigando la difusión pero que, en ocasiones, puede ser demasiado estricta y crear inestabilidades en el flujo. Como consecuencia de esto se ha utilizado un valor constante de apoyo a la función decreciente que impida este tipo de circunstancias. En los resultados numéricos hemos visto que esta idea funciona razonablemente bien y es, en líneas generales, el método que mejores resultados ofrece. Por otro lado, hemos visto que el flujo resultante de una imagen de profundidad no aporta resultados destacables. Sin embargo, la información conjunta entre su máscara y la profundidad ofrece resultados más precisos delimitando el contorno del objeto de manera muy satisfactoria. Gracias a la calidad de los métodos utilizados en este trabajo se ha podido realizar aplicaciones reales que hagan uso del flujo óptico. La potencialidad de estas herramientas es muy grande, y podrían ser una versión preliminar de aplicaciones comerciales de seguridad y vigilancia, utilizadas por ejemplo en centros comerciales, restaurantes, centros educativos o cualquier otro sistema donde sea necesario vigilar instalaciones mediante cámaras de seguridad.
61 Del mismo modo, también podría aplicarse en el terreno de la detección de colisiones. Al conocer el desplazamiento de uno o varios objetos, como por ejemplo las dos mujeres de la secuencia Hall, se puede avisar al sistema en caso de que estas se encuentren peligrosamente cerca y puedan colisionar. Esta idea sería especialmente interesante en sistemas de vigilancia en carretera. No obstante, estamos lejos aún de alcanzar el método perfecto y aún quedan limitaciones que trabajar, tanto mejorando la detección de discontinuidades como lidiar con otras limitaciones. Los métodos exponenciales solventan de manera muy precisa la detección de los límites del flujo pero aún podría mejorarse. En este sentido, aplicar estas estrategias de regularización en métodos temporales podría ser una buena solución para conseguir un flujo más consistente. La información de toda la secuencia podría ir aumentando paulatinamente la calidad del flujo. Por otro lado hemos visto que utilizando únicamente el termino de suavizado se obtienen buenos resultados. Podría ser interesante plantear un método que utilice la información de la imagen además del gradiente en el término de suavizado de manera sencilla. Combinando ambas ideas, podríamos quizás, reducir el tiempo de cálculo prescindiendo del término de ligadura.
62 Referencias [1] Baker, S., Scharstein, D., Lewis, J.P., Roth, S., Black, M.J., Szeliski, R.: A database and evaluation methodology for optical flow. International Journal of Computer Vision 92(1), 1–31 (2011) [2] Brox, T., Bruhn, A., Papenberg, N., Weickert, J.: High accuracy optical flow estimation based on a theory for warping. In: Pajdla, T., Matas, J(G.) (eds.) ECCV 2004. LNCS, vol. 3024, pp. 25–36. Springer, Heidelberg (2004) [3] Javier Sánchez Pérez, Nelson Monzón López, and Agustín Salgado de la Nuez, Robust Optical Flow Estimation, Image Processing On Line, vol. 2013, pp. 242–260. http://dx.doi.org/10.5201/ipol.2013.21 [4] N. Monzón, J. Sánchez, and A. Salgado. Optic flow: Improving discontinuity preserving. In EUROCAST'13: Proceedings of the 14th international conference on Computer aided systems theory, pages 114-116, Berlin, Heidelberg, 2013. SpringerVerlag [5] R. Deriche, P. Kornprobst and G. Aubert, “Optical flow estimation while preserving its discontinuities: a variational approach”, In Proc. Second Asian Conference on Computer Vision, Vol. 2, pp. 290–295, Dec. 1995 [6] B. Horn and B. Schunck, “Determining Optical Flow”, Artificial Intelligence, Vol. 17, pp. 185 – 203, 1981 [7] Nagel, H.H., Enkelmann, W.: An investigation of smoothness constraints for the estimation of displacement vector fields from image sequences. IEEE Transanctions on Pattern Analysis and Machine Intelligence 8, 565–593 (1986) [8] Perona, P., Malick, J.: Scale-space and edge detection using anisotropic diffusion. IEEE Transactions on Pattern Analasys and Machine Intelligence 12, 629–629 (1990) [9] Alvarez, L., Esclarín, J., Lefebure, M., Sánchez, J.: A pde model for computing the optical flow. In: XVI Congreso de Ecuaciones Diferenciales y Aplicaciones, C.E.D.Y.A. XVI, Las Palmas de Gran Canaria, Spain, pp. 1349– 1356 (1999) [10] Zach, C., Pock, T., Bischof, H.: A Duality Based Approach for Realtime TVL1 Optical Flow. In: Hamprecht, F.A., Schnorr, C., Jahne, B. (eds.) DAGM 2007. LNCS, vol. 4713, pp. 214–223. Springer, Heidelberg (2007) [11] Wedel, A., Cremers, D., Pock, T., Bischof, H.: Structureand motionadaptive regularization for high accuracy optic flow. In: IEEE International Conference on Computer Vision, pp. 1663–1668 (September 2009)
63 [12] Lorenzo-Navarro, J.; Castrillón-Santana, M.; Hernández-Sosa, D. On the Use of Simple Geometric Descriptors Provided by RGB-D Sensors for Re-Identification. Sensors 2013, 13, 8222-8238. [13] N. Monzón, J. Sánchez, and A. Salgado. Efficient Mechanism for Discontinuity Preserving in Optical Flow Methods. Preprint. (2013) [14] Luis Álvarez, Joachim Weickert, and Javier Sánchez. Reliable estimation of dense optical flow fields with large displacements. International Journal of Computer Vision, 39(1):41-56, 2000. [15] Isaac Cohen. Nonlinear Variational Method for Optical Flow Computation. In Proceedings of the 8th Scandinavian Conference on Image Analysis, pages 523530, Tromso, Norway, 1993. IAPR. [16] Javier Sánchez, Agustín Salgado, and Nelson Monzón. Optical flow estimation with consistent spatio-temporal coherence models. In International Conference on Computer Vision Theory and Applications (VISAPP), pages 366370. Institute for Systems and Technologies of Information, Control and Communication, 2013. [17] Andreas Wedel, Thomas Pock, Christopher Zach, Horst Bischof, and Daniel Cremers. An improved algorithm for tv-l 1 optical flow. In Statistical and Geometrical Approaches to Visual Motion Analysis, pages 23-45. Springer Berlin Heidelberg, 2009. [18] Javier Sánchez Pérez, Enric Meinhardt-Llopis, and Gabriele Facciolo. TV-L1 Optical Flow Estimation. Image Processing On Line, 2013:137-150, 2013. http://dx.doi.org/10.5201/ipol.2013.26. [19] Enric Meinhardt-Llopis, Javier Sánchez Pérez, and Daniel Kondermann, Horn-Schunck. Optical Flow with a Multi-Scale Strategy, Image Processing On Line, vol. 2013, pp. 151–172. http://dx.doi.org/10.5201/ipol.2013.20 [20] Sánchez, J., Salgado, A., Monzón, N., 2013. Direct estimation of the backward flow, in: International Conference on Computer Vision Theory and Applications (VISAPP), Institute for Systems and Technologies of Information, Control and Communication. pp. 268–274. [21] Sánchez, J., Salgado, A., Monzón, N., 2013. An efficient algorithm for estimating the inverse optical flow, in: 6th Iberian Conference on Pattern Recognition and Image Analysis (IbPRIA), Springer-Verlag. pp. 390–397. [22] Khoshelham, K.; Elberink, S.O. Accuracy and resolution of kinect depth data for indoor mapping applications. Sensors 2012, 12, 1437–1454.
64 [23] Xia, L.; Chen, C.C.; Aggarwal, J.K. Human Detection Using Depth Information by Kinect. In Proceedings of the International Workshop on Human Activity Understanding from 3D Data in Conjunction with CVPR (HAU3D), Colorado Springs, CO, USA, 20–25 June 2011. [24] Shotton, J.; Fitzgibbon, A.; Cook, M.; Sharp, T.; Finocchio, M.; Moore, R.; Kipma, A.; Blake, A. Real-Time Human Pose Recognition in Parts from a Single Depth Image. In Proceedings of the 2011 IEEE Conference on Computer Vision and Pattern Recognition, Colorado Springs, CO, USA, 20–25, June 2011. [25] Harville, M. Stereo person tracking with adaptive plan-view templates of height and occupancy statistics. Image Vision Comput. 2004, 22, 127–142. [26] Lorenzo-Navarro, J.; Castrillón-Santana, M.; Hernández-Sosa, D. An study on re-identification in RGB-D imagery. Lect. Note. Comput. Sci. 2012, 7657, 200– 207. [27] Zivkovic, Z.; der Heijden, F. Efficient adaptive density estimation per image píxel for the task of background subtraction. Pattern Recognition Letters. 2006, 27, 773–780.