Le tracé de la FFT 2D d'une image
Je suis en train de tracer la FFT 2D d'une image:
from scipy import fftpack, ndimage
import matplotlib.pyplot as plt
image = ndimage.imread('image2.jpg', flatten=True) # flatten=True gives a greyscale image
fft2 = fftpack.fft2(image)
plt.imshow(fft2)
plt.show()
Mais je reçois TypeError: Image data can not convert to float
.
Comment tracer la FFT 2D d'une image?
- Je sais que le physique ... la FFT d'une image est complexe, mais symétriques par rapport à l'origine. Ce qui est souvent affichée comme une image, c'est le spectre de puissance: le module carré de la complexité de la transformation. Je ne sais pas le
scipy
mais j'aimerais commencer par la recherche pour "spectre de puissance" dans l'index. NB garder le transformer si vous voulez inverser plus tard, mod-carré/PS n'est pas invertable.
Vous devez vous connecter pour publier un commentaire.
Le résultat de la fft est généralement composé de nombres complexes. C'est pourquoi vous ne pouvez pas l'intrigue de cette façon. Selon ce que vous cherchez, vous pouvez commencer par regarder la valeur absolue
abs(...)
... Désolé! Quelque chose d'autre, c'est l'entrée : image2.jpg. Pourquoi est sortie la plaine de bleu ? Je ne peux pas voir quoi que ce soit dans la FFT de sortie...plt.imshow(np.log10(abs(fft2)))
plt.imshow(20*np.log10(abs(fft2)))
... C'est maintenant ma première étape en 2D FFT (après des années de travail sur l'audio FFT 1D + TFCT)... 🙂 une idée de comment je pourrais supprimer les lignes horizontales de cette image avec la remise à zéro de certaines 2DFFT bacs et puis FFT inverse?