ClassesClassesClassesClasses | | | | Operators

complementcomplementComplementcomplementComplementComplement (Operator)

Name

complementcomplementComplementcomplementComplementComplement — Return the complement of a region.

Signature

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()

Description

complementcomplementComplementcomplementComplementComplement determines the complement of the input region(s).

If the system flag 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" is 'true'"true""true""true""true""true", which is the default, the difference of the largest image processed so far (see reset_obj_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb) and the input region is returned.

If the system flag 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" is 'false'"false""false""false""false""false" (see set_systemset_systemSetSystemset_systemSetSystemSetSystem), the resluting region would be infinitely large. To avoid this, the complement is done only virtually by setting the complement flag of RegionRegionRegionRegionRegionregion to TRUE. For succeeding operations the de Morgan laws are applied while calculating results. Using complementcomplementComplementcomplementComplementComplement with 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" set to 'false'"false""false""false""false""false" makes sense only to avoid fringe effects, e.g., if the area of interest is bigger or smaller than the image. For the latter case, the clipping would be set explicitly. If there is no reason to use the operator with 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region"='false'"false""false""false""false""false" but you need the flag for other operations of your program, it is recommended to temporarilly set the system flag to'true'"true""true""true""true""true" and change it back to 'false'"false""false""false""false""false" after applying complementcomplementComplementcomplementComplementComplement. Otherwise, negative regions may result from succeeding operations.

Parallelization

Parameters

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Input region(s).

RegionComplementRegionComplementRegionComplementRegionComplementRegionComplementregionComplement (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Complemented regions.

Number of elements: RegionComplement == Region

Result

complementcomplementComplementcomplementComplementComplement always returns the value 2 (H_MSG_TRUE). The behavior in case of empty input (no regions given) can be set via 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>) and the behavior in case of an empty input region via 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>). If necessary, an exception is raised.

Possible Predecessors

thresholdthresholdThresholdthresholdThresholdThreshold, connectionconnectionConnectionconnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, pouringpouringPouringpouringPouringPouring, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Possible Successors

select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape

See also

differencedifferenceDifferencedifferenceDifferenceDifference, union1union1Union1union1Union1Union1, union2union2Union2union2Union2Union2, intersectionintersectionIntersectionintersectionIntersectionIntersection, reset_obj_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb, set_systemset_systemSetSystemset_systemSetSystemSetSystem

Module

Foundation


ClassesClassesClassesClasses | | | | Operators