complementcomplementComplementComplement (Operator)

Name

complementcomplementComplementComplement — Berechnen des Komplements einer Region.

Signatur

complement(Region : RegionComplement : : )

Herror complement(const Hobject Region, Hobject* RegionComplement)

Herror T_complement(const Hobject Region, Hobject* RegionComplement)

void Complement(const HObject& Region, HObject* RegionComplement)

HRegion HRegion::Complement() const

static void HOperatorSet.Complement(HObject region, out HObject regionComplement)

HRegion HRegion.Complement()

Beschreibung

complementcomplementComplementComplementComplement berechnet das Komplement der eingegebenen Region(en).

Wenn das Systemflag 'clip_region'"clip_region""clip_region""clip_region""clip_region" auf 'true'"true""true""true""true" gesetzt ist, was der Normalfall ist, wird die Differenz aus dem größten aktuellen Bild (siehe reset_obj_dbreset_obj_dbResetObjDbResetObjDbResetObjDb) und der Region berechnet.

Wenn das Systemflag 'clip_region'"clip_region""clip_region""clip_region""clip_region" auf 'false'"false""false""false""false" steht (siehe set_systemset_systemSetSystemSetSystemSetSystem), würde die resultierende Region unendlich groß werden. Um dies zu verhindern, wird das Komplement nur virtuell ausgeführt, d.h., es wird der Eintrag (Flag) für das Komplement in RegionRegionRegionRegionregion auf TRUE gesetzt. Für die Berechnung von Folgeoperationen werden dann die Gesetze von de Morgan verwendet. Sinnvoll ist die Ausführung von complementcomplementComplementComplementComplement mit dem Systemflag auf 'false'"false""false""false""false" nur zur Vermeidung von Randeffekten, z.B., wenn der zu bearbeitende Ausschnitt über die Bildgröße hinausgeht oder wenn er kleiner als die Bildgröße ist. In letzterem Fall müsste dann das gewünschte Clipping explizit gesetzt werden. Hat man keinen Grund, den Operator mit 'clip_region'"clip_region""clip_region""clip_region""clip_region"='false'"false""false""false""false" aufzurufen, braucht diese Einstellung aber für andere Operationen, empfiehlt es sich, das Systemflag kurzzeitig auf 'true'"true""true""true""true" und nach Anwendung von complementcomplementComplementComplementComplement wieder auf 'false'"false""false""false""false" zu setzen, da ansonsten negative Regionen aus Folgeoperationen resultieren können

Ausführungsinformationen

Parameter

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHobject

Eingaberegion(en).

RegionComplementRegionComplementRegionComplementRegionComplementregionComplement (output_object)  region(-array) objectHRegionHRegionHobject *

Berechnete Komplement(e).

Parameteranzahl: RegionComplement == Region

Ergebnis

complementcomplementComplementComplementComplement liefert normalerweise den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingaberegionen 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>), das bei leerer Region mit set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

thresholdthresholdThresholdThresholdThreshold, connectionconnectionConnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, pouringpouringPouringPouringPouring, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm

Nachfolger

select_shapeselect_shapeSelectShapeSelectShapeSelectShape

Siehe auch

differencedifferenceDifferenceDifferenceDifference, union1union1Union1Union1Union1, union2union2Union2Union2Union2, intersectionintersectionIntersectionIntersectionIntersection, reset_obj_dbreset_obj_dbResetObjDbResetObjDbResetObjDb, set_systemset_systemSetSystemSetSystemSetSystem

Modul

Foundation