Hakim El Gharrabi GE5 Principe de détermination des phases de croissances à partir d'une image d'écaille de Smolt 1 Hakim El Gharrabi GE5 Table des matières 1. Introduction ..................................................................................................................................... 3 2. Détermination de la courbe de croissance ....................................................................................... 3 3. Points d’inflexions ........................................................................................................................... 5 4. 1) Détermination du 1er point ........................................................................................................... 5 2) Détermination du 2ème point......................................................................................................... 6 Conclusion ....................................................................................................................................... 7 Table des illustrations Figure 1 : écaille ....................................................................................................................................... 3 Figure 2 : souche d'arbre ......................................................................................................................... 3 Figure 3 : ligne de mesure ....................................................................................................................... 4 Figure 4 : courbe de croissance ............................................................................................................... 4 Figure 5 : points d'inflexions ................................................................................................................... 5 Figure 6 : 1er point d'inflexion ................................................................................................................ 5 Figure 7 : 2ème point d'inflexion............................................................................................................. 6 Figure 8 : résultat obtenu ........................................................................................................................ 7 2 Hakim El Gharrabi GE5 1. Introduction Dans le cadre de notre formation d’ingénieur Génie Electrique, nous avons réalisé le projet suivant « Mesure par vision du taux de croissance d'un smolt ». Le principe est de déterminer le taux de croissance d’un smolt à partir d’une image d’écaille. Un SMOLT est un saumon ayant atteint l’âge de sa descente passive vers la mer. Au printemps, l’éclosion se produit. En grandissant, le saumon devient un tacon, il mesure alors de 5 à 18 cm. Il restera en rivière 1 à 3 ans avant de se transformer en smolt. Les smolts vont alors se regrouper et se laisser porter par le courant, c’est la dévalaison vers l’océan. Il s’effectue une transformation physique complexe, ils deviennent plus grands pour leur permettre de passer de l’eau douce à l’eau salée. Tout comme les arbres, les saumons déposent des circulis (une quarantaine par ans) selon deux phases : Printemps/été ou les circulis sont espacés, Automne/Hiver ou les circulis sont rapprochés. Avec ceci on va pouvoir déterminer leurs taux de croissance. Actuellement ceci est fait à la main par l’opérateur ce qui prend énormément de temps pour traiter plusieurs écailles. C’est pourquoi le CNSS (Conservatoire National du Saumon Sauvage) a fait appel à nous, afin de créer une application qui traite ces données pour ainsi avoir les courbes de croissant et les points d’inflexion1. Nous allons détailler comment à partir d’une image d’écaille, on obtient une courbe de croissance. Circuli Figure 1 : écaille Figure 2 : souche d'arbre 2. Détermination de la courbe de croissance Pour déterminer la courbe de croissance à partir d’une image d’écaille, nous récupérons le centre de l’écaille et son extrémité. Nous traçons une droite qui passe par ces points et nous récupérons la valeur de chaque pixel de cette ligne en niveau de gris. 1 En mathématique, un point d’inflexion c’est la rupture d’une pente. 3 Hakim El Gharrabi GE5 Figure 3 : ligne de mesure Petit rappel sur les pixels : en niveau de gris les pixels sont codés sur 8bits c’est-à-dire peuvent prendre la valeur de 0 (noir) à 255 (blanc). Avec une inversion de couleur c’est-à-dire on soustrait la valeur de chaque pixel par 255. Sans cette différence, nous n’obtenons pas les courbes voulues (255 − valeurpixel𝑛 ), on obtient la courbe suivante, puis nous faisons le cumul de chaque pixel. Voici la formule ci-dessous. 𝒏𝒃_𝒑𝒊𝒙𝒆𝒍 𝒄𝒖𝒎𝒖𝒍𝒏 = ∑ 𝒗𝒂𝒍𝒆𝒖𝒓_𝒑𝒊𝒙𝒆𝒍𝒏 𝒏=𝟏 50 Courbe donnée soustraitants 45 40 Courbe donnée de l’algorithme 35 30 25 20 15 10 5 0 0 100 200 300 400 500 600 700 Figure 4 : courbe de croissance En abscisse nous avons le nombre de pixels sur la ligne de mesure, et en ordonnée nous avons la sommation de chaque pixel qui a été mis à l’échelle par rapport aux données des sous-traitants, pour ainsi valider l’algorithme. Nous voyons très bien les phases de croissance du smolt avec les différentes pentes de la courbe. Maintenant que nous avons la courbe de croissance, il va falloir déterminer les points d’inflexion. 4 Hakim El Gharrabi GE5 3. Points d’inflexions Comme il a été dit en introduction, un point d’inflexion c’est une rupture de pente (points en rouge sur la courbe). Voici un exemple ci-dessous. Figure 5 : points d'inflexions Pour déterminer les points d’inflexion, nous utilisons un algorithme de calcul d’erreur entre la courbe d’algorithme et la courbe du client. Pour illustrer les processus, le procédé sera énuméré. L’opérateur va saisir manuellement sur l’application développée, combien de points d’inflexion on doit trouver. 1) Détermination du 1er point Pour cela, on trace une droite partant du début de la courbe avec les coordonnées (0, 0), jusqu’à la fin de la courbe (droite en bleu sur la courbe ci-dessous). 50 45 40 35 30 25 20 15 10 5 0 0 100 200 300 400 500 600 700 Figure 6 : 1er point d'inflexion 5 Hakim El Gharrabi GE5 Une fois que la droite est tracée, on calcule l’erreur entre la courbe de l’algorithme (rouge) à celle de la droite (bleu) en balayant les n points que constituent les deux courbes avec la formule suivante. 𝒆𝒓𝒓𝒆𝒖𝒓𝒏 = (𝒄𝒐𝒖𝒓𝒃𝒆_𝒂𝒍𝒈𝒐𝒏 − 𝒅𝒓𝒐𝒊𝒕𝒆𝒏 )² On cherche l’erreur maximale, une fois trouvée, on estime qu’un point d’inflexion s’y trouve. On stocke les coordonnées de ce nouveau point. 2) Détermination du 2ème point Pour le 2ème point on procède comme précédemment, c’est-à-dire on trace une nouvelle fois une droite qui passe cette fois-ci par le nouveau point d’inflexion estimé précédemment jusqu’à la fin de la courbe. On recalcule l’erreur entre les deux courbes. Une fois que l’on détermine l’erreur max, on estime que le 2ème point se trouve à cet emplacement et on stocke ces nouvelles coordonnées. 50 45 40 35 30 25 20 15 10 5 0 0 100 200 300 400 500 600 700 Figure 7 : 2ème point d'inflexion Même principe pour trouver les n points que souhaite le client. Pour déterminer ces points, nous avons utilisé le logiciel Matlab. Nous avons retranscrit cet algorithme en une fonction Matlab (qui se code en c), puis testé sur une courbe d’algorithme, pour ainsi valider son bon fonctionnement avant de l’implanter dans le code de l’application. Voici le résultat obtenu page suivante. 6 Hakim El Gharrabi GE5 Figure 8 : résultat obtenu Comme on peut le voir sur le résultat obtenu, nous détectons bien les points d’inflexion. Actuellement sur tous les algorithmes recherchés, c’est le seul qui donne de bons résultats. Donc nous l’avons ainsi implanté dans l’application. Pour avoir de meilleurs résultats sur l’estimation des points, beaucoup de théorie existent telle que les probabilités, les statistiques. 4. Conclusion Dans cette note d’application, nous avons pu voir comment déterminer la courbe du taux de croissance d’un smolt ainsi que ces points d’inflexion à partir d’une image. Les résultats obtenus dépendent de la qualité de l’image et de l’écaille. Comme on a pu le voir, si, sur l’écaille à l’œil nu, on arrive facilement à déterminer les différentes phases, l’algorithme fournira de bons résultats. Or si à l’œil nu on a du mal à déterminer les différentes phases, l’algorithme donnera de mauvais résultats surtout pour la partie de détection de point d’inflexion. C’est pour ça que l’on demande à l’opérateur, à l’aide de l’interface Homme machine, de pouvoir modifier l’emplacement de ces points. L’algorithme actuel n’est pas tout à fait au point, car pour estimer où se trouvent exactement les points d’inflexion, c’est davantage du domaine du génie mathématique. 7