reconnaissance de formes (lettres, signes simples) en action script !!
reconnaissance de formes (lettres, signes simples) en action script !! - Programmation
MarshPosté le 30-03-2002 à 22:34:58
Salut! j'ai une petite idée pour permettre la reconnaissance de forme en action script (flash 5 ou mx). le but est de reconnaitre qques lettres ou signe simple (pas tout l'alphabet, faut être réaliste! ). Je pense que mon idée est également applicable à tout un tas d'autres languages, mais je le destine à la navigation web (navigation par simple, partie du site cachées, etc...). Voici les étapes de la reconnaissance (je parle uniquement des coordonnées et variations verticales, on fera de même pour les variation horizontales): 1/on relève les coordonnées successives de la souris(dès que le boutons gauche est enclenché): à chaque frame: tps=tps+1 la liste des coordonnées: list-y.push[tps]=_y.mouse (push rajoute une valeur, qui est la "tps-ème" de la liste) -->on obtient avec ça les coordonnées verticales successives de la souris lorsque l'utilisateurs lache le bouton, on stoppe le relevé... 2/On passe à la partie analyse des données! Celle ci ne se fait qu'après afin d'éviter de charger anormalement la machine en calculs pendant le relevé... On commence par analyser les mouvement de la souris. Pour cela, on calcul la distance parcouru par la souris veticalement entre deux frames. Pour cela, on soustrait chaque valeur de la liste à celle qui la suit, obtenant une nouvelle liste correspondant au mouvement de la souris: move-y=list-y[machin]-list-y[machin-1] pour machin <=tps list-y[machin) étant la machin-ème valeur de la précédente liste, et tps la dernière valeur donnée à tps lors du relevé... on obtient une liste de chiffres positifs ou <=0, correspondant au déplacements de la souris (positifs, elle monte, - elle descend) 3/on calcule à partir de cette liste la vitesse moyenne de la souris. celle ci va nous permettre de définir un seuil en dessous duquel la vitesse de la souris sera considérée comme négligeable. (ce seuill tournant autour de zéro, par exemple [-10;10]. 4/on en déduit ensuite une liste ds laquelle on note si la souris monte, descend, ou est fixe (grace au seuil). On négligera totalement ds la phase suivante les moments ou la souris est fixe (ou presque fixe) 5/on obtient une liste de de sens: monte, descend, m, m, m, d, d, d, d, etc... 6/on la simplifie pour obtenir uniquement les variatons (monte, ou descend):m, d, m, d 7/On compare cette liste de variations à une base de données comprenant les différents signe.
La méthode devrait, je pense, donner de bon résultat sur des lettre ou signe simple (A, M, N, W, etc...), bien qu'elle reste très très limitée! (d'ou des applications restreintes)
Par contre, qques trucs me turlupinent: comment bien fixer le seuil? comment bien filtrer mes coordonnées (en dehors de l'histoire du seuill)? Peut on appliquer une seconde reconnaissance totaalement différentes pour obtenir des résultats plus fiables et précis? Comment optimiser ça au maximum (code léger et simple, peu de tps machine)?
Marsh Posté le 30-03-2002 à 22:34:58
Salut!
j'ai une petite idée pour permettre la reconnaissance de forme en action script (flash 5 ou mx). le but est de reconnaitre qques lettres ou signe simple (pas tout l'alphabet, faut être réaliste! ). Je pense que mon idée est également applicable à tout un tas d'autres languages, mais je le destine à la navigation web (navigation par simple, partie du site cachées, etc...).
Voici les étapes de la reconnaissance (je parle uniquement des coordonnées et variations verticales, on fera de même pour les variation horizontales):
1/on relève les coordonnées successives de la souris(dès que le boutons gauche est enclenché):
à chaque frame: tps=tps+1
la liste des coordonnées: list-y.push[tps]=_y.mouse
(push rajoute une valeur, qui est la "tps-ème" de la liste)
-->on obtient avec ça les coordonnées verticales successives de la souris
lorsque l'utilisateurs lache le bouton, on stoppe le relevé...
2/On passe à la partie analyse des données! Celle ci ne se fait qu'après afin d'éviter de charger anormalement la machine en calculs pendant le relevé...
On commence par analyser les mouvement de la souris. Pour cela, on calcul la distance parcouru par la souris veticalement entre deux frames. Pour cela, on soustrait chaque valeur de la liste à celle qui la suit, obtenant une nouvelle liste correspondant au mouvement de la souris:
move-y=list-y[machin]-list-y[machin-1] pour machin <=tps
list-y[machin) étant la machin-ème valeur de la précédente liste, et tps la dernière valeur donnée à tps lors du relevé...
on obtient une liste de chiffres positifs ou <=0, correspondant au déplacements de la souris (positifs, elle monte, - elle descend)
3/on calcule à partir de cette liste la vitesse moyenne de la souris. celle ci va nous permettre de définir un seuil en dessous duquel la vitesse de la souris sera considérée comme négligeable. (ce seuill tournant autour de zéro, par exemple [-10;10].
4/on en déduit ensuite une liste ds laquelle on note si la souris monte, descend, ou est fixe (grace au seuil). On négligera totalement ds la phase suivante les moments ou la souris est fixe (ou presque fixe)
5/on obtient une liste de de sens: monte, descend, m, m, m, d, d, d, d, etc...
6/on la simplifie pour obtenir uniquement les variatons (monte, ou descend):m, d, m, d
7/On compare cette liste de variations à une base de données comprenant les différents signe.
La méthode devrait, je pense, donner de bon résultat sur des lettre ou signe simple (A, M, N, W, etc...), bien qu'elle reste très très limitée! (d'ou des applications restreintes)
Par contre, qques trucs me turlupinent:
comment bien fixer le seuil?
comment bien filtrer mes coordonnées (en dehors de l'histoire du seuill)?
Peut on appliquer une seconde reconnaissance totaalement différentes pour obtenir des résultats plus fiables et précis?
Comment optimiser ça au maximum (code léger et simple, peu de tps machine)?
Et là, j'ai rudeùent besoin de vous!!!
Merci!