我需要识别用户手指在设备屏幕上绘制的一些元素。首先说它们是圆形,水平线,对角线,方框,还有一些比较复杂的闪电标志。
我不仅需要说明哪个元素更有可能,而且还需要识别元素是否被错误引用,所以它不是我认识的元素之一。
我想知道哪种算法最适合它,以及为它收集数据的最佳方法是什么。
目前我正在使用OpenCV,算法是支持向量机。我通过计算从中心坐标到10个图像点的距离来收集数据。它不能很好地运作。
答案 0 :(得分:2)
听起来你需要提取一个特征向量来描述你的“手势”。理想情况下,功能必须是缩放和平移不变的。也就是说:他们区分手势,无论其大小或角度如何。
如果动作本身很重要,您可以考虑使用Velocity Moments作为要素。
或者,如果仅处理手势的完成形状,则可以使用OpenCV提供的基于图像的方法。您可能对matchShapes()方法特别感兴趣 - 基于Hu Moments。
如果您已经在使用SVM,那么这就是您的监督分类器,您可以在其中为每个手势(带有标签)提取您提取的特征向量以进行训练。除了选择分类器(PCA,Naive Bayes,ANN等等)之外,问题的关键在于训练数据的质量。
当我在过去做过类似的事情时,我只是用一个小脚本收集训练数据来捕捉鼠标的动作(当按下按钮时)。我似乎记得当时使用UNIX命令'xev'来捕获窗口鼠标事件。