2012-01-31 12 views
6

Estoy desarrollando una aplicación móvil simple para iPhone y plataforma Android y estoy buscando algoritmos que me permitan desencadenar ciertos eventos (funciones) cuando detectamos un cierto gesto con acelerómetro interno. Trabajo con Phonegap que utiliza HTML5 y javascript que lee tres coordenadas (x, y y z) del acelerómetro en el intervalo preestablecido (por ejemplo, cada 0,04 segundos).acelerómetro Smartphone gestos algoritmos

escribí una función simple que detecta un movimiento de agitación y funciona bastante bien, pero es primitiva (que sólo detecta temblores, no la dirección) - y quiero detectar algunos otros gestos tales como: - inclinación (a la izquierda/derecha) - agite arriba/abajo - sacudir izquierda/derecha - movimiento circular - volcarse - etc ....

¿alguien tiene algoritmos (o, al menos, fórmulas matemáticas/funciones) que puede calcular (detectar) este tipo de gestos en función de los valores de entrada que tengo (x, y, z e intervalo de tiempo para cada llamada)?

Busco cualquier código en cualquier lenguaje de programación (que volverá a escribir a javascript mí. Gracias de antemano!

+0

sé que esta pregunta es viejo pero puede que desee echar un vistazo a TRB (gesto de reconocimiento conjunto de herramientas) desde el laboratorio del MIT: https://github.com/nickgillian/grt –

Respuesta

1

Es posible que desee probar distorsión temporal dinámica. Un ejemplo ilustrativo es here.

+1

Verifiqué tu ejemplo: esto explica solo cómo comparar dos matrices 1D, pero en nuestro caso tenemos una matriz en 3D (x, y, z) además de tiempo.Si el usuario hace un gesto "circular" lento, debe detectarse igual si lo hace 2 o 3 veces más rápido ... – j99

+0

@ j99 Dije que el ejemplo es ilustrativo. Si lees los documentos vinculados, verás que puedes extender DTW a matrices 3D, no hay problema. La velocidad con la que se realiza el gesto no debe causar ningún problema, warping se encargará de eso. - – Ali

+0

@Ali ¿sería posible que tuviéramos una conversación privada? Me gustaría preguntarle algunas cosas, posiblemente a cambio de algo. Muchas gracias. –

4

Dynamic Time Warping (DTW) hace un buen trabajo, sin embargo, recomendaría utilizar Fast Dynamic Time Warping (DTW rápido). Especialmente para escenarios móviles, FastDTW es realmente aplicable! Para obtener una versión detallada, consulte este documento de investigación : http://cs.fit.edu/~pkc/papers/tdm04.pdf

Edición: Hace algún tiempo, escribí mi tesis sobre gestos 3D para controlar dispositivos en una configuración de hogar inteligente. Véalo en acción here (también hay un enlace al PDF). Usé FastDTW para reconocer gestos en un iPhone.

+0

¿Sabes dónde podría encontrar un ejemplo práctico de DTW rápido en acción? Busqué en Google pero no encuentro ningún ejemplo, especialmente no para datos en 3D (x, y, z) junto con el tiempo ... – j99

+0

@tilo Si miras el enlace que di, verás que he vinculado este documento . – Ali

+0

@ j99 Si revisas el enlace que di, verás que también vinculé este documento. – Ali

0

Si puedo ser tan audaz, el DTW rápido (y el relacionado pero diferente FTW de Sakurai y Faloutsos) no son buenas soluciones.

Si limitarse la deformación (a):.

  1. Luego, utilizando una DTW límite inferior es la distancia tan rápido como euclidiana [b] [c]
  2. La precisión mejorará (a, b)

Para urdimbre constreñida, FTW y DTW rápido son más lentos que la fuerza bruta debido a la sobrecarga (Ira Assent, entre otros, lo han demostrado).

a) Ratanamahatana, C. A. y Keogh. E. (2004). Todo lo que sabe sobre el desvío de tiempo dinámico es incorrecto

b) Xiaoyue Wang, Hui Ding, Goce Trajcevski, Peter Scheuermann, Eamonn J. Keogh: Comparación experimental de métodos de representación y medidas de distancia para datos de series temporales CoRR abs/1012.2789: (2010)

c) http://www.cs.ucr.edu/~eamonn/LB_Keogh.htm