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

Feb 28, 2025 am 09:49 AM

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:

from skimage import io, feature

im = io.imread('boat.png')
edges = feature.canny(im)
io.imshow(edges)
io.show()
Copier après la connexion
Copier après la connexion

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:

from skimage import io, feature

im = io.imread('boat.png')
edges = feature.canny(im)
io.imshow(edges)
io.show()
Copier après la connexion
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Apr 02, 2025 am 07:15 AM

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Comment obtenir des données d'information en contournant le mécanisme anti-frawler d'Investing.com? Comment obtenir des données d'information en contournant le mécanisme anti-frawler d'Investing.com? Apr 02, 2025 am 07:03 AM

Comprendre la stratégie anti-rampe d'investissement.com, Beaucoup de gens essaient souvent de ramper les données d'actualités sur Investing.com (https://cn.investing.com/news/latest-news) ...

See all articles