光流和手指跟踪
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
)中的新位置。
在简单的情况下,您可以分别估计fingers
和track
的质心,您可以从中推断出运动。可以根据从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 计算两个给定时间序列之间的最佳匹配,但有一定的限制。序列在时间维度上进行非线性扭曲,以确定它们的相似性度量,而与时间维度中的某些非线性变化无关。
【讨论】:
谢谢,这真的很有帮助以上是关于光流和手指跟踪的主要内容,如果未能解决你的问题,请参考以下文章
目标跟踪基于matlab光流法运动视频跟踪含Matlab源码 1357期
目标跟踪基于matlab光流法运动视频跟踪含Matlab源码 1357期