KlassenKlassenKlassenKlassen | | | | Operatoren

complementcomplementComplementcomplementComplementComplement (Operator)

Name

complementcomplementComplementcomplementComplementComplement — Berechnen des Komplements einer Region.

Signatur

complement(Region : RegionComplement : : )

Herror complement(const Hobject Region, Hobject* RegionComplement)

Herror T_complement(const Hobject Region, Hobject* RegionComplement)

Herror complement(Hobject Region, Hobject* RegionComplement)

HRegion HRegion::Complement() const

HRegionArray HRegionArray::Complement() const

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

HRegion HRegion::Complement() const

void HOperatorSetX.Complement(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*RegionComplement)

IHRegionX* HRegionX.Complement()

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

HRegion HRegion.Complement()

Beschreibung

complementcomplementComplementcomplementComplementComplement berechnet das Komplement der eingegebenen Region(en).

Wenn das Systemflag 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" auf 'true'"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_dbResetObjDbreset_obj_dbResetObjDbResetObjDb) und der Region berechnet.

Wenn das Systemflag 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" auf 'false'"false""false""false""false""false" steht (siehe set_systemset_systemSetSystemset_systemSetSystemSetSystem), 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 RegionRegionRegionRegionRegionregion auf TRUE gesetzt. Für die Berechnung von Folgeoperationen werden dann die Gesetze von de Morgan verwendet. Sinnvoll ist die Ausführung von complementcomplementComplementcomplementComplementComplement mit dem Systemflag auf 'false'"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""clip_region"='false'"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""true" und nach Anwendung von complementcomplementComplementcomplementComplementComplement wieder auf 'false'"false""false""false""false""false" zu setzen, da ansonsten negative Regionen aus Folgeoperationen resultieren können

Parallelisierung

Parameter

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Eingaberegion(en).

RegionComplementRegionComplementRegionComplementRegionComplementRegionComplementregionComplement (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Berechnete Komplement(e).

Parameteranzahl: RegionComplement == Region

Ergebnis

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

Vorgänger

thresholdthresholdThresholdthresholdThresholdThreshold, connectionconnectionConnectionconnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, pouringpouringPouringpouringPouringPouring, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Nachfolger

select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape

Siehe auch

differencedifferenceDifferencedifferenceDifferenceDifference, union1union1Union1union1Union1Union1, union2union2Union2union2Union2Union2, intersectionintersectionIntersectionintersectionIntersectionIntersection, reset_obj_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb, set_systemset_systemSetSystemset_systemSetSystemSetSystem

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren