你如何做出和识别手势?
Posted
技术标签:
【中文标题】你如何做出和识别手势?【英文标题】:How do you make and recognize gestures? 【发布时间】:2011-11-19 06:21:19 【问题描述】:我正在使用网络摄像头获取视频源,然后对此视频源执行运动跟踪。运动跟踪器连续返回(x,y)
坐标。
我想使用这些(x,y)
来识别“向左滑动”、“向右滑动”、“向上滑动”或“向下滑动”等手势。
我如何制作和存储这些手势的模板,以及如何判断/识别是否有一个 的手势发生了?
提前谢谢你:)
PS:我使用的是 Flex 4 和 ActionScript 3.0。如果有人可以帮助我解决逻辑问题,我可以用 ActionScript 编写。
【问题讨论】:
我之前遇到过[link]gestureworks.com,它可能不是一个现成的解决方案,但希望里面的逻辑可以激发一个解决方案。 【参考方案1】:我能想到的一种工作方法是使用一系列 (X,Y) 坐标来表示手势上的点。在小范围内,如果通过您的屏幕的手势被绘制成这样:
|1|1|1|
|1|0|0|
|1|0|0|
并表示(从左上角代表0,0):
(0,2)(0,1)(0,0)(0,1)(0,2)
将 x,y 坐标分解为单独的 2d 数组,其中当前坐标和第一个点之间的总距离(在此示例中的所有情况下,它将递增 1),因此您将拥有两个数组:
X:(0,0)(1,1)(2,2)
Y:(0,1)(1,1)(2,2)
现在对每个数组进行最小二乘拟合,以找到 x 变化和 y 变化作为二次函数的最接近的表示。对每个确定的手势执行相同的操作,然后将每个确定的手势的 x、y 坐标插入到用户手势的二次函数和您设计的每个确定的手势中,看看哪个最匹配。这是你的手势。
(我从未尝试过处理手势,但我不明白为什么这不起作用)
【讨论】:
【参考方案2】:你应该把你的任务分成更小的子任务。在计算机视觉中,没有像通用手势检测这样的东西可以在所有环境中开箱即用。
首先,您需要能够检测运动。有几种方法可以做到这一点,例如背景减法或斑点跟踪。
然后您需要从图像中提取某些特征,例如一只手。同样,有不止一种方法可以做到这一点。从肤色近似/评估开始,这在不同的照明条件下很容易出错,到更先进的技术,真正尝试“分析”物体的形状。这些算法随着时间的推移“学习”手应该是什么样子。
我只能建议购买一本关于计算机视觉的不错的书,并在网络上搜索文章等。还有像 OpenCV 这样的库,您可以使用它来了解更多关于实现方面的信息。应该有几个 OpenCV 到 ActionScript 3 的端口。我也可以推荐 Eugene Zatepyakin (http://blog.inspirit.ru) 的文章和工具。他正在使用 ActionScript 3 完成出色的简历工作。
长话短说,您应该研究运动跟踪和特征提取。
【讨论】:
【参考方案3】:最好的起点是了解手语识别或触控板输入的工作原理,例如创建参考图像并将其与用户输入进行比较。对于 Adobe,有 FLARToolKit,在其网站上的 augmented reality 文章中有详细说明。
参考资料:
Trackpad Science
Hand Gesture Recognition
Sign Language Recognition Research - PDF
Gesture Recognition Walkthrough - Video
【讨论】:
以上是关于你如何做出和识别手势?的主要内容,如果未能解决你的问题,请参考以下文章