2016-05-13 18 views
1

Ich habe FFT auf eine komplexe Funktion in DM. Und seltsamerweise befinden sich die erwarteten niedrigen Frequenzen an den Ecken (siehe angehängtes Bild). es machte die nachfolgende Verarbeitung sehr unbequem.Gibt es eine FFT-Shift-Funktion in DM-Scripting

Das erinnert mich ähnliche Ergebnisse, wenn es in Python mit numpy.fft.fft durchgeführt werden würde, jedoch in numpy (Python) gibt es eine fftshift-Funktion, um niedrige Frequenz in die Mitte zu verschieben.

Gibt es eine ähnliche Funktion in DM, die auf einem solchen FFT-Bild arbeitet, um die tiefen Frequenzen von der Ecke zur Mitte zu verschieben?

FFT of an complex function

+0

Die iFFT des obigen Bildes ist recht hübsch: c) Holografie bezogen? – BmyGuest

+0

FFT einer berechneten Fresnel-Beugungswelle. Bekam mich lange Zeit ... – w4m

Antwort

2

Ein Skript berechnete FFT hat es Frequenzen in der Mitte ist. (Beachten Sie, dass der Eingang des Betriebes ein komplexes Bild sein.)

image img := GetFrontImage() 
ConvertToComplex(img) 
ComplexImage fImg := FFT(img) 
fImg.ShowImage() 

Wenn Sie jedoch Ihre Frequenzen sehen dann „verschoben“ es sehr wahrscheinlich ist ein Zeichen-Fehler in Ihrem FFTs (oder, äquivalent, eine Mischung aus FFTs und iFFTs).

Aber Ihre eigentliche Frage zu beantworten, ja, es ist so ein Befehl, und es ist tatsächlich dokumentiert:

void ShiftCenter(BasicImage image)

enter image description here enter image description here

+0

Danke für deinen Hinweis (von gemischtem fft und ift). Ich habe versucht, Fresnel-Beugung mit FFT-Methode zu berechnen und durch ein Objekt zu propagieren, dann "focus" (FFT) es und dann "Bild" (IFFT) es. – w4m