光流和手指跟踪

Posted

技术标签:

【中文标题】光流和手指跟踪【英文标题】:Optical flow and finger tracking 【发布时间】:2015-05-07 10:01:03 【问题描述】:

我正在使用opencv来实现手指追踪系统 并且还使用 calcOpticalFlowPyrLK(pGmask,nGmask,fingers,track,status,err); 执行 LK 跟踪器。

概念不清楚,实现了LK tracker后,应该如何检测手指的运动?另外,tracker获取最后一帧和当前帧,如何检测5帧内的一系列动作或连续手势?

【问题讨论】:

我很想知道您是如何完成手指追踪部分的? 【参考方案1】:

calcOpticalFlowPyrLK(此处为 track)的第 4 个参数将包含计算得出的输入特征在第二张图像(此处为 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 计算两个给定时间序列之间的最佳匹配,但有一定的限制。序列在时间维度上进行非线性扭曲,以确定它们的相似性度量,而与时间维度中的某些非线性变化无关。

【讨论】:

谢谢,这真的很有帮助

以上是关于光流和手指跟踪的主要内容,如果未能解决你的问题,请参考以下文章

目标跟踪之Horn-Schunck光流法

目标跟踪之Lukas-Kanade光流法

目标跟踪基于matlab光流法运动视频跟踪含Matlab源码 1357期

目标跟踪基于matlab光流法运动视频跟踪含Matlab源码 1357期

如何在openCV python中将背景减法与密集光流跟踪相结合

使用光流的 OpenCV 跟踪