Ajustez les paramètres de contraste (α) et de luminosité (β) pour appliquer la transformation ponctuelle d'intensité et observez l'écrêtage de saturation dans l'intervalle [0, 255].
2.12.1 EP02_01 ☀️ Réglage de la luminosité et du contraste
Dans cette activité, l’objectif est d’implémenter un opérateur ponctuel pour la transformation linéaire d’intensité, en appliquant le réglage dynamique de la luminosité et du contraste sur une image numérique.
2.12.1.1 📋 Directives d’implémentation
L’algorithme doit suivre le flux d’exécution ci-dessous :
- Dimensions : Lire les entiers \(L\) (lignes) et \(C\) (colonnes) de la matrice.
- Paramètres : Lire la valeur réelle \(\alpha\) (facteur de contraste) et l’entier \(\beta\) (facteur de luminosité).
- Données : Lire les valeurs entières de la matrice d’origine.
- Mappage : Pour chaque pixel \(p\), calculer la nouvelle valeur \(p'\) à l’aide de l’équation :
\[p' = \text{clip}(\text{round}(\alpha \cdot p + \beta))\]
- Sortie : Afficher la matrice résultante avec les dimensions \(L \times C\).
2.12.1.2 📌 Contraintes informatiques
- Arrondi (Round) : On applique l’arrondi mathématique à l’entier le plus proche avant la conversion de type.
- Saturation (Clipping) : Les valeurs doivent être confinées à l’intervalle \([0, 255]\) pour préserver le standard 8 bits :
\[\text{clip}(x) = \max(0, \min(255, x))\]
- Simulation : L’effet des paramètres \(\alpha\) et \(\beta\) sur la correction histogrammique peut être observé dans la Figure 2.12.
2.12.1.3 🧠 Fondements théoriques
Les modifications altèrent l’histogramme de l’image pour ajuster le profil d’éclairage et la distinction tonale.
| Paramètre | Fonction | Impact visuel |
|---|---|---|
| \(\alpha\) (Alpha) | Scalaire | Module le Contraste. Si \(\alpha > 1\), il étend l’histogramme ; si \(0 \le \alpha < 1\), il le compresse. |
| \(\beta\) (Beta) | Additif | Module la Luminosité. S’il est positif, il translate l’histogramme vers la droite ; s’il est négatif, vers la gauche. |
| \(\text{clip}\) | Limiteur | Restreint la plage dynamique, empêchant les erreurs de sous-dépassement et de dépassement. |
2.12.1.4 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
- Ligne 1 : Entier \(L\).
- Ligne 2 : Entier \(C\).
- Ligne 3 : Valeurs de
alpha(\(\alpha\)) etbeta(\(\beta\)). - Lignes suivantes : Éléments numériques de la matrice d’origine.
Sortie :
- Matrice transformée structurée en \(L\) lignes et \(C\) colonnes.
2.12.1.5 📌 Exemples
Le tableau suivant présente un exemple pratique du comportement attendu de l’algorithme, mettant en évidence l’action des opérateurs d’arrondi et de saturation.
| Entrée | Sortie | Observation |
|---|---|---|
| 1 4 1.5 -30 0 100 180 255 |
0 120 240 255 | Notez l’effet de saturation sur le dernier pixel |
Exécution des Tests
Pour évaluer les tests, exécutez TestSuite("EP02_01.extension").run() dans une nouvelle cellule, en remplaçant l’extension par celle du langage utilisé (.py, .java, .c, .cpp, .js ou .r). Le système télécharge les cas de test depuis GitHub, exécute le programme et calcule la note automatiquement.