Bonjour le forum,
Le développement de MicroCartouche OSI avance assez bien. Afin de simplifier autant que possible l'étape (cruciale !) d'étalonnage qui permet de dessiner ensuite des échelles dans les cartouches, je suggère l'algorithme suivant,
entièrement automatique. Je le détaille ici, ce qui va paraître fastidieux, mais l'ordinateur fait tout tout seul. J'insiste : cela va paraître alambiqué, peut-être même difficile à comprendre, mais je crois que ça en vaut la chandelle parce que l'utilisateur n'a, au final, que très peu de chose à faire (mais il faut attendre la fin de ce long message pour s'en rendre compte
).
Première chose, on s'en doute : charger l'image qui va servir pour l'étalonnage.
-
MC-OSI-image-etalon.jpg (62.03 Kio) Vu 7273 fois
Ensuite, nous allons
nettoyer cette image pour la rendre utilisable par l'ordinateur. Voici comment je procède :
- Transformer l'image en niveaux de gris, c'est-à-dire en une teinte de gris comprise entre le noir (0x000000) et le blanc (0xffffff), avec comme « milieu » le gris moyen (0x808080), et tous les intermédiaires possibles.
- Transformer cette image en noir et blanc : tout pixel plus clair que 0x808080 devient blanc, tout autre pixel devient noir.
- Supprimer les poussières : pour chaque pixel noir, calculer le nombre de pixels adjacents noir. Si ce nombre est strictement inférieur à 5, ce qui est souvent le cas quand il y a des poussières (et non pour les pixels noirs des graduations), transformer ce pixel en pixel blanc. Cette étape est répétée plusieurs fois (5 fois dans mes tests actuels).
Voici le résultat de ces opérations :
-
MC-OSI-image-etalon-nettoyage.jpg (55.93 Kio) Vu 7270 fois
Ensuite, nous allons effectuer des mesures afin de déterminer la longueur (en pixels) d'une graduation. En l'état actuel, l'algorithme suppose remplies les deux conditions suivantes :
- L'image ne doit pas être tordue; autrement dit les graduations doivent être verticales.
- Le côté gauche de l'image est blanc.
À partir de là, l'ordinateur calcule, par pas de 20 pixels en ordonnée, la largeur de tous les
traits de graduations complets qu'il rencontre (cf. image ci-dessous,
traits verts), ainsi que de tous les
espaces blancs entre deux traits (cf. image ci-dessous,
traits rouges). Voici une illustration du processus :
-
MC-OSI-image-etalon-mesures.jpg (87.83 Kio) Vu 7270 fois
À partir de là, les mesures sont triées par ordre croissant puis analysées deux à deux. Dès qu'une mesure est anormalement grande (par ex. celles qui se trouvent en haut de l'image, pour les grandes graduations de 50 µm), elle est écartée. On obtient ainsi, dans mon exemple :
- Largeur moyenne d'une trait de graduation : 9 pixels.
- Largeur moyenne d'un espace blanc : 50 pixels.
- Longueur moyenne d'une graduation : 59 pixels.
Qu'est-ce que voit l'utilisateur ? MC l'informe que, sur son image, une graduation mesure 59 pixels. L'utilisateur n'a donc qu'à indiquer l'équivalent en micromètres (10 µm dans mon exemple) pour faire l'étalonnage !Qu'en pensez-vous ?
Cordialement,
Eddy