我想构建一个应用程序来帮助人们学习如何编写汉字。
GitHub上有一个名为Make Me A Hanzi的项目,它有一个SVG字符数据库,我已经处理过这个项目来制作笔画路径(基本上是受到http://chanind.github.io/hanzi-writer/启发的中位数)。例如:https://github.com/skishore/makemeahanzi/blob/master/svgs/20070.svg(单词“shu”,表示“book”)。对于某些背景,编写中文/日文字符(https://en.wikipedia.org/wiki/Stroke_order)的笔划顺序正确。
我想要做的是构建一个应用程序来帮助人们学习如何编写中文。我想向用户呈现一个空白画布,然后让他们逐个笔划地写字符(想象它就像一个flashcard应用程序)。对于每个笔划,我想将它与SVG中的规范笔划相匹配以获得相似性,这是我不确定如何继续的地方。重要的是,在这个应用程序中,软件将知道它希望用户写的字符 - 所以我不是试图将他们的写作与任意字符匹配,而是与特定字符匹配。
我已经读过关于Fréchet距离(https://en.wikipedia.org/wiki/Fr%C3%A9chet_distance),但是这似乎没有捕捉到曲线的方向性 - 一个波浪线和一个直线光将具有较低的Fréchet距离但可能会偏离相当多。另外,在书面的中文小变体中,如钩子(注意上面SVG字符右下角的钩子)很重要,所以我想要一个能够捕获这个的距离度量。同样,不太重要的是曲线的相对位置 - 所以如果他们写相同的角色但是向下和向左或向下,或者太小,我希望它是一个匹配。
所以我的问题是 - 对于这个笔划识别问题,什么是衡量两条曲线之间相似性的好指标/方法(曲线是一个(x,y)点的有序列表)?