我正在研究Kinect Face Tracking
我想实现面部表情。目前我有:
我想实现其他手势,例如:
此处描述的其他手势:
我有一个面部模型点:
但是最好的方法是什么?
现在我的一个想法是计算特定点之间的距离。例如:
var distance = Math.Sqrt(Math.Pow(facePoints[10].X - facePoints[35].X, 2) + Math.Pow(facePoints[10].Y - facePoints[35].Y, 2));
抓取Exel图表的手势统计信息并执行以下操作:
if(disnace<calculatedValue)
我的问题是:
谢谢! :)
答案 0 :(得分:3)
你的想法是正确的。我自己为一些应用程序开发了一些手势,比如吃手势,打电话手势,轻扫手势等。
你需要做的不仅仅是检查距离。您还需要检查相对于时间的距离,以及某种误差范围。
如果你想将动作绑定到闪烁,那么你就不能在你的距离&lt;计算值,因为人们眨眼很多。您将需要制作某种手势探测器,以跟踪X秒数的当前距离,并且仅在距离<1时触发。计算值为X秒数,例如误差范围为90%。
你可以用你的想法做到这一点,但不要期望它在100%的时间里都能正常工作。每个人的眼睛和眉毛之间的距离是不同的。所以你要么必须初始化&#39;每个新用户的正常姿势,或尝试在正常休息模式下获得平均距离,并在眨眼时处理差异。
答案 1 :(得分:0)
之前我曾经有过一些经验。主要是在OpenCV中,但想法仍然相同。您的方法基本上是正确的,但我发现在检测算法中添加两个东西可以使它多次改进。
首先,在检测标准中添加一个时间元素。在手势事件触发之前,触发器应检测手势多长时间对于用户体验非常重要。我建议你有一个手势检测的本地结果(比如x多帧)的运行平均值,以及每个被触发的手势事件的运行平均值。可以把它想象成随机预测模型。 (事实并非如此,但我喜欢从这个角度考虑用户体验问题。我发现它可以加快我需要构建多少原型才能让它感觉正确。) 每当我需要提出解决此类问题的想法时,我总是求助于技术分析网站。这些都是聪明的人,他们整天都在努力想象出八卦数据的趋势。可能对你有所帮助。
其次,您需要使用某种噪声滤波器。我总是从http://en.wikipedia.org/wiki/Kalman_filter
开始 祝你好运!