Dé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]
Paramètres :
src
: image d'entrée en niveaux de gris (doit être enfloat32
) ;blockSize
: taille de la fenêtre locale pour le calcul des gradients ;ksize
: taille d'ouverture de l'opérateur de Sobel (impair, par exemple3
,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)
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.
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)
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.
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 variablegray_factory
; - Convertir l'image
sunflowers
en niveaux de gris et la stocker dans la variablegray_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 dansgray_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é desharris_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 dansparams
; - 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
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.45
Dé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]
Paramètres :
src
: image d'entrée en niveaux de gris (doit être enfloat32
) ;blockSize
: taille de la fenêtre locale pour le calcul des gradients ;ksize
: taille d'ouverture de l'opérateur de Sobel (impair, par exemple3
,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)
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.
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)
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.
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 variablegray_factory
; - Convertir l'image
sunflowers
en niveaux de gris et la stocker dans la variablegray_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 dansgray_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é desharris_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 dansparams
; - 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
Merci pour vos commentaires !
single