Maison >développement back-end >Tutoriel Python >Comment effectuer une transformation Hough sur des images à l'aide de Python

Comment effectuer une transformation Hough sur des images à l'aide de Python

WBOY
WBOYoriginal
2023-08-26 13:16:451027parcourir

Comment effectuer une transformation Hough sur des images à laide de Python

Comment utiliser Python pour effectuer une transformation de Hough sur des images

Résumé :
La transformation de Hough est une technique de traitement d'image couramment utilisée pour détecter des lignes droites ou certaines formes spécifiques dans les images. Cet article expliquera comment utiliser la bibliothèque OpenCV en Python pour implémenter la transformation de Hough et expliquera en détail son processus d'implémentation à travers des exemples de code.

Introduction :
La transformée de Hough est une technique de traitement d'image proposée par Hough en 1962 et était à l'origine utilisée pour détecter des lignes droites dans les images. Par la suite, la transformée de Hough a été largement utilisée et étendue pour détecter des cercles, des ellipses et d’autres formes. Dans le domaine de la vision par ordinateur et du traitement d’images, la transformée de Hough est un outil très important.

1. Principe de Hough Transform
Le principe de base de Hough Transform est de convertir chaque pixel de l'image en une courbe (ou un espace de paramètres) dans l'espace de coordonnées polaires (Hough Space). Pour une ligne droite, les deux paramètres représentent respectivement la distance et l’angle de la ligne droite. En sélectionnant des points dans l'espace des paramètres et en trouvant des intersections sur les courbes, toutes les lignes droites de l'image originale peuvent être obtenues.

2. Introduction à la bibliothèque OpenCV
OpenCV est une bibliothèque de logiciels open source de vision par ordinateur et d'apprentissage automatique qui fournit une richesse d'algorithmes de traitement d'images et de vision par ordinateur. Il s'agit de l'une des bibliothèques de traitement d'images les plus populaires en Python, avec de puissantes fonctions de traitement d'images et une interface facile à utiliser. Cet article utilisera la bibliothèque OpenCV pour implémenter la transformation de Hough.

3. Utilisez Python pour effectuer la transformation Hough
Ce qui suit utilise un exemple spécifique pour montrer comment utiliser Python pour effectuer la transformation Hough sur des images.

Tout d'abord, nous devons importer les bibliothèques requises :

import cv2
import numpy as np
import matplotlib.pyplot as plt

Ensuite, lire et afficher l'image originale :

image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Ensuite, convertir l'image en niveaux de gris :

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

Ensuite, effectuez une détection des contours sur l'image :

edges = cv2.Canny(gray, 50, 150)

Ensuite, effectuez la transformation de Hough :

lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

Parcourez et tracez les lignes droites détectées :

for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

Enfin, affichez l'image traitée :

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Conclusion :
Cet article détaille comment utiliser la bibliothèque OpenCV en Python pour transformer des images. transformer. Grâce à l'exemple de code, nous pouvons voir la puissante capacité de la transformation de Hough à détecter des lignes droites. En plus des lignes droites, OpenCV fournit également des implémentations de transformation de Hough d'autres formes, que les lecteurs peuvent apprendre et essayer davantage.

Référence :

  1. Hough, P. V. C. « Method and Means for Recognizing Complex Patterns », brevet américain 3 069 654, 18 décembre 1962.
  2. Bradski, G., Kaehler, A. « Learning OpenCV : Computer Vision with the Bibliothèque OpenCV." O'Reilly Media, Inc., 2008.

Annexe :
Voir le bloc de code ci-dessous pour le code complet :

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取并显示原始图像
image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

# 将图像转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 对图像进行边缘检测
edges = cv2.Canny(gray, 50, 150)

# 进行霍夫变换
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 遍历并绘制检测到的直线
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示处理后的图像
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Remarque : Veuillez remplacer le "image.jpg" dans le code par votre propre chemin d'image.

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