Projet : Traitement d’Images Numériques#

Introduction#

L’objectif de ce projet est d’utiliser les compétences que vous avez acquises pour implanter des algorithmes de traitement d’images sur des images en format texte (PBM, PGM, et PPM)

Exemple : détection de contours

Portrait de Bruce Willis en noir et blanc Les contours de l'image dessinés en blanc sur fond noir

Exemple : calcul de zones de couleur uniforme avec l’algorithme SuperPixel.

Portrait de Bruce Willis en couleur Portrait de Bruce Willis découpé en zones de couleur uniforme

C’est un projet guidé, découpé en exercices pensés de façon progressive. Ne vous fiez pas à sa longueur, il est volontairement long afin que chacun puisse s’exprimer en fonction de ses compétences, de son éventuelle expérience préalable et de ses goûts. À vous de choisir un sous-ensemble adapté des questions.

Il a été conçu pour qu’un étudiant sans expérience de programmation préalable mais ayant suivi le module avec assiduité puisse facilement avoir au minimum 12. D’autre part, l’expérience que vous accumulerez au cours des premières questions vous fera paraître les questions ultérieures plus simples. Et vous aurez un vrai sentiment d’accomplissement en progressant dans le sujet.

Toutes les parties portent sur des techniques basiques de traitement d’images. Mais bien évidemment, ce n’est qu’un prétexte pour vous faire travailler les notions centrales du cours: tests, tableaux, boucles, fonctions, compilation séparée. Aucune notion de traitement d’images n’est prérequise.

Niveaux de difficultés du projet#

Les exercices sont classés en fonction de leur difficulté :

  • Question facile: (*)

  • Question moyenne: (**)

  • Question difficile: (***)

Les sections Aller plus loin vous donnent des pistes pour aprofondir certains aspects. Elles ne sont pas nécessaires pour valider le projet mais sont prises en compte dans l’évaluation

Les différentes parties du projet#

Le projet commence par un préambule qui rappelle les bases des formats images PBM PGM et PPM et vous sert d’outil de visualisation. Puis il est découpé en exercices selon six parties:

  • Partie 0 : préambule, conversion et visualisation des images

  • Partie 1 : traitements basiques d’images binaires

  • Partie 2 : traitements basiques d’images en niveaux de gris

  • Partie 3 : extraction de contours

  • Partie 4 : mise en place d’une bibliothèque de traitement d’images

  • Partie 5 : Traitements d’images en couleurs

  • Partie 6 : Segmentation en régions par la méthode du super pixel

Remarque: les premiers exercices sont faits dans des fichiers indépendants. Puis, à la fin du projet, on passe à une organisation multi-fichiers dans le but de créer une bibliothèque de traitement d’images.

Les exercices de la partie 1 sont pensés de façon progressive pour introduire les notions de base dont nous aurons besoin dans le projet.

Les fonctions de la partie 2 sont indispensables pour la suite du projet. L’objectif est d’arriver à implanter la partie 3 (qui dépend de 2) et la partie 6 (qui dépend de 2, 4 et 5).

À l’intérieur d’une partie, les questions se suivent (sauf exceptions indiquées). En dehors de ces dépendances, vous pouvez travailler sur ce projet dans l’ordre que vous souhaitez.

Par ailleurs, nous vous fournissons aussi

  • Une proposition de squelette des fichiers, avec de la documentation et des tests;

  • Des exemples d’images et des résultats de traitements par les différents filtres pour comparer avec les vôtres.

Comment tester vos fonctions et programmes#

Lors des premiers exercices, vous trouverez des tests directement dans les fichiers à remplir. A partir de la partie 4, des fichiers spécifiques de test sont proposés pour chaque module. A vous de compléter et ajouter les tests nécessaires.

Pensez à remplir le rapport.md au fur et à mesure.