Ajustez le seuil de séparation (T) et les décalages de luminosité (δ₁ et δ₂) pour appliquer des transformations d'intensité différenciées dans les régions sombres et claires de l'image.
1.17.8 EP01_08 🎨 Remappage par Plage d’Intensité
Dans cette activité, vous devez écrire un programme qui applique des transformations linéaires distinctes à différentes régions d’intensité de l’image.
- Lisez deux entiers L et C, représentant les dimensions de la matrice.
- Lisez les entiers T (seuil), δ₁ (delta 1) et δ₂ (delta 2).
- Lisez les valeurs entières de la matrice.
- Pour chaque pixel \(p\), appliquez la règle de remappage conditionnel :
\[\text{résultat} = \begin{cases} p + \delta_1 & \text{si } p < T \\ p + \delta_2 & \text{si } p \ge T \end{cases}\]
- Affichez la matrice résultante avec les nouvelles valeurs d’intensité.
📌 Important :
- δ₁ est le décalage appliqué aux pixels sombres (en dessous du seuil).
- δ₂ est le décalage appliqué aux pixels clairs (supérieurs ou égaux au seuil).
- Les cas de test garantissent que le résultat sera toujours dans l’intervalle valide de 0 à 255, il n’est donc pas nécessaire de gérer la saturation ou les arrondis.
- La sortie doit conserver la structure de la matrice (L lignes et C colonnes).
1.17.8.1 🧠 Transformation Conditionnelle des Pixels
En Traitement Numérique des Images (TNI), nous devons souvent traiter les régions de manière indépendante. Cette technique permet, par exemple, d’éclaircir uniquement les ombres d’une photographie (en augmentant les pixels sombres) sans saturer la luminosité des zones déjà claires, ou vice versa.
| Plage d’Intensité | Condition | Opération |
|---|---|---|
| Pixels Sombres | \(p < T\) | \(p + \delta_1\) |
| Pixels Clairs | \(p \ge T\) | \(p + \delta_2\) |
1.17.8.2 📋 Tâche (spécification pour VPL)
Entrée :
La première ligne contient les entiers L et C.
La deuxième ligne contient les entiers T, δ₁ et δ₂.
Les lignes suivantes contiennent les éléments de la matrice.
Sortie :
La matrice transformée avec L lignes et C colonnes, avec des valeurs séparées par des espaces.
1.17.8.3 📌 Exemples
| Entrée | Sortie | Observation |
|---|---|---|
2 4128 60 -400 100 150 25580 128 200 30 |
60 160 110 215140 88 160 90 |
Les pixels < 128 ajoutent 60. Les pixels ≥ 128 soustraient 40. |
%%writefile EP01_08.cpp
// your solutionOverwriting EP01_08.cpp
TestSuite("EP01_08.cpp").run()✔️ EP01_08.cases existe déjà dans casos/
📋 8 cas chargé(s) depuis casos/EP01_08.cases
🔍 Test de C++ : EP01_08.cpp
⚠️ EP01_08.cpp : fichier vide (moins de 3 lignes). Tests ignorés.