Maison  >  Article  >  développement back-end  >  Comment extraire la texture des images à l'aide de Python

Comment extraire la texture des images à l'aide de Python

王林
王林original
2023-08-17 08:31:502080parcourir

Comment extraire la texture des images à laide de Python

Comment utiliser Python pour extraire la texture des images

Introduction : L'extraction de texture est une technologie importante dans le traitement d'images, qui peut extraire des caractéristiques de texture des images pour l'analyse, la classification, la correspondance et d'autres tâches. En tant que langage de programmation populaire, Python dispose d'une multitude de bibliothèques et d'outils de traitement d'images, tels que PIL, opencv-python, etc. Cet article explique comment utiliser Python pour extraire la texture des images et joint des exemples de code.

1. Installer et importer les bibliothèques nécessaires
Avant de commencer, nous devons installer et importer certaines bibliothèques nécessaires, notamment PIL, opencv-python et numpy. Vous pouvez utiliser pip pour les installer :

$ pip install Pillow
$ pip install opencv-python
$ pip install numpy

Le code pour importer les bibliothèques requises est le suivant :

import cv2
import numpy as np
from PIL import Image

2. Lire et afficher les images
Tout d'abord, nous devons lire une image à traiter et l'afficher. Ici, nous avons sélectionné une image de paysage naturel et l'avons enregistrée sous "texture.jpg".

# 读取图片
image = Image.open("texture.jpg")
# 显示图片
image.show()

3. Convertir l'image en une image en niveaux de gris
L'extraction de texture est généralement effectuée sur une image en niveaux de gris, nous devons donc convertir l'image couleur lue en une image en niveaux de gris.

# 转换为灰度图像
gray_image = image.convert("L")
# 显示灰度图像
gray_image.show()

4. Calculez la matrice de cooccurrence des niveaux de gris (GLCM)
La matrice de cooccurrence des niveaux de gris est une méthode courante d'analyse de texture, qui peut décrire les changements de niveaux de gris et les relations spatiales entre les pixels.

En Python, nous pouvons utiliser la bibliothèque opencv-python (cv2) pour calculer la matrice de cooccurrence des niveaux de gris. Les étapes spécifiques sont les suivantes :

  1. Tout d'abord, nous devons convertir l'image en niveaux de gris en un tableau numpy pour un traitement ultérieur.
# 将灰度图像转换为numpy数组
gray_array = np.array(gray_image)
  1. Ensuite, nous pouvons utiliser la fonction cv2.calcHist() de la bibliothèque cv2 pour calculer la matrice de cooccurrence des niveaux de gris. Cette fonction nécessite la saisie d'une image en niveaux de gris et de certains paramètres, tels que le nombre de niveaux de gris, les intervalles de pixels, la hauteur et la largeur de l'image, etc.
# 计算灰度共生矩阵
glcm = cv2.calcHist([gray_array], [0], None, [256], [0, 256])
  1. Enfin, nous pouvons normaliser la matrice de cooccurrence des niveaux de gris pour faciliter l'analyse ultérieure et l'extraction de caractéristiques.
# 规范化灰度共生矩阵
glcm /= glcm.sum()

5. Extraction des caractéristiques de texture
Après avoir obtenu la matrice de cooccurrence des niveaux de gris, nous pouvons l'utiliser pour extraire certaines caractéristiques de texture communes, telles que l'énergie, le contraste, la corrélation et l'uniformité (homogénéité), etc.

Voici plusieurs méthodes courantes de calcul des caractéristiques de texture :

  1. Énergie : utilisée pour mesurer la clarté de la texture. La formule de calcul est que l'énergie est égale à la somme des carrés de chaque élément dans la matrice de cooccurrence de niveau de gris.
# 计算能量(energy)
energy = np.sum(glcm ** 2)
print("能量:", energy)
  1. Contraste : Utilisé pour mesurer le contraste entre les niveaux de gris dans une texture. La formule de calcul est que le contraste est égal à la somme de chaque élément de la matrice de cooccurrence de niveaux de gris multipliée par la différence de pixels à la position correspondante.
# 计算对比度(contrast)
contrast = np.sum(glcm * np.abs(np.arange(256) - np.arange(256)[:,None]))
print("对比度:", contrast)
  1. Corrélation : Utilisé pour mesurer la corrélation linéaire des textures. La formule de calcul est que la corrélation est égale à la somme des produits de chaque élément de la matrice de cooccurrence de niveau de gris multipliée par les pixels aux positions correspondantes.
# 计算相关性(correlation)
correlation = np.sum(glcm * (np.arange(256) - np.mean(glcm)) * (np.arange(256)[:,None] - np.mean(glcm))) / (np.std(glcm) ** 2)
print("相关性:", correlation)
  1. Homogénéité : Utilisé pour mesurer la douceur entre les niveaux de gris dans une texture. La formule de calcul est que l'uniformité est égale à la somme de chaque élément de la matrice de cooccurrence de niveaux de gris divisée par la différence de pixels à la position correspondante.
# 计算均匀性(homogeneity)
homogeneity = np.sum(glcm / (1 + np.abs(np.arange(256) - np.arange(256)[:,None])))
print("均匀性:", homogeneity)

6. Résumé
Cet article présente comment utiliser Python pour extraire la texture des images et comment calculer les caractéristiques de texture communes. En utilisant PIL et opencv-python, deux bibliothèques de traitement d'images couramment utilisées, nous pouvons facilement lire et afficher des images, convertir des images en images en niveaux de gris et calculer la matrice de cooccurrence en niveaux de gris de l'image. Après avoir obtenu la matrice de cooccurrence de niveaux de gris, nous avons également présenté comment calculer les caractéristiques de texture communes, notamment l'énergie, le contraste, la corrélation et l'uniformité.

L'analyse de texture est une direction de recherche importante en vision par ordinateur et joue un rôle important dans l'analyse, la classification, la récupération et d'autres tâches d'images. J'espère que cet article sera utile aux lecteurs qui apprennent et appliquent la technologie d'extraction de texture.

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