Go to file
2018-11-27 14:56:58 +01:00
doc first steps in uncompressing, will finish later 2018-11-26 02:28:15 +01:00
img added files for report, have to work some more on this project 2018-11-27 14:28:29 +01:00
src Fixed ppm format, now creates image identical to original image 2018-11-27 13:36:24 +01:00
.gitignore added files for report, have to work some more on this project 2018-11-27 14:28:29 +01:00
.gitlab-ci.yml Update .gitlab-ci.yml, forgot to uncomment that 2018-11-26 01:33:35 +00:00
CMakeLists.txt fixed... kinda? Works with valgrind, not vanilla 2018-11-11 18:17:33 +01:00
CONTRIBUTING.org Added contributing guide 2018-11-12 15:22:53 +01:00
LICENSE Add LICENSE 2018-11-05 16:01:16 +00:00
Makefile first steps in uncompressing, will finish later 2018-11-26 02:28:15 +01:00
rapport.org added files for report, have to work some more on this project 2018-11-27 14:28:29 +01:00
rapport.pdf added files for report, have to work some more on this project 2018-11-27 14:28:29 +01:00
README.org updated README.org 2018-11-20 15:15:45 +01:00
run-time.sh added script to get average runtime of release 2018-11-27 14:56:58 +01:00
TODOs.org hopefully fixed some stuff, and see TODO 2018-11-22 14:05:11 +01:00

Compression d'images par surfaces de couleur unies

Présentation du projet

Ce projet est un projet de cinquième semestre en faculté dInformatique à lUniversité Vincennes-Saint-Denis (Paris VIII). Il consiste à compresser des images via la détection de surfaces de couleur unie et leur stockage dans le fichier compressé. Il est à noter que cet algorithme sera particulièrement efficace pour les images ne contenant que peu de couleurs différentes tels que des images de bandes-dessinées, et sera au contraire très peu performant voire contre-productif pour des images contenant beaucoup de couleurs différentes telles que des photographies.

Les instructions complètes données par M. Bourdin pour ce projet peuvent être trouvées à cette adresse, projet numéro 22.

Compilation du projet

Afin de compiler le projet, il faut bien évidemment avoir les outils de compilation de base tel quun compilateur C (testé avec gcc et clang), cmake (version 2.8 minimum) et make. Deux options sont disponibles :

Soit on peut utiliser le Makefile disponible à la racine du dépôt et exécuter lune des deux commandes suivantes :

  $ make debug # pour compiler la version de débug du projet
  $ make release # pour compiler la version de release du projet

Soit on utilise la méthode un peu plus manuelle :

  $ mkdir -p build bin debug
  $ cd build
  $ cmake --DCMAKE_BUILD_TYPE=Debug .. # si on veut compiler la version de débug du projet
  $ cmake --DCMAKE_BUILD_TYPE=Release .. # si on veut compiler la version de release du projet
  $ make

Dans les deux cas, lexécutable se retrouvera soit dans bin/surfaces-unies en cas de compilation en release, soit dans debug/surfaces-unies en cas de compilation en débug.

Pour recompiler le projet au besoin, vous trouverez le makefile généré par CMake dans le répertoire build/ et y exécuter make.

Utilisation du logiciel

Vous pouvez obtenir de laide sur lutilisation du logiciel via la commande ./surfaces-unies --help ou ./surfaces-unies -h.

Les options disponibles pour le logiciel sont :

-i / --input
OBLIGATOIRE, doit être suivi du fichier dentré, peut être soit un fichier image ppm à compresser, soit un fichier .su généré par ce logiciel pour la décompression.
-o / --output
Suivit par le chemin vers le fichier de sortie, si le chemin indique un fichier existant, il sera écrasé par le logiciel, sinon il sera créé.
-c / --compress
PAR DÉFAUT indique au logiciel que le fichier dentrée doit être compressé
-u / --uncompress
indique au logiciel que le fichier dentrée doit être décompressé
-h / --help
affiche le message daide du logiciel

Améliorations futures

Une amélioration possible du logiciel peut être lintroduction dune option -t / --tolerance indiquant un pourcentage de tolérence pour lacceptation dune couleur dans une zone selon sa similarité à la couleur racine dune surface unie. Ainsi, une tolérance par défaut à 0% impliquerait une compression sans perte de limage, alors quune compression avec une tolérance non-nulle induirait une compression avec pertes de limage dentrée.