Team 6
- Willem Adnet
- Édouard Da Cruz
- Hugo Zabiego
Ce projet a pour objectif de convertir une image au format PPM/PGM en une image compressée au format JPEG. Nous détaillons ici les étapes clés du projet ainsi que les choix techniques et méthodologiques adoptés.
-
Lecture et génération d'images
- Lecture des images PPM/PGM à partir d'un chemin spécifié.
- Génération d'images PPM/PGM à partir de matrices définies.
-
Conversion de l'image en YCbCr
- Transformation des images RGB au format YCbCr.
-
Sous-échantillonnage
- Réduction des composantes chromatiques selon des ratios prédéfinis.
-
Transformation DCT
- Conversion des données spatiales en données fréquentielles via la transformation discrète en cosinus.
-
ZigZag
- Réorganisation des coefficients DCT en un vecteur ligne.
-
Quantification
- Réduction de la précision des coefficients pour maximiser la compression.
-
Encodage RLE
- Compression des séquences de zéros en utilisant l'encodage Run-Length.
-
Codage Huffman
- Compression des coefficients via un algorithme de codage préfixé.
-
Écriture de l'image compressée
- Génération de fichiers conformes au standard JPEG.
-
Optimisation
- Amélioration des performances et réduction de l'utilisation mémoire.
Le projet repose sur une organisation modulaire et utilise des matrices et vecteurs pour représenter les images à chaque étape du processus.
- Willem Adnet : Transformation DCT, ZigZag, et quantification.
- Édouard Da Cruz : Conversion YCbCr et sous-échantillonnage.
- Hugo Zabiego : Encodages RLE et Huffman, écriture JPEG.
Le projet utilise un fichier Makefile pour automatiser la compilation et la gestion des fichiers.
makeoumake all: Compile le projet et génère l'exécutableppm2jpeg.make clean: Supprime les fichiers objets (.o) et l'exécutable généré.make real_clean: Supprime tous les fichiers générés, y compris les fichiers compressés dans les dossiersimagesetimages/our_images.
Le projet utilise :
- Le compilateur GCC avec les options :
-Wall: Affiche tous les avertissements.-Wextra: Affiche des avertissements supplémentaires.-std=c99: Force l'utilisation du standard C99.-O2: Optimisations de niveau 2.-g: Ajoute les symboles de débogage.
- Les bibliothèques :
-lm: Pour les calculs mathématiques.-lpthread: Pour les threads POSIX.
- Code source : Les fichiers
.csont dans le dossiersrc/. - Fichiers objets : Générés dans le dossier
obj/. - Exécutable : Produit final nommé
ppm2jpeg.
- La compression peut être inefficace pour les très petites images.
- Quelques problèmes subsistent dans la gestion mémoire, nécessitant une attention future.
Le projet illustre les concepts fondamentaux de la compression JPEG tout en mettant en lumière les défis techniques associés à sa mise en œuvre. Les prochaines étapes incluraient des optimisations supplémentaires pour une meilleure gestion des ressources.
Note : Ce projet a été réalisé dans le cadre de notre première année d'étude et peut servir de base pour des travaux ultérieurs en traitement d'image.