Analyse de Fourier

Analyse de Fourier#

Cet exercice a pour but de manipuler des images dans le domaine de Fourier. Pour cela, un filtre passe-bas et un filtre passe-haut seront appliqués sur une image à niveau de gris.

  • Chargez et affichez l’image smiley.png.

  • Calculez et affichez la transformée de Fourier de l’image avec numpy.fft.fft2. Affichez la transformée de Fourier en ramenant, par convention, les basses fréquences au centre de l’image avec numpy.fft.fftshift. Le module et la phase de la transformée de Fourier s’obtiennent avec numpy.absolute and numpy.angle. Pour mieux observer le module, vous pouvez le représenter en échelle logarithmique (numpy.log).

  • Créez un filtre passe-bas idéal en définissant sa PSF \(h\) directement dans le domaine de Fourier.

    • Quelle taille doit avoir la transformée de Fourier de \(h\) ?

    • Créez la transformée de Fourier de sorte à ce qu’elle soit égale à 1 dans les basses fréquences et 0 ailleurs. Vous pouvez vous inspirer du code suivant :

      H = np.zeros((M,N))
      H[a:b,a:b] = 1
      

      M, N, a et b sont des paramètres à régler.

    • Affichez le module et la phase du filtre passe-bas ainsi créé.

    • Effectuez le filtrage dans le domaine de Fourier.

    • Que constatez-vous sur l’image filtrée ?

  • Même question avec un filtre passe-haut.

  • Appliquez les filtres utilisés dans l’exercice précédent sur l’image. Comme les PSF de ces filtrers sont définies dans le domaine spatial, alors il est plus direct de calculer des convolutions dans le domaine spatial plutôt que des multiplications dans le domaine de Fourier.