KlassenKlassenKlassenKlassen | | | | Operatoren

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion (Operator)

Name

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion — Erzeugung der Impulsantwort einer geradlinigen Bewegungsverschlechterung.

Signatur

gen_psf_motion( : Psf : PSFwidth, PSFheight, Blurring, Angle, Type : )

Herror gen_psf_motion(Hobject* Psf, const Hlong PSFwidth, const Hlong PSFheight, double Blurring, const Hlong Angle, const Hlong Type)

Herror T_gen_psf_motion(Hobject* Psf, const Htuple PSFwidth, const Htuple PSFheight, const Htuple Blurring, const Htuple Angle, const Htuple Type)

Herror gen_psf_motion(Hobject* Psf, const HTuple& PSFwidth, const HTuple& PSFheight, const HTuple& Blurring, const HTuple& Angle, const HTuple& Type)

HImage HImage::GenPsfMotion(const HTuple& PSFwidth, const HTuple& PSFheight, const HTuple& Blurring, const HTuple& Angle, const HTuple& Type)

void GenPsfMotion(HObject* Psf, const HTuple& PSFwidth, const HTuple& PSFheight, const HTuple& Blurring, const HTuple& Angle, const HTuple& Type)

void HImage::GenPsfMotion(Hlong PSFwidth, Hlong PSFheight, double Blurring, Hlong Angle, Hlong Type)

void HOperatorSetX.GenPsfMotion(
[out] IHUntypedObjectX*Psf, [in] VARIANT PSFwidth, [in] VARIANT PSFheight, [in] VARIANT Blurring, [in] VARIANT Angle, [in] VARIANT Type)

void HImageX.GenPsfMotion(
[in] Hlong PSFwidth, [in] Hlong PSFheight, [in] double Blurring, [in] Hlong Angle, [in] Hlong Type)

static void HOperatorSet.GenPsfMotion(out HObject psf, HTuple PSFwidth, HTuple PSFheight, HTuple blurring, HTuple angle, HTuple type)

void HImage.GenPsfMotion(int PSFwidth, int PSFheight, double blurring, int angle, int type)

Beschreibung

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion erzeugt die Impulsantwort (im Ortsraum) einer geradlinigen Bewegungsverschlechterung als Bildobjekt vom Bildtyp 'real'. Seine Breite bzw. Höhe lässt sich durch PSFwidthPSFwidthPSFwidthPSFwidthPSFwidthPSFwidth und PSFheightPSFheightPSFheightPSFheightPSFheightPSFheight angeben. Die beschriebene Bewegung erfolgt entlang einer Linie. Ihre Richtung ist durch den Winkel zur x-Achse (gegen den Uhrzeigersinn) festgelegt. Dieser wird mit AngleAngleAngleAngleAngleangle im Gradmaß eingegeben. Zur Beschreibung von unterschiedlichen Bewegungsformen, stehen fünf Prototypen für die Impulsantwort zur Verfügung. Welcher Prototyp Verwendung findet, regelt TypeTypeTypeTypeTypetype. Folgende Werte sind möglich:

  1. Umgekehrte Rampe (beschreibt in etwa eine Beschleunigung)

  2. Umgekehrtes Trapezoid (beschreibt in etwa starke Beschleunigung)

  3. Rechtecksfunktion (beschreibt (genau) konstante Geschwindigkeit)

  4. Normales Trapezoid (beschreibt in etwa starkes Abbremsen)

  5. Normale Rampe (beschreibt in etwa Abbremsen)

(Für alle anderen Werte wird automatisch die Rechtecksfunktion verwendet.) Die Bewegungsverschlechterung betrifft auf alle Fälle das gesamte eingegebene Bild. Ihr Ausmaß ist durch BlurringBlurringBlurringBlurringBlurringblurring festgelegt. Dieser Parameter beschreibt, wieviele Bildpunkte, die auf der Geraden der Bewegungsrichtung hintereinander liegen, durch die Bewegungsverschlechterung betroffen sind. Die Anzahl der betroffenen Punkte wird durch die Bewegungsgeschwindigkeit, -beschleunigung und -zeitdauer bestimmt. Falls BlurringBlurringBlurringBlurringBlurringblurring kleiner als null angegeben ist, so wird die Impulsantwort einer entsprechend starken Bewegung in entgegengesetzter Richtung erzeugt. Falls AngleAngleAngleAngleAngleangle kleiner als null eingegeben wird, so wird der Winkel im Uhrzeigersinn interpretiert. Falls AngleAngleAngleAngleAngleangle größer als 360 bzw. kleiner als -360 angegeben ist, so wird er modulo(360) in das Intervall [0..360] bzw. [-360..0] zurückgerechnet. Das erzeugte float-Bild enthält die gewünschte Impulsantwort im Ortsraum, wobei ihre Darstellung voraussetzt, dass sich der Nullpunkt in der Bildecke („links oben“) befindet. Das bedeutet folgende Einteilung der insgesamt NxM-großen Bildmatrix in vier rechteckige Regionen:

Aufgrund dieser Darstellungsform ist es möglich, die erzeugte Impulsantwort direkt als Eingabe der Routine wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter zu verwenden, um ein bewegungsverschlechtertes Bild mittels Wiener-Filterung zu restaurieren.

Parallelisierung

Parameter

PsfPsfPsfPsfPsfpsf (output_object)  image objectHImageHImageHImageHImageXHobject * (real)

Impulsantwort einer Bewegungsverschlechterung.

PSFwidthPSFwidthPSFwidthPSFwidthPSFwidthPSFwidth (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite der Impulsantwort-Bildmatrix.

Defaultwert: 256

Wertevorschläge: 128, 256, 512, 1024

Typischer Wertebereich: 1 ≤ PSFwidth PSFwidth PSFwidth PSFwidth PSFwidth PSFwidth

PSFheightPSFheightPSFheightPSFheightPSFheightPSFheight (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe der Impulsantwort-Bildmatrix.

Defaultwert: 256

Wertevorschläge: 128, 256, 512, 1024

Typischer Wertebereich: 1 ≤ PSFheight PSFheight PSFheight PSFheight PSFheight PSFheight

BlurringBlurringBlurringBlurringBlurringblurring (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Stärke der Bewegungsverschlechterung.

Defaultwert: 20.0

Wertevorschläge: 5.0, 10.0, 20.0, 30.0, 40.0

AngleAngleAngleAngleAngleangle (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Winkel zwischen der Bewegungsrichtung und der x-Achse (gegen den Uhrzeigersinn).

Defaultwert: 0

Wertevorschläge: 0, 45, 90, 180, 270

TypeTypeTypeTypeTypetype (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Impulsantwort-Prototyp bzw. Form der Bewegung

Defaultwert: 3

Werteliste: 1, 2, 3, 4, 5

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion den Wert 2 (H_MSG_TRUE).

Vorgänger

simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusgen_psf_defocusGenPsfDefocusGenPsfDefocus

Nachfolger

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion, wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter, wiener_filter_niwiener_filter_niWienerFilterNiwiener_filter_niWienerFilterNiWienerFilterNi

Siehe auch

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion, simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusgen_psf_defocusGenPsfDefocusGenPsfDefocus, wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter, wiener_filter_niwiener_filter_niWienerFilterNiwiener_filter_niWienerFilterNiWienerFilterNi

Literatur

Anil K. Jain:Fundamentals of Digital Image Processing, Prentice-Hall International Inc., Englewood Cliffs, New Jersey, 1989
M. Lückenhaus:„Grundlagen des Wiener-Filters und seine Anwendung in der Bildanalyse“; Diplomarbeit; Technische Universität München, Institut für Informatik; Lehrstuhl Prof. Radig; 1995.
Kha-Chye Tan, Hock Lim, B. T. G. Tan:„Restoration of Real-World Motion-Blurred Images“;S. 291-299 in: CVGIP Graphical Models and Image Processing, Vol. 53, No. 3, May 1991

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren