Analyse d'Image avec OpenCV
Introduction
Ce projet est réalisé dans le cadre de mes cours en école d’ingénieur, où j’apprends à utiliser la bibliothèque OpenCV avec le langage C++. Le cours est conçu pour nous initier aux bases de la vision par ordinateur, en présentant progressivement les fonctionnalités d’OpenCV et leur utilisation dans des applications pratiques.
Le cours comporte 40 vidéos proposées par le professeur, qui couvrent une large gamme de sujets, de la manipulation d’images aux calculs d’histogrammes, en passant par l’analyse des couleurs et la détection de contours. Tout au long de ces vidéos, les concepts sont introduits étape par étape, avec des exemples clairs pour bien comprendre l’utilisation des fonctions d’OpenCV.
En parallèle des vidéos, trois devoirs pratiques nous permettent de mettre en œuvre les compétences acquises. Le dernier devoir, qui est le plus complexe, porte sur la détection de contours et intègre à la fois des aspects théoriques et pratiques.
Structure du Cours : Ce que j’apprends
Voici un résumé des étapes principales abordées dans ce cours :
Introduction à OpenCV :
Chargement et affichage d’images.
Exploration des structures de données fondamentales d’OpenCV.
Manipulation de pixels :
Différentes méthodes pour scanner et traiter chaque pixel d’une image.
Implémentation d’opérations simples pour modifier ou analyser les pixels.
Traitement des couleurs :
Concepts liés aux espaces colorimétriques et à leur application en vision par ordinateur.
Utilisation des outils OpenCV pour transformer les couleurs et détecter des objets.
Analyse des pixels avec des histogrammes :
Calcul et interprétation des histogrammes d’images.
Applications pratiques des histogrammes pour améliorer les images ou détecter des anomalies.
Accéder aux Résultats et au Code
Tous les détails du projet, y compris les résultats et le code source, sont disponibles dans mon dépôt GitHub. Vous y trouverez :
Le code des vidéos suivies tout au long du cours, permettant de comprendre et d'appliquer les concepts enseignés en vision par ordinateur avec OpenCV.
Les implémentations des trois devoirs, dont le dernier portant sur la comparaison des détecteurs de contours Sobel, Laplace et Canny.
Les résultats des tests et l’évaluation des performances de chaque détecteur.
Les fichiers CSV contenant les meilleurs paramètres trouvés pour chaque détecteur.
Vous pouvez accéder au dépôt GitHub en cliquant sur le bouton ci-dessous.
Devoir final : Détection de Contours
Le dernier devoir du cours (Devoir 03) a consisté à comparer trois détecteurs de gradients : Sobel, Laplace et Canny. L’objectif était d’évaluer leurs performances sur un ensemble de 40 images en suivant ces étapes :
Appliquer chaque détecteur pour extraire les contours des images.
Ajuster les paramètres clés (taille de noyau, seuils) et observer leur impact sur le résultat.
Ajouter des trackbars interactives permettant de modifier dynamiquement les paramètres et d’optimiser la détection.
Comparer les résultats obtenus aux contours de référence tracés manuellement.
Évaluer quantitativement les performances des détecteurs en utilisant des métriques comme le taux de faux positifs, le taux de faux négatifs et une mesure globale de performance.
Pour aller plus loin et compléter l’analyse, j’ai ajouté au code une fonctionnalité permettant d’explorer automatiquement différentes combinaisons de paramètres pour chaque détecteur et chaque image. Cette amélioration permet de déterminer les meilleurs paramètres possibles afin d’optimiser la précision de la détection. Cette approche n’était pas exigée dans le cadre du devoir, mais elle m’a permis d’affiner les performances des détecteurs.
Une fois l’analyse terminée, un rapport détaillant la méthodologie, les résultats et l’interprétation des performances de chaque détecteur a été rédigé.
Vous pouvez télécharger le rapport complet en cliquant sur le bouton ci-dessous.
Explication du Code et Structure du Programme
Le programme (que l'on peu trouver sur mon GitHub dans le dossier Devoir 03) a été structuré en plusieurs fichiers pour assurer une modularité et une facilité d’analyse :
DetecteurContours : Implémente les fonctions permettant d’appliquer les détecteurs de contours Sobel, Laplace et Canny à une image donnée.
EvaluateurContours : Évalue la performance des contours détectés en les comparant aux contours de référence manuels.
MeilleursParametres : Permet d’optimiser automatiquement les paramètres de chaque méthode.
Affichage : Gère l’affichage des images et l’interaction avec l’utilisateur via des trackbars.
Fonctions : Contient des fonctions utilitaires comme le chargement d’images et l’application des filtres.
Le programme a été conçu pour être interactif, permettant à l’utilisateur d’explorer et de comparer dynamiquement les différentes méthodes de détection de contours.