Ce projet est une application de traitement d'images développée avec OpenCV et Qt, offrant à la fois une interface en ligne de commande (CLI) et une interface graphique (GUI). Il permet d'appliquer divers filtres et transformations à des images.
Le projet a pour objectif de recoder toutes les fonctions de filtrage et de transformations géométriques afin de comprendre en profondeur leurs mécanismes et leur implémentation algorithmique.
- Fonctionnalités
- Prérequis
- Installation
- Utilisation
- Version CLI
- Version GUI
- Structure du projet
- Documentation des fonctions
- Jeu de données d'images
- Filtre médian
- Filtre gaussien
- Filtre de Sobel (détection de contours)
- Filtre moyenneur
- Affichage de l'histogramme
- Affichage de l'histogramme cumulé
- Égalisation d'histogramme
- Étirement d'histogramme
- Zoom / Agrandissement
- Réduction
- Rotation
- Retournement (flip)
- Compression
- CMake (version 3.22 ou plus récente)
- OpenCV 4.x
- Qt 6.x (pour l'interface graphique)
- Compilateur C++ compatible avec C++11 ou supérieur
- Clonez le dépôt :
git clone https://github.com/Amine830/image-analysis.git
cd image-analysis- Assurez-vous que les scripts de construction sont exécutables :
chmod +x build_cli.sh build_gui.shPour exécuter l'application en ligne de commande :
./build_cli.shL'interface CLI vous permettra de :
- Charger une image depuis votre système de fichiers
- Appliquer différents filtres et transformations
- Enregistrer l'image modifiée
L'application affichera les histogrammes à chaque étape du traitement.
Pour exécuter l'application avec l'interface graphique :
./build_gui.shL'interface graphique offre une expérience plus intuitive avec des boutons pour chaque opération disponible :
-
Chargement et sauvegarde d'images
-
Boutons dédiés pour chaque type de filtre et transformation
-
Affichage en temps réel de l'image et des histogrammes
Le projet est organisé comme suit :
image-analysis/
├── build_cli.sh # Script pour compiler et exécuter la version CLI
├── build_gui.sh # Script pour compiler et exécuter l'interface graphique
├── CMakeLists.txt # Configuration CMake principale
├── Filters.cpp # Implémentation des filtres
├── Filters.h # Déclaration des fonctions de filtrage
├── ImageProcessor.cpp # Classe de traitement d'images
├── ImageProcessor.h # Interface de la classe de traitement
├── main.cpp # Point d'entrée de la version CLI
├── QtProject/ # Sources de l'interface graphique
│ ├── CMakeLists.txt # Configuration CMake pour Qt
│ ├── main.cpp # Point d'entrée GUI
│ ├── mainwindow.cpp # Implémentation de l'interface
│ ├── mainwindow.h # Déclaration de la classe MainWindow
│ └── mainwindow.ui # Définition de l'interface utilisateur
└── img/ # Dossier contenant les images
├── Donnee1/ # Premier jeu d'images de test
├── Donnee2/ # Second jeu d'images de test
├── Interface graphique/ # Captures d'écran de l'interface
└── results/ # Résultats des traitements
Si Qt n'est pas trouvé automatiquement, vous pouvez définir le chemin manuellement en modifiant le fichier CMakeLists.txt :
set(CMAKE_PREFIX_PATH "/chemin/vers/qt/6.x.x/gcc_64")Par exemple :
set(CMAKE_PREFIX_PATH "/home/ubuntu/install/qt/6.8.1/gcc_64")Alternativement, vous pouvez définir cette variable lors de l'appel à CMake :
cmake -DCMAKE_PREFIX_PATH="/chemin/vers/qt/6.x.x/gcc_64" .- Filtre médian : Réduit le bruit tout en préservant les contours
- Filtre gaussien : Applique un flou qui préserve les structures générales
- Filtre de Sobel : Détecte les contours dans l'image
- Filtre moyenneur : Applique un flou simple en calculant la moyenne des pixels adjacents
- Égalisation d'histogramme : Améliore le contraste en répartissant uniformément les intensités
- Étirement d'histogramme : Améliore le contraste en étirant la plage des valeurs d'intensité
- Zoom : Agrandit l'image en utilisant une interpolation
- Réduction : Réduit la taille de l'image
- Rotation : Pivote l'image selon un angle donné
- Retournement (flip) : Inverse l'image horizontalement ou verticalement
- Compression : Réduit la taille du fichier en conservant une qualité acceptable
Le dossier img/ contient :
- Donnee1/ et Donnee2/ : Images de test pour expérimenter les fonctionnalités
- Screenshots/ : Captures d'écran de l'interface utilisateur
- Results/ : Exemples de résultats de traitements d'images
- Egalisation d'histogramme :
- Etirement d'histogramme :
D'autres résultats avec des images, histogrammes, filtres et transformations différents sont disponibles.
- Erreur de compilation : Vérifiez que OpenCV et Qt sont correctement installés
- Qt non trouvé : Définissez le chemin correct vers Qt comme indiqué dans la section Configuration
- Images non chargées : Assurez-vous que les chemins d'accès sont corrects et relatifs au répertoire d'exécution










