fft_genericfft_genericFftGenericFftGenericFftGeneric berechnet die schnelle Fouriertransformation des
Eingabebildes ImageImageImageImageimage. Da in der Literatur mehrere
Definitionen der Hin- und Rücktransformation der
Fouriertransformation existieren, erlaubt diese Prozedur dem
Benutzer die Auswahl der für seine Bedürfnisse geeigneten Version.
Die allgemeine Version einer Fouriertransformation sieht wie folgt
aus:
In der Literatur herrscht keine Einigkeit, ob das Vorzeichen
s im Exponenten für die Hintransformation mit 1 oder -1 zu
besetzen ist. Ebenso wenig Klarheit herrscht über den
Normierungsfaktor c. Dieser wird manchmal für die
Hintransformation mit 1 angegeben, manchmal mit M*N,
manchmal wird er auch (für die unitäre FFT) zu
gesetzt. Insbesondere in der
Bildverarbeitung wird außerdem manchmal der konstante Term der FFT
(im englischen DC-Term genannt) in die Bildmitte verschoben.
fft_genericfft_genericFftGenericFftGenericFftGeneric erlaubt es, diese Auswahlmöglichkeiten
individuell anzupassen. Mit DirectionDirectionDirectionDirectiondirection kann die logische
Richtung der FFT bestimmt werden. (Dieser Parameter ist nicht
überflüssig; Er dient dazu, zu unterscheiden, wie das Bild
verschoben werden muss, falls der DC-Term in der Mitte des Bildes
liegen soll.) Mögliche Werte sind 'to_freq'"to_freq""to_freq""to_freq""to_freq" und
'from_freq'"from_freq""from_freq""from_freq""from_freq". Mit dem Parameter ExponentExponentExponentExponentexponent kann der
Exponent der Transformation festgelegt werden. Er kann die Werte 1
und -1 annehmen. Mit NormNormNormNormnorm kann die gewünschte Normierung
angegeben werden. Zulässige Werte sind 'none'"none""none""none""none",
'sqrt'"sqrt""sqrt""sqrt""sqrt" und 'n'"n""n""n""n". Mit ModeModeModeModemode kann angegeben
werden, wo der DC-Term der FFT liegen soll. Dabei kann zwischen
'dc_center'"dc_center""dc_center""dc_center""dc_center" und 'dc_edge'"dc_edge""dc_edge""dc_edge""dc_edge" gewählt werden.
In jedem Fall ist auf die konsistente Verwendung der Parameter zu
achten. D.h., die Normierungsfaktoren bei der Hin- und
Rücktransformation müssen aufmultipliziert M*N ergeben.
Bei der Rücktransformation ist ein anderes Vorzeichen für den
Exponenten zu wählen als bei der Hintransformation. ModeModeModeModemode
muss für beide Transformationen gleich gewählt werden.
Eine sinnvolle Kombination ist z.B.
'(to_freq,-1,n,dc_edge)'"(to_freq,-1,n,dc_edge)""(to_freq,-1,n,dc_edge)""(to_freq,-1,n,dc_edge)""(to_freq,-1,n,dc_edge)" für die Hintransformation und
'(from_freq,1,none,dc_edge)'"(from_freq,1,none,dc_edge)""(from_freq,1,none,dc_edge)""(from_freq,1,none,dc_edge)""(from_freq,1,none,dc_edge)" für die
Rücktransformation. In diesem Fall kann die FFT als Interpolation
mit trigonometrischen Basisfunktionen interpretiert werden. Eine
andere mögliche Kombination ist
'(to_freq,-1,sqrt,dc_center)'"(to_freq,-1,sqrt,dc_center)""(to_freq,-1,sqrt,dc_center)""(to_freq,-1,sqrt,dc_center)""(to_freq,-1,sqrt,dc_center)" und
'(from_freq,1,sqrt,dc_center)'"(from_freq,1,sqrt,dc_center)""(from_freq,1,sqrt,dc_center)""(from_freq,1,sqrt,dc_center)""(from_freq,1,sqrt,dc_center)".