rft_genericrft_genericRftGenericRftGeneric (Operator)

Name

rft_genericrft_genericRftGenericRftGeneric — Schnelle reelle Fouriertransformation.

Signatur

rft_generic(Image : ImageFFT : Direction, Norm, ResultType, Width : )

Herror rft_generic(const Hobject Image, Hobject* ImageFFT, const char* Direction, const char* Norm, const char* ResultType, const Hlong Width)

Herror T_rft_generic(const Hobject Image, Hobject* ImageFFT, const Htuple Direction, const Htuple Norm, const Htuple ResultType, const Htuple Width)

void RftGeneric(const HObject& Image, HObject* ImageFFT, const HTuple& Direction, const HTuple& Norm, const HTuple& ResultType, const HTuple& Width)

HImage HImage::RftGeneric(const HString& Direction, const HString& Norm, const HString& ResultType, Hlong Width) const

HImage HImage::RftGeneric(const char* Direction, const char* Norm, const char* ResultType, Hlong Width) const

HImage HImage::RftGeneric(const wchar_t* Direction, const wchar_t* Norm, const wchar_t* ResultType, Hlong Width) const   (Nur Windows)

static void HOperatorSet.RftGeneric(HObject image, out HObject imageFFT, HTuple direction, HTuple norm, HTuple resultType, HTuple width)

HImage HImage.RftGeneric(string direction, string norm, string resultType, int width)

Beschreibung

rft_genericrft_genericRftGenericRftGenericRftGeneric berechnet die schnelle Fouriertransformation des Eingabebildes ImageImageImageImageimage. Dabei wird im Gegensatz zu fft_genericfft_genericFftGenericFftGenericFftGeneric, fft_imagefft_imageFftImageFftImageFftImage und fft_image_invfft_image_invFftImageInvFftImageInvFftImageInv ausgenutzt, dass das Eingabebild der Hintransformation ein reellwertiges Bild (d.h. kein komplexes Bild) ist. In diesem Fall besitzt das komplexe Ausgabebild eine Redundanz. Die Werte in der rechten Hälfte des komplexen Bildes sind die komplexen Konjugierten der Werte an der entsprechenden Position in der linken Hälfte des Bildes. Entsprechend kann Laufzeit und Speicher eingespart werden, indem nur die linke Hälfte des komplexen Bildes berechnet und ausgegeben wird.

Der Parameter ResultTypeResultTypeResultTypeResultTyperesultType 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 ResultTypeResultTypeResultTypeResultTyperesultType auf 'complex'"complex""complex""complex""complex" gesetzt werden.

Der Parameter DirectionDirectionDirectionDirectiondirection legt fest, ob in den Frequenzraum oder aus dem Frequenzraum zurück transformiert werden soll. Für DirectionDirectionDirectionDirectiondirection = 'to_freq'"to_freq""to_freq""to_freq""to_freq" muss das Eingabebild ein reellwertiger Typ sein, d.h. es darf kein komplexes Bild als Eingabe verwendet werden. Es werden alle Bildtypen unterstützt, die sich in ein reelles Bild transformieren lassen. In diesem Fall ist die Ausgabe ein komplexes Bild der Dimension (w/2+1)*h, wobei w und h die Breite und Höhe des Eingabebildes sind. In diesem Modus wird als Exponent der Transformation -1 verwendet (siehe fft_genericfft_genericFftGenericFftGenericFftGeneric). Für DirectionDirectionDirectionDirectiondirection = 'from_freq'"from_freq""from_freq""from_freq""from_freq" muss das Eingabebild ein komplexes Bild sein. In diesem Fall kann nicht aus der Größe des Eingabebildes entschieden werden, welche Größe das Ausgabebild besitzen soll. Hierzu muss WidthWidthWidthWidthwidth korrekt gesetzt werden, d.h. auf 2*w-2 oder auf 2*w-1, wobei w die Breite des komplexen Eingabebildes ist. In diesem Modus wird als Exponent der Transformation 1 verwendet.

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". 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 w*h ergeben.

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) objectHImageHImageHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real / complex)

Eingabebild im Ortsraum.

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

Fouriertransformiertes Bild.

DirectionDirectionDirectionDirectiondirection (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Hin- oder Rücktransformation.

Defaultwert: '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"

NormNormNormNormnorm (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Normierung des Ergebnisbildes.

Defaultwert: 'sqrt' "sqrt" "sqrt" "sqrt" "sqrt"

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

ResultTypeResultTypeResultTypeResultTyperesultType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Bildtyp des Ausgabebildes.

Defaultwert: '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"

WidthWidthWidthWidthwidth (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite des Bildes, für die die Laufzeit optimiert werden soll.

Defaultwert: 512

Wertevorschläge: 128, 160, 192, 256, 320, 384, 512, 640, 768, 1024, 2048

Ergebnis

Sind alle Parameterwerte korrekt, dann liefert rft_genericrft_genericRftGenericRftGenericRftGeneric 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>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

optimize_rft_speedoptimize_rft_speedOptimizeRftSpeedOptimizeRftSpeedOptimizeRftSpeed, read_fft_optimization_dataread_fft_optimization_dataReadFftOptimizationDataReadFftOptimizationDataReadFftOptimizationData

Nachfolger

convol_fftconvol_fftConvolFftConvolFftConvolFft, correlation_fftcorrelation_fftCorrelationFftCorrelationFftCorrelationFft, phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftPhaseCorrelationFft, convert_image_typeconvert_image_typeConvertImageTypeConvertImageTypeConvertImageType, power_bytepower_bytePowerBytePowerBytePowerByte, power_realpower_realPowerRealPowerRealPowerReal, power_lnpower_lnPowerLnPowerLnPowerLn, phase_degphase_degPhaseDegPhaseDegPhaseDeg, phase_radphase_radPhaseRadPhaseRadPhaseRad

Alternativen

fft_genericfft_genericFftGenericFftGenericFftGeneric, fft_imagefft_imageFftImageFftImageFftImage, fft_image_invfft_image_invFftImageInvFftImageInvFftImageInv

Modul

Foundation