【问题标题】:Dynamic time warping to detect gestures using Kinect Motion Sensor使用 Kinect 运动传感器检测手势的动态时间扭曲
【发布时间】:2012-09-13 05:06:47
【问题描述】:

是否有任何文档解释我应该如何使用 DTW(动态时间扭曲)和 Kinect?我需要录制 (as in this demo) 一个手势,然后使用录制的手势将命令应用于Simple Open-NI。我已经下载了KinectSpace code (pde file),但是我在理解它应该如何工作时遇到了问题。

来自wikipedia

    int DTWDistance(char s[1..n], char t[1..m], int w) {
        declare int DTW[0..n, 0..m]
        declare int i, j, cost

        w := max(w, abs(n-m)) // adapt window size (*)

        for i := 0 to n
            for j:= 0 to m
                DTW[i, j] := infinity
        DTW[0, 0] := 0

        for i := 1 to n
            for j := max(1, i-w) to min(m, i+w)
                cost := d(s[i], t[j])
                DTW[i, j] := cost + minimum(DTW[i-1, j  ],    // insertion
                                            DTW[i, j-1],    // deletion
                                            DTW[i-1, j-1])    // match

        return DTW[n, m]
    }
  1. return DTW[n, m]是什么意思?

  2. 是否应该在 draw() 方法调用期间评估所有手势?可以在这里应用任何优化吗?

【问题讨论】:

  • 那个返回很可能是DTW@n,m的值。这是一个整数。如伪代码第二行所述。
  • 那么你很可能会循环调用它。免责声明:我什么都不知道,只是了解了我在那个 wiki 页面上要说的所有内容。这为您提供了两个序列 s&t 之间的距离。我假设两者之一是您的预编程手势,另一个是您录制的手势。使用此功能可查看它们的相似程度。选择一个阈值来确定“相同”性。

标签: processing kinect gesture-recognition openni dtw


【解决方案1】:

amnon.owed 刚刚在 Processing 论坛上发布了这个很棒的教程。也许它可以帮助你:

http://www.creativeapplications.net/processing/kinect-physics-tutorial-for-processing/

这里是他的post的一部分:

我最新的 CreativeApplications.net 教程刚刚上线。 这是关于使用 Kinect 与屏幕上的几何图形进行交互。 使用了几个处理库(SimpleOpenNI、v3ga、Toxiclibs 和 PBox2D) 来实现这个效果。这是一个动手教程,所以主要 内容由三个完全注释的代码示例组成。这些 示例还将向您展示如何将剪影斑点变成 多边形,对很多事情都很有用,甚至除了 2D 物理 互动。

【讨论】:

    【解决方案2】:

    使用 Kinect 和带有处理的 DTW 实现。

    gh/jonathansp/KinectRemoteControl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      相关资源
      最近更新 更多