diff --git a/figs/baboon_crop.png b/figs/baboon_crop.png
new file mode 100644
index 0000000000000000000000000000000000000000..51d428ccc3df5d8412b0915e705efe2a8b8749ec
Binary files /dev/null and b/figs/baboon_crop.png differ
diff --git a/figs/baboon_negative.png b/figs/baboon_negative.png
new file mode 100644
index 0000000000000000000000000000000000000000..f31d197eb69ef03353e8547b4a7d325849b3738c
Binary files /dev/null and b/figs/baboon_negative.png differ
diff --git a/traitement_dimages.md b/traitement_dimages.md
index e57c27c8e6ae65badf0309b547e690fea9974519..c851a392bf83ef260f38f423ef60f98e653314aa 100644
--- a/traitement_dimages.md
+++ b/traitement_dimages.md
@@ -29,6 +29,7 @@ toc: false
 * Utilisation de librairies externe.
 * Lecture et écriture de fichiers binaires.
 * Utilisation de types énumérés.
+* Affichage graphique avec la librairie `SDL`.
 
 ## Énoncé
 
@@ -50,6 +51,17 @@ Créer une librairie de manipulation d'images en *niveaux de gris*. Cette librai
 Pour ce travail, en plus de la réalisation de la librairie de matrices, vous devez
 utiliser le logiciel de gestion de version `git` et évidemment compiler le projet à l'aide d'un `Makefile`.
 
+### Gestion d'erreurs
+
+Un grand nombre des fonctions de ce travail peuvent échouer. Pour simplifier,
+nous nous limiterons à deux retour possibles du type énuméré `pgm_error`:
+
+```C
+typedef enum _pgm_error {
+    success, failure
+} pgm_error;
+```
+
 ### Représentation informatique des images
 
 Dans ce travail pratique, une image n'est rien d'autre qu'une matrice de nombres entiers,
@@ -60,7 +72,7 @@ devront être limitées entre `0` et une valeur maximale `max`.
 
 Pour simplifier les images seront supposées être données en format PGM. Le format PGM (portable graymap file format)
 est un format de fichier très simple permettant de stocker des images en niveau de gris. 
-Nous utiliserons le format PGM ASCII qui stocke les images sous forme de texte. 
+Nous utiliserons le format PGM **binaire**. 
 Vous trouverez une définition du format sur la
 page [https://fr.wikipedia.org/wiki/Portable_pixmap](https://fr.wikipedia.org/wiki/Portable_pixmap).
 
@@ -73,6 +85,13 @@ typedef struct _pgm {
 } pgm;
 ```
 
+Le format PGM binaire implique la lecture dans un premier temps d'une entête contenant le texte
+`P5` sur la première ligne, puis les dimensions de l'image sur la deuxième ligne. Sur la troisième ligne
+se trouve le niveau de gris maximal. Ces trois lignes sont en format `ASCII`. Finalement, les pixels de l'image en format binaire sont stockés dans les lignes restantes. A nouveau pour simplifier, nous supposerons que chaque pixel
+est un entier non signé d'un octet.
+
+Nous supposerons dans ce travail, pour simplifier, qu'il n'existe pas de commentaires dans les fichier (pas de lignes commençant par `#`).
+
 ### Lecture et écriture d'une image PGM en format binaire
 
 Afin de lire et écrire un fichier binaire, il faut utiliser
@@ -90,20 +109,27 @@ et les fonctions permettant de manipuler les fichiers:
 * `fgets()`{.C} pour lire une ligne d'un fichier au format ASCII (utile pour récupérer le nombre de lignes, colonnes, ainsi que `max`).
 * `fwrite()`{.C} et `fread()`{.C} pour lire et écrire des données contiguës en mémoire dans un fichier.
 
-Nous supposerons dans ce travail, pour simplifier, qu'il n'existe pas de commentaires dans les fichier (pas de lignes commençant par `#`).
-
 A l'aide de ces fonctions vous devriez être capables de lire et écrire des fichiers PGM.
 
 Afin de tester vos fonctions vous pouvez utiliser l'image du babouin (voir @fig:baboon) en cliquant sur [ce lien](figs/baboon.pgm)
 
 ![Image d'un babouin.](figs/baboon.png){#fig:baboon width=50%}
 
+### Quelques fonctions à implémenter
+
+Il faut implémenter **au minimum** les fonctions suivantes:
+
+* la fonction `pgm_error pmg_read_from_file(pgm *p, char *filename)`{.C} lisant le fichier `filename` et écrivant son contenu dans la variable `p`. Cette fonction retourne un `pgm_error`.
+* la fonction `pgm_error pmg_write_to_file(pgm *p, char *filename)`{.C} écrivant le contenu de l'image `p` dans le le fichier `filename`. Cette fonction retourne un `pgm_error`.
+
 # Les transformations d'images
 
 ## Le négatif
 
-Le négatif d'une image consiste à *inverser* la valeur des pixels de chaque matrice par rapport à la valeur
-maximale permise. Ainsi si on représente `max` niveaux de gris, le négatif d'un pixel de niveau de gris, `p`, est donné par `max-p`.
+Le négatif d'une image consiste à *inverser* la valeur des pixels de l'image par rapport à la valeur
+maximale permise. Ainsi si on représente `max` niveaux de gris, le négatif d'un pixel de niveau de gris, `p`, est donné par `max-1-p`. Un exemple de négatif de l'image du babouin se trouve sur la @fig:baboon_negative
+
+![L'original (image de gauche) et le négatif (image de droite) de la photo du babouin.](figs/baboon_negative.png){#fig:baboon_negative}
 
 ## Les symétries
 
@@ -130,8 +156,10 @@ il faut examiner ce qui se passe sur la première ligne.
 
 ## Rogner
 
-Le rognage d'une image est une opération assez simple. Elle consiste à simplement extraire une sous partie rectangulaire
-des pixels de l'image d'origine.
+Le rognage d'une image est une opération assez simple. Elle consiste à extraire une sous partie rectangulaire
+des pixels de l'image d'origine. Un exemple peut se trouver sur la @fig:baboon_crop.
+
+![Rognage de la photo de babouin.](figs/baboon_crop.png){#fig:baboon_crop width=100%}
 
 ## Convolution et filtres [^1]
 
@@ -227,6 +255,7 @@ tronquer le nombre obtenu pour en fait un entier.
 
 ## Afficher l'image avec la librairie SDL
 
-TODO
+Uniquement une fois réalisées toutes les parties qui précèdent **en entier**,
+afficher les images en niveau de gris à l'aide de la librairie `SDL2`.
 
 [^1]: Repris du cours de math de N. Eggenberg et O. Malaspinas