Fonctions > Traitement d'image > Convolution et filtres > Filtrage de Wiener
  
Filtrage de Wiener
wiener2d(M, win_h, win_w): effectue un filtrage adaptatif 2D de Wiener sur M en utilisant une fenêtre locale de win_w pixels de large sur win_h pixels de hauteur.
Le filtrage de Wiener était l'une des premières méthodes développées pour réduire le bruit aléatoire supplémentaire dans les images. Il est basé sur l'hypothèse que le bruit supplémentaire est un processus aléatoire stationnaire, indépendant de l'emplacement des pixels ; l'algorithme réduit l'erreur carrée entre les images d'origine et reconstruites. Le filtrage de Wiener est un filtre passe-bas. Cependant, au lieu d'avoir une fréquence de coupure unique, ce filtre à espace variable est conçu pour utiliser une coupure faible dans les zones peu détaillées et une coupure élevée afin de conserver les détails des zones présentant des arêtes ou d'autres caractéristiques à forte variance. La taille de la fenêtre détermine la coupure globale de fréquence : les fenêtres plus larges correspondent à des fréquences de coupure plus faibles, et donc à davantage de réduction du flou et du bruit.
Il existe plusieurs implémentations possibles du filtrage de Wiener. Celle utilisée dans cette fonction PTC Mathcad est le filtrage de Wiener adaptatif 2D pixel par pixel proposé par Lee en 1980 (voir l'ouvrage "Two-Dimensional Signal and Image Processing", de Jae S. Lim, pages 536-40), où le filtre à espace variable est utilisé et le bruit adaptatif est considéré comme blanc avec une moyenne de zéro.
Dans cet algorithme, un pixel y dans l'image filtrée est dérivé d'un pixel x dans l'image d'entrée parasitée grâce à la transformation suivante :
μx et vx représentent la moyenne et la variance de x dans le voisinage du pixel (la taille du voisinage est fournie par les arguments win_h et win_w de la fonction) et vn correspond à la variance du bruit supplémentaire, estimée à partir de l'image d'entrée. Chaque pixel dans la sortie correspond à la somme de la moyenne locale issue du voisinage du pixel d'entrée et du terme de contraste local (x - μx) qui est mis à l'échelle de façon à ce que, dans les zones riches en détails, où la variance du bruit (vn) est plus petite que la variance de l'image (vx), le facteur de mise à l'échelle est très proche de 1 et le pixel de sortie y est très proche du pixel d'entrée x avec peu de filtrage. Cependant, dans les zones peu détaillées, où la variance de l'image est plus faible, le pixel de sortie a tendance à être plus semblable à la moyenne locale (autrement, il est filtré en passe-bas).
Les limites de l'image sont traitées comme des extensions avec des valeurs d'échelle de gris de zéro, qui peuvent rendre invalides les pixels de sortie situés près des limites de l'image (dans la mesure de la taille de la fenêtre du voisinage). De même, la fenêtre du voisinage ne doit pas être plus grande que l'image d'entrée.
Arguments
M est une matrice d'image.
win_h, win_w sont des entiers.