EP08_08 — 🟡 Image en Niveaux de Gris et Seuillage Dynamique
8.14.8 EP08_08 🟡 Image en Niveaux de Gris et Seuillage Dynamique
Dans cet exercice, l’image d’entrée n’est plus strictement binaire (0/1) mais devient une image en niveaux de gris (\(8\) bits, \(0\dots255\)), où les objets possèdent une intensité moyenne intermédiaire sur un fond sombre (\(0\)), avec en plus un bruit de type sel et poivre réparti sur toute l’image.
8.14.8.1 📋 Directives d’Implémentation
Entrée : lire \(H\) et \(W\) sur la première ligne, suivis des \(H\) lignes contenant des valeurs entières de \(0\) à \(255\) dans une matrice \(H \times W\).
Prétraitement :
Appliquer un filtre Médian (\(3 \times 3\)) pour éliminer le bruit sel et poivre tout en préservant des bords nets.
Appliquer un Seuillage d’Otsu (ou un seuil fixe \(T = 60\)) pour binariser l’image nettoyée.
Mesure et Sortie : extraire le contour des objets, calculer les métriques géométriques (area, perimeter, cx, cy, x, y, w, h, circularity, solidity) et trier les objets par bbox[0] (et bbox[1] en cas d’égalité). Réattribuer l’id de \(1\) à \(N\) et imprimer le tableau.
Pour le tri, utiliser medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), avec medidas = mm.measure(img).
id area perimeter cx cy x y w h circularity solidity vertices
1 16.0 16.0 8.0 8.0 6 6 5 5 0.79 1.000 4
2 28.3 18.8 22.5 8.0 19 5 7 7 1.00 1.000 8
🧮 Simulateur EP08_08 : Bruit sel et poivre en niveaux de gris & Mesure OpenCVMédiane 3x3 → Binarisation → Mesure
ÉTAPE DU TRAITEMENT
AFFICHAGE DE LA MATRICE DE PIXELS
TABLEAU DES MESURES DES OBJETS (TRIÉS PAR BBOX_X, BBOX_Y)
id
area
perimeter
cx
cy
x
y
w
h
circularity
solidity
vertices
Figure 8.22: Simulateur EP08_08 : Filtrage Médian en Niveaux de Gris et Mesure d’Objets OpenCV
%%writefile EP08_08.py# Code Python
Overwriting EP08_08.py
TestSuite("EP08_08.py").run()
✔️ EP08_08.cases existe déjà dans casos/
📋 3 cas chargé(s) depuis casos/EP08_08.cases
🔍 Test de Python : EP08_08.py
⚠️ EP08_08.py : fichier vide (moins de 3 lignes). Tests ignorés.