Análisis de Marcha mediante Plataforma Kinect Celina Osorio Ochoa, Jesús Vázquez Valencia, Javier Luna Cordova, Arturo Olvera López, Manuel Martín Ortíz. Facultad de de Ciencias Ciencias de la Computación. Computación. Benemérita Benemérita Universidad Universidad Autónoma Autónoma de Puebla, Puebla, México. México.
[email protected]
En la actualidad las técnicas de evaluación y estuResumen — En dio de las anormalidades de la marcha (movimiento de las piernas) han mejorado mucho con respecto a las técnicas tradicionales debido al avance en los dispositivos de captura y los métodos de procesamiento de datos. En éste trabajo se presenta una plataforma para la captura y análisis del movimiento de las extremidades inferiores. Esta se compone de dos herramientas una para realizar la captura utilizando la cámara Z de un dispositivo MS Kinect y la segunda para procesar los datos y visualizar las curvas de flexión de las articulaciones de la rodilla y el talón de un sujeto real. Se realizaron capturas frontales y laterales en un ambiente medianamente controlado. Se realizaron capturas de movimiento usando métodos basados en visión por computadora y el sensor de profundidad de un dispositivo MS Kinect. Palabr as clave — MoCap, Captura de Movimiento, Kinect, Kinect SDK, OpenNI, Análisis de Marcha.
L
I. I NTRODUCCIÓN os estudios de la captura de movimiento se iniciaron de manera formal en 1897 por Edward Muybridge con su
trabajo “Animal Locomotion”. Desde esas fechas el campo del
estudio del movimiento animal y humano se ha desarrollado en diversas vertientes. De cualquier manera los trabajos de investigación y las aplicaciones relacionadas con la animación tipo humano y la recuperación del movimiento esta lejos de ser satisfactoria [1]. El modelado, seguimiento y comprensión del movimiento humano basado en secuencias de video como campo de investigación se ha incrementado y vuelto relevante en particular en las dos últimas décadas debido a los requerimientos impuestos por las aplicaciones en las ciencias del deporte, la medicina, la biomecánica, la animación orientada a los juegos de entretenimiento, serios y el cine, la vigilancia y la seguridad. Los progresos en el análisis del movimiento humano dependen de los enfoques empíricos y la investigación básica en las áreas de la Visión por Computadora, Gráficos por Computadora y la Biomecánica. Debido a que en general estos tres campos se tratan de manera independiente, el análisis del movimiento humano obliga a una integración de ellos y sus sus metodologías. metodologías. En particular particular la inclusión de las restricciones impuestas por la Biomecánica mejora la robustez de este enfoque integrado. Existen diferentes enfoques y metodologías para el estudio del movimiento del cuerpo humano. Cada uno de estos utiliza
herramientas diferentes y se enfoca en el modelado a diferentes niveles. Así también se han creado áreas de interés en diferentes partes del cuerpo, como son el rostro, las extremidades superiores o inferiores y el tronco entre otras. En particular el estudio de la marcha ( gait ) es de especial interés por su relación con los diferentes ámbitos antes mencionados – deporte, medicina y animación – a nivel teórico y práctico. Este trabajo se centra en dicho problema orientado al movimiento de los humanos, se entiende el análisis de la marcha como el estudio sistemático de la marcha, asistido por el ojo y el cerebro como observadores experimentados y aumentado por instrumentación para la medición de los movimientos del cuerpo, la mecánica – cinemática y dinámica – del del cuerpo y actividad de los músculos. En personas con condiciones que afectan sus habilidades para caminar, el análisis de la marcha puede ser utilizado para realizar diagnósticos detallados y planear tratamientos tratamientos adecuados a cada caso [2]. La marcha humana es producto de procesos complejos que involucran al cerebro, la espina e spina dorsal, los nervios periféricos, los músculos, los huesos y las articulaciones; así como la voluntad y necesidad de realizar movimientos específicos en cada contexto de forma voluntaria e involuntaria. Esto involucra en general a la anatomía, la fisiología y la biomecánica. Una discusión detallada de este aspecto se puede consultar en [2]. Es posible diferenciar entre marcha “normal” y “patológ ica”, los patrones para la marcha patológica se entienden como
desviaciones de los correspondientes a la marcha normal. Los patrones de normalidad se deben crear considerando diversas variables, algunas de éstas son: el género, la edad, el tipo de actividad que desarrolla el individuo, la geometría del cuerpo y el tipo de marcha propiamente dicha (caminar, trotar, correr, carga, vestuario, tipo de calzado, entre otros). Lo cual obliga a crear patrones de normalidad para diferentes situaciones y grupos. Donde dichos patrones se deben especificar utilizando rangos de variabilidad en los parámetros que la describen. El análisis y modelado matemático de la marcha ha tenido contribuciones importantes en las últimas décadas, una revisión a fondo de la literatura relacionada ha sido realizada por SutherSuthe rland [3, 4, 5], en estos trabajos el autor realiza una descripción exhaustiva de estudios y normas para la marcha normal y anormal en el contexto clínico y los métodos cuantitativos de diagnóstico moderno auxiliado por herramientas de hardware y software, así como los modelos matemáticos correspondientes. Los métodos para el estudio de la marcha se pueden dividir en dinámicos y cinemáticos y en conjunto ofrecen una vista inte-
gral de la misma. Los métodos dinámicos se basan en la medición de las fuerzas y torques que los pies crean sobre plataformas en forma de tapete, éstas miden la fuerza y ángulo que se ejercen por la planta del pié en celdas cuadradas típicamente. Otro método dinámico muy utilizado es aquel en cual se colocan elastómetros alrededor de las articulaciones y se miden las elongaciones y fuerzas en las articulaciones al mover las extremidades en alguna rutina de marcha. En ambos casos los dispositivos eventualmente son capaces de digitalizar los datos y luego estos son procesados mediante aplicaciones de software específicas. Los métodos cinemáticos por otro lado ubican las posiciones de las articulaciones mediante marcadores o sensores. Estos se pueden agrupar en tres clases: ópticos, de radiofrecuencia y sonoros; y los mecánicos. Los primeros son los más difundidos debido a la fácil captura de los datos y a los algoritmos de visión por computadora que permiten la localización de los marcadores, los segundos, si bien más precisos, son menos utilizados debido al costo de la plataforma de hardware requerida, normalmente son utilizados en laboratorios o estudios con alto presupuesto; y finalmente los últimos son capaces de entregar más información que los dos primeros, pero solo se encuentran en laboratorios de investigación e instalaciones de diagnóstico médico de alta tecnología y presupuesto. Un camino alterno no orientado a los marcadores o sistemas de emisores-receptor es el correspondiente a las cámaras-Z o range-cameras. Estos métodos se basan en la identificación de las articulaciones mediante el análisis de la imagen de profundidad y su correspondencia con patrones fijos y dinámicos. El lanzamiento del dispositivo MS Kinect permite de manera económica realizar estudios de la cinemática de la marcha mediante la cámara-Z que él contiene. Ya que es posible recu perar la coordenada de las articulaciones mediante algoritmos de reconocimiento de patrones y plantillas. A pesar de que la resolución de la imagen-Z no es muy alta si es suficiente para identificar las articulaciones (joints) en 3D respecto a la posición del sensor del Kinect. II. HERRAMIENTAS A continuación se describen en términos generales las herramientas de Software y Hardware utilizadas en éste proyecto.
sensores de audio, video y sensor de profundidad del Kinect, y proporciona una API que sirve de puente entre el hardware del equipo, NITE Middleware y las aplicaciones e interfaces del S. O. Visual Studio 2010
Es un entorno de desarrollo integrado (IDE) para sistemas operativos Windows. Soporta lenguajes de programación como Visual C#, Visual C++, Visual J#, ASP.NET, entre otros a través de extensiones. Es el IDE recomendado para desarrollar con el Kinect SDK y con OpenNI. Delphi 2007 Lite
Es un IDE para desarrollar aplicaciones gráficas, en consola y web entre otras. En el proyecto se ha utilizado para construir fácilmente programas que permitan un análisis preliminar de los datos obtenidos por el Kinect.
GLScene [8]
Una librería de código abierto basada en OpenGL para el lenguaje Delphi. Proporciona componentes que permiten renderizar escenas en 3D de un modo no tan complejo.
B. Hardware Kinect
Es un controlador de juego desarrollado por Microsoft para la consola Xbox 360, permite a los usuarios interactuar con la consola a través de gestos, comandos de voz e imágenes. El dispositivo cuenta con diversos sensores, pero la configuración óptica es la de interés en este trabajo y está constituida por un proyector y una cámara de infrarrojos VGA. El rebote del haz de laser en el Kinect permite obtener un campo de profundidad (Z-range). A partir de esto se puede hacer la identificación de una persona con técnicas de reconocimiento de patrones. Y una vez identificadas las partes del cuerpo el software del dispositivo es capaz de construir el esqueleto como un conjunto de articulaciones en movimiento. III. DESARROLLO A. Escenario para Captura
Para realizar la captura de movimiento se utilizó un solo montaje para el método óptico y para el que utiliza la cámaraZ del Kinect. Para el método óptico se utilizó una cámara de video operando a 30fps. El montaje se muestra en la Figura 1.
A. Software Microsoft Kinect SDK [6]
Incluye drivers para los sensores del Kinect, APIs e interfaces del dispositivo, documentación técnica y documentación de ayuda para la instalación y configuración. Además permite la exploración y experimentación de las siguientes funciones principales: Skeletal Tracking ; acceso a la cámara RGB y a los datos de profundidad que indican la distancia de un objeto al sensor Kinect por medio de la cámara de profundidad; procesamiento de audio para el arreglo de cuatro micrófonos con cancelación de ruido acústico y de eco y también la integración con la API de Windows Speech Recognition . OpenNI [7]
Se trata de un Framework de código abierto que permite manejar el periférico Kinect. Permite comunicarse con los
Fig. 1. Montaje para la captura de datos de MoCap
B. Aplicación para obtener los datos del MoCap
Para el desarrollo de la aplicación que captura el movimiento de una persona y obtener las posiciones de las articulacio-
nes de su esqueleto como coordenadas (x, y, z) se creó una Aplicación WPF en C#, ésta permite visualizar lo que el sensor Kinect está capturando y a partir de estos datos el esqueleto de la persona a analizar. Para controlar el Kinect a través de la aplicación se usó la librería de Microsoft Research Kinect SDK y se inicializan los elementos del Kinect que se requieran; en este caso se utilizaron los sensores de profundidad, el de video y además los métodos de seguimiento para esqueletos humanos como se observa en la Figura 2. En la línea 49 se incializa la variable de control del Kinect pasandole algunos parámetros: UseColor para la cámara RGB, UseDepthAndPlayerIndex para la profundidad del video y finalmente UserSkeletalTracking para la detección de posturas. VideoFrameReady (línea 54) y SkeletonFrameReady (línea 52) son eventos que permiten obtener imágenes del sensor y el manejo del esqueleto, respectivamente. El método Open de la propiedad VideoStream (línea 56) permite abrir el flujo de la cámara de vídeo pasándole una serie de parámetros. En primer lugar el tipo del flujo que se abre, la resolución de la imagen y el tipo de imagen. De forma similar ocurre con DepthStream (línea 59).
Fig. 3. Localización de los Joints (articulaciones) del esqueleto que se obtiene a través del Kinect
Por el momento hay parámetros importantes que se ajustan en el código, en la interfaz sólo es posible cambiar el ángulo del sensor para subir o bajar.
Fig. 2. Declaración e inicialización de los elementos del Kinect a utilizar.
La siguiente etapa consiste en utilizar el esqueleto (grafo de articulaciones) que el Kinect está construyendo para cada frame a partir de la captura. Para esto se hace uso de la función SkeletonFrameReady , además de mostrar los datos obtenidos, éstos se guardan en un archivo para que se pueda verificar que se han capturado correctamente. Los datos del esqueleto, antes de ser almacenados se encuentran en una estructura de datos llamada SkeletonData, se utiliza la misma instancia de ésta para todos los frames, se accede a sus Joints que representan a cada nodo del esqueleto y se obtienen sus coordenadas (x, y, z), un ejemplo del esqueleto obtenido puede verse en la Figura 3 y la implementación del procedimiento en la Figura 4. La interfaz gráfica contiene secciones en las que se puede visualizar la imagen RGB y también el esqueleto que se está capturando.
Fig. 4. Sección de código en la que se accede a los nodos del esqueleto y se almacenan.
C. Captura de Movimiento y Visualización
Se realizó la captura de más de 100 individuos para analizar los datos, las primeras capturas incluyeron a personas de perfil caminando en una zona delimitada; pero las siguientes se realizaron de frente, dado que Microsoft Research utilizó técnicas de reconocimiento frontal para las personas, lo cual implica un mejor desempeño del dispositivo en las últimas capturas. El análisis se hizo a través de otra aplicación desarrollada en Delphi y la librería GLScene. Contiene dos paneles para la visualización de los datos, en 2D y en 3D; y dos más en los que se observan las gráficas de los ángulos de flexión de las articulaciones de las piernas (rodilla y pie) y otra gráfica en la que se describe la continuidad de los datos con respecto a uno
de los puntos nodales de la cadera y los frames por segundo, así se tiene una forma de comprobar que se están obteniendo datos veraces.
2.0 1.5 1.0 0.5 0.0
X-hip
-0.5 -1.0 -1.5 -2.0
0
20
40
60
80 100 120 140
Fig. 6. Comportamiento de la posición horizontal de la cadera (hip) Fig. 4. Vista general del sistema
En la parte superior derecha pueden verse parámetros de interés como el frame en curso con su ángulo theta de rodilla y pie tanto derecho como izquierdo. En la parte inferior derecha se tiene el control de la cinemática de la marcha de la persona: reproducir, pausar, avanzar un frame, retroceder un frame, cantidad de frames por segundo. También se implementó una aplicación para obtener las posiciones de las articulaciones de manera directa sin utilizar la información que regresa el Kinect para realizar una verificación cruzada. Esta se debe entender como un sistema de captura manual basado en el video grabado por la cámara a 30 fps. D. Análisis de Datos
En la siguiente gráfica (Figura 5) se muestra el comportamiento de las posiciones de las articulaciones en función del tiem po, cada punto corresponde a la coordenada (X,Y) de cada frame. La captura se realizo de forma manual. Se muestra solo un ciclo de marcha. El eje horizontal está dado en unidades escaladas al pixel.
En la Figura 6 se muestra el comportamiento de la posición horizontal de la cadera (medida en metros). Esta se utiliza para identificar el inicio y fin del proceso de marcha. Se puede notar que el movimiento se inició a partir del frame 40 y terminó en el 90 de la secuencia de datos. Donde el personaje se desplazo a partir de la posición +1.60m hasta -1.85m y luego dio la media vuelta y regresó a la posición de partida. Partiendo de éste intervalo en la Figura 7 se muestran los datos para el conjunto de frames asociados al estado de movimiento correspondientes a los ángulos de flexión (ThR: RodillaKnee, ThP: Pie-Ankle) de cada pierna (i: izquierda, d: derecha). Para la pierna izquierda la gráfica superior sólida en verde corresponde al ángulo de flexión del talón y la curva sólida inferior en amarillo al ángulo de flexión de la rodilla. Las curvas punteadas superior (aquamarina) e inferior (azul) corresponden a los ángulos de flexión del talón y de la rodilla de la pierna derecha. El eje vertical representa los ángulos en grados sexagesimales. La línea punteada inferior corresponde a la posición horizontal de la cadera. 120
700
100
600
80 X-Hip
Xhip Yhip
500
60
ThR-i
XKnee YKnee
400
ThP-i 40 ThR-d
Xankle Yankle
300
ThP-d
20
Xfoot Yfoot
200
0
-20 60
100
70
80
90
Fig. 7. Ángulos de Flexión de la rodilla (R) y del pie (P) para cada pierna. 50
100
150
200
Fig. 5. Gráficos de las posiciones (X, Y) de cada articulación (se indica a la derecha la articulación). El eje horizontal corresponde al número de frame.
En la Figura 7 se indican los ángulos de flexión que fueron calculados a partir de los datos (x, y, z) de cada articulación. La fórmula utilizada para calcular los ángulos es la siguiente:
Donde
En la Figura 8 se indican los puntos considerados para la evaluación del ángulo de flexión. P1 - Hip
ThR
P1 – Knee
P0 – Knee P0 - Ankle P2 - Ankle
ThP
P2 - Foot
Fig. 8. Puntos utilizados para el cálculo de los ángulos de flexión.
Dado que los puntos son conocidos para cada pierna y cada frame, entonces se pueden determinar los ángulos de flexión de la rodilla y el pie. Debe recalcarse que dichos ángulos se están evaluando en 3D y no en 2D, debido a que manejan las coordenadas 3D de cada articulación. E. Resultados
Es patente que se ha logrado obtener los ángulos de flexión de las articulaciones lo cual implica que el problema más importante es en realidad la verificación de los datos obtenidos por el Kinect. También se registraron – con base en pruebas- los requerimientos para poder hacer capturas con personas, entre ellos el espacio de captura, la perspectiva desde la cual se captura a la persona, la ropa de la persona y la iluminación, en este caso se observó que no se puede capturar al aire libre con una iluminación media o intensa. Los datos obtenidos hasta el momento requieren ser estudiados más a fondo. Puede observarse en la Figura 7 que la regularidad en los datos no es clara para los ángulos de flexión. Consideramos que la función del SDK del Kinect para determinar las posiciones de las articulaciones introduce un esqueleto de 200 plantillas precargados y no regresa de manera correcta las coordenadas de las articulaciones (joints) como se esperaría, en algunos de los frames esto ocasiona un problema grave en los valores obtenidos y en consecuencia en su comportamiento.
IV. CONCLUSIONES Las técnicas utilizadas para la cuantificación de los parámetros de la marcha correspondientes a los ángulos de flexión de las rodillas y pies utilizando la plataforma de captura basada en el Kinect y el SDK de Microsoft no nos parecen satisfactorias. Consideramos que es necesario realizar una captura directa sin el uso de plantillas para los esqueletos. Proponemos desarrollar un esquema de análisis basado en la matriz-Z de profundidades - se compararán las librerías de OpenNI y las Microsoft - y no utilizar los datos que el SDK está regresando, si bien esto puede ser un proceso laborioso resulta necesario a nuestro criterio. Cuando se refine el procedimiento de captura y se verifique en un conjunto mediano (100-200 individuos) será posible confiar en los datos obtenidos para ser utilizados en la determinación de patrones de normalidad para nuestro contexto. Y a partir de estos patrones poder proponer una herramienta orientada a especialistas para auxiliar en los procesos de diagnóstico y poder determinar el avance, éxito o fracaso de terapias aplicadas para la rehabilitación y así tomar decisiones con respecto a las mismas. V. ACRÓNIMOS Y ABREVIATURAS API. Interfaz de Programación de Aplicaciones (del inglés Application Programming Interface) IDE. Entorno de Desarrollo Integrado (del inglés, Integrated Development Enviroment) MS. Multi-Sensor RGB. Modelo de Color (del inglés: Red, Green y Blue) SDK . Kit de Desarrollo de Software (del inglés, Software Development Kit) VGA. Video Graphics Adapter WPF. Windows Presentation Foundation R EFERENCIAS [1] Bodo Rosenhahn, Reinhard Klette, Dimitris Metaxas. Human Motion, Computational Imaging and Vision, Vol. 36. Springer, 2008 . [2] Michael W. Whittle, Gait Analysis an Introduction, Butterworth Heinemann Elsevier , 4th. Ed., 2007. [3] Sutherland, D. H. The evolution of clinical gait analysis Part I . Kinesiological EMG . Gait and Posture , 24, 61-70, 2001. [4] Sutherland, D. H. The evolution of clinical gait analysis Part II . Kinematics. Gait and Posture , 16, 159-179, 2002. [5] Sutherland, D. H. The evolution of clinical gait analysis Part III . Kinetics and energy assessment . Gait and Posture , 21, 447-461, 2005. [6] Sitio Kinect for Windows. http://www.microsoft.com/en-us/kinectforwindows/ [7] Sitio Oficial de OpenNI http://openni.org [8] Sitio Oficial de GLScene http://www.glscene.org