Dans cette activité, vous devez écrire un programme qui réalise la segmentation d’une image par seuillage (thresholding).
Lisez deux entiers L et C, représentant les dimensions de la matrice.
Lisez un entier T, qui sera la valeur du seuil (coupure).
Lisez les valeurs entières de la matrice.
Pour chaque pixel \(p\), appliquez la règle de binarisation suivante :
\[\text{résultat} = \begin{cases} 255 & \text{si } p > T \\ 0 & \text{si } p \le T \end{cases}\]
Affichez la matrice résultante contenant uniquement les valeurs 0 ou 255.
📌 Important :
Faites attention à l’opérateur : le pixel ne devient blanc (255) que s’il est strictement supérieur à \(T\).
La sortie doit conserver la structure matricielle (L lignes et C colonnes).
Voir un simulateur interactif pour cette question sur la Figure 1.17 (ajustez le curseur de \(T\) pour observer comment les objets sont isolés du fond).
1.17.7.1 🧠 Qu’est-ce que la Segmentation ?
Le seuillage est la méthode la plus simple pour séparer les objets d’intérêt du fond de l’image. En transformant les niveaux de gris en noir et blanc pur, on crée une carte binaire qui facilite le comptage des objets ou l’identification des formes :
Valeur du Pixel (\(p\))
Condition
Résultat Final
Sombre (\(p \le T\))
Fond/Bruit
0 (Noir)
Clair (\(p > T\))
Objet/Mise en évidence
255 (Blanc)
1.17.7.2 📋 Tâche (spécification pour VPL)
Entrée :
La première ligne contient l’entier L.
La deuxième ligne contient l’entier C.
La troisième ligne contient l’entier T (seuil).
Les lignes suivantes contiennent les éléments de la matrice.
Sortie :
La matrice binarisée (0 ou 255) avec L lignes et C colonnes.
1.17.7.3 📌 Exemples
Entrée
Sortie
Observation
2
4
128
0 100 128 200
50 129 255 64
0 0 0 255
0 255 255 0
Notez que la valeur 128 est devenue 0 (car \(128 \le 128\))
Les pixels dont l'intensité est supérieure à 128 (p > 128) deviennent blancs (255) ; sinon, ils deviennent noirs (0).
Figure 1.17: Simulateur EP01_07 : Seuillage global interactif (binarisation p > T)
%%writefile EP01_07.cpp// your solution
Overwriting EP01_07.cpp
TestSuite("EP01_07.cpp").run()
✔️ EP01_07.cases existe déjà dans casos/
📋 7 cas chargé(s) depuis casos/EP01_07.cases
🔍 Test de C++ : EP01_07.cpp
⚠️ EP01_07.cpp : fichier vide (moins de 3 lignes). Tests ignorés.