Commit ab2662b2 authored by Matthieu PERREIRA DA SILVA's avatar Matthieu PERREIRA DA SILVA
Browse files

Ajout d'un entête pour saisir le nom des binômes

parent 82301adb
Pipeline #22106 passed with stage
in 47 seconds
%% Cell type:markdown id: tags:
 
**Nom du / des étudiant(s)** : ETUDIANT 1 - ETUDIANT 2
%% Cell type:markdown id: tags:
# TP1 : quantification, histogramme et égalisation, interpolation, couleur
 
Dans ce TP, quelques images sont fournies, mais vous êtes fortement encouragés à récupérer et expérimenter sur d'autres images récupérées sur le web.
 
Les TP de traitement d'images sont réalisés en Python3, à l'aide de la librairie [scikit-image](http://scikit-image.org/docs/stable/). Les tableaux utilisés (`ndarray`) par cette librairie pour manipuler les images proviennent de la librairie [numpy](https://docs.scipy.org/doc/). L'affichage des images et autres figures est réalisé grace à [matplotlib](https://matplotlib.org/contents.html). La documentation de ces trois librairies vous sera donc bien utile.
 
Dans ce TP, les questions seront indiquées dans un bloc **question**, et les réponses seront à donner dans le bloc **réponse** situé en dessous du bloc de question. Vos réponses sont à rédiger en [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). Vous pourrez ainsi répondre non seulement avec du texte, mais aussi avec des tableaux et des images.
 
Ce TP est à réaliser en deux séances d'1h30.
 
**Remarque importante:** Les questions posées dans ce TP requièrent généralement des <u>réponses courtes mais justifées</u>. Un simple oui ou non ne nous est d'aucune utilité pour juger de votre compréhension de la question et de sa réponse...
 
**Autre remarque:** Il y a parfois plusieurs sous-questions dans une même question. <u>Pensez a répondre à toutes les sous-questions</u>.
 
## Manipulation d'image
 
- Nous allons commencer par charger et afficher une image à l'aide du code ci-dessous.
 
%% Cell type:code id: tags:
 
``` python
%matplotlib inline
# la ligne précédente permet d'afficher les figures directement dans votre notebook
# si vous voulez des figures interactives et n'êtes PAS dans un notebook cocalc vous pouvez utiliser widget à la place d'inline
 
from skimage import io # on charge le module permettant d'ouvrir des images
import matplotlib.pyplot as plt # gestion des figures
 
plt.rcParams['figure.figsize'] = [9, 6] # taille des figures par défaut
 
im = io.imread('talvi.jpg')
plt.imshow(im)
```
 
%% Output
 
<matplotlib.image.AxesImage at 0x7fa5b3c21880>
 
<Figure size 648x432 with 1 Axes>
 
%% Cell type:markdown id: tags:
 
- Les images sont manipulées sous forme de tableau à 2 (niveaux de gris) ou 3 dimensions (couleur). Le type python utilisé pour représenter ces tableaux est `ndarray` de la librairie numpy.
 
%% Cell type:code id: tags:
 
``` python
print("type de données utilisé:", type(im))
print("nombre de dimensions de l'image:",im.ndim)
print("dimensions:", im.shape)
```
 
%% Output
 
type de données utilisé: <class 'numpy.ndarray'>
nombre de dimensions de l'image: 3
dimensions: (400, 300, 3)
 
%% Cell type:markdown id: tags:
 
**Question 1:** Expliquez les dimensions affichée pour l'image d'exemple.
 
%% Cell type:markdown id: tags:
 
**Réponse 1:** VOTRE REPONSE ICI
 
%% Cell type:markdown id: tags:
 
**Question 2:** Le code suivant transforme l'image d'origine en niveau de gris. Modifiez le afin d'afficher les dimensions de la nouvelle image. Cela correspond-t-il à ce que vous attendez ? Y a-t-il une différence entre les deux méthodes utilisées ? (si oui) pourquoi ?
 
%% Cell type:markdown id: tags:
 
**Réponse 2:** VOTRE REPONSE ICI
 
%% Cell type:code id: tags:
 
``` python
from skimage import color # fonctions de conversion de couleur
 
 
# Traitement des images
im_gris1=im.mean(2)
im_gris2=(color.rgb2gray(im)*255).astype('uint8') #rgb2grey renvoie une image avec 0<= valeurs <=1
diff=abs(im_gris1-im_gris2)
 
# Affichage sous forme de différentes figures (attention les numéros de figure sont valables dans tout le notebook)
plt.figure(2)
plt.imshow(im_gris1, cmap=plt.cm.gray) # cmap=plt.cm.gray permet d'afficher les image en niveaux de gris avec la bonne palette
plt.title("moyenne")
 
plt.figure(3)
plt.imshow(im_gris2, cmap=plt.cm.gray)
plt.title("rgb2grey")
 
plt.figure(4)
print(diff.mean())
plt.imshow(diff, cmap=plt.cm.gray)
plt.title("différence")
```
 
%% Output
 
4.314236111111111
 
Text(0.5, 1.0, 'différence')
 
<Figure size 648x432 with 1 Axes>