Answers:
编辑仿射不变性显然需要此版本的曲率。
http://en.wikipedia.org/wiki/Affine_curvature#Affine_curvature
假设这就是我所指的内容。(尽管我认为法向曲率对于旋转来说是不变的,这可能就足够了)。在此处
编辑比例不变的曲率版本,请参见
/math/1329/what-is-the-form-of-curvature-that-is-invariant-under-rotations-and-uniform-斯卡利
手势识别问题是识别问题的子类,而识别问题基本上是模型比较问题。
您尝试使自己的手势适合某些手势集合,则最佳手势会获胜。
我会多次记录您的手势,然后尝试使用b样条曲线(曲线)来拟合您的训练数据。您可能希望手势对于仿射变换(旋转,缩放,平移)是不变的,因此将曲线存储为曲率值表(不太可能具有良好的闭合形式),而不是控件的笛卡尔坐标点。
那是手势的模型。假设您有几个。
为了进行比较,首先需要拟合输入数据,然后评估曲率x次数,其中x在精度和性能之间取得了很好的折衷。
现在,遍历模型并减去曲率值(以弧长为单位,沿着相应曲线在同一点进行评估),并对差值求平方。产生的值称为残差。对所有残差求和。残差最小的模型是最佳拟合,也是您最有可能的手势。
比较我对@ Olie's的回答。它们基本上是相同的,尽管我们为手势选择了不同的模型,(建立带符号的曲率表并记录切线角度的变化几乎是相同的,我假设数据是通过平滑生成的曲线,但主要区别在于@Olie包括速度。
选择要包含在模型中的参数取决于情况和性能要求。请记住,向模型添加参数会增加尺寸。
从广义上讲,您可能希望将手势定义为一个方向,然后再定义[可能非常短]延迟,然后再定义另一个方向(以及方向之间的相对角度等),直到结束为止。
例如,用魔杖打个“ t”(别忘了有些人是左撇子,所以您的定义不应该依赖于手!)是垂直旋风,短延迟,反转弯曲,短延迟,反转朝水平,突然[近]停止。
读取手势时,您想查看读取的图案与图案描述的接近程度。
一般而言,您可以首先消除明显的不匹配(甚至无法正确开始,或者太长或太短的错配)来剔除定义字典,然后将手势“比对”剩余的定义。通过评估每个部分与定义的匹配程度(0-100%)和RMS-ing(对误差进行平方,求和,然后求和的平方根)来对手势评分。
使用RMS会突出较大的差异(导致较低的得分),而倾向于掩盖较小的差异(导致更好的匹配)。
这些东西有很多资料-Google手势识别。不用担心它是用于手写笔还是其他非Wii的东西,这些原理可以很好地适应。