:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Nintendo DS > Projets

Projets Projets de développement amateur sur Nintendo DS

Publicité

Commentaire
 
Outils du projet Modes d'affichage
Moteur de reconnaissance de tracé
Moteur de reconnaissance de tracé
02/02/2006
Présentation
B'soir,

Allez, je viens de mettre en ligne le début d'un petit truc totalement inutile mais plutôt sympa
Une reconnaissance de tracé sur l'écran de la DS.

Si vous tracez des lettres comme montré dans l'image "alphabet"

Galerie d'images

Autres Informations
Sources :
http://francois.pessaux.neuf.fr/file...04_02_2006.zip

Implémentation d'un papier de Oleg Dopertchouck. On peut trouver l'article à :
http://www.gamedev.net/reference/art...rticle2039.asp
Auteur

Téléchargements

Mes autres projets
Vieux 02/02/2006, 21h17  
RefiX
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Nancy
Messages: 895
Par défaut

J'ai testé et cela marche vraiment du tonnerre
A mon avis ca aiderait pas mal si tu publiais aussi les sources non ? (/me curieux)
__________________
Le site français de la Supercard: http://supercard-france.info

Dernière modification par KCV ; 16/06/2006 à 00h16.
RefiX est déconnecté   Réponse avec citation

Publicité

Vieux 02/02/2006, 21h24  
t4ils
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Morangis ( 91 )
Messages: 2 754
Voir les codes amis Wii
Par défaut

ça marche vraiment bien

mais je fais certaines lettres diféremment, alors elles ne passent pas
genre le f

sinon, tout bien
__________________
Un renard, en plus de voler, ca code !

t4ils est déconnecté   Réponse avec citation
Vieux 02/02/2006, 21h44  
Didou
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 85
Par défaut

Re,

Citation:
Envoyé par RefiX
A mon avis ca aiderait pas mal si tu publiais aussi les sources non ? (/me curieux)
Bien sûr. Pour le moment c'est un peu brut. Mais je vais le faire. Il y a une moulinette en OCaml pour générer les données de modèle, suivie d'une moulinette en C...

Par contre, j'ai oublié de dire que c'est une implémentation un peu limé d'un papier de Oleg Dopertchouck. On peut trouver l'article à:
http://www.gamedev.net/reference/art...rticle2039.asp

-- Didou
Didou est déconnecté   Réponse avec citation
Vieux 02/02/2006, 21h51  
thoduv
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: ...
Messages: 1 464
Par défaut

Voilà encore un homebrew terrible ! Et quand tu aura ouvert les sources ca pourra surement servir à plein de developpeurs DS !
__________________
"S'il n'y a pas de solutions c'est qu'il n'y a pas de problème ..."
< mon devblog > ... < Lapinou Jumps ! - un jeu de plate-forme "vertical" avec un mignon petit lapin. >
thoduv est déconnecté   Réponse avec citation
Vieux 02/02/2006, 22h05  
Flocoon
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Grenoble
Messages: 524
Par défaut

Wahouuuuu tu fais les lettres comme moi ! Exactement la même ecriture
Sinon tu fais du Ocaml pour faire un programme sur DS ? ... non non je n'ai jamais dit que j'aimais pas le caml .


ps: tu serais pas passé par grenoble que tu utilises du Ocaml ?
__________________
Flocoon est déconnecté   Réponse avec citation
Vieux 02/02/2006, 22h20  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

ah, faudra que je regarde ca j'avais fait un truc similaire (moins poussé) juste pour tester il y a longtemps mais j'ai perdu mes sources, faudrait que je recommence pour inclure à PAlib :/
Mollusk est déconnecté   Réponse avec citation
Vieux 02/02/2006, 23h04  
Didou
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 85
Par défaut Ocaml pour prototyper. Oh oui !!!

Citation:
Envoyé par Flolesurfeur
Sinon tu fais du Ocaml pour faire un programme sur DS ? ... non non je n'ai jamais dit que j'aimais pas le caml .

Ben voui, ça m'arrive caïmant tout le temps de prototyper en OCaml l'algo central avant de le coder dans cet evil-language C
Citation:
ps: tu serais pas passé par grenoble que tu utilises du Ocaml ?
Grenoble ? Non. Versailles (Rocquencourt + exactement), oui

-- Didou
Didou est déconnecté   Réponse avec citation
Vieux 02/02/2006, 23h18  
Flocoon
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Grenoble
Messages: 524
Par défaut

Lol au temps pour moi
En tout cas ca marche bien ce petit prog de reconnaissance !
A quand une utilisation dans un pti jeu ?
__________________
Flocoon est déconnecté   Réponse avec citation
Vieux 02/02/2006, 23h35  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

didou, question plus technique... Qu'en est-il de l'utilisation CPU ?
Mollusk est déconnecté   Réponse avec citation
Vieux 02/02/2006, 23h45  
Didou
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 85
Par défaut Cpu ?

Areuh,

Citation:
Envoyé par Mollusk
didou, question plus technique... Qu'en est-il de l'utilisation CPU ?
Ben je ne vois pas trop ce que tu veux dire...

En fait, l'acquisition des données peut "safement" être faite assez lentement. Ceci signifie qu'on peut entrelacer l'acquisition des données avec du traitement effectif. Plus précisément, j'insère un swiWaitForVBlank entre chaque acquisition afin d'éviter de récupérer des samples trop longs.

Ca marcherait sans, mais rien ne sert de sampler avec 10 fois trop de précision pour ensuite normaliser avec 10 fois moins de précision.

Et puis, il faut bien se dire que l'acquisition d'un signe ne doit pas durer très longtemps... On ne trace pas un signe pendant des heures !

Bon, quoi qu'il en soit, si je ne t'ai pas répondu (ce qui est probable ), on peut causer en MP.

-- Didou
Didou est déconnecté   Réponse avec citation
Vieux 02/02/2006, 23h59  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

bah t'as un peu contourner la question en fait, lol. L'acquisition je suis d'accord que c'est rien (logique), mais le traitement, une fois que tu relève le stylet, il est rapide ? Du genre si j'ai un jeu qui pousse déjà la DS pas mal, je sais que l'acquisition se fera sans soucis, mais au moment de l'interprétation du tracet, ca va pas saccader ? et d'ailleurs, plus tu as de signes plus ca rame ? Donc si tu mets un alphabet complet (minuscules+majuscules) ainsi que les 10 chiffres, ca va bien passer en moins d'un VBL ou c'est pas la peine de rêver ?
Mollusk est déconnecté   Réponse avec citation
Vieux 03/02/2006, 09h22  
Didou
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 85
Par défaut

Salut,

Citation:
une fois que tu relève le stylet, il est rapide ?
Oui car les strokes sont normalisés assez petits, donc il n'y a pas trop de tests à faire.

Citation:
et d'ailleurs, plus tu as de signes plus ca rame ?
Logique )

Citation:
Donc si tu mets un alphabet complet (minuscules+majuscules) ainsi que les 10 chiffres...
Dans ce cas-là, il y a toujours une solution: encoder les patterns avec un arbre binaire de recherche par exemple. Tu réduis la complexité en Log. Ou alors faire un DAG dans lequel tu peux faire progresser la recherche incrémentalement en élaguant les branches non pertinentes au plus tôt.

-- Didou
Didou est déconnecté   Réponse avec citation
Vieux 03/02/2006, 14h03  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Citation:
Dans ce cas-là, il y a toujours une solution: encoder les patterns avec un arbre binaire de recherche par exemple. Tu réduis la complexité en Log. Ou alors faire un DAG dans lequel tu peux faire progresser la recherche incrémentalement en élaguant les branches non pertinentes au plus tôt.
Euh... moi pas tout saisir, lol

Citation:
dans lequel tu peux faire progresser la recherche incrémentalement en élaguant les branches non pertinentes au plus tôt
Ca je vois, ca parait logique et efficace, meme si ca demande de changer un petit chouillat l'algo de base (pas méchant)

Citation:
Dans ce cas-là, il y a toujours une solution: encoder les patterns avec un arbre binaire de recherche par exemple. Tu réduis la complexité en Log.
En gros tu fais un premier comparatif très grossier, puis le comparatif fin uniquement sur ceux qui correspondent ? ou alors j'ai rien compris ? :/
Mollusk est déconnecté   Réponse avec citation
Vieux 03/02/2006, 18h06  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Bon, je viens de faire des petits tests vite fait (en moins de 2h) sur la reco... Je pense que c'est pas autant au point que celle de Didou, mais ce n'est qu'un début... Je n'ai intégré que alpha, beta, gamma, a, b, et c, et ca se plante tout le temps entre a et c, lol... pour le reste ca s'en sort pas trop mal

J'ai tenté de corrigé les données erronées en fin de parcours, ca marche pas trop mal...

Ce que vous verrez :
- Ca affiche la position de tous les points pendant que ca trace, faut pas faire attention
- Quand on relache, ca prend 16 points sur le tracé, plus ou moins bien espacés, mais normalement à peu pret à égale distance en nombre de points tracés, et ca les affiche en rouge sur le tracé...
- Ca calcul ensuite l'angle entre les points, en soustrayant l'angle au niveau du point d'avant (sauf pour le premier point, bien sur). Avantage ? En théorie ca doit reconnaitre quel que soit le sens dans lequel on dessine ! Pour cela il suffit de ne pas effectuer de comparaison sur le premier angle (il sert de repère). Dans cet exemple j'ai laissé la comparaison avec le premier histoire de pouvoir différencier alpha et gamma... (sinon ca prend toujours gamma pour alpha...)
- Ca affiche ensuite 2 choses. En premier la lettre que ca pense reconnaitre (alpha, beta, gamma, a, b, ou c), comme j'ai dit ca plante beaucoup entre a et c. Puis, en-dessous, ca affiche un mystérieux code à 17 chiffres/lettres... C'est en fait le code représentatif du tracé. Et ouais, c'est tout con comme ca Suffit de copier/coller le code pour pouvoir l'utiliser. C'est comme ca que j'ai obtenu les codes pour mes lettres... Donc c'est facile d'en rajouter d'autres, et c'est facile à programmer...

Sinon, pour être discriminatoire, ca compare les différences d'angles en chaques points entre le tracé dessiné et les 'tracés' en mémoire, en mettant pour chacun la différence au carré... Parce que si on a une différence d'1, ca fera juste 1 de différence, alors que 4 donnera direct 16, ce qui tend à éliminer le tracé plus facilement...

Voilà en gros pour la méthode, le code sera inclus dans PAlib à terme... Sinon, dans l'idéal je compte inclure ca dans l'arm7, histoire de prendre 0 temps CPU de l'arm9, mais avec les émulateurs actuels ca risque d'être difficile... Yopyop, au boulot !!

Voilà, qu'en pensez-vous (désolé, c'est pas aussi bien que celui de Didou :/)

www.palib.info/test/Reco.zip

code tout moche : http://www.rafb.net/paste/results/YyVZH156.html

Dernière modification par Mollusk ; 03/02/2006 à 18h25.
Mollusk est déconnecté   Réponse avec citation
Vieux 03/02/2006, 18h17  
Bobby Sixkilla
Maître Chinpoko-extra-mon
 
Date d'inscription: 10/11/2005
Localisation: Palaiseau (Rive sud)
Messages: 6 466
Voir les codes amis Nintendo DS
Par défaut

Didou et Mollusk, vous déchirez tout!!! La DS va pouvoir rivaliser avec les Palm! En plus, pour les jeux, ça peut être vraiment sympa.
__________________
"Un pour l'argent, deux pour le spectacle et trois pour le cailloux" un putain d'énergumène
Bobby Sixkilla est déconnecté   Réponse avec citation
Vieux 03/02/2006, 18h25  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

http://www.rafb.net/paste/results/YyVZH156.html pour voir le code en fait
Mollusk est déconnecté   Réponse avec citation
Vieux 03/02/2006, 23h24  
sto
Membre confirmé
 
Date d'inscription: 05/12/2005
Localisation: Toulouse, FRANCE
Messages: 1 983
Par défaut

Très bon système, ça ouvre la voie à plein de nouveautés !
Petite question que je me pose : pourquoi ne pas utiliser des conventions d'écritures manuscrites déjà éprouvées, comme le Graffiti de Palm OS?
(voir ici)
__________________
Sto
Mon séjour Japon, été 2007

sto est déconnecté   Réponse avec citation
Vieux 03/02/2006, 23h31  
cyberfred91
Membre confirmé
 
Date d'inscription: 03/01/2006
Localisation: (91)
Messages: 158
Par défaut

sinon essayez de regarder au niveau de la reconnaissance sur palm

Le logiciel graffiti



voila, si ca peut donner des idees...
cyberfred91 est déconnecté   Réponse avec citation
Vieux 03/02/2006, 23h45  
sto
Membre confirmé
 
Date d'inscription: 05/12/2005
Localisation: Toulouse, FRANCE
Messages: 1 983
Par défaut

Humm humm... De quoi parlais-je à l'instant?
__________________
Sto
Mon séjour Japon, été 2007

sto est déconnecté   Réponse avec citation
Vieux 03/02/2006, 23h49  
cyberfred91
Membre confirmé
 
Date d'inscription: 03/01/2006
Localisation: (91)
Messages: 158
Par défaut

Desole, en plus ton post etait mieux.

Le temps que j'ai mis achercher lol... Desole
cyberfred91 est déconnecté   Réponse avec citation
Vieux 04/02/2006, 00h13  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

C'est prévu, c'est prévu... Sinon j'ai réfléchi dans le métro et je pense avoir un petit bug à la con qui major l'écart dans certains cas, faisant détecter la mauvaise lettre... la suite demain
Mollusk est déconnecté   Réponse avec citation
Vieux 04/02/2006, 14h34  
Didou
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 85
Par défaut

S'lut,

Mollusk, de toute façon, je vais mettre les sources onlines, comme ça tu verras le truc. Je ne l'ai pas encore fait car c'est du brut ) Y'a aucune doc, a peine 1 commentaire.. Bref... Il me faudrait un poil de temps pour nettoyer.

Par contre, s'il y a urgence, je balance l'archive telle qu'elle et 'faudra pas venir me dire que c'est crad

-- Didou
Didou est déconnecté   Réponse avec citation
Vieux 04/02/2006, 14h40  
yopyop
Membre confirmé
 
Date d'inscription: 29/11/2005
Messages: 149
Par défaut

Hé bien messieurs vous vous étés vraiment déchiré sur ce coup la.
Encore un grand bravo à nos développeurs.

yopyop

edit moi je péte mon câble si c’est pas un code aux petits oignons.
yopyop est déconnecté   Réponse avec citation
Vieux 04/02/2006, 14h43  
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Didou, je serais curieux de voir... Sinon j'ai ouvert un topic pour moi histoire de pas pourrir le tiens :
http://www.playeradvance.org/forum/s...ad.php?p=19190

Au final j'ai changé un peu, retiré la possibilité de reconnaissance en rotation, bidouillé un peu des valeurs, et là ca marche plutot bien, j'ai mis avec un similé-Graffiti pour tester
Mollusk est déconnecté   Réponse avec citation
Commentaire

Liens sociaux

Publicité



Utilisateurs connectés lisant ce projet : 1 (0 membres et 1 invités)
 
Outils du projet
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h22.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince

GARS 2.1.9 édité par The vB Geek
Copyright 2005-2006
Version française par Cédric Claerhout