Python pour le calcul scientifique/Traitement d'images

Rappelons que dorénavant les programmes commencent tous par :
import numpy as np
import matplotlib.pyplot as plt
Charger et enregistrer une image.
La manipulation des fichiers d'image peut se faire avec la bibliothèque codice_1 ("", entrées et sorties d'images). La lecture d'un fichier se fait avec la fonction codice_2, qui transforme l'image en une matrice NumPy. L'écriture d'une matrice sous la forme d'un fichier d'image se fait avec la fonction codice_3.
L'affichage de la matrice sous forme d'image se fait avec la fonction codice_4.
Par exemple, téléchargeons l'image au format 320 × 240 () et mettons là dans le répertoire de travail. Puis :
import numpy as np
import matplotlib.pyplot as plt
import imageio as iio
image = iio.imread("320px-Husky_puzzle_book.svg.png") # chargement de l'image
plt.imshow(image) # affichage de l'image
iio.imwrite("320px-Husky_puzzle_book.svg.bmp", image) # enregistrement au format bitmap
print(type(image)) # <class 'imageio.core.util.Array'>
print(image.shape) # (240, 320, 4)
Vous remarquerez que l'image originelle a une partie transparente (canal alpha) et que cela se transforme en noir dans l'image au format codice_5.
Nous pouvons également utiliser la bibliothèque PIL ("", bibliothèque d'imagerie Python), et en particulier sa section codice_6. Elle contient la fonction codice_7 qui permet de charger le fichier dans un objet d'une classe spécifique. Cette classe propose des méthodes dédiées comme codice_8 pour montrer l'image et codice_9 pour l'enregistrer.
On peut transformer cet objet en matrice NumPy avec la commande codice_10. À l'inverse, on peut transformer une matrice NumPy en image PIL avec la commande codice_11.
Par exemple :
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open("Husky_puzzle_book.svg.png") # chargement de l'image
plt.imshow(image) # affichage de l'image
image.show() # autre méthode d'affichage de l'image
image.save("Husky_puzzle_book.svg.bmp") # enregistrement au format BMP
matriceImage = np.asarray(image)
print(type(image)) # <class 'PIL.PngImagePlugin.PngImageFile'>
print(type(matriceImage)) # <class 'numpy.ndarray'>
print(matriceImage.shape) # (240, 320, 4)
image2 = Image.fromarray(matriceImage)
print(type(image2)) # <class 'PIL.Image.Image'>
image2.save("foo.gif")
Le module codice_12 dispose d'un bibliothèque codice_13.
Format des matrices.
Les matrices images sont en fait des tenseurs d'ordre 3.
Si l'image est composée de L × "l" pixels, avec 16 millions de couleurs, et qu'il n'y a pas de canal alpha (pas de transparence), la matrice image est une matrice de dimension (L, "l") dont chaque cellule est un vecteur de dimension 3. La cellule ["i" – 1, "j" – 1] contient la couleur du pixel ("i", "j") au format [R, V, B], chaque composante étant un nombre compris entre 0 et 255.
Par exemple :
A = np.array([0, 0, 0], [255, 0, 0,
 0, 255, 0], [0, 0, 255])
plt.imshow(A)
S'il y a un canal alpha, alors chaque vecteur est de dimension 4. La cellule ["i" – 1, "j" – 1] contient la couleur du pixel ("i", "j") au format [R, V, B, A], la valeur A étant l'opacité cotée de 0 (totalement transparent) à 255 (totalement opaque).
Par exemple :
plt.clf()
B = np.array([255, 0, 0, 0], [255, 0, 0, 85,
 255, 0, 0, 170], [255, 0, 0, 255])
plt.imshow(B)
Si le vecteur représentant un pixel n'a qu'une dimension (c'est donc un scalaire), alors la valeur est convertie en couleur selon la matrice de couleurs en cours "()". Pour avoir un rendu en niveaux de gris, il faut utiliser la fonction codice_14. Par exemple :
plt.clf()
C = np.array([0], [85,
 170], [255])
plt.gray()
plt.imshow(C)
Notes et références.
Calcul symbolique < ↑ >

Enseignement de l'espagnol/Version imprimable

Cours d'espagnol/Couverture
Cours d'espagnol/Auteurs
Calcul scientifique/Sommaire
LaTeX/Intitulé
LATEX
Coréen/Méthode/Introduction/temps
GNU Health/Sommaire
Programmation Python/Web
Il existe différents frameworks et serveurs web pour créer des applications web en Python, dont :