2012-01-31 95 views
6

我正在为iPhone和Android平台开发简单的移动应用程序,我正在寻找能够在我们使用内部加速度计检测到某个手势时触发某些事件(函数)的算法。我使用的是使用HTML5和JavaScript的Phonegap,它在预设时间间隔(例如,每隔0.04秒)从加速计读取三个坐标(x,y和z)。我写了一个简单的函数,它检测到一个抖动动作,它工作的很好,但它是原始的(它只能检测抖动,而不是方向) - 我想检测一些其他的手势,如: - tilt(to左/右) - 摇向上/向下 - 摇左/右 - 圆周运动 - 上下颠倒 - 等....智能手机加速度计手势algorightms

是否有人有算法(或至少数学公式/功能)可以根据输入值(x,y,z和每次调用的时间间隔)计算(检测)这种手势?

我要寻找一个在任何编程语言中的任何代码(我将它改写成JavaScript自己。在此先感谢!

+0

我知道这个问题是旧的,但你可能要采取从MIT实验室看看GRT(手势识别工具包):https://github.com/nickgillian/grt – 2017-05-12 16:26:24

回答

1

你可能想尝试动态时间规整。示例是here

+1

我检查了你的例子 - 这只解释了如何比较两个一维数组,但在我们的例子中,我们有一个3D数组(x,y,z)以及时间。如果用户做出一个缓慢的“圆形”手势,它应该被检测到相同,如果他使它快2到3倍... – j99 2012-02-01 08:27:09

+0

@ j99我说的例子是说明性的。如果你阅读链接文件,你会发现你可以将DTW扩展到3D数组,没问题。手势的速度不应该引起任何问题,翘曲会照顾到这一点。 - – Ali 2012-02-01 08:51:38

+0

@Ali有可能我们有私人聊天吗?我想问你一些事情,可能是为了换取水货。非常感谢。 – 2015-10-21 11:04:15

4

动态时间扭曲(DTW)做得很好,但我建议使用快速动态时间扭曲(Fast DTW)。特别是对于移动场景,FastDTW非常适用! 有关详细版本,请参阅此研究论文:http://cs.fit.edu/~pkc/papers/tdm04.pdf

编辑:前段时间,我写了关于在智能家居环境中控制设备的3D手势的论文。看到它在行动here(也有链接到PDF)。我使用FastDTW来识别iPhone上的手势。

+0

你知道我在哪里可以找到快速DTW实际应用的实例吗?我GOOGLE了它,但似乎无法找到任何示例 - 尤其是对于3D数据(x,y,z)与时间相结合。 – j99 2012-02-01 08:32:04

+0

@tilo如果您检查我给出的链接,您会看到我链接了本文。 – Ali 2012-02-01 08:35:19

+0

@ j99如果你检查我给的链接,你会发现我也链接了这篇论文。 – Ali 2012-02-01 08:35:47

0

如果我可能如此大胆,快速DTW(和相关的,但不同的FTW的樱井和Faloutsos)不是很好的解决方案。

如果限制翘曲的(a):使用下界DTW尽可能快欧几里得距离并[b] [C]

  • 精度将提高

    1. 然后(A,B)

    对于约束翘曲FTW和快速DTW比蛮力由于开销慢(艾拉等人已经表明了这一点)。

    a)Ratanamahatana,C.A。和Keogh。 E.(2004)。关于动态时间翘曲的所有知识都是错误的

    b)Xiaoyue Wang,Hui Ding,Goce Trajcevski,Peter Scheuermann,Eamonn J. Keogh:时间序列数据表示方法和距离测量的实验比较CoRR abs/1012.2789: 2010)

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