Le projet vise à concevoir une application de traitement d'images capable de restaurer des images dégradées (bruitées) en utilisant le modèle de la Variation Totale (TV). L'application inclura une interface graphique (GUI), des outils de mesure de performance et des visualisations avancées en 3D.
L'implémentation reposera sur les équations fournies :
-
Modèle d'énergie :
$E(u) = \int_{\Omega} ||\nabla u|| dx dy + \frac{\lambda}{2} \int_{\Omega} ||u - f||^2 dx dy$ . -
Équation d'Euler-Lagrange :
$-\text{div}\left(\frac{\nabla u}{||\nabla u||}\right) + \lambda(u - f) = 0$ . -
Descente de gradient :
$u^{n+1} = u^n - dt \left( -\text{div}\left(\frac{\nabla u^n}{\sqrt{||\nabla u^n||^2 + \epsilon^2}}\right) + \lambda(u^n - f) \right)$ .- Note : $\epsilon$ est utilisé pour la stabilité numérique.
- Langage : Python 3.x
- Traitement d'image/Maths : NumPy, SciPy, OpenCV, Scikit-image (pour SSIM/PSNR).
- Interface Graphique : Tkinter ou PyQt/PySide.
- Visualisation : Matplotlib (2D et 3D Surface plots).
- Module de Traitement :
- Fonctions de génération de bruit (Gaussien, Poisson, Salt & Pepper).
- Algorithme de restauration TV (itération de la descente de gradient).
- Module de Métriques :
- Calcul du Peak Signal-to-Noise Ratio (PSNR).
- Calcul du Signal-to-Noise Ratio (SNR).
- Calcul de la Structural Similarity Index (SSIM).
- Mesure du temps d'exécution (module
time).
- Module de Visualisation :
- Affichage côte à côte (Original vs Bruité vs Restauré).
- Génération de la surface 3D des intensités de pixels.
- Implémentation du calcul du gradient et de la divergence.
- Codage de la boucle itérative de restauration TV.
- Tests unitaires sur des images de synthèse (rectangles, cercles).
- Implémentation des fonctions PSNR, SNR et SSIM.
- Mise en place du chronométrage des fonctions.
- Création de la fenêtre principale.
- Boutons de chargement et de sauvegarde d'images.
- Sliders (curseurs) pour les paramètres
$\lambda$ ,$dt$ , et le nombre d'itérations. - Zone d'affichage des résultats numériques (tableaux des scores).
- Intégration de la fenêtre de visualisation de surface 3D interactive.
Pour chaque test, un rapport sera généré incluant :
- Analyse visuelle : Observation de la préservation des contours (propriété clé de la TV) par rapport au lissage du bruit.
-
Analyse quantitative : Évolution des scores (PSNR/SSIM) en fonction de
$\lambda$ . - Temps d'exécution : Analyse de la complexité temporelle par rapport à la taille de l'image.
- Code source Python complet et documenté.
- Rapport final détaillant les tests effectués.
- Guide d'utilisation de l'interface.