KlassenKlassenKlassenKlassen | | | | Operatoren

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion (Operator)

Name

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion — Simulation einer geradlinigen Bewegungsverschlechterung.

Signatur

simulate_motion(Image : MovedImage : Blurring, Angle, Type : )

Herror simulate_motion(const Hobject Image, Hobject* MovedImage, double Blurring, const Hlong Angle, const Hlong Type)

Herror T_simulate_motion(const Hobject Image, Hobject* MovedImage, const Htuple Blurring, const Htuple Angle, const Htuple Type)

Herror simulate_motion(Hobject Image, Hobject* MovedImage, const HTuple& Blurring, const HTuple& Angle, const HTuple& Type)

HImage HImage::SimulateMotion(const HTuple& Blurring, const HTuple& Angle, const HTuple& Type) const

HImage HImageArray::SimulateMotion(const HTuple& Blurring, const HTuple& Angle, const HTuple& Type) const

void SimulateMotion(const HObject& Image, HObject* MovedImage, const HTuple& Blurring, const HTuple& Angle, const HTuple& Type)

HImage HImage::SimulateMotion(double Blurring, Hlong Angle, Hlong Type) const

void HOperatorSetX.SimulateMotion(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*MovedImage, [in] VARIANT Blurring, [in] VARIANT Angle, [in] VARIANT Type)

IHImageX* HImageX.SimulateMotion(
[in] double Blurring, [in] Hlong Angle, [in] Hlong Type)

static void HOperatorSet.SimulateMotion(HObject image, out HObject movedImage, HTuple blurring, HTuple angle, HTuple type)

HImage HImage.SimulateMotion(double blurring, int angle, int type)

Beschreibung

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion simuliert eine Bildbeeinträchtigung. Ihre Ursache liegt in einer relativen Bewegung zwischen dem aufzunehmenden Objekt und dem Aufnahmesystem während der Aufnahme. Die Bewegung erfolgte dabei entlang einer Linie. Ihre Richtung ist durch den Winkel zur x-Achse (gegen den Uhrzeigersinn) festgelegt. Dieser wird mit AngleAngleAngleAngleAngleangle im Gradmaß eingegeben. Die Simulation erfolgt durch eine Faltung vom Eingabebild mit einer Impulsantwort, die die jeweilige Bewegungsart beschreibt. simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion erzeugt die benötigte Impulsantwort und multipliziert ihre (diskrete) Fouriertransformierte mit der des Eingabebildes. Das in den Ortsraum zurücktransformierte Produkt stellt das bewegungsverschlechterte Bild dar. 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 einer Geraden in 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 eine entsprechend starke Bewegung in entgegengesetzter Richtung simuliert. 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.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Bild, das beeinträchtigt werden soll.

MovedImageMovedImageMovedImageMovedImageMovedImagemovedImage (output_object)  image objectHImageHImageHImageHImageXHobject * (real)

Bewegungsverschlechtertes Bild.

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)

Implsantwort-Prototyp bzw. Form der Bewegung.

Defaultwert: 3

Werteliste: 1, 2, 3, 4, 5

Ergebnis

Sind die Parameterwerte korrekt, dann liefert simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion den Wert 2 (H_MSG_TRUE). Bei einer leeren Eingabe wird mit einer entsprechenden Fehlermeldung abgebrochen.

Vorgänger

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion, gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion

Nachfolger

simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter, wiener_filter_niwiener_filter_niWienerFilterNiwiener_filter_niWienerFilterNiWienerFilterNi

Siehe auch

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion, simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusgen_psf_defocusGenPsfDefocusGenPsfDefocus

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