👆 Cliquez sur une cellule de la Entrée originale pour assombrir le pixel (−30) et cliquez avec le bouton droit pour éclaircir (+30). Ajustez le seuil T pour la binarisation.
4.9.1 EP04_01 🎚️ Seuillage global par seuil fixe
Dans les scanners de documents et les systèmes de lecture de codes-barres, la première étape du traitement consiste toujours à séparer ce qui est « objet » (encre, texte, barres) de ce qui est « fond » (papier, emballage). Le seuillage global fait exactement cela : il compare chaque pixel à un seuil unique \(T\) et décide, en temps réel, s’il appartient à la classe claire ou à la classe sombre. C’est l’opérateur de segmentation le plus simple — et pourtant, il est à l’origine d’une grande partie des pipelines industriels d’inspection visuelle. Voir la simulation de cet EP dans Figure 4.30.
4.9.1.1 📋 Directives d’implémentation
- Dimensions : Lire les entiers \(L\) (lignes) et \(C\) (colonnes).
- Seuil : Lire l’entier \(T\) (seuil de décision).
- Données : Lire les valeurs entières de la matrice originale ligne par ligne.
- Mappage : Pour chaque pixel \(p\), calculer la nouvelle valeur à l’aide de l’équation :
\[ p' = \begin{cases} 255, & \text{si } p > T \\ 0, & \text{si } p \le T \end{cases} \] 5. Sortie : Afficher la matrice binarisée avec les dimensions \(L \times C\).
4.9.1.2 📌 Contraintes computationnelles
- Binarisation : La sortie contient uniquement les valeurs \(0\) ou \(255\).
- Comparaison stricte : Le critère utilise \(> T\) (les pixels égaux à \(T\) deviennent du fond).
- Type : Le résultat final doit être entier.
- Remarque : Cet EP suit la convention d’OpenCV (
cv2.THRESL_BINARY) : seuls les pixels avec une valeur supérieure à \(T\) deviennent blancs (255) ; les pixels avec une valeur égale à \(T\) restent noirs (0).
4.9.1.3 🧠 Fondement théorique
| Paramètre | Type | Impact visuel |
|---|---|---|
| \(T\) petit | Entier | La plupart des pixels deviennent blancs |
| \(T\) grand | Entier | La plupart des pixels deviennent noirs |
| \(T\) bien choisi | Entier | Sépare nettement l’objet et le fond |
4.9.1.4 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
- Ligne 1 : Entier \(L\).
- Ligne 2 : Entier \(C\).
- Ligne 3 : Entier \(T\).
- Lignes suivantes : Éléments entiers de la matrice originale.
Sortie :
- Matrice binarisée en \(L\) lignes et \(C\) colonnes, valeurs \(0\) ou \(255\) séparées par des espaces.
4.9.1.5 📌 Exemples
| Entrée | Sortie | Remarque |
|---|---|---|
| 2 4 100 0 99 100 180 255 30 120 80 |
0 0 0 255 255 0 255 0 |
\(T=100\) : seuls les pixels avec une valeur supérieure à 100 deviennent blancs ; par conséquent, 99 et 100 deviennent noirs. |
| 1 3 0 0 50 255 |
0 255 255 | \(T=0\) : seuls les pixels avec une valeur strictement supérieure à 0 deviennent blancs. |
%%writefile EP04_01.py
# Code PythonOverwriting EP04_01.py
TestSuite("EP04_01.py").run()✔️ EP04_01.cases existe déjà dans casos/
📋 7 cas chargé(s) depuis casos/EP04_01.cases
🔍 Test de Python : EP04_01.py
⚠️ EP04_01.py : fichier vide (moins de 3 lignes). Tests ignorés.