Skip to content
Snippets Groups Projects
Select Git revision
  • d3c601d7ba79f96357f247e5fa769b094f8b0128
  • main default protected
  • master
3 results

tp-4-manipulation-dimages

  • Clone with SSH
  • Clone with HTTPS
  • Forked from LABOUREL Arnaud / Image Template
    4 commits ahead of the upstream repository.

    TP4 - Manipulation d'Images en Niveaux de Gris

    Projet réalisé par SAEZ Théo

    Contexte

    Ce TP porte sur la représentation et la manipulation d’images en niveaux de gris. Les images sont constituées de pixels dont la couleur est caractérisée par un niveau de gris, représenté par un nombre entre 0 (noir) et 1 (blanc).

    L’objectif est d’implémenter plusieurs classes Java permettant de manipuler ces images, d’appliquer des transformations simples, et de comprendre la gestion des couleurs en niveaux de gris.


    Organisation du TP

    Le TP est divisé en plusieurs parties correspondant à des tâches à réaliser :

    1. Représentation des couleurs en niveaux de gris

    • Compléter la classe ByteGrayColor qui implémente l’interface GrayColor.
    • Implémenter les méthodes pour obtenir la luminosité, la couleur, et la comparaison entre couleurs.
    • Ajouter des constantes pour les couleurs noir et blanc.

    2. Représentation des images en niveaux de gris

    • Compléter la classe MatrixGrayImage qui implémente l’interface GrayImage.
    • Gérer la matrice de pixels, initialiser une image blanche.

    3. Transformations d’images

    Implémenter plusieurs transformations en créant des classes qui implémentent l’interface Transform :

    • Invert : inversion des niveaux de gris.
    • DecreaseGrayLevels : diminution du nombre de niveaux de gris.
    • Outline : extraction des contours avec un seuil donné.
    • Pixelate : pixelisation de l’image avec une taille de carré donnée.
    • CompositeTransform : composition de plusieurs transformations successives.

    4. Tâches supplémentaires (optionnelles)

    • Création d’une transformation miroir (verticale, horizontale, ou les deux).
    • Gestion d’images en couleurs au format PPM.
    • Ajout d’un menu dans l’application pour contrôler les transformations et la gestion des fichiers.

    Installation et exécution

    1. Forker le projet GitLab fourni (lien dans le sujet).
    2. Cloner votre fork localement.
    3. Importer le projet en tant que projet Gradle dans votre IDE (ex : IntelliJ IDEA, Eclipse).
    4. Compiler le projet.
    5. Exécuter l’application via la classe Display :
      • L’image sera chargée, transformée selon la transformation appliquée dans la méthode initialize, puis affichée.
    6. Faire régulièrement des commits pour suivre votre progression.

    Conseils

    • Suivez les consignes de chaque tâche dans le PDF du TP.
    • Supprimez les commentaires TODO une fois les méthodes complétées.
    • Testez régulièrement vos classes et transformations.
    • Utilisez Math.floor pour la quantification des niveaux de gris.
    • Respectez la gestion des coordonnées (x, y) avec (0,0) en haut à gauche.

    Résultats attendus

    Pour chaque transformation, vous devriez obtenir un affichage correspondant aux exemples fournis dans le sujet :

    • Image inversée pour Invert.
    • Image avec un nombre réduit de niveaux de gris pour DecreaseGrayLevels.
    • Contours extraits pour Outline.
    • Image pixelisée pour Pixelate.
    • Image transformée par la composition des trois transformations dans CompositeTransform.

    Structure du projet

    • GrayColor (interface)
    • ByteGrayColor (classe)
    • GrayImage (interface)
    • MatrixGrayImage (classe)
    • Transform (interface)
    • Transformations :
      • Invert
      • DecreaseGrayLevels
      • Outline
      • Pixelate
      • CompositeTransform
    • Display (classe principale pour lancer l’application)