【发布时间】: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]
}
-
return DTW[n, m]是什么意思? -
是否应该在 draw() 方法调用期间评估所有手势?可以在这里应用任何优化吗?
【问题讨论】:
-
那个返回很可能是DTW@n,m的值。这是一个整数。如伪代码第二行所述。
-
那么你很可能会循环调用它。免责声明:我什么都不知道,只是了解了我在那个 wiki 页面上要说的所有内容。这为您提供了两个序列 s&t 之间的距离。我假设两者之一是您的预编程手势,另一个是您录制的手势。使用此功能可查看它们的相似程度。选择一个阈值来确定“相同”性。
标签: processing kinect gesture-recognition openni dtw