光流和手指跟踪

时间:2015-05-07 10:01:04

标签: opencv computer-vision

我正在使用opencv来实现手指跟踪系统 并且还使用     calcOpticalFlowPyrLK(pGmask,nGmask,手指,轨道,状态,错误); 执行LK跟踪器。

我不清楚这个概念,在实施LK跟踪器之后,我该如何检测手指的移动?此外,跟踪器获取最后一帧和当前帧,如何在5帧内检测一系列动作或连续手势?

1 个答案:

答案 0 :(得分:1)

calcOpticalFlowPyrLK的第4个参数(此处track)将包含第二张图片中输入要素的计算新位置(此处为nGmask)。

在简单的情况下,您可以单独估算fingerstrack的质心,您可以在其中推断出运动。可以根据从fingers'质心指向track的质心的向量的方向和大小来做出决定。

此外,复杂运动可以被视为时间序列,因为运动包括在一段时间间隔内进行的一些连续测量。这些测量可以是上述矢量的方向和大小。所以任何动作都可以表示如下:

("label of movement", time_series), where
time_series = {(d1, m1), (d2, m2), ..., (dn, mn)}, where
di is direction and mi is magnitude of the ith vector (i=1..n)

所以时间序列包含n * 2次测量(抽样n次),这是如何识别运动的唯一问题?

如果您有关于机芯的先前信息,即您知道如何进行圆周运动,请写一个a字母等,然后问题可以简化为:如何将时间序列与自己对齐?

众所周知的Dynamic Time Warping(DTW)。它也可以被认为是生成模型,但它用于序列对之间。 DTW是一种用于测量两个时间序列之间相似性的算法,它可能在时间或速度上有所不同(例如我们的情况)。

通常,DTW计算具有某些限制的两个给定时间序列之间的最佳匹配。序列在时间维度上非线性地扭曲,以确定其相似性的度量,而与时间维度中的某些非线性变化无关。