Bonjour,
Je suis élève de terminale S. Ayant pris la spécialité ISN, je suis chargé pour le bac d'un projet à propos du traitement d'images. Une partie de ce projet concerne les images binaires avec des procédés tels que l'érosion, la dilatation, l'ouverture, la fermeture etc.. Le but final du projet est de pouvoir compter les balles sur une image en utilisant d'abord l'érosion (à plusieurs reprises) pour distinguer précisément les balles, puis en créant un programme qui récupère le tableau de valeurs de l'image binaire et à partir de celui-ci compte les balles. Voici d'abord le résultat de l'érosion (cinq érosions consécutives effectuées) :
Ce tableau est celui associé à l'image érodée : (c'est en fait un simple tableau avec des 0 et des 1 ayant les mêmes dimensions que l'image)
Ensuite, il me reste à compter chaque balle, c'est à dire (en fait) chaque ensemble de "1". J'ai d'abord considéré qu'un ensemble de "1" était un groupe dans lequel, si on prend un pixel, on trouve un autre pixel à 1 soit à gauche ou à droite, soit en haut ou en bas.
Mon idée est d'examiner les pixels et si on trouve un pixel étant à 1, on l'efface (affectation de la valeur 0) et on fait pareil tant qu'on trouve des pixels voisins (soit du même groupe) étant aussi à 1. Cette boucle permettra d'effacer un groupe entier, et une fois celui-ci effacé, on incrémente le compteur. On recommence l'opération jusqu'à ce que chaque groupe de pixels à 1 (soit chaque balle) soit effacé.
J'ai donc créé les fonctions suivantes :
La variable a contient le tableau de valeurs que j'ai mis un peu plus haut.
Pourtant, quand j'exécute le programme, je trouve un nombre improbable du style 35 000. Je ne vois pas où est mon erreur. Est-ce que quelqu'un pourrait m'aider ?
Merci d'avance.
i.Polo
Partager