Maison >développement back-end >Tutoriel Python >Traitement d'image à l'aide de Python
Traitement d'images avec la bibliothèque Scikit-Image de Python: un guide pratique
Un rédacteur en chef du journal de 1911 a déclaré: "Utilisez une image. Cela vaut mille mots." Cela met en évidence le rôle crucial que les images jouent dans la communication, des photographies de tous les jours aux analyses médicales spécialisées comme les IRM et les échographies. Les méthodes d'acquisition d'images varient considérablement: les dermatoscopes pour les images du cancer de la peau, les caméras numériques pour les photos personnelles et les smartphones pour les instantanés occasionnels. Cependant, des imperfections d'image telles que le flou, résultant souvent du processus d'acquisition, peuvent survenir. Quoi alors? Lorsque vous traitez avec des images médicales préexistantes, la réimagerie n'est pas une option. C'est là que les techniques de traitement d'image deviennent inestimables.
Le traitement d'image, tel que défini par les dictionnaires d'Oxford, est "l'analyse et la manipulation d'une image numérisée, en particulier afin d'améliorer sa qualité". Cette manipulation numérique nécessite l'utilisation de langages de programmation, et Python, avec ses bibliothèques puissantes, est un excellent choix. Ce didacticiel démontre des tâches de traitement d'image de base à l'aide de la bibliothèque scikit-image
de Python.
Grayscaling une image
La bibliothèque scikit-image
simplifie la manipulation de l'image. Nous allons commencer par convertir une image couleur en niveaux de gris. La fonction imread()
de la bibliothèque charge l'image, et rgb2gray()
le convertit en niveaux de gris à l'aide d'un calcul de luminance:
L = 0.2125*R 0.7154*G 0.0721*B
Voici le code Python:
from skimage import io, color img = io.imread('pizzeria.png') img_grayscale = color.rgb2gray(img) io.imsave('gray-pizzeria.png', img_grayscale) io.imshow(img_grayscale) io.show()
L'image en niveaux de gris résultant:
Application des filtres
Le filtrage d'images améliore les images à travers des opérations comme l'amélioration des bords, l'affûtage et le lissage. Nous appliquerons le filtre Sobel pour la détection des bords:
from skimage import io, filters img = io.imread('pizzeria.png') sobel_a = filters.sobel(img) io.imsave('sobel-filter.png', sobel_a)
(Remarque: un avertissement peut apparaître si l'image n'est pas 2D; assurer le format d'image approprié.)
L'image filtrée par Sobel:
D'autres filtres, comme le filtre gaussien pour le flou, offrent d'autres capacités de manipulation d'images. Le paramètre d'écart type contrôle l'intensité de flou.
from skimage import io, color, filters img = io.imread('pizzeria.png') gaussian_a = filters.gaussian(img, 10) gaussian_b = filters.gaussian(img, [20, 1]) io.imsave('gaussian-filter-10.png', gaussian_a) io.imsave('gaussian-filter-20-1.png', gaussian_b)
Résultats du filtre gaussien (σ = 10 et σ = [20,1]):
Seuil
Le seuil convertit une image en niveaux de gris en image binaire (noir et blanc). Nous utilisons la valeur moyenne en niveaux de gris comme seuil:
from statistics import mean from skimage import io, filters, util img = io.imread('pizzeria.png', as_gray=True) mean_threshold = filters.threshold_mean(img) print(mean_threshold) binary = img > mean_threshold binary = util.img_as_ubyte(binary) io.imsave('threshold-filter.png', binary)
L'image seuil:
Conclusion
scikit-image
offre une large gamme de capacités de traitement d'image. Explorez sa documentation approfondie pour des techniques plus avancées. Pour ceux qui souhaitent apprendre Python, des tutoriels complets sont facilement disponibles.
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!