Plot der 2D-FFT eines Bildes
Ich versuche, die Handlung der 2D-FFT des Bildes:
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()
Aber ich bekomme TypeError: Image data can not convert to float
.
Wie plot der 2D-FFT von einem Bild?
Ich weiß, die Physik ... die FFT des Bildes ist Komplex, aber symmetrisch um den Ursprung. Was ist oft als ein Bild dargestellt ist die power-Spektrum: die Modul-Quadrat der komplexen Transformation. Ich weiß nicht, die
scipy
aber ich würde damit beginnen, indem der Suche nach "power spectrum" im index. NB halten Sie das transformieren-wenn Sie möchten, invertieren es später, mod-square/PS ist nicht umkehrbar.InformationsquelleAutor Basj | 2016-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Ergebnis einer fft ist im Allgemeinen aus komplexen zahlen. Das ist, warum Sie können nicht zeichnen Sie es auf diese Weise. Je nachdem, was Sie suchen, können Sie beginnen, mit Blick auf den absoluten Wert
abs(...)
... Sorry! Etwas anderes, das ist der Eingang : image2.jpg. Warum ist die der Ausgang plain blau ? Ich kann nichts sehen in der FFT-Ausgabe...Die Skala ist nicht gut da haben Sie ein paar starke-Komponenten (z.B. 0,0-DC-Komponente). Versuchen Sie arbeiten in logarithmischer Skala
plt.imshow(np.log10(abs(fft2)))
Gelöst mit
plt.imshow(20*np.log10(abs(fft2)))
... Dies ist nun mein Erster Schritt in der 2D-FFT (nach Jahren der Arbeit auf audio-1D-FFT + STFT)... 🙂 Eine Idee, wie ich das entfernen könnte, die horizontalen Linien der dieses Bild durch die Nullstellung bestimmten 2DFFT Ablagen und dann die inverse FFT?(Das ist mein erstes Ziel : entfernen Sie die horizontale oder fast horizontale Linien, die von einem Bild)
Dies ist schwierig. Nulling-fft-Komponenten funktionieren möglicherweise nicht wie erwartet... ich schlage vor, Sie versuchen auf computer-vision-Foren.
InformationsquelleAutor Aguy