Retour aux projets

Comptage automatique de pièces

Expérience académique de vision par ordinateur qui segmente des images de pièces, valide les régions circulaires, regroupe les tailles de pièces et compare les comptages détectés aux étiquettes.

ExpérimentalCode source disponibleExpérience académique de vision par ordinateur / 2024-2025

Problème

Les images de pièces varient en éclairage, contraste, bruit, arrière-plan et échelle : l'outil a donc besoin de prétraitement et de validation avant de compter des blobs.

Solution

Charger une image dans Tkinter, calculer ses statistiques, appliquer le prétraitement nécessaire, segmenter avec le seuillage d'Otsu, valider les régions circulaires et comparer les comptages aux étiquettes du CSV.

Fonctionnalités clés

Interface Tkinter pour importer une image de pièces et voir côte à côte les résultats original et traité
Prétraitement fondé sur les statistiques de l'image : contraste, luminosité, bruit, plage dynamique, saturation et écrêtage d'intensité
Segmentation par seuillage d'Otsu implémentée dans un module de segmentation réutilisable
Module de filtrage conditionnel avec filtres moyenne, gaussien, médian, laplacien et Sobel
Parcours des composantes connexes qui valide les pièces candidates par aire, périmètre, circularité et intensité de la région
Regroupement par rayon relatif en petites, moyennes et grandes pièces
Comparaison adossée à un CSV entre les nombres de pièces détectés et réels, avec un pourcentage d'exactitude
Ressources du dépôt pour l'entrée, la sortie segmentée et la superposition finale des détections

Rôle

Travaux pratiques académiques de vision par ordinateur avec Chawki Ahmed Ramzi Belhaddad, centrés sur le traitement d'images classique, la validation des comptages et une interface de bureau Tkinter.

Stack

PythonTkinterPillowNumPySciPyPandasscikit-imageOpenCVMatplotlibClassical CV

Liens

Schéma d'architecture

Mermaid
flowchart LR
  User["Import via l'interface Tkinter"] --> Loader["Chargement d'image avec Pillow"]
  Loader --> Stats["Statistiques de l'image : luminosité, contraste, saturation, plage"]
  Stats --> Preprocess["Prétraitement adaptatif : contraste, luminosité, débruitage, plage dynamique"]
  Preprocess --> Segment["Segmentation par seuillage d'Otsu"]
  Segment --> Filters["Filtres conditionnels : moyenne, gaussien, médian, laplacien, Sobel"]
  Filters --> Binary["Masque binaire des pièces"]
  Binary --> Components["Parcours des composantes connexes"]
  Components --> Circles["Validation des cercles : aire, périmètre, circularité, intensité"]
  Circles --> Sizes["Groupes de rayons : petit, moyen, grand"]
  Circles --> Accuracy["Consultation du CSV : nombre détecté vs nombre réel"]
  Sizes --> UI["Panneaux original et traité avec synthèse"]
  Accuracy --> UI

Captures d'écran : Comptage de pièces

3 vues
Image d'entrée représentative du jeu de données du dépôt, avant segmentation et détection.
Sortie de segmentation par seuillage d'Otsu utilisée pour isoler les régions en forme de pièces du fond.
Superposition de détection traitée montrant les régions de pièces validées après filtrage et contrôles de circularité.