Cours de programmation séquentielle

TP de programmation séquentielle - Arbres quaternaires

Buts

Énoncé

Réaliser un programme qui effectue la lecture d’une image (définie en 256 niveaux de gris) stockée dans un fichier de type PGM (Portable Gray Map). Créer un arbre quaternaire permettant de la mémoriser. Prévoir ensuite les fonctionnalités suivantes:

Les images seront sauvegardées sur le disque en format PGM et visualisées par exemple avec la commande display (eog fait également l’affaire).

Marche à suivre

Lecture de fichier PGM

Un fichier PGM ASCII (ou plain)1 est constitué d’une entête qui contient les lignes suivantes.

  1. La première ligne est composée du nombre magique: P2.
  2. Un nombre arbitraire de commentaires commençant par le caractère #.
  3. Deux nombres entiers (nx, ny) représentant le nombre de colonnes et de lignes de l’image stockée.
  4. Un nombre contenant la valeur maximale du niveau de gris, max_val.
  5. Les valeurs des pixels en niveau de gris entre 0 et max_val. Il y en a nx * ny. Les séparateurs peuvent être des espaces ou des retours à la ligne.

Un exemple de fichier .pgm serait

P2
# feep.pgm
24 7
15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

Évaluation

Ce travail n’est pas évalué en tant que tel, il pourra néanmoins faire partie du test de fin d’année que cela soit en programmation séquentielle ou en algorithmique.

Travail supplémentaire


  1. Les spécifications sur les fichier PGM ASCII se trouvent sur la page http://netpbm.sourceforge.net/doc/pgm.html↩︎

  2. Les spécifications sur les fichier PGM ASCII se trouvent sur la page http://netpbm.sourceforge.net/doc/pgm.html↩︎