2010-07-28 4 views
5

J'essaye de développer une application iPhone pour enfants qui pourra dessiner des personnages sur écran tactile et je veux savoir comment faire correspondre le personnage dessiné avec le bon caractère de l'alphabet. Comment vais-je comparer les deux formes (dessin et existant) Une idée? du code?dessin sur iphone

+0

Avez-vous trouvé une solution? – PVCS

Répondre

1

Wow, cela semble être une tâche difficile. Une possibilité qui me vient à l'esprit serait d'utiliser une machine à vecteurs de support. 1.) Générer une image du dessin et la "vectoriser" en attachant des vecteurs au tracé tracé par l'utilisateur.

2.) Vous avez besoin de vecteurs de support pour comparer. Ce que je ferais, c'est de mettre en place une "application de formation". Laissez certains enfants dessiner (par exemple 10 fois un A, 10 fois un B, etc.), placez les vecteurs dans une base de données et utilisez-les comme vecteurs de support.

3.) Vous avez besoin d'un algorithme de notation qui évalue le dessin de l'utilisateur en le comparant aux vecteurs de support (cela pourrait être la partie la plus intéressante). Je pourrais penser à mesurer les distances des vecteurs de début et de fin aux vecteurs dessinés. Le svm avec la distance la plus basse est la lettre que vous prenez. Ensuite, vous pouvez introduire une distance qui est la "bordure", et prendre tous les dessins utilisateur au-dessus de cette bordure comme non reconnus. Une deuxième approche pourrait être que vous générez des images avec les lettres (par exemple fond blanc et lettre noire (non anti-aliasé)). Vous générez à nouveau une image du dessin utilisateur et la redimensionnez sur l'image pour la comparer, en essayant de la "superposer" exactement. Ensuite, vous comptez les pixels noirs qui correspondent dans les deux images et prenez la lettre avec le plus de correspondances. Mais, comme j'ai implémenté quelque chose de similaire, je peux dire que l'approche svm est plus satisfaisante puisque vous pouvez ajouter des vecteurs de support si le résultat n'est pas assez bon. La quintessence est à coup sûr votre algorithme de notation.

De toute façon cela ressemble à quelques semaines de travail.

EDIT: Depuis ce champ intéressant j'ai fait quelques recherches et trouvé une thèse sur la reconnaissance de l'écriture manuscrite. Jetez un oeil sur ceci: http://risujin.org/cellwriter/. Il décrit essentiellement l'approche svm que j'ai mentionnée et donne quelques algorithmes qui pourraient vous aider.

+0

+1: approche cool .. semaines de * travail à temps plein :) – iwasrobbed

0

Vous pouvez toujours utiliser Gesture Recognition ... mais c'est assez difficile pour un scénario personnalisé comme celui-ci.

Sinon, vous pouvez trouver quelque chose dans Quartz qui fera au moins une partie de cela pour vous. Cela m'intéresse de voir comment vous résolvez cela ... cela semble être une route plutôt difficile/intéressante.

3

Using GLGestureRecognizer Vous pouvez créer un catalogue et calculer une métrique entre un tableau de points d'entrée et un «alphabet» que vous prédéfinissez.

GLGestureRecognizer est une mise en œuvre Objective-C de l'algorithme de reconnaissance 1 $ Unistroke Recognizer, un simple geste (voir ci-dessous Crédits ). Il est rendu disponible ici en sous la forme d'un projet d'application iPhone . Il a été mis en œuvre sur le cours de quelques soirées à la fin de Avril 2009 par Adam Preble. Un projet iPhone de démonstration (Gestures.xcodeproj) est fourni; a La sous-classe UIView reçoit les événements tactiles et les envoie à la classe GLGestureRecognizer tandis que dessinant le chemin touché en blanc. Une fois que le geste est terminé, le geste rééchantillonné est en vert, son centre au point rouge, ainsi que le nom du meilleur match, le score (inférieur est meilleur), et le geste orientation. Une taille d'échantillon de 16 points est utilisée dans l'exemple, ce qui semble être adéquat pour les formes très basiques.

+0

Des trucs géniaux !! – thatsdisgusting

+0

très cool, il recrée vos gestes plutôt bien. il pourrait facilement être utilisé pour un alphabet – iwasrobbed