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.

In [1]:
import numpy as np
import imageio
import tarfile
In [2]:
# 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()
In [3]:
im = imageio.read(tar.extractfile(filenames[7])).get_data(0)  # im is a Numpy array
im.shape
Out[3]:
(128, 192, 3)
In [4]:
%matplotlib inline
import matplotlib.pyplot as plt

plt.imshow(im)
Out[4]:
<matplotlib.image.AxesImage at 0x7f98bdb5c240>
No description has been provided for this image

Créer la table des images¶

Créer la table, Numpy array, images qui contient toutes les images du fichier data/ships.tgz. Afficher la forme de la table.

In [ ]:
 

Réorganiser la table¶

On désire que le format de la table soit NxCxXxY avec

  • N : nombre d'image
  • C : nombre de canaux de l'image (3 pour RGB)
  • X : hauteur de l'image
  • Y : largeur de l'image

Écrire la nouvelle table.

In [ ]:
 

Passer en niveaux de gris¶

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.

In [ ]:
 
In [ ]:
 
In [ ]:
 

Ordonner par contraste¶

Fonction contraste¶

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.

Trouver les images la plus et la moins constratée¶

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.

In [ ]:
 
In [ ]:
 
In [ ]: