Le but de cet exercice est de faire des petites manipulations sur des grandes tables à 4 dimensions (puis 3).

Pour commencer on vous montre comment extraire une image d'une archive pour l'avoir sous forme d'une table Numpy. On affiche l'image avec une fonction de la bibliothèque Matplotlib que l'on verra plus tard.

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 [ ]: