Myriad Blog 1.3.0 Friday, Apr 18th, 2014 at 02:37am 

Friday, Mar 2nd, 2007 at 04:53pm
ScanToMusic étape 2

 
Nous avons attaqué les premiers algorithmes de détection proprement dits.
Nous partons d'une image déformée et bruitée, dans laquelle les lignes ne sont pas parfaitement horizontales :
 

 
Après avoir appliqué les algorithmes de débruitage et d'optimisation du contraste de l'étape 1, on en extrait les lignes fines et "presque" horizontales. Les tiges, barres de mesures, accroches, têtes de notes et autres symboles sont gommés :
 

 
Puis une recherche des pentes des droites est effectuée, avec une précision d'1/10 de degré (cela pourra être ajusté par la suite), le résultat apparaissant ici en rouge :
 

 
Les lignes de portées apparaissent donc clairement, avec leur pente et leur écartement. Ces données sont cruciales pour la suite, lorsque nous effectuerons la détection des symboles qui sont imprimés dessus.
 
On suppose cependant ici que les droites restent des droites, ce qui n'est pas toujours le cas lors d'un scan. Parfois lorsqu'on scanne une page d'un livre relié, il y a une courbure, une déformation sur le bord de la page.
L'algorithme doit donc maintenant être modifié pour s'adapter à ces contraintes, et effectuer le suivi de la pente de chacune des lignes de portée.
by Olivier Guillion
Comments

Comment from CRI-CRI Friday, Mar 2nd, 2007 at 07:00pm
Idée baroque
Une idée baroque : si je connais la hauteur du premier point de chaque ligne de portée, (ou plus exactement d'un segment pris en référence) et que je parcoure ensuite la page de gauche à droite, point par point, ne puis-je connaître lors de la détection de chaque nouveau point la correction exacte à appliquer pour déplacer immédiatement celui-ci à l'exacte horizontale de la référence de départ ?
 
En quelque sorte un scan qui suit un plan préétabli et qu'il compare point par point avec ce qu'il détecte
 
J'avoue ne pas saisir l'intérêt de calculer une pente, sauf à opter a priori pour une correction globale, qui risque de ne pas pouvoir résoudre les 'accidents' de l'image fournie
 
Par contre, commencer le boulot proprement dit sur une partition déjà redressée devrait vous éviter pas mal de problèmes

Comment from bubu42 Friday, Mar 2nd, 2007 at 09:45pm
Pat'Apouf !
Ce blog est vraiment une excellente initiative...  
Ca me rappelle la BD du célèbre Pat qu'on attendait avec impatience dans les dernières pages de l'hebdomadaire. Le sujet n'est pas le même, mais c'est passionnant de suivre l'avancée des travaux, étape par étape, d'autant plus que les livraisons sont quotidiennes.
Après lecture des renseignements donnés dans le manuel de PDF2Music et de l'étape 1 de ScanToMusic, je me suis dit "ils vont donc rechercher les lignes horizontales" Mais je ne pensais pas que ça irait aussi vite.
Donc, un double bravo, en guise d'encouragement.

Comment from Franck Friday, Mar 2nd, 2007 at 09:58pm
Niveau habile
Une portée mesure en moyenne entre 15 et 16 cm de long. La faire pivoter d'un dixième de degré revient à déplacer verticalement une de ses extrémités d'un quart de millimètre, c'est-à-dire moins d'un pixel sur un écran à 72dpi. C'est très bien que ce soit le logiciel qui s'en charge !

Comment from Sylvain Machefert Friday, Mar 2nd, 2007 at 10:21pm
Précision de l'angle
Oui mais si le scan est à plus de 72 dpi ?
 
ça m'est arrivé de régler l'inclinaison d'une image à quelques centièmes de degrés près.

Comment from Franck Saturday, Mar 3rd, 2007 at 08:58am
à Sylvain
C'est la résolution de l'écran (plus exactement de l'image affichée) qui est déterminante pour l'opération de rotation. Elle ne te permet pas un mouvement inférieur à un pixel, il te faut donc zoomer à 400% pour qu'un déplacement d'un pixel corresponde à une rotation d'un dixième de degré. A moins d'entrer la valeur d'angle à la main (ce que peu de pilotes autorisent) ce n'est pas faisable dans la fenêtre de prévisualisation de l'acquisition. Il faut donc passer par un logiciel de traitement d'image avant de repasser à OMeR.
1/10e de degré, dit comme ça, ça paraît grossier comme précision parce qu'on est habitués, avec d'autres unités, à manipuler des centièmes, voire des deux-cent-cinquante-sixièmes ou des millièmes, mais en réalité c'est vraiment énorme...

Comment from Olivier Guillion Saturday, Mar 3rd, 2007 at 09:52am
Re: Idée baroque
CRI-CRI a écrit:
Quote:
Une idée baroque : si je connais la hauteur du premier point de chaque ligne de portée, (ou plus exactement d'un segment pris en référence) et que je parcoure ensuite la page de gauche à droite, point par point, ne puis-je connaître lors de la détection de chaque nouveau point la correction exacte à appliquer pour déplacer immédiatement celui-ci à l'exacte horizontale de la référence de départ ?
 
En quelque sorte un scan qui suit un plan préétabli et qu'il compare point par point avec ce qu'il détecte
 
J'avoue ne pas saisir l'intérêt de calculer une pente, sauf à opter a priori pour une correction globale, qui risque de ne pas pouvoir résoudre les 'accidents' de l'image fournie
 
Par contre, commencer le boulot proprement dit sur une partition déjà redressée devrait vous éviter pas mal de problèmes

 
Les images sont en niveaux de gris. Donc pour connaître, en un point donné, le "centre" exact de la ligne horizontale, il faut prendre le point le plus noir dans l'épaisseur de la ligne.  
Mais, étant donné que:
1- L'image est bruitée, donc ce point risque de ne pas être trouvé à sa véritable position
2- Il y a des symboles affichés sur les lignes, ce qui ne permet pas un suivi de chaque ligne de bout en bout sans interruption,
 
cela nécessiterait de toute manière des opérations de lissage et d'interpolation. Donc autant suivre toutes les lignes en même temps, et compenser globalement toutes les déformations et rotations. Ceci pourrait être fait mathématiquement lors de l'analyse ultérieure plutôt que de recalculer l'image avant de commencer, mais cette 2e solution permet de simplifier l'écriture de tous les modules qui vont suivre.

Comment from Olivier Guillion Saturday, Mar 3rd, 2007 at 09:55am
A Sylvain et Franck
Nous travaillons sur des images à environ 200/300 dpi, en niveau de gris.
 
S'il faut pouvoir gommer les lignes horizontales après la détection, une précision au pixel près serait souhaitable. Je n'ai pas encore fait les calculs, mais la précision au 10e de degré peut être très facilement augmentée, ou diminuée, en fonction des résultats que nous obtiendrons lors du "gommage".
 
Mais je ne sais pas encore exactement comment nous allons nous y prendre, donc on verra ça par la suite


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013