fft_genericfft_genericFftGenericFftGenericfft_generic (Operator)

Name

fft_genericfft_genericFftGenericFftGenericfft_generic — Schnelle Fouriertransformation.

Signatur

fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )

Herror fft_generic(const Hobject Image, Hobject* ImageFFT, const char* Direction, const Hlong Exponent, const char* Norm, const char* Mode, const char* ResultType)

Herror T_fft_generic(const Hobject Image, Hobject* ImageFFT, const Htuple Direction, const Htuple Exponent, const Htuple Norm, const Htuple Mode, const Htuple ResultType)

void FftGeneric(const HObject& Image, HObject* ImageFFT, const HTuple& Direction, const HTuple& Exponent, const HTuple& Norm, const HTuple& Mode, const HTuple& ResultType)

HImage HImage::FftGeneric(const HString& Direction, Hlong Exponent, const HString& Norm, const HString& Mode, const HString& ResultType) const

HImage HImage::FftGeneric(const char* Direction, Hlong Exponent, const char* Norm, const char* Mode, const char* ResultType) const

HImage HImage::FftGeneric(const wchar_t* Direction, Hlong Exponent, const wchar_t* Norm, const wchar_t* Mode, const wchar_t* ResultType) const   ( Nur Windows)

static void HOperatorSet.FftGeneric(HObject image, out HObject imageFFT, HTuple direction, HTuple exponent, HTuple norm, HTuple mode, HTuple resultType)

HImage HImage.FftGeneric(string direction, int exponent, string norm, string mode, string resultType)

def fft_generic(image: HObject, direction: str, exponent: int, norm: str, mode: str, result_type: str) -> HObject

Beschreibung

fft_genericfft_genericFftGenericFftGenericfft_generic 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_genericFftGenericFftGenericfft_generic 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)".

Der Parameter ResultTypeResultTypeResultTyperesultTyperesult_type erlaubt es, bei der Rücktransformation (DirectionDirectionDirectiondirectiondirection = 'from_freq'"from_freq""from_freq""from_freq""from_freq") den Ergebnisbildtyp festzulegen. Bei der Hintransformation (DirectionDirectionDirectiondirectiondirection = 'to_freq'"to_freq""to_freq""to_freq""to_freq") muss ResultTypeResultTypeResultTyperesultTyperesult_type auf 'complex'"complex""complex""complex""complex" gesetzt werden.

Achtung

Die Berechnung erfolgt immer für das gesamte Bild, d.h., der Definitionsbereich des Eingabebildes wird ignoriert.

Ausführungsinformationen

Parameter

ImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real / complex)

Eingabebild im Ortsraum.

ImageFFTImageFFTImageFFTimageFFTimage_fft (output_object)  image(-array) objectHImageHObjectHObjectHobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real / complex)

Fouriertransformiertes Bild.

DirectionDirectionDirectiondirectiondirection (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Hin- oder Rücktransformation.

Default: 'to_freq' "to_freq" "to_freq" "to_freq" "to_freq"

Werteliste: 'from_freq'"from_freq""from_freq""from_freq""from_freq", 'to_freq'"to_freq""to_freq""to_freq""to_freq"

ExponentExponentExponentexponentexponent (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Vorzeichen des Exponenten.

Default: -1

Werteliste: -1, 1

NormNormNormnormnorm (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Normierung des Ergebnisbildes.

Default: 'sqrt' "sqrt" "sqrt" "sqrt" "sqrt"

Werteliste: 'n'"n""n""n""n", 'none'"none""none""none""none", 'sqrt'"sqrt""sqrt""sqrt""sqrt"

ModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Position der Nullfrequenz im Frequenzraum.

Default: 'dc_center' "dc_center" "dc_center" "dc_center" "dc_center"

Werteliste: 'dc_center'"dc_center""dc_center""dc_center""dc_center", 'dc_edge'"dc_edge""dc_edge""dc_edge""dc_edge"

ResultTypeResultTypeResultTyperesultTyperesult_type (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Bildtyp des Ausgabebildes.

Default: 'complex' "complex" "complex" "complex" "complex"

Werteliste: 'byte'"byte""byte""byte""byte", 'complex'"complex""complex""complex""complex", 'cyclic'"cyclic""cyclic""cyclic""cyclic", 'direction'"direction""direction""direction""direction", 'int1'"int1""int1""int1""int1", 'int2'"int2""int2""int2""int2", 'int4'"int4""int4""int4""int4", 'real'"real""real""real""real", 'uint2'"uint2""uint2""uint2""uint2"

Beispiel (C)

/* simulation of fft_image */
void my_fft(Hobject In, Hobject *Out)
{
  fft_generic(In,Out,"to_freq",-1,"sqrt","dc_center","complex");
}

/* simulation of fft_image_inv */
void my_fft_image_inv(Hobject In, Hobject *Out)
{
  fft_generic(In,Out,"from_freq",1,"sqrt","dc_center","byte");
}

Ergebnis

Sind alle Parameterwerte korrekt, dann liefert fft_genericfft_genericFftGenericFftGenericfft_generic den Wert 2 ( H_MSG_TRUE) . Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

optimize_fft_speedoptimize_fft_speedOptimizeFftSpeedOptimizeFftSpeedoptimize_fft_speed, read_fft_optimization_dataread_fft_optimization_dataReadFftOptimizationDataReadFftOptimizationDataread_fft_optimization_data

Nachfolger

convol_fftconvol_fftConvolFftConvolFftconvol_fft, correlation_fftcorrelation_fftCorrelationFftCorrelationFftcorrelation_fft, phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftphase_correlation_fft, convol_gaborconvol_gaborConvolGaborConvolGaborconvol_gabor, convert_image_typeconvert_image_typeConvertImageTypeConvertImageTypeconvert_image_type, power_bytepower_bytePowerBytePowerBytepower_byte, power_realpower_realPowerRealPowerRealpower_real, power_lnpower_lnPowerLnPowerLnpower_ln, phase_degphase_degPhaseDegPhaseDegphase_deg, phase_radphase_radPhaseRadPhaseRadphase_rad, energy_gaborenergy_gaborEnergyGaborEnergyGaborenergy_gabor

Alternativen

fft_imagefft_imageFftImageFftImagefft_image, fft_image_invfft_image_invFftImageInvFftImageInvfft_image_inv, rft_genericrft_genericRftGenericRftGenericrft_generic

Modul

Foundation