Cette bibliothèque fournit des outils pour manipuler des images au format BMP, notamment pour effectuer des opérations d'analyse et d'amélioration d'image via l'égalisation d'histogramme. Elle prend en charge les images 8 bits (niveaux de gris) et 24 bits (couleur).
- Traitement d'images BMP 8 bits et 24 bits
- Analyses statistiques:
- Calcul d'histogrammes de niveaux de gris
- Calcul de fonction de distribution cumulative (CDF)
- Amélioration d'images:
- Égalisation d'histogramme pour images 8 bits (niveaux de gris)
- Égalisation d'histogramme pour images 24 bits (couleur) utilisant l'espace YUV
- Filtres d'images:
- Filtres de convolution (flou, netteté, détection de contours)
- Filtres médian et gaussien pour réduction du bruit
├── main.c # Fichier principal pour l'exécution du programme
├── src/
│ ├── bmp8.c/h # Gestion des images BMP 8 bits
│ ├── color.c/h # Gestion des images BMP 24 bits
│ ├── histogram.c/h # Fonctions d'analyse et égalisation d'histogramme
│ ├── utils/
│ │ └── utils.c/h # Fonctions utilitaires pour le traitement d'images
│ └── [...]
├── images/ # Dossier pour les images d'exemple
│ └── [...]
L'égalisation d'histogramme est une technique de traitement d'images qui améliore le contraste global en redistribuant les intensités de pixels. Le processus comprend:
- Calcul de l'histogramme de l'image
- Calcul de la fonction de distribution cumulative (CDF)
- Normalisation de la CDF pour obtenir la fonction de transformation
- Application de la fonction de transformation Ă chaque pixel
Pour les images 24 bits (RGB), l'égalisation est réalisée selon le processus suivant:
- Conversion de l'espace RGB vers YUV
- Égalisation de la composante Y (luminance) uniquement
- Conservation des composantes U et V (chrominance)
- Reconversion de YUV vers RGB
# Exemple de compilation
gcc -o image_processor src/*.c -lm
# Exemple d'utilisation
./image_processor// Charger une image BMP 8 bits
t_bmp8 *img = bmp8_load("input.bmp");
// Égaliser l'histogramme
bmp8_equalize(img);
// Sauvegarder l'image traitée
bmp8_save(img, "output.bmp");
// Libérer la mémoire
bmp8_free(img);