Estimation du bruit dans les images
Description
Les méthodes de débruitage d'images supposent généralement que le modèle de bruit est connu, paramétrique, de paramètres également connus. Ces hypothèses sont cependant rarement vérifiées dans la pratique lorsque l'on doit restaurer une image bruitée. Le but de ce projet est de faire une étude comparative de plusieurs méthodes récentes d'estimation du bruit dans les images, par exemple 1, 2.
Pour aller plus loin, on pourra utiliser une de ces méthodes pour estimer le bruit dans des images anciennes scannées et les restaurer grâce à la méthode récente NL-Bayes 3, considérée aujourd'hui comme l'état de l'art en débruitage d'images. Tous les algorithmes décrits dans ce sujet sont disponibles et implémentés sur le journal en ligne IPOL.
Aide
L'idée du projet est de coupler une méthode d'estimation du bruit et une méthode de débruitage. Pour cela, l'idée est de modifier très légèrement le NL-Bayes standard : pour chaque groupe de patchs similaires formé lors de la première étape, il faut évaluer une matrice de covariance du bruit pour ce groupe et remplacer simplement le σ2.Id de la formule (8) dans le pdf sur IPOL (http://www.ipol.im/pub/art/2013/16/) par cette nouvelle matrice estimée de covariance de bruit (je suppose que ce n'est pas très compliqué à modifier dans le code C fourni sur IPOL, prévenez-moi si ce n'est pas le cas). Si les patchs sont de taille n2, cette matrice de covariance est de taille n4.
Pour simplifier, on peut faire l'hypothèse que le bruit est indépendant d'un pixel à l'autre, et que seule sa variance change en fonction des pixels. La matrice de covariance du bruit pour un groupe de patchs est donc diagonale et on n'a que n2 coefficients diagonaux à estimer (chaque coefficient correspond à une position dans le patch). Si vous avez estimé le bruit au préalable sur l'image, vous devez avoir une courbe f qui estime la variance du bruit en fonction de l'intensité. Pour un groupe de patchs donné, vous pouvez par exemple estimer la diagonale cette matrice de covariance en appliquant juste la fonction f à un "patch moyen" de tous les patchs du groupe.
En résumé,
- On estime sur l'image une courbe f donnant la variance du bruit en fonction de l'intensité (par une des méthodes présente sur IPOL)
- Dans NL-Bayes, à chaque fois qu'on forme un groupe de patchs pour le débruiter, on calcule (par exemple) leur moyenne et on applique f à ce patch moyen pour avoir une matrice de covariance diagonale Cn, et on remplace le sigma2 Id par Cn dans la formule de reconstruction (8).
Je pense qu'avec juste ces modifications vous devez déjà obtenir des résultats intéressants. L'idée est de pouvoir appliquer NL-Bayes à l'aveugle sur des images dont on ne connaît pas vraiment le modèle de bruit. Vous pouvez par exemple tester sur l'image suivante : https://www.dropbox.com/s/4jw4058eesrnn8s/test_bruit.png?dl=0
Vous pouvez aussi faire des tests artificiels en prenant une image non bruitée à laquelle vous ajoutez un bruit dont la variance dépend de l'intensité, et comparer ce que donnerait le débruitage avec la vraie courbe de variance du bruit ou avec la courbe estimée.
Pour une explication beaucoup plus complète de la bonne manière d'agencer tout ça, vous pouvez regarder la thèse de Marc Lebrun, notamment les sections 9.2 et 9.3 : https://www.dropbox.com/s/ho1xqg566b0a7pc/Lebrun%282014a%29-From%20Theory%20to%20Practice%2C%20a%20Tour%20of%20Image%20Denoising.pdf?dl=0
Notes de bas de page:
1 Miguel Colom, and Antoni Buades, Analysis and Extension of the Percentile Method, Estimating a Noise Curve from a Single Image, Image Processing On Line, 3 (2013), pp. 332–359
2 Miguel Colom, Antoni Buades, Analysis and Extension of the PCA Method, Estimating a Noise Curve from a Single Image, 2014
3 A. Buades, M. Lebrun, and J.M. Morel. "A Non-local Bayesian Image Denoising Algorithm." SIAM Journal on Imaging Sciences, 2013.