首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于DTW的连续手势识别

基于DTW的连续手势识别
EN

Stack Overflow用户
提问于 2015-07-05 13:28:53
回答 2查看 928关注 0票数 0

我尝试使用动态时间翘曲(DTW)来检测使用智能手机执行的手势,使用加速度传感器。我已经实现了一个简单的DTW算法。

因此,我基本上是在比较加速度计阵列数据(x,y,z)和DTW。一个数组包含我的前置手势,另一个数组应该包含测量值。我的问题是,加速度传感器测量的是连续的新值,我不知道什么时候开始用预定义的值序列进行比较。

我需要知道手势何时开始和结束,但这可能与不同的手势不同。在我的例子中,所有的手势都支持在同一点开始和结束,但据我所知,我无法可靠地计算出从加速度到行程的距离。

因此,总结一下:如何确定使用DTW比较我的数组的正确时间?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-07-05 19:28:02

答案是,您将预定义的手势与每个子序列进行比较。您可以以比实时更快的速度完成这一任务(请参阅a)。

您需要对每个子序列进行z-规范化,并对您预先定义的手势进行z-规范化。

所以,比方说,如果你流的是.

代码语言:javascript
复制
NOW IS THE WINTER OF OUR DISCONTENT, MADE GLORIOUS SUMMER.. 

您的预定义单词是made,您可以比较每个标记的单词开头(用空格表示)。

代码语言:javascript
复制
DTW(MADE,NOW)
DTW(MADE,IS)
DTW(MADE,THE)
DTW(MADE,WINTER)

在你的情况下,你没有制造者,你有这个.

代码语言:javascript
复制
NOWISTHEWINTEROFOURDISCONTENTMADEGLORIOUSSUMMER.. 

所以你只需要测试每一个偏移量

代码语言:javascript
复制
DTW(MADE,NOWI)
DTW(MADE, OWIS)
DTW(MADE, WIST)
DTW(MADE, ISTH)
::
DTW(MADE, TMAD)
DTW(MADE, MADE)   // Success!

埃蒙

一个

票数 1
EN

Stack Overflow用户

发布于 2016-07-25 10:48:25

您不仅希望将DTW应用于时间序列,还希望将DTW应用到不断演变的流中。因此,您必须使用n个最近的数据点的滑动窗口。这正是eamonn在他的第二个例子中所描述的。他的目标模式包括4个事件(M,A,D,E),因此他使用了一个长度为4的滑动窗口。

但在这种情况下,他假设数据流不包含扭曲,例如(M,A,A,D,E)。DTW的优点是它允许这种扭曲,但同时也承认扭曲的目标模式是匹配的。在你的例子中,时间上的扭曲很可能发生。我假设你想要同样的手势,无论是慢的还是快的,都要做同样的手势。

因此,滑动窗口的长度必须高于目标模式的长度(以便能够检测到缓慢的目标手势)。这在计算上是很昂贵的。

最后,我的观点是:我想给你们推荐这篇由酒井、法鲁佐斯和山三郎撰写的论文弹簧算法

他们优化了数据传输的DTW算法。您不再需要超过每个传入事件的n*n计算,而只需要n。它基本上是DTW,但是减少了所有不相关的计算,并且只考虑了模板与流的最佳对齐。

附注:大部分关于时间序列和模式匹配的知识,我都是通过阅读Eamonn Keogh提供的内容而学到的。非常感谢,基奥先生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31230852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档