哇,这听起来是一项艰巨的任务。我想到的一种可能性是使用支持向量机。
1.) 生成绘图的图像,并通过将矢量附加到用户绘制的路径来“矢量化”它。
2.) 您需要支持向量来进行比较。我要做的是实施一个“培训应用程序”。让一些孩子画画(例如 10 次 A,10 次 B,等等……),将向量放入数据库中并将它们用作支持向量。
3.) 您需要一个评级算法,通过将用户绘图与支持向量进行比较来对用户绘图进行评级(这可能是其中最有趣的部分)。我可以考虑测量支持向量起点和终点到绘制向量的距离。距离最近的 svm 就是你取的字母。然后,您可能会引入一个距离,即“边界”,并将此边界之上的所有用户绘图视为无法识别。
第二种方法可能是使用字母生成图像(例如白色背景和黑色字母(非抗锯齿))。您再次生成用户绘图的图像,并将其大小调整为要比较的图像,尝试准确地“重叠”它。然后计算两个图像中匹配的黑色像素,并取出最匹配的字母。
但是,由于我实现了类似的东西,我可以看出 svm 方法更令人满意,因为如果结果不够好,您可以添加支持向量。精髓肯定是您的评级算法。
无论如何,听起来像是几周的工作。
编辑:由于这是一个有趣的领域,我做了一些研究并发现了一篇关于手写识别的论文。看看这个: http: //risujin.org/cellwriter/。它基本上描述了我提到的支持向量机方法,并提供了一些可能对您有帮助的算法。