simulate_motionsimulate_motionSimulateMotionSimulateMotionsimulate_motion (Operator)

Name

simulate_motionsimulate_motionSimulateMotionSimulateMotionsimulate_motion — 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)

def simulate_motion(image: HObject, blurring: float, angle: int, type: int) -> HObject

Beschreibung

simulate_motionsimulate_motionSimulateMotionSimulateMotionSimulateMotionsimulate_motion 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_motionSimulateMotionSimulateMotionSimulateMotionsimulate_motion erzeugt die benötigte Impulsantwort und multipliziert ihre (diskrete) Fouriertransformierte mit der des Eingabebildes. Das in den Ortsraum zurück transformierte 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, wie viele 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.

Ausführungsinformationen

Parameter

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

Bild, das beeinträchtigt werden soll.

MovedImageMovedImageMovedImageMovedImagemovedImagemoved_image (output_object)  image objectHImageHObjectHImageHobject * (real)

Bewegungsverschlechtertes Bild.

BlurringBlurringBlurringBlurringblurringblurring (input_control)  real HTuplefloatHTupleHtuple (real) (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 HTupleintHTupleHtuple (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

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

Impulsantwort-Prototyp bzw. Form der Bewegung.

Defaultwert: 3

Werteliste: 1, 2, 3, 4, 5

Ergebnis

Sind die Parameterwerte korrekt, dann liefert simulate_motionsimulate_motionSimulateMotionSimulateMotionSimulateMotionsimulate_motion den Wert TRUE. Bei einer leeren Eingabe wird mit einer entsprechenden Fehlermeldung abgebrochen.

Vorgänger

gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotiongen_psf_motion, gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotiongen_psf_motion

Nachfolger

simulate_defocussimulate_defocusSimulateDefocusSimulateDefocusSimulateDefocussimulate_defocus, wiener_filterwiener_filterWienerFilterWienerFilterWienerFilterwiener_filter, wiener_filter_niwiener_filter_niWienerFilterNiWienerFilterNiWienerFilterNiwiener_filter_ni

Siehe auch

gen_psf_motiongen_psf_motionGenPsfMotionGenPsfMotionGenPsfMotiongen_psf_motion, simulate_defocussimulate_defocusSimulateDefocusSimulateDefocusSimulateDefocussimulate_defocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusGenPsfDefocusGenPsfDefocusgen_psf_defocus

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