Segmentation d’image

Segmentation d’image#

L’image parking.png est une observation aérienne d’un parking d’usine. L’objectif est de segmenter l’image en deux classes pour distinguer les véhicules du reste de l’image.

Segmentation manuelle

  • Affichez l’histogramme de l’image et déterminez une valeur de seuil qui permette de faire la distinction.

  • Appliquez le seuil choisi sur l’image avec l’instruction seg = (img > seuil) * 1seg est l’image segmentée, img est l’image à niveau de gris et seuil est le seuil. La multiplication par 1 permet d’obtenir un résultat numérique et non booléen, facilitant les traitements qui seront faits par la suite. Le résultat correspond-il à vos attentes ?

  • Calculez l’exactitude (accuracy, sklearn.metrics.accuracy_score) en utilisant la vérité terrain. Pour rappel, une image peut être vectorisée avec l’instruction .ravel(). Prenez garde également à comparer des vecteurs de même amplitude : il peut être utile de diviser l’intensité des images par leur valeurs maximale (.max()). Que constatez-vous ?

Segmentation avec la méthode de Otsu

La méthode de Otsu permet de déterminer une valeur de seuil de façon automatique, à partir de l’histtogramme de l’image.

  • Effectuez la segmentation de l’image avec le seuil de Otsu (skimage.filters.threshold_otsu). Le résultat correspond-il à vos attentes ? Qu’en est-il de l’exactitude ?

Dénombrement automatique des véhicules

Pour terminer, on cherche enfin à dénombrer automatiquement le nombre de véhicules. La « labellisation » de l’image consiste à numéroter chaque objet d’une segmentation binaire.

  • Labellisez la meilleure segmentation obtenue (skimage.measure.label) et déterminez le nombre d’objets en récupérant la valeur la plus grande de la labellisation (.max()).

  • Vous pouvez améliorer la segmentation binaire en réduisant la taille de chaque objet. De ce fait, les petits objets, qui ne correspondent pas à de vrais véhicules, seront supprimés. Pour cela, faite une érosion (skimage.morphology.binary_erosion) avec un élément structurant (footprint) carré de 3 pixels de côté.