Skip to content
Tutoriels
Matplotlib
How to Plot Images with Matplotlib in Python

Maîtriser le traitement d'images avec Matplotlib en Python : un guide complet

Dans le domaine de la science des données, l'importance de la visualisation des données est inégalée. Un outil puissant dans l'écosystème Python est Matplotlib. Cette bibliothèque est un outil polyvalent pour créer des visualisations statiques, animées et interactives en Python. Mais saviez-vous que Matplotlib peut également être un outil puissant pour le traitement d'images ?

Vous pourriez vous demander : "Qu'est-ce que le traitement d'images ?" Il s'agit d'une méthode permettant d'effectuer des opérations sur des images, telles que l'analyse, la modification et l'interprétation de leurs caractéristiques. Ces opérations impliquent souvent des tableaux NumPy, qui sont une structure de données fondamentale en Python utilisée pour stocker et manipuler des données numériques.

Vous souhaitez créer rapidement une visualisation des données à partir d'un dataframe Python Pandas sans code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse de données et de visualisation des données dans Jupyter Notebook, en transformant votre dataframe pandas (et dataframe polars) en une interface utilisateur de type Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation des données (opens in a new tab)

Matplotlib : Révéler la magie des images

En essence, une image n'est rien d'autre qu'un tableau multidimensionnel NumPy, où chaque pixel correspond à un élément de tableau spécifique. Ces pixels ont une valeur numérique, généralement comprise entre 0 (noir) et 255 (blanc) pour une image en niveaux de gris. D'autre part, une image couleur, ou une image RGB, est constituée de trois tableaux correspondant aux canaux Rouge, Vert et Bleu. Il existe également un format RGBA, qui inclut un canal Alpha supplémentaire pour la transparence.

La magie de Matplotlib se révèle vraiment lorsque vous travaillez avec ces images. En manipulant ces tableaux NumPy, vous pouvez effectuer diverses tâches de traitement d'images, telles que la modification d'images, le recadrage d'images, le mise à l'échelle d'images, la rotation d'images et plus encore.

Par exemple, supposons que vous souhaitiez convertir une image RGB en une image en niveaux de gris. Cette tâche consiste à faire la moyenne des valeurs dans les canaux rouge, vert et bleu pour chaque pixel. Cela semble complexe ? Avec Matplotlib, c'est un jeu d'enfant ! Consultez notre guide sur ChatGPT Code Interpreter for Data Science pour en savoir plus à ce sujet.

Tracer votre chemin à travers les images

Le traçage des données d'une image est l'un des points forts de Matplotlib. Il propose une vaste collection de fonctions pour afficher des images, créer des graphiques d'histogramme et même effectuer une segmentation d'images. De plus, il vous permet de personnaliser ces graphiques de multiples façons.

Une personnalisation de ce type est l'échelle de couleurs, qui est une représentation graphique des gradations de couleurs. Avec Matplotlib, vous pouvez ajuster l'échelle de couleurs d'une image pour représenter plus distinctement différentes caractéristiques. Par exemple, vous pouvez mettre en évidence certaines zones d'une image ou améliorer le contraste.

L'échelle de couleurs joue également un rôle crucial. Pour une image RGB, chaque pixel est représenté par trois valeurs d'intensité (Rouge, Vert, Bleu). Ainsi, il est représenté sous la forme d'un tableau NumPy en 3D.

# Créer une image RGB aléatoire
image_rgb = np.random.randint(0, 256, (512, 512, 3), dtype=np.uint8)
 
# Afficher l'image RGB
plt.imshow(image_rgb)
plt.show()

Effectuer des opérations sur les images

Matplotlib propose de nombreuses fonctionnalités pour effectuer des opérations sur ces images.

Par exemple, la modification d'image peut être aussi simple que d'ajuster les valeurs d'intensité des pixels.

# Augmenter l'intensité de tous les pixels de 50
image_mod = image + 50
 
# Afficher l'image modifiée
plt.imshow(image_mod, cmap='gray')
plt.show()

Vous pouvez également effectuer des opérations telles que le recadrage d'image, la mise à l'échelle d'image et la rotation d'image.

# Recadrer l'image à 256x256
image_crop = image[:256, :256]
 
# Afficher l'image recadrée
plt.imshow(image_crop, cmap='gray')
plt.show()

Visualisation d'images avec Matplotlib

Au-delà de l'affichage simple d'une image, Matplotlib offre des outils complets pour la visualisation d'images. Il vous permet de tracer des graphiques d'histogramme, d'appliquer des échelles de couleurs et même d'effectuer une segmentation d'images.

Par exemple, vous pouvez tracer l'histogramme des intensités de pixels dans une image.

# Tracer l'histogramme des intensités de pixels
plt.hist(image.ravel(), bins=256, color='gray', alpha=0.7)
plt.show()

Vous pouvez également supprimer les axes et ajouter une échelle de couleurs à l'image.

# Afficher l'image avec une échelle de couleurs et sans axes
plt.imshow(image, cmap='gray')
plt.colorbar()
plt.axis('off')
plt.show()

Avec une bonne compréhension de ces fondamentaux, vous serez prêt à aborder des sujets plus avancés comme le filtrage d'images et l'affichage de multiples images. Vous voudrez peut-être également explorer la façon dont Matplotlib s'intègre aux outils de visualisation des données tels que RATH (opens in a new tab), Tableau et Chartio.

Techniques avancées de traitement d'images

Armé des bases, nous pouvons maintenant explorer des techniques de traitement d'images plus complexes.

Le filtrage d'images est une méthode utilisée pour modifier ou améliorer une image. Par exemple, une application courante du filtrage d'images est le lissage ou le flou d'une image. Avec Matplotlib, cela peut être réalisé en utilisant la convolution avec un noyau de filtrage.

from scipy.ndimage import gaussian_filter
 
# Appliquer un filtre gaussien pour le lissage de l'image
image_smooth = gaussian_filter(image, sigma=1)
 
# Afficher l'image filtrée

plt.imshow(image_smooth, cmap='gray') plt.show()

De même, la rotation d'image est une opération essentielle, surtout dans des tâches telles que l'augmentation de données. Heureusement, c'est un jeu d'enfant avec Matplotlib.

```python
from scipy.ndimage import rotate

# Faire pivoter l'image de 45 degrés
image_rotated = rotate(image, angle=45)

# Afficher l'image pivotée
plt.imshow(image_rotated, cmap='gray')
plt.show()

Une autre application passionnante est la segmentation d'image, le processus de partitionnement d'une image en plusieurs segments ou "régions d'intérêt". Cette technique est très utile dans des tâches telles que la détection d'objets ou la reconnaissance d'image.

from skimage.segmentation import slic
from skimage.color import label2rgb
 
# Appliquer une segmentation SLIC
segments = slic(image_rgb)
 
# Afficher la segmentation
segmented_image = label2rgb(segments, image_rgb, kind='avg')
plt.imshow(segmented_image)
plt.show()

Enfin, l'affichage de plusieurs images (également appelé subplot) est un moyen fantastique de comparer différentes images ou techniques de traitement d'image. Matplotlib offre un cadre très flexible pour créer des mises en page complexes de sous-graphiques.

# Afficher l'image originale et l'image filtrée côte à côte
fig, axes = plt.subplots(1, 2)
axes[0].imshow(image, cmap='gray')
axes[1].imshow(image_smooth, cmap='gray')
plt.show()

Conclusion

Le monde du traitement d'image avec Matplotlib et Python est vaste et plein de possibilités. Des manipulations de base comme le recadrage et le redimensionnement d'image aux techniques avancées comme la segmentation d'image, cette bibliothèque offre un ensemble étendu d'outils à la fois pour la visualisation des données et le traitement d'image.

Pour améliorer vos compétences, envisagez d'explorer différentes plateformes de visualisation de données telles que Snowflake, Clickhouse et AWS. Ces plateformes peuvent s'intégrer parfaitement avec Python et Matplotlib, offrant ainsi un workflow complet d'analyse et de visualisation des données.

N'oubliez pas, maîtriser Matplotlib est un marathon, pas un sprint. Prenez donc cela un tracé à la fois !