Maison >développement back-end >Tutoriel Python >Détecteur de bord radieux à l'aide de python
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 bordsrepré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:
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):
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):
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):
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!