CoDec Image
Encodeur/Décodeur d'images conçu en C pur. Le but ? Comprendre les fondamentaux de la compression numérique en implémentant un algorithme 'Near-Lossless' basé sur le codage différentiel et une table VLC (Variable Length Coding). Pas de bibliothèques magiques, juste de la manipulation de bits.
C
Langage
pur et dur
DIFF
Format
binaire custom
VLC
Méthode
huffman statique
vue d'ensemble
L'objectif de ce projet est de créer un utilitaire de compression capable de transformer une image PGM (niveaux de gris) ou PPM (couleur) en un format binaire optimisé (.dif).
L'algorithme repose sur le principe que les pixels voisins ont souvent des valeurs proches. Au lieu de stocker la valeur brute (ex: 180), on stocke la différence avec le précédent (ex: +2).
Ces différences sont ensuite encodées via une table VLC (codes courts pour petites différences, codes longs pour grandes différences) pour réduire la taille finale.
- Langage C (C99)
- Graphisme libg2x (OpenGL/Glut wrapper)
- Build Makefile
- Image NetPBM (PGM/PPM)
- Binaire Hex Editor
Flux de données
imgdif.c
Le cœur du réacteur. Contient toutes les fonctions de manipulation d'images, de gestion mémoire, et surtout les routines bit-à-bit pour l'écriture du fichier compressé.
Encodage Différentiel
Transformation des pixels en écarts par rapport à leurs voisins. Repliement mathématique pour transformer les écarts signés en entiers positifs.
Quantificateur VLC
Table de compression statique à 4 niveaux. Les petites variations (le bruit de fond de l'image) sont codées sur très peu de bits.
Interfaces Graphiques
pgmtodif et diftopgm offrent une visualisation temps réel de l'image, de sa version différentielle et de son histogramme.
Essayez le CoDec
J'ai porté l'algorithme C original en TypeScript pour vous permettre de le tester directement dans le navigateur.
Déposez une image, et voyez comment l'algorithme 'voit' les différences entre les pixels.
apprentissages clés
Manipulation de fichiers binaires et écriture bit-à-bit (Bitwise operations).
Gestion manuelle de la mémoire (malloc/free) et arithmétique des pointeurs.
Compréhension profonde des formats d'images et de la compression sans perte.
Création d'outils en ligne de commande robustes (arguments, I/O, erreurs).
Technos utilisées
Langage
Librairies
Concepts
Galerie
Aperçu de l'interface graphique originale en C/OpenGL.