Fonctions > Traitement d'image > Domaine de transformées > Exemple : Filtrage sur le domaine de la transformée de Fourier
  
Exemple : Filtrage sur le domaine de la transformée de Fourier
Utilisez les fonctions funconv, matconv, funcdeconv et matdeconv pour effectuer la convolution ou la déconvolution d'une image avec une fonction f ou un masque E, en multipliant les deux ensemble en fréquence spatiale (domaine de la transformée de Fourier). Le filtrage sur le domaine de fréquences peut entraîner diverses opérations de lissage, de détection de contour et de réduction périodique du bruit, suivant la fonction ou le masque choisi. Il est souvent mathématiquement plus efficace de filtrer dans le domaine de la transformée, ou plus facile de définir des filtres, qu'avec la convolution dans le domaine d'images.
Pour plus d'informations sur l'utilisation de cet exemple, voir A propos des exemples de traitement d'image.
funconv
Utilisez cette fonction pour filtrer une image M avec une fonction en fréquence spatiale. La fonction réelle f est utilisée pour construire un masque N de même taille que M. M subit une transformée de Fourier, puis est multipliée terme à terme par le masque.
Le masque est construit en passant des arguments à f, qui représentent la distance normalisée à partir du coin supérieur gauche de M. Ce processus continue vers le centre du masque, où le masque est copié en quatre parties symétriquement. Ce processus est utilisé car le coin supérieur gauche est CC (fréquence zéro).
1. Commencez à construire un masque en définissant la matrice d'image M.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
2. Déterminez le pixel représentant le centre de la matrice d'image.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
3. Créez de nouvelles variables de plage représentant les valeurs du coin supérieur gauche au centre de l'image.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
4. Utilisez les variables de plage définies ainsi qu'une fonction de masquage pour créer le quadrant supérieur gauche du masque.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
L'entrée (0, 0) est f(0) et l'entrée (r, c) est f(1).
Le masque est construit en passant des arguments (distance normalisée à partir du coin supérieur gauche de M) à f. Ce processus continue vers le centre du masque, où le masque est copié en quatre parties symétriquement. Ce processus est utilisé car le coin supérieur gauche est CC (fréquence zéro).
5. Construisez le reste de la matrice masque à l'aide de funconv.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Si la convolution augmente l'échelle de l'image, vous pouvez adapter l'échelle de la matrice de sortie à la plage [0, 255].
funcdeconv
Cette fonction de déconvolution prend une image du domaine de fréquences et une fonction du domaine de fréquences, et elle effectue leur déconvolution.
Le dernier argument e de funcdeconv est un petit terme qui est ajouté aux dénominateurs de toutes les expressions lors de l'exécution de la routine. En guise de point de départ, tapez une valeur égale à 0 pour e. Si un message de division par zéro apparaît, tapez une faible valeur pour e.
1. Appelez la fonction funcdeconv.
Cliquez pour copier cette expression
2. Evaluez DE pour afficher le résultat de funcdeconv et comparez avec la matrice d'origine.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
matconv
La fonction matconv effectue les mêmes multiplications et transformées de domaines de fréquences que funconv, mais elle accepte un masque en guise d'entrée au lieu d'une fonction. La taille du masque doit être identique à celle de l'image d'origine. Vous n'avez fourni que le quadrant supérieur gauche du masque.
1. Lisez dans un échantillon d'image.
Cliquez pour copier cette expression
2. Comptez le nombre de lignes et de colonnes dans la matrice d'image.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
3. Définissez les dimensions d'un masque.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
4. Définissez le masque C.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
* 
Vous pouvez essayer le filtre passe-haut suivant pour C :
Cliquez pour copier cette expression
5. Appliquez matconv à R et C.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
Utilisez matdeconv pour récupérer l'image d'origine. La déconvolution pouvant impliquer la division par des éléments d'intensité zéro, la valeur e est ajoutée au dénominateur de chaque division afin d'éviter ce problème.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
(matdeconv.bmp)
Vous pouvez également expérimenter d'autres fonctions de filtres, tout en gardant à l'esprit que le coin supérieur gauche du masque correspond aux basses fréquences et que le coin inférieur droit correspond aux hautes fréquences. Essayez différentes images.