Réglez le facteur de gain k, observez le pipeline complet de rehaussement (floutage, masque haute fréquence) et survolez le résultat.
3.12.10 EP03_10 ✨ Unsharp Masking (USM)
Dans les systèmes de numérisation de documents historiques et d’œuvres d’art, la netteté des images est essentielle pour la lecture de textes manuscrits et de détails ornementaux. L’Unsharp Masking (USM) est l’algorithme de rehaussement de netteté standard utilisé dans les scanners professionnels et les logiciels tels qu’Adobe Photoshop, contrôlé par le paramètre \(k\) qui détermine l’intensité du rehaussement.
Voir dans Figure 3.35 une simulation de cet EP.
3.12.10.1 📋 Directives d’implémentation
- Dimensions : Lire les entiers \(L\) (lignes) et \(C\) (colonnes).
- Paramètre : Lire la valeur réelle \(k\) (intensité du rehaussement, \(k \ge 0\)).
- Données : Lire la matrice de pixels \(f\).
- Lissage : Calculer \(\bar{f}\) avec un filtre de moyenne \(3\times3\) (uniquement les pixels internes ; les bords sont conservés) :
\[\bar{f}(i,j) = \frac{1}{9} \sum_{s=-1}^{1} \sum_{t=-1}^{1} f(i+s, j+t)\]
- Masque haute fréquence : \(m(i,j) = f(i,j) - \bar{f}(i,j)\).
- Rehaussement USM : Pour chaque pixel interne :
\[g(i,j) = \text{clip}\left(\text{round}\left(f(i,j) + k \cdot m(i,j)\right)\right)\]
- Bord : \(g(i,j) = f(i,j)\) (copie directe).
- Sortie : Afficher la matrice rehaussée \(L \times C\).
3.12.10.2 📌 Contraintes computationnelles
- Arrondi : Appliquer
roundavant le clipping. - Saturation : \(\text{clip}(x) = \max(0, \min(255, x))\).
- Opérations en float : Calculer \(\bar{f}\) et \(m\) en virgule flottante avant d’arrondir le résultat final.
- \(k = 0\) : Pas de rehaussement — la sortie est identique à l’entrée (sauf pour les bords).
3.12.10.3 🧠 Fondement théorique
| Étape | Opération | Description |
|---|---|---|
| 1 | \(\bar{f} = f * \frac{1}{9}\mathbf{1}_{3\times3}\) | Lissage (basses fréquences) |
| 2 | \(m = f - \bar{f}\) | Masque (hautes fréquences) |
| 3 | \(g = \text{clip}(\text{round}(f + k \cdot m))\) | Rehaussement pondéré |
3.12.10.4 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
- Ligne 1 : Entier \(L\).
- Ligne 2 : Entier \(C\).
- Ligne 3 : Réel \(k\).
- Lignes suivantes : Éléments de la matrice originale.
Sortie :
- Matrice rehaussée \(L \times C\).
3.12.10.5 📌 Exemples
| Entrée | Sortie | Observation |
|---|---|---|
| 3 3 0.0 100 100 100 100 100 100 100 100 100 |
100 100 100 100 100 100 100 100 100 |
k=0 : pas de rehaussement |
| 3 3 1.0 50 50 50 50 200 50 50 50 50 |
50 50 50 50 255 50 50 50 50 |
k=1 : pixel central rehaussé et saturé |
✨ Simulateur EP03_10 : Unsharp Masking (USM)
g = f + k · m
Facteur de gain k :
k = 1.0
① Image originale f
Matrice 5×5 pixels
② Flouté f̄
Moyenne 3 × 3
③ Masque m
m = f − f̄ (hautes fréquences)
④ Résultat g = f + 1.0·m
Survolez pour inspecter
Légende :
Voisinage 3×3
Pixel central
Bord (copié)
Masque positif/négatif
Survolez un pixel interne du résultat pour tracer le pipeline complet.
%%writefile EP03_10.py
# Code PythonOverwriting EP03_10.py
TestSuite("EP03_10.py").run()✔️ EP03_10.cases existe déjà dans casos/
📋 5 cas chargé(s) depuis casos/EP03_10.cases
🔍 Test de Python : EP03_10.py
⚠️ EP03_10.py : fichier vide (moins de 3 lignes). Tests ignorés.