abs_diff_image — Berechnen der absoluten Differenz von zwei Bildern.
abs_diff_image(Image1, Image2 : ImageAbsDiff : Mult : )
abs_diff_image bildet die absolute Differenz zweier Bilder.
Die Grauwerte g' des Ausgabebildes ImageAbsDiff werden
aus den Grauwerten (g1,g2) der Eingabebilder Image1 und
Image2 werden dabei wie folgt berechnet:
g' = |(g1 - g2)| * Mult
Tritt ein Überlauf oder ein Unterlauf ein, so werden die Werte
beschnitten.
Es können mehrere Bilder pro Aufruf bearbeitet werden. In diesem Fall enthalten beide Eingabeparameter gleich viele Bilder, die dann paarweise abgearbeitet werden. Zu jedem Paar wird ein Ausgabebild erzeugt.
Es ist zu beachten, dass die Laufzeit des Operators von der Wahl von
Mult abhängt. Für Mult = 1 ist eine spezielle
Optimierung implementiert. Da andere Werte von Mult keine
zusätzliche Information liefern können, sollte in der Anwendung
Mult = 1 verwendet werden. Andere Werte von
Mult sollten lediglich für Visualisierungszwecke verwendet
werden. Für byte-, int1-, int2- und uint2-Bilder sind außerdem für
Mult = 1 spezielle Optimierungen unter Verwendung von
SIMD Technologie implementiert. Ob diese tatsächlich zur Anwendung
kommen, kann über den Systemparameter 'mmx_enable'
(siehe set_system) gesteuert werden. Falls
'mmx_enable' auf 'true' gesetzt wird (und die
verwendete Hardware SIMD Technologie unterstützt), wird die
Berechnung intern unter Verwendung von SIMD Technologie
durchgeführt.
abs_diff_image kann für byte-, int1-, int2-, uint2-, int4-,
und real-Bildern auf OpenCL Geräten ausgeführt werden. Da OpenCL 1.0 aber
nur einfache genaue Fließkommaunterstützung voraussetzt und nicht alle
Rundungsarten unterstützt werden, kann das Ergebnis der
OpenCL-Implementierung geringfügig von dem der skalaren oder der
SIMD-Implementierung abweichen.
Es ist zu beachten, dass der Beschleunigungseffekt von
SIMD-Technologie bei großen, kompakten Eingaberegionen am größten
ist. Im Einzelfall kann aber die Ausführung von
abs_diff_image, abhängig von den Eingaberegionen und den
Hardwareeigenschaften, mit SIMD Technologie länger dauern als ohne.
In diesem Falle lässt sich die Verwendung von SIMD-Technologie durch
set_system(::'mmx_enable','false':) verhindern.
Image1 (input_object) (multichannel-)image(-array) → object (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *erlaubt für Compute Devices
Einbabebild 1.
Image2 (input_object) (multichannel-)image(-array) → object (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *erlaubt für Compute Devices
Eingabebild 2.
ImageAbsDiff (output_object) (multichannel-)image(-array) → object (byte / int1 / int2 / uint2 / int4 / int8 / real)
Betrag der Differenz der Eingabebilder.
Mult (input_control) number → (real / integer)
Skalierungsfaktor.
Defaultwert: 1.0
Wertevorschläge: 1.0, 2.0, 3.0, 4.0
Restriktion: Mult > 0
abs_diff_image liefert den Wert 2 (H_MSG_TRUE), falls die Parameter
korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingabebilder
vorhanden) lässt sich mittels
set_system(::'no_object_result',<Result>:) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
add_image,
scale_image,
dyn_threshold
Foundation