Détection des contours

Traitement d'images en Python

Rebeca Gonzalez

Data Engineer

Détection des contours

  • Mesurer la taille
  • Classer les formes
  • Déterminer le nombre d'objets

Total de points sur les jetons : 29.

Traitement d'images en Python

Images binaires

On peut obtenir une image binaire par seuillage ou détection de contours

Traitement d'images en Python

Trouver des contours avec scikit-image

Préparer l'image

Transformer l'image en niveaux de gris 2D.

# Make the image grayscale
image = color.rgb2gray(image)

Traitement d'images en Python

Trouver des contours avec scikit-image

Préparer l'image

Binariser l'image

# Obtain the thresh value
thresh = threshold_otsu(image)

# Apply thresholding
thresholded_image = image > thresh

Traitement d'images en Python

Trouver des contours avec scikit-image

Puis utiliser find_contours().

# Import the measure module
from skimage import measure

# Find contours at a constant value of 0.8
contours = measure.find_contours(thresholded_image, 0.8)

Traitement d'images en Python

Valeur de niveau constante

Traitement d'images en Python

Étapes pour repérer des contours

from skimage import measure
from skimage.filters import threshold_otsu

# Make the image grayscale
image = color.rgb2gray(image)

# Obtain the optimal thresh value of the image thresh = threshold_otsu(image) # Apply thresholding and obtain binary image thresholded_image = image > thresh
# Find contours at a constant value of 0.8 contours = measure.find_contours(thresholded_image, 0.8)
Traitement d'images en Python

Étapes pour repérer des contours

Résultat

Traitement d'images en Python

Forme d'un contour

Contours : liste de tableaux (n,2) de type ndarray.

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2)
(401, 2)
(401, 2) 
(123, 2)
(123, 2) 
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2)

Traitement d'images en Python

Forme d'un contour

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Bord extérieur
(401, 2)
(401, 2)
(123, 2)
(123, 2)
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Traitement d'images en Python

Forme d'un contour

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Bord extérieur
(401, 2)
(401, 2) --> Bord intérieur
(123, 2)
(123, 2) 
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Traitement d'images en Python

Forme d'un contour

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Bord extérieur
(401, 2)
(401, 2) --> Bord intérieur
(123, 2)
(123, 2) --> Ligne de division des jetons
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Traitement d'images en Python

Forme d'un contour

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Bord extérieur
(401, 2)
(401, 2) --> Bord intérieur
(123, 2)
(123, 2) --> Ligne de division des jetons
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) --> Points 

Nombre de points : 7.

Traitement d'images en Python

Passons à la pratique !

Traitement d'images en Python

Preparing Video For Download...