Myriad Blog 1.3.0 Thursday, Apr 24th, 2014 at 07:04pm 

Friday, Nov 14th, 2008 at 05:04pm
ScanToMusic Etape 24

 
Pour reconnaître un caractère, il faut pouvoir le comparer à un ou plusieurs caractères de référence, afin d'en déduire un niveau de similarité.
 
Mais quelles données comparer? La présence de pixels allumés ou éteints à tel ou tel endroit ? Cela est trop sensible à la fonte utilisé, la taille, le "bruit" dû aux imperfections du papier ou du scan...
 
Il faut donc fournir à l'algorithme de classification des données sur le caractère scanné à reconnaître, qui soient à la fois peu nombreuses, pour faciliter et accélérer les comparaisons, mais également qui décrivent bien la forme du caractère, pour que l'algorithme ait suffisamment de matériel pour discriminer.
 
Si l'extraction des caractéristiques de l'image du caractère scanné fournit des données qui, quelle que soit la manière dont on les représente, ne permettent pas à un observateur humain de savoir de quel caractère il s'agissait, il y a fort à parier qu'un algorithme ne le pourra pas non plus (ou mal).
 
Dans cette optique, nous avons essayé de "vectoriser" l'image, c'est-à-dire, à partir du dessin du caractère, trouver le nombre minimal de formes graphiques (droites, arcs de cercle, etc) qui permettent de redessiner ce caractère, et suffisantes pour qu'un observateur humain puisse déterminer de quel caractère il s'agissait.
 
Le travail est complexe, mais nous sommes arrivés à d'assez bon résultats. En voici quelques exemples, en utilisant seulement des lignes droites :
 
A gauche un petit "a" extrait d'un texte scanné.
A droite, l'image décomposée (vectorisée) par l'algorithme en seulement 5 lignes droites
 

 
Avec un peu d'imagination, on peut aisément reconnaitre le "a" dans le dessin de droite. Cela ressemble à un petit "a" tracé à la main par un allergique aux courbes
 
Même chose avec un petit "d" (4 lignes) :
 

 
Un "M" donne ceci (5 lignes, dont une pour le serif à gauche):
 

 
et enfin un grand A, décomposé en seulement trois lignes:
 

 
Les premiers résultats sont donc encourageants, car il réduisent grandement la quantité d'information fournie à l'algorithme. Il faut maintenant vérifier la stabilité de l'extraction des vecteurs, puis trouver comment comparer deux jeux de vecteurs afin de reconnaître la lettre.
 
Il n'est cependant pas encore certain que ce type de traitement sera retenu dans la version finale. Nous avons jusqu'ici développé une vingtaine d'algorithmes différents, avec plus ou moins de succès. Nous en conserverons, au final, un maximum de 3 ou 4. Tous les autres finiront à la poubelle
by Olivier Guillion


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013