Vincent GODARD - V1- 03/03/2022
Inspiré de :
Sources :
données Landsat Thematic Mapper (TM) du 10 septembre 1987, ouest de Worcester, Massachusetts (issues du https://clarklabs.org/download/)
scikit-image https://scikit-image.org/
matplotlib https://matplotlib.org/
Dossier compressé à télécharger => ici.
# Pour installer skimage, effacez le # (avant le "!").
# !pip install numpy
# !pip install scikit-image
# !pip install matplotlib
# !pip install ipympl # si version antérieure à Python 3.01.2, sinon message d'erreur avec le widget (window gadget)
import numpy as np
import skimage.color
import skimage.io
import matplotlib.pyplot as plt
#%matplotlib widget # si version antérieure à Python 3.01.2, sinon message d'erreur avec le widget (window gadget)
# Lecture de la composition colorée fausse couleur des How Hill (MA) en niveau de gris
image = skimage.io.imread(fname='data/how87tm234.jpg', as_gray=True)
# Affichage de l'image
fig, ax = plt.subplots()
plt.imshow(image, cmap='gray')
plt.show()
# skimage.util.img_as_ubyte => pour transformer l'image en byte
# si données codées entre o et 1 ou plus de 8 bit retour à https://datacarpentry.org/image-processing/05-creating-histograms/ pour autres instructions
# comment utiliser skimage.util.img => https://www.programcreek.com/python/example/125519/skimage.util.img_as_ubyte
image = skimage.util.img_as_ubyte(image)
histogram, bin_edges = np.histogram(image, bins=256, range=(0, 255))
# Paramétrage et tracé de l'histogramme
plt.figure()
plt.title("Grayscale Histogram")
plt.xlabel("grayscale value")
plt.ylabel("pixel count")
plt.xlim([0, 255]) # pour sélectionner une partie seulement de l'étendue faire varier les bornes
plt.plot(bin_edges[0:-1], histogram)
plt.show()
# Lecture de l'image en couleur
image = skimage.io.imread('data/how87tm234.jpg')
# Affichage
fig, ax = plt.subplots()
plt.imshow(image)
plt.show()
# Création des "tuple" pour sélectionner les couleurs de chaque ligne de l'histogramme
colors = ("red", "green", "blue")
channel_ids = (0, 1, 2)
# Création du "plot", avec une couleur par ligne (celles affectées à l'affichage)
plt.figure()
plt.xlim([0, 256])
for channel_id, c in zip(channel_ids, colors):
histogram, bin_edges = np.histogram(
image[:, :, channel_id], bins=255, range=(0, 256)
)
plt.plot(bin_edges[0:-1], histogram, color=c)
plt.title("HOW87TM234, Color Histogram with TM4 (Red), TM3 (Green), TM2 (Blue)")
plt.xlabel("Color value")
plt.ylabel("Pixel count")
plt.show()
Sauriez-vous afficher l'histogramme de cette CC vraies couleurs ?