Bonjour,
Je suis à la recherche d'un algorithme pour répondre au besoin d'un de mes programmes.
J'ai des petits rectangles de quelques pixels dans lesquels sont écrits des chiffres.
Je voudrais que mon programme puisse reconnaitre les chiffres inscrits dans les rectangles à partir de la couleur des pixels.
Cela consisterait donc en une fonction qui convertirait un chiffre "dessiné" sur une image en une variable entière :
Vous trouverez ci-dessous toutes les caractéristiques de la situation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part entier Convertir(Image monImage)
Note: quand je parlerai du "blanc pur" il s'agit de la couleur blanche RVB=(255;255;255).
- Les primitives du langage que j'utilise (le C/C++, pour info) me permettent de lire les couleurs RVB d'un pixel à partir de ses coordonnées (x;y). La lecture consiste en une extraction de 3 entiers entre 0 et 255 pour le rouge, le vert et le bleu.
- Les rectangles font 20x25 pixels environs.
- Les chiffres sont entre 0 et 99.
- Les chiffres sont centrés dans le rectangle. Un même chiffre sera toujours à la même place.
- Les chiffres sont écrits en blanc sur fond uni de couleur vert, bleu, rouge, ou noir. La teinte des couleurs de fond est constante et connue, donc facilement reconnaissable.
- La police d'écriture des nombres est toujours la même.
- Ce qui rends le décodage plus compliqué c'est que le tracé n'est pas parfait: il y a comme un léger flou sur les bords des chiffres qui va se mêler au fond. Il n'est donc pas possible d'enregistrer une matrice des pixels "blanc pur" de chaque chiffre pour les identifier. Il y a néanmoins quelques pixels de chaque chiffre qui reste constamment "blanc pur".
J'ai déjà quelques idées pour commencer, comme par exemples stocker dans des matrices les pixels "blanc pur" pour les 10 chiffres (de 0 à 9). Ainsi on peut toujours comparer les pixels qui correspondent mais je ne suis pas sur que ça va suffire et être fiable, du fait du faible nombre de pixel.
Existe-t-il un algorithme pour ce genre de décodage ?
Une librairie C existe-t-elle ? En existe-t-il une qui puisse simplifier l'algorithme ?
Sinon quelles méthodes privilégier ? Comment procéder ?
D'avance merci à tous pour votre aide amicale.
Cordialement,
Partager