Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Détection de Coins et de Blobs | Traitement d'Images avec OpenCV
Principes Fondamentaux de la Vision par Ordinateur

bookDétection de Coins et de Blobs

Détection de coins

La détection de coins est utilisée pour identifier les changements brusques d'intensité là où deux arêtes se rencontrent. Elle est utile pour l'appariement de caractéristiques, le suivi d'objets et la reconnaissance de structures.

Méthodes populaires :

  • Détecteur de coins de Harris (cv2.cornerHarris) : détecte les coins en se basant sur les variations de gradient ;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Convert to float32
gray = np.float32(gray)

# Apply Harris Corner Detection
harris_corners = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)
harris_corners = cv2.dilate(harris_corners, None)  # Improve visibility

# Mark detected corners in red
image[harris_corners > 0.01 * harris_corners.max()] = [0, 0, 255]
Note
Note

Paramètres :

  • src : image d'entrée en niveaux de gris (doit être en float32) ;
  • blockSize : taille de la fenêtre locale pour le calcul des gradients ;
  • ksize : taille d'ouverture de l'opérateur de Sobel (impair, par exemple 3, 5, 7) ;
  • k : paramètre libre du détecteur de Harris (valeurs typiques : 0.04 - 0.06).
  • Détecteur de coins de Shi-Tomasi (cv2.goodFeaturesToTrack) : sélectionne les coins les plus marqués dans une image ;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect corners
corners = cv2.goodFeaturesToTrack(gray, maxCorners=100, qualityLevel=0.01, minDistance=10)

# Draw detected corners in blue
for corner in corners:
    x, y = np.int32(corner[0])
    cv2.circle(image, (x, y), 5, (255, 0, 0), -1)
Note
Remarque

Paramètres :

  • image : image d'entrée en niveaux de gris ;
  • maxCorners : nombre maximal de coins à détecter ;
  • qualityLevel : qualité minimale des coins détectés (plage : 0.01 - 0.1) ;
  • minDistance : distance minimale entre les coins détectés.
Note
Approfondir

Paramètres de la méthode cv2.circle() pour mettre en évidence des objets :

  • image : l'image sur laquelle le cercle doit être dessiné ;
  • center_coordinates : les coordonnées du centre du cercle, représentées sous forme de tuple de deux valeurs : (X, Y) ;
  • radius : le rayon du cercle ;
  • color : la couleur du contour du cercle. En format BGR, passée sous forme de tuple (par exemple, (255, 0, 0) pour bleu) ;
  • thickness : l'épaisseur du contour du cercle en pixels. Une valeur de -1 remplira entièrement le cercle avec la couleur spécifiée.

Détection de Blobs

La détection de blobs identifie des régions d'intensité similaire dans une image, utile pour la détection et le suivi d'objets.

Une des méthodes populaires pour la détection de blobs est SimpleBlobDetector

  • cv2.SimpleBlobDetector : détecte des points clés représentant des blobs selon la taille, la forme et l'intensité.
# Set up SimpleBlobDetector parameters
params = cv2.SimpleBlobDetector_Params()

# Adjust parameters for better detection
params.minThreshold = 5
params.maxThreshold = 255
params.filterByArea = True
params.minArea = 100
params.maxArea = 5000
params.filterByCircularity = True
params.minCircularity = 0.02
params.filterByConvexity = True
params.minConvexity = 0.5
params.filterByInertia = True
params.minInertiaRatio = 0.001

# Create detector and detect blobs
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)

# Draw blobs on the image
image_with_blobs = cv2.drawKeypoints(image, keypoints, None, (0, 255, 0),
                                     cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Note
Remarque

Paramètres :

  • minThreshold, maxThreshold : plage d'intensité pour la détection de blobs ;
  • filterByArea : active le filtrage basé sur la taille du blob ;
    • minArea, maxArea : spécifie les contraintes de taille pour les blobs détectés ;
  • filterByCircularity : active le filtrage basé sur la circularité ;
    • minCircularity : des valeurs plus faibles détectent des blobs allongés ;
  • filterByConvexity : active le filtrage basé sur la convexité ;
    • minConvexity : des valeurs plus faibles permettent des formes concaves ;
  • filterByInertia : active le filtrage basé sur l'allongement ;
    • minInertiaRatio : des valeurs plus faibles détectent des blobs allongés.
Tâche

Swipe to start coding

Vous disposez des images d'une usine (factory) et de tournesols (sunflowers) :

  • Convertir l'image factory en niveaux de gris et la stocker dans la variable gray_factory ;
  • Convertir l'image sunflowers en niveaux de gris et la stocker dans la variable gray_sunflowers ;
  • Il est nécessaire pour le détecteur de Harris de convertir la matrice d'image en float32, effectuez cette conversion et stockez le résultat dans gray_float ;
  • Appliquer la détection de coins de Harris et stocker le résultat dans harris_corners (paramètres recommandés : blockSize=2, ksize=3, k=0.04) ;
  • Utiliser dilate() pour améliorer la visibilité des harris_corners ;
  • Appliquer la détection de coins Shi-Tomasi à l'image et stocker le résultat dans shi_tomasi_corners (paramètres recommandés : gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10) ;
  • Créer un objet SimpleBlobDetector_Params pour initialiser les paramètres et le stocker dans params ;
  • Créer un détecteur de blobs avec les paramètres spécifiés et le stocker dans detector ;
  • Détecter les points clés des blobs et les stocker dans keypoints.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 8
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

Awesome!

Completion rate improved to 3.45

bookDétection de Coins et de Blobs

Glissez pour afficher le menu

Détection de coins

La détection de coins est utilisée pour identifier les changements brusques d'intensité là où deux arêtes se rencontrent. Elle est utile pour l'appariement de caractéristiques, le suivi d'objets et la reconnaissance de structures.

Méthodes populaires :

  • Détecteur de coins de Harris (cv2.cornerHarris) : détecte les coins en se basant sur les variations de gradient ;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Convert to float32
gray = np.float32(gray)

# Apply Harris Corner Detection
harris_corners = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)
harris_corners = cv2.dilate(harris_corners, None)  # Improve visibility

# Mark detected corners in red
image[harris_corners > 0.01 * harris_corners.max()] = [0, 0, 255]
Note
Note

Paramètres :

  • src : image d'entrée en niveaux de gris (doit être en float32) ;
  • blockSize : taille de la fenêtre locale pour le calcul des gradients ;
  • ksize : taille d'ouverture de l'opérateur de Sobel (impair, par exemple 3, 5, 7) ;
  • k : paramètre libre du détecteur de Harris (valeurs typiques : 0.04 - 0.06).
  • Détecteur de coins de Shi-Tomasi (cv2.goodFeaturesToTrack) : sélectionne les coins les plus marqués dans une image ;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect corners
corners = cv2.goodFeaturesToTrack(gray, maxCorners=100, qualityLevel=0.01, minDistance=10)

# Draw detected corners in blue
for corner in corners:
    x, y = np.int32(corner[0])
    cv2.circle(image, (x, y), 5, (255, 0, 0), -1)
Note
Remarque

Paramètres :

  • image : image d'entrée en niveaux de gris ;
  • maxCorners : nombre maximal de coins à détecter ;
  • qualityLevel : qualité minimale des coins détectés (plage : 0.01 - 0.1) ;
  • minDistance : distance minimale entre les coins détectés.
Note
Approfondir

Paramètres de la méthode cv2.circle() pour mettre en évidence des objets :

  • image : l'image sur laquelle le cercle doit être dessiné ;
  • center_coordinates : les coordonnées du centre du cercle, représentées sous forme de tuple de deux valeurs : (X, Y) ;
  • radius : le rayon du cercle ;
  • color : la couleur du contour du cercle. En format BGR, passée sous forme de tuple (par exemple, (255, 0, 0) pour bleu) ;
  • thickness : l'épaisseur du contour du cercle en pixels. Une valeur de -1 remplira entièrement le cercle avec la couleur spécifiée.

Détection de Blobs

La détection de blobs identifie des régions d'intensité similaire dans une image, utile pour la détection et le suivi d'objets.

Une des méthodes populaires pour la détection de blobs est SimpleBlobDetector

  • cv2.SimpleBlobDetector : détecte des points clés représentant des blobs selon la taille, la forme et l'intensité.
# Set up SimpleBlobDetector parameters
params = cv2.SimpleBlobDetector_Params()

# Adjust parameters for better detection
params.minThreshold = 5
params.maxThreshold = 255
params.filterByArea = True
params.minArea = 100
params.maxArea = 5000
params.filterByCircularity = True
params.minCircularity = 0.02
params.filterByConvexity = True
params.minConvexity = 0.5
params.filterByInertia = True
params.minInertiaRatio = 0.001

# Create detector and detect blobs
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)

# Draw blobs on the image
image_with_blobs = cv2.drawKeypoints(image, keypoints, None, (0, 255, 0),
                                     cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Note
Remarque

Paramètres :

  • minThreshold, maxThreshold : plage d'intensité pour la détection de blobs ;
  • filterByArea : active le filtrage basé sur la taille du blob ;
    • minArea, maxArea : spécifie les contraintes de taille pour les blobs détectés ;
  • filterByCircularity : active le filtrage basé sur la circularité ;
    • minCircularity : des valeurs plus faibles détectent des blobs allongés ;
  • filterByConvexity : active le filtrage basé sur la convexité ;
    • minConvexity : des valeurs plus faibles permettent des formes concaves ;
  • filterByInertia : active le filtrage basé sur l'allongement ;
    • minInertiaRatio : des valeurs plus faibles détectent des blobs allongés.
Tâche

Swipe to start coding

Vous disposez des images d'une usine (factory) et de tournesols (sunflowers) :

  • Convertir l'image factory en niveaux de gris et la stocker dans la variable gray_factory ;
  • Convertir l'image sunflowers en niveaux de gris et la stocker dans la variable gray_sunflowers ;
  • Il est nécessaire pour le détecteur de Harris de convertir la matrice d'image en float32, effectuez cette conversion et stockez le résultat dans gray_float ;
  • Appliquer la détection de coins de Harris et stocker le résultat dans harris_corners (paramètres recommandés : blockSize=2, ksize=3, k=0.04) ;
  • Utiliser dilate() pour améliorer la visibilité des harris_corners ;
  • Appliquer la détection de coins Shi-Tomasi à l'image et stocker le résultat dans shi_tomasi_corners (paramètres recommandés : gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10) ;
  • Créer un objet SimpleBlobDetector_Params pour initialiser les paramètres et le stocker dans params ;
  • Créer un détecteur de blobs avec les paramètres spécifiés et le stocker dans detector ;
  • Détecter les points clés des blobs et les stocker dans keypoints.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 8
single

single

some-alt