Maison > Article > développement back-end > Comment utiliser Python pour la détection des bords de l'image
Les bords de l'image font référence à l'ensemble de pixels de l'image où l'échelle de gris des pixels environnants exprimant l'objet change étape par étape.
À la jonction de deux zones adjacentes avec des niveaux de gris différents dans l'image, il doit y avoir une transition rapide des niveaux de gris, ou sauts. Ils correspondent aux positions des bords de chaque zone dans l'image. Les bords contiennent de riches informations intrinsèques. Tels que la direction, les propriétés de pas, la forme, etc., les pixels le long du bord changent lentement, tandis que les pixels perpendiculaires à la direction du bord changent radicalement.
La plupart des informations de l'image sont concentrées sur les bords. Une fois les bords déterminés, la segmentation des différentes zones est effectivement réalisée.
La recherche d'arêtes nécessite souvent l'aide de certains opérateurs de détection d'arête. Certains de ces opérateurs sont des opérateurs basés sur des dérivées du premier ordre, et d'autres sont des opérateurs différentiels du second ordre
Opérateur de Roberts, opérateur de Prewitt, opérateur de Sobel. Ils contiennent des modèles dans les directions x et y. Chaque modèle n'est sensible qu'à la direction correspondante, a un résultat évident dans cette direction et réagit peu aux changements dans les autres directions. Voici quelques opérateurs différentiels courants de premier ordre et leurs caractéristiques :
Nom de l'opérateur | Caractéristiques |
---|---|
Opérateur différentiel simple | est sensible au bruit et a un certain effet d'amplification sur le bruit |
L'opérateur Roberts | a peu d'effet de débruitage et a de meilleures capacités de détection de bord que les simples opérateurs différentiels |
L'opérateur Prewitt | peut supprimer efficacement l'influence du bruit et détecter les points de bord |
Opérateur Sobel | Le bord obtenu est plus large et l'effet de suppression du bruit est plus fort |
Opérateur Canny | La position du bord détectée est précise et le bord est étroit |
Les bords détectés par l'opérateur Sobel sont plus continus que les résultats de détection de l'opérateur Roberts et ont de meilleures capacités de détection pour les détails de l'image, et le détecteur de bord Sobel introduit une moyenne locale, l'impact sur le bruit est relativement faible et l'effet est meilleur.
4 largeur.
Le bruit de l'opérateur de Laplace est évidemment plus grand que celui de l'opérateur de Sobel, mais ses bords sont beaucoup plus fins que ceux de Sobel, et la transformée de Laplace, en tant qu'opérateur différentiel du second ordre, est particulièrement sensible au bruit et produira des doubles bords et ne peut pas détecter la direction du bord.
Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int) Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)
Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int) Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)
4. Détection de bord Canny
Fonction Canny:edges = cv2.Sobel(img, -1, 1, 1)
5.
edges = cv2.Canny(img, 5, 100)
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!