Pour mettre à plat les différentes techniques de travail sur les images, nous avons travaillé sur des pages de texte, en essayant d'y appliquer divers algorithmes préalables à la reconnaissance optique de caractères (OCR). Le but est de vérifier quels algorithmes s'avèrent efficaces dans la chaine de traitement d'une telle reconnaissance, afin de voir ensuite lesquels appliquer lors de la reconnaissance des symboles musicaux. Nous sommes donc partis d'un texte scanné dont voici un extrait, après ajustement automatique du contraste : Nous le passons en inversion vidéo pour plus de confort : Ensuite, nous avons essayé l'algorithme suivant : si la squelettisation peut être assimilée à un "feu de prairie" (voir billet précédent), alors l'algorithme inverse permettrait de connaître les lignes de séparation entre les caractères. Imaginons que chaque forme de la page (chaque lettre) soit un ballon dans lequel on souffle. Les point de rencontre des parois de ces ballons tracent une ligne de partage entre chacun d'entre eux. Nous avons donc soufflé... ... et encore soufflé... Ici, nous ne résistons pas à vous montrer un détail de cette image, au résultat graphique assez sympathique. Nous adorons , notamment la bouille des "e": Mais bon, on n'est pas là [que] pour s'amuser. En poursuivant le gonflage, on obtient des "cellules" qui englobent chaque caractère. Ici, le caractère d'origine a été surimprimé en rouge pour bien voir : Vu d'un peu plus près : Et après "élagage" des branches inutiles : On voit maintenant que chaque cellule contient un caractère (ou un morceau de caractère lorsqu'il ya a un point ou un accent). Par contre, lorsque deux caractères se touchaient au départ (le hr du dernier mot), ils se retrouvent dans la même cellule. Les séparer sera le but du prochain algorithme. |
|
|
by Olivier Guillion | | |
| |
|
Aujourd'hui, nous avons implémenté les premieres fonctions de traitement par morphologie mathématique. Il s'agit d'opérations simples consistant à donner à chaque pixel une valeur de densité correspondant à un calcul logique sur son environnement immédiat. Cela se rapproche de la convolution, qui, elle, au lieu d'un calcul logique, est un calcul arithmétique. Ces deux types de traitement utilisent une matrice, appelée en morphologie mathématique "élément structurant" dont on peut choisir la taille et la "forme", pour étudier l'environnement. Pour mieux comprendre la différence, une convolution pourra par exemple donner à chaque pixel une valeur égale à la moyenne des pixels qui l'entourent (lissage) En morphologie mathématique, on pourra par exemple donner à chaque pixel une valeur égale au plus sombre des pixels qui l'entourent (dilatation) La forme de la matrice d'analyse compte également beaucoup. Voici un exemple d' "ouverture", qui est une erosion suivie d'une dilatation. Nous partons de cette image: Elle est volontairement "brut de scan" pour montrer l'effet des opérations de morphologie mathématique sur le fond de la page. Nous effectuons une ouverture avec une matrice contenant une simple ligne horizontale. On obtient alors: Toutes les petites structures non horizontales ont disparu, ne restent que les grandes lignes horizontales (pratique, pour détecter les portées) et les variations lentes de densité du fond de la page. De la même manière, l'image d'origine, traitée par une ouverture avec une matrice contenant une simple ligne verticale, donne ceci: Seules les verticales sont restées (barres de mesures, tiges, etc). Enfin, en traitant l'image par une ouverture avec une matrice contenant un disque (cercle plein), on obtient: ce qui fait ressortir les têtes de notes noires. Ce n'est que le début, il nous faut affiner tout cela, et jeter un oeil sur les autres opérations de morphologie mathématique, dont certaines ont de jolis noms. Notamment le chapeau haut-de-forme, l'amincissement, la squelettisation ou la ligne de partage des eaux. Promis, on postera ici des images |
|
|
by Olivier Guillion | | |
| |
|
- Un crash possible en mode gravure, lorsqu'un tuplet est coupé par une barre de mesure, a été corrigé. - Une boucle infinie pouvait avoir lieu après l'édition d'une note lorsqu'une musique contenant des voix chantées se jouait - L'import des fichiers tab a été amélioré. - Des problèmes avec OMeR sous Windows Vista ont été signalés. Ils affectaient la prise en compte du numéro de licence, la sauvegarde des préférences, et la communication avec Harmony / Melody. Une version beta, corrigeant (théoriquement) ces problèmes, est disponible pour ceux qui en font la demande, avant d'être diffusée de manière plus large. |
|
|
by Olivier Guillion | | | |
|
Aujourd'hui, deux problèmes concernant les vues ont été corrigés. Ils avaient été mis en évidence dans des scripts de Daniél: - Il était impossible de fabriquer une vue sans aucune portée. Ou plus exactement, il était possible de la fabriquer, mais la visualisation d'une autre vue rendait de nouveau certaines portées visibles. - Dans MyrScript: Score.Preserve() ne préservait pas les vues Un problème graphique intermittent, signalé par Ed, perturbait l'affichage et l'impression des accroches spéciales en mode "inversées". Ces accroches pouvaient apparaître désalignées avec celles des notes adjacentes. Enfin, Sylvain nous a fait remarquer que, dans Virtual Singer, il n'était pas possible de forcer la phonétique d'une syllabe si cette dernière n'était pas prononcée dans la langue utilisée. Ce sera donc modifié dans la prochaine version. |
|
|
by Olivier Guillion | | | |
|
- Edition des changement de tonalité : correction d'un vieux problème d'affichage du menu "Appliquer à" - Lors du changement de clé et de tonalité, la zone concernée va jusqu'à la prochaine clé ou tonalité affichée, même s'il ne s'agissait que d'un marquage de précaution ou de rappel - Windows: Meilleure gestion du copier / coller entre une application Windows et nos applications - Crash possible lors de l'édition d'une accroche spéciale - Dans le mixeur du Player ou du Plug-In, les accolades sur plus de deux portées ne fusionnent plus l'instrument. Enfin une version intermédiaire du Myriad Music Plug-In (5.4.6d) a été publiée afin de pallier un problème sur les fichiers protégés par leur auteur. |
|
|
by Olivier Guillion | | | |
|
|