simulate_motionsimulate_motionSimulateMotionSimulateMotion (Operator)

Name

simulate_motionsimulate_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)

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

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_motionSimulateMotionSimulateMotionSimulateMotion 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 AngleAngleAngleAngleangle im Gradmaß eingegeben. Die Simulation erfolgt durch eine Faltung vom Eingabebild mit einer Impulsantwort, die die jeweilige Bewegungsart beschreibt. simulate_motionsimulate_motionSimulateMotionSimulateMotionSimulateMotion 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 TypeTypeTypeTypetype. 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 BlurringBlurringBlurringBlurringblurring 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 BlurringBlurringBlurringBlurringblurring kleiner als null angegeben ist, so wird eine entsprechend starke Bewegung in entgegengesetzter Richtung simuliert. Falls AngleAngleAngleAngleangle kleiner als null eingegeben wird, so wird der Winkel im Uhrzeigersinn interpretiert. Falls AngleAngleAngleAngleangle 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.

Ausführungsinformationen

Parameter

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

Bild, das beeinträchtigt werden soll.

MovedImageMovedImageMovedImageMovedImagemovedImage (output_object)  image objectHImageHImageHobject * (real)

Bewegungsverschlechtertes Bild.

BlurringBlurringBlurringBlurringblurring (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Stärke der Bewegungsverschlechterung.

Defaultwert: 20.0

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

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

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

Defaultwert: 0

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

TypeTypeTypeTypetype (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (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_motionSimulateMotionSimulateMotionSimulateMotion den Wert 2 (H_MSG_TRUE). Bei einer leeren Eingabe wird mit einer entsprechenden Fehlermeldung abgebrochen.

Vorgänger

gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotion, gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotion

Nachfolger

simulate_defocussimulate_defocusSimulateDefocusSimulateDefocusSimulateDefocus, wiener_filterwiener_filterWienerFilterWienerFilterWienerFilter, wiener_filter_niwiener_filter_niWienerFilterNiWienerFilterNiWienerFilterNi

Siehe auch

gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotion, simulate_defocussimulate_defocusSimulateDefocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusGenPsfDefocusGenPsfDefocus

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