Détection de Contours
Glissez pour afficher le menu
Les contours représentent des changements soudains d'intensité des pixels, ce qui correspond généralement aux frontières des objets. La détection des contours aide à la reconnaissance des formes et à la segmentation.
Détection de contours de Sobel
L'opérateur Sobel calcule les gradients (variations d'intensité) dans les directions X et Y, ce qui permet de détecter les contours horizontaux et verticaux.
# Convert to grayscale
image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# Apply Sobel filter
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5) # Detects vertical edges
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5) # Detects horizontal edges
sobel_combined = cv2.magnitude(sobel_x, sobel_y) # Combines both directions
Paramètres clés :
src: image d'entrée (doit être en niveaux de gris) ;ddepth: profondeur de l'image de sortie (par exemple,cv2.CV_64F) ;dx: ordre de la dérivée dans la direction X (mettre1pour les contours horizontaux) ;dy: ordre de la dérivée dans la direction Y (mettre1pour les contours verticaux) ;ksize: taille du noyau (doit être impaire, par exemple,3,5,7).
Détection de contours de Canny
Le détecteur de contours de Canny est un algorithme multi-étapes qui fournit des contours plus précis en :
- Appliquant un flou gaussien pour supprimer le bruit.
- Calculant les gradients d'intensité à l'aide des filtres Sobel.
- Supprimant les contours faibles.
- Utilisant un double seuillage et un suivi des contours.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
image: image d'entrée en niveaux de gris ;threshold1: seuil inférieur pour la détection des contours (par exemple,50) ;threshold2: seuil supérieur pour la détection des contours (par exemple,150) ;apertureSize(optionnel) : taille du noyau Sobel (par défaut :3, doit être impair) ;L2gradient(optionnel) : utilisation d'un calcul de gradient L2 plus précis (par défaut :False).
Comparaison des méthodes de détection de contours :
Glissez pour commencer à coder
Vous disposez d'une image :
- Convertir l'image en niveaux de gris et la stocker dans
gray_image; - Appliquer le filtre de Sobel dans les directions X et Y (profondeur de sortie
cv2.CV_64Fet taille de noyau3) et stocker les résultats danssobel_x,sobel_yrespectivement ; - Combiner les directions filtrées par Sobel dans
sobel_img; - Appliquer un filtre de Canny avec un seuil de
200à300et stocker le résultat danscanny_img.
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