Filtres Passe-Bas et Passe-Haut
L'un des principaux avantages de la transformation de Fourier est qu'elle permet d'effectuer des filtres passe-haut et passe-bas.
Après avoir appliqué la transformation de Fourier :
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
il est nécessaire de créer un masque de filtrage
Filtrage Passe-bas (Flou)
Un filtre passe-bas supprime les composantes haute fréquence, ce qui donne une image floue. Masque passe-bas :
rows, cols = image.shape 
crow, ccol = rows // 2, cols // 2 
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
rows, cols = image.shape: récupère le nombre de lignes et de colonnes de l'image en niveaux de gris ;crow, ccol = rows // 2, cols // 2: calcule les coordonnées du centre de l'image ;mask = np.zeros((rows, cols), np.uint8): crée un masque de zéros ayant les mêmes dimensions que l'image ;mask[crow-30:crow+30, ccol-30:ccol+30] = 1: définit une région carrée de 60×60 au centre du masque à 1, ce qui permet uniquement le passage des composantes basses fréquences (près du centre du domaine fréquentiel) tout en filtrant les détails haute fréquence.
Filtrage passe-haut (Détection des contours)
Un filtre passe-haut supprime les composantes basses fréquences et met en valeur les contours. Masque passe-haut :
highpass_mask = np.ones((rows, cols), np.uint8)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
highpass_mask = np.ones((rows, cols), np.uint8): initialise un masque de uns avec les mêmes dimensions que l'image, ce qui signifie que toutes les fréquences sont initialement autorisées à passer ;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: définit un petit carré 10×10 au centre (région des basses fréquences) à zéro, bloquant ainsi effectivement ces fréquences.
Application du filtre
Après avoir créé le masque, il est nécessaire d'appliquer un filtre et de transformer la photo dans le domaine spatial :
dft_filtered = dft_shift * mask
dft_inverse = np.fft.ifftshift(dft_filtered) # Inverse shifting
image_filtered = np.fft.ifft2(dft_inverse) # Inverse transformation
image_filtered = np.abs(image_filtered) # Remove negative values
dft_filtered = dft_shift * mask: applique le masque du domaine fréquentiel (par exemple, passe-bas ou passe-haut) par multiplication élément par élément avec la DFT décalée de l'image ;dft_inverse = np.fft.ifftshift(dft_filtered): annule le décalage appliqué précédemment pour ramener les composantes fréquentielles à leurs positions d'origine ;image_filtered = np.fft.ifft2(dft_inverse): calcule la Transformée de Fourier Inverse afin de reconvertir les données fréquentielles filtrées dans le domaine spatial ;image_filtered = np.abs(image_filtered): prend la valeur absolue pour éliminer toute composante imaginaire résiduelle, produisant ainsi une image filtrée à valeurs réelles.
Swipe to start coding
Vous disposez d'une image de mouton dans la variable image et d'une image dans le domaine fréquentiel dans la variable dft_shift :
- Obtenez la forme de la matrice 
imageet stockez-la dans les variablesrowsetcols; - Calculez le point central et stockez-le dans 
crowetccol; - Définissez 
low_maskcomme un tableau de zéros de forme(rows, cols)et de typenp.uint8; - Sélectionnez la région centrale 20x20 de 
low_masket remplissez-la avec1. - Définissez 
high_maskcomme un tableau de uns de forme(rows, cols)et de typenp.uint8; - Sélectionnez la région centrale 20x20 de 
high_masket remplissez-la avec0; - Appliquez 
low_maskethigh_maskàdft_shiftet stockez les fréquences filtrées danslowpass_dft_filteredethighpass_dft_filteredrespectivement ; - Effectuez la transformation inverse pour 
lowpass_dft_filtered:- Effectuez le décalage inverse et stockez le résultat dans 
lowpass_dft_inverse; - Effectuez la transformation inverse et stockez l'image dans 
image_lowpass; - Supprimez les valeurs négatives de 
image_lowpass. 
 - Effectuez le décalage inverse et stockez le résultat dans 
 - Effectuez la transformation inverse pour 
highpass_dft_inverse:- Effectuez le décalage inverse et stockez le résultat dans 
lowpass_dft_inverse; - Effectuez la transformation inverse et stockez l'image dans 
image_highpass; - Supprimez les valeurs négatives de 
image_highpass. 
 - Effectuez le décalage inverse et stockez le résultat dans 
 
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain the difference between high-pass and low-pass filtering in more detail?
How do I choose the size of the mask for filtering?
What are some practical applications of these filters in image processing?
Awesome!
Completion rate improved to 3.45
Filtres Passe-Bas et Passe-Haut
Glissez pour afficher le menu
L'un des principaux avantages de la transformation de Fourier est qu'elle permet d'effectuer des filtres passe-haut et passe-bas.
Après avoir appliqué la transformation de Fourier :
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
il est nécessaire de créer un masque de filtrage
Filtrage Passe-bas (Flou)
Un filtre passe-bas supprime les composantes haute fréquence, ce qui donne une image floue. Masque passe-bas :
rows, cols = image.shape 
crow, ccol = rows // 2, cols // 2 
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
rows, cols = image.shape: récupère le nombre de lignes et de colonnes de l'image en niveaux de gris ;crow, ccol = rows // 2, cols // 2: calcule les coordonnées du centre de l'image ;mask = np.zeros((rows, cols), np.uint8): crée un masque de zéros ayant les mêmes dimensions que l'image ;mask[crow-30:crow+30, ccol-30:ccol+30] = 1: définit une région carrée de 60×60 au centre du masque à 1, ce qui permet uniquement le passage des composantes basses fréquences (près du centre du domaine fréquentiel) tout en filtrant les détails haute fréquence.
Filtrage passe-haut (Détection des contours)
Un filtre passe-haut supprime les composantes basses fréquences et met en valeur les contours. Masque passe-haut :
highpass_mask = np.ones((rows, cols), np.uint8)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
highpass_mask = np.ones((rows, cols), np.uint8): initialise un masque de uns avec les mêmes dimensions que l'image, ce qui signifie que toutes les fréquences sont initialement autorisées à passer ;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: définit un petit carré 10×10 au centre (région des basses fréquences) à zéro, bloquant ainsi effectivement ces fréquences.
Application du filtre
Après avoir créé le masque, il est nécessaire d'appliquer un filtre et de transformer la photo dans le domaine spatial :
dft_filtered = dft_shift * mask
dft_inverse = np.fft.ifftshift(dft_filtered) # Inverse shifting
image_filtered = np.fft.ifft2(dft_inverse) # Inverse transformation
image_filtered = np.abs(image_filtered) # Remove negative values
dft_filtered = dft_shift * mask: applique le masque du domaine fréquentiel (par exemple, passe-bas ou passe-haut) par multiplication élément par élément avec la DFT décalée de l'image ;dft_inverse = np.fft.ifftshift(dft_filtered): annule le décalage appliqué précédemment pour ramener les composantes fréquentielles à leurs positions d'origine ;image_filtered = np.fft.ifft2(dft_inverse): calcule la Transformée de Fourier Inverse afin de reconvertir les données fréquentielles filtrées dans le domaine spatial ;image_filtered = np.abs(image_filtered): prend la valeur absolue pour éliminer toute composante imaginaire résiduelle, produisant ainsi une image filtrée à valeurs réelles.
Swipe to start coding
Vous disposez d'une image de mouton dans la variable image et d'une image dans le domaine fréquentiel dans la variable dft_shift :
- Obtenez la forme de la matrice 
imageet stockez-la dans les variablesrowsetcols; - Calculez le point central et stockez-le dans 
crowetccol; - Définissez 
low_maskcomme un tableau de zéros de forme(rows, cols)et de typenp.uint8; - Sélectionnez la région centrale 20x20 de 
low_masket remplissez-la avec1. - Définissez 
high_maskcomme un tableau de uns de forme(rows, cols)et de typenp.uint8; - Sélectionnez la région centrale 20x20 de 
high_masket remplissez-la avec0; - Appliquez 
low_maskethigh_maskàdft_shiftet stockez les fréquences filtrées danslowpass_dft_filteredethighpass_dft_filteredrespectivement ; - Effectuez la transformation inverse pour 
lowpass_dft_filtered:- Effectuez le décalage inverse et stockez le résultat dans 
lowpass_dft_inverse; - Effectuez la transformation inverse et stockez l'image dans 
image_lowpass; - Supprimez les valeurs négatives de 
image_lowpass. 
 - Effectuez le décalage inverse et stockez le résultat dans 
 - Effectuez la transformation inverse pour 
highpass_dft_inverse:- Effectuez le décalage inverse et stockez le résultat dans 
lowpass_dft_inverse; - Effectuez la transformation inverse et stockez l'image dans 
image_highpass; - Supprimez les valeurs négatives de 
image_highpass. 
 - Effectuez le décalage inverse et stockez le résultat dans 
 
Solution
Merci pour vos commentaires !
single