sub_imagesub_imageSubImageSubImage (Operator)

Name

sub_imagesub_imageSubImageSubImage — Subtrahieren zweier Bilder.

Signatur

sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

Herror sub_image(const Hobject ImageMinuend, const Hobject ImageSubtrahend, Hobject* ImageSub, double Mult, double Add)

Herror T_sub_image(const Hobject ImageMinuend, const Hobject ImageSubtrahend, Hobject* ImageSub, const Htuple Mult, const Htuple Add)

void SubImage(const HObject& ImageMinuend, const HObject& ImageSubtrahend, HObject* ImageSub, const HTuple& Mult, const HTuple& Add)

HImage HImage::SubImage(const HImage& ImageSubtrahend, const HTuple& Mult, const HTuple& Add) const

HImage HImage::SubImage(const HImage& ImageSubtrahend, double Mult, double Add) const

static void HOperatorSet.SubImage(HObject imageMinuend, HObject imageSubtrahend, out HObject imageSub, HTuple mult, HTuple add)

HImage HImage.SubImage(HImage imageSubtrahend, HTuple mult, HTuple add)

HImage HImage.SubImage(HImage imageSubtrahend, double mult, double add)

Beschreibung

sub_imagesub_imageSubImageSubImageSubImage subtrahiert zwei Bilder. Die Grauwerte (g1,g2) der Eingabebilder (ImageMinuendImageMinuendImageMinuendImageMinuendimageMinuend und ImageSubtrahendImageSubtrahendImageSubtrahendImageSubtrahendimageSubtrahend) werden dabei wie folgt transformiert: g' := (g1 - g2) * Mult + Add Tritt ein Überlauf oder ein Unterlauf ein, so werden die Werte beschnitten. Dies gilt nicht im Fall von cyclic- und direction-Bildern.

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 der Steuerparameter abhängt. Für häufig verwendete Parameterkombinationen sind spezielle Optimierungen implementiert. Für byte, int2 und uint2 Bilder sind außerdem spezielle Optimierungen unter Verwendung von SIMD Technologie implementiert. Ob diese tatsächlich zur Anwendung kommen, kann über den Systemparameter 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable" (siehe set_systemset_systemSetSystemSetSystemSetSystem) gesteuert werden. Falls 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable" auf 'true'"true""true""true""true" gesetzt wird (und die verwendete Hardware SIMD Technologie unterstützt), wird die Berechnung intern unter Verwendung von SIMD Technologie durchgeführt.

sub_imagesub_imageSubImageSubImageSubImage kann für byte-, int1-, int2-, uint2-, int4-, real-, direction-, cyclic-, und complex-Bilder 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.

Achtung

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 sub_imagesub_imageSubImageSubImageSubImage, abhängig von der Eingaberegion 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':)set_system("mmx_enable","false")SetSystem("mmx_enable","false")SetSystem("mmx_enable","false")SetSystem("mmx_enable","false") verhindern.

Ausführungsinformationen

Parameter

ImageMinuendImageMinuendImageMinuendImageMinuendimageMinuend (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *erlaubt für Compute Devices

Minuend(en).

ImageSubtrahendImageSubtrahendImageSubtrahendImageSubtrahendimageSubtrahend (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *erlaubt für Compute Devices

Subtrahend(en).

ImageSubImageSubImageSubImageSubimageSub (output_object)  (multichannel-)image(-array) objectHImageHImageHobject * (byte / int1 / int2 / uint2 / int4 / int8 / real / direction / cyclic / complex)

Ergebnisbild(er) durch die Substraktion.

MultMultMultMultmult (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Korrekturfaktor.

Defaultwert: 1.0

Wertevorschläge: 0.0, 1.0, 2.0, 3.0, 4.0

Typischer Wertebereich: -255.0 ≤ Mult Mult Mult Mult mult ≤ 255.0

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 0.1

AddAddAddAddadd (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Korrekturwert.

Defaultwert: 128.0

Wertevorschläge: 0.0, 128.0, 256.0

Typischer Wertebereich: -512.0 ≤ Add Add Add Add add ≤ 512.0

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 1.0

Beispiel (HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
sub_image (Image1, Image2, Result, 1, 100)
dev_display (Result)

Beispiel (C)

read_image(&Image1,"fabrik");
disp_image(Image1,WindowHandle);
read_image(&Image2,"monkey");
disp_image(Image2,WindowHandle);
sub_image(Image1,Image2,&Result,1.0,100.0);
disp_image(Result,WindowHandle);

Beispiel (HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
sub_image (Image1, Image2, Result, 1, 100)
dev_display (Result)

Beispiel (HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
sub_image (Image1, Image2, Result, 1, 100)
dev_display (Result)

Beispiel (HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
sub_image (Image1, Image2, Result, 1, 100)
dev_display (Result)

Ergebnis

sub_imagesub_imageSubImageSubImageSubImage 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>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

dual_thresholddual_thresholdDualThresholdDualThresholdDualThreshold

Alternativen

mult_imagemult_imageMultImageMultImageMultImage, add_imageadd_imageAddImageAddImageAddImage

Siehe auch

add_imageadd_imageAddImageAddImageAddImage, mult_imagemult_imageMultImageMultImageMultImage, dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, check_differencecheck_differenceCheckDifferenceCheckDifferenceCheckDifference

Modul

Foundation