The purpose of this exercise is to perform small manipulations on large 4-dimensional (then 3-dimensional) tables.
To start, we show you how to extract an image from an archive to have it as a Numpy array. We display the image using a function from the Matplotlib library which we will see later.
import numpy as np
import imageio
import tarfile
# si vous n'avez pas ships.tgz, il est dans https://python3.mooc.lrde.epita.fr/tree/lesson4%20Numpy/data/
tar = tarfile.open('data/ships.tgz', 'r:gz')
filenames = tar.getnames()
im = imageio.read(tar.extractfile(filenames[7])).get_data(0) # im is a Numpy array
im.shape
(128, 192, 3)
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(im)
<matplotlib.image.AxesImage at 0x7f98bdb5c240>
Créer la table, Numpy array, images
qui contient toutes les images du fichier data/ships.tgz
. Afficher la forme de la table.
On désire que le format de la table soit NxCxXxY
avec
Écrire la nouvelle table.
Passer les images en niveaux de gris. La table résultant a une dimension de moins qu'images
.
Afficher une image pour vérifier votre résultat. On utilisera l'option cmap = 'gray'
dans imshow
.
Définir une fonction qui détermine le contraste d'une image. Pour cela on calcule l'histogramme de l'image avec N
intervalles.
On définit le constraste c
comme l'écart entre les 2 gris les plus représentés (argsort
vous sera utile) :
On choisira 25 intervalles pour calculer l'histogramme.
Appliquez votre fonction à toutes les images et affichez les images extrêmes, celle qui qui a le plus grand contraste et celle qui a le plus faible contraste.