2012-02-29 51 views
2

我需要识别用户手指在设备屏幕上绘制的一些元素。首先说它们是圆圈,水平线,对角线,方块,还有一些更复杂的,比如闪电标志。什么是收集数据以识别手绘几何图形的最佳算法和最佳方法?

不仅我需要说什么元素更可能是,而且我需要识别元素是否被绘制错误,所以它不是我认识的元素之一。

我想知道哪种算法最适合这种情况,以及为其收集数据的最佳方法是什么。

现在我用的是OpenCV,算法是支持向量机。我通过计算从中心坐标到10点图像的距离来收集数据。它运作不好。

+3

俗称'手势识别' – 2012-02-29 07:43:39

回答

2

听起来像你需要提取一个特征向量来描述你的“手势”。理想情况下,这些功能必须是规模和翻译不变的。那就是:他们区分手势,而不考虑其创建的大小或角度。

如果运动本身很重要,您可能会考虑使用Velocity Moments作为要使用的功能。或者,如果只处理手势的最终形状,则可以使用OpenCV提供的基于图像的方法。您可能对基于Hu Moments的matchShapes()方法特别感兴趣。

如果您已经在使用SVM,那么这是您的监督分类器,您将为每个手势(带有标签)提取提取的特征向量以将其训练。除了选择分类器(PCA,朴素贝叶斯,人工神经网络等等) - 问题的关键在于您的训练数据的质量。

当我在过去做过类似的事情时,我只是使用一个小脚本收集训练数据以捕获鼠标的运动(当按钮被按下时)。我似乎还记得当时使用UNIX命令'xev'来捕获窗口鼠标事件。