Maison >développement back-end >Tutoriel Python >Détecteur de bord radieux à l'aide de python

Détecteur de bord radieux à l'aide de python

William Shakespeare
William Shakespeareoriginal
2025-02-28 09:49:10888parcourir

La détection des bords est une technique d'analyse d'image cruciale pour la reconnaissance d'objets basée sur les contours et est vitale pour la récupération des informations d'image. Il extrait des fonctionnalités clés comme les lignes et les courbes, souvent utilisées par la vision informatique avancée et les algorithmes de traitement d'image. Un algorithme de détection de bord robuste identifie avec précision les principaux bords tout en supprimant les faux bords induits par le bruit.

Les bords

représentent des changements locaux importants dans l'intensité de l'image (valeurs de pixels), se produisant généralement aux limites de la région. Ce tutoriel explique l'algorithme de détection de bord radieux et son implémentation Python.

Le détecteur de bord radieux

Nommé d'après son inventeur, John F. Canny (1986), le détecteur Canny prend une image en niveaux de gris en entrée et sort une image mettant en évidence les discontinuités d'intensité (bords).

Le processus implique:

  1. Réduction du bruit: La convolution gaussienne lisse l'image d'entrée, réduisant le bruit.
  2. Calcul du gradient: Un premier opérateur dérivé met en évidence des zones à forte dérivé spatial. L'ampleur et la direction du gradient sont déterminées à l'aide des dérivés x et y, cruciaux pour l'identification de la direction des bords.
  3. Suppression non maximale: Cette étape atténue les bords. L'algorithme se trace le long des crêtes de gradient, en réglant les pixels non-crône à zéro, ce qui entraîne une ligne de bord mince. Cela implique de comparer le dégradé à ses voisins; Seul le gradient maximal est conservé.
  4. Seuil d'hystérésis: deux seuils, t1 (supérieur) et t2 (inférieur), avec t1 > t2, suivi des bords de contrôle. Le suivi commence aux points au-dessus de t1 et continue jusqu'à ce que le gradient tombe en dessous de t2. Les points ci-dessus t1 sont toujours des bords; Les points ci-dessous t1 mais au-dessus de t2 sont des bords uniquement s'ils sont connectés aux points au-dessus de t1.

La largeur du noyau gaussien et les seuils t1 / t2 sont des paramètres influençant la sortie du détecteur Canny.

Implémentation Python

Deux méthodes sont montrées: en utilisant scikit-image et OpenCV.

en utilisant scikit-image

installer scikit-image (par exemple, sudo apt-get install python-skimage sur Ubuntu). La fonction canny() (dans le module feature) applique le détecteur Canny.

en utilisant l'échantillon d'image "Boat.png" (illustré ci-dessous):

Canny Edge Detector Using Python

le code:

<code class="language-python">from skimage import io, feature

im = io.imread('boat.png')
edges = feature.canny(im)
io.imshow(edges)
io.show()</code>

La sortie (image détectée par le bord):

Canny Edge Detector Using Python

Les ajustements des paramètres donnent des résultats de détection de bord variables.

en utilisant OpenCV

Installez OpenCV (voir les guides d'installation pertinents pour votre système d'exploitation). La fonction Canny() d'OpenCV effectue la détection des bords.

le code:

<code class="language-python">from skimage import io, feature

im = io.imread('boat.png')
edges = feature.canny(im)
io.imshow(edges)
io.show()</code>

Arguments: im (image), seuil inférieur (25), seuil supérieur (255), L2gradient=False (utilise la norme l1). matplotlib affiche les résultats.

La sortie (image détectée par le bord):

Canny Edge Detector Using Python

Conclusion

Ce tutoriel a couvert le détecteur de bord radieux et sa mise en œuvre simple en utilisant scikit-image et OpenCV, démontrant son efficacité dans la détection des bords.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn