Operator Reference

interjacentinterjacentInterjacentInterjacentinterjacent (Operator)

interjacentinterjacentInterjacentInterjacentinterjacent — Partition the image plane using given regions.

Warning

interjacentinterjacentInterjacentInterjacentinterjacent is obsolete and is only provided for reasons of backward compatibility.

Signature

interjacent(Region : RegionInterjacent : Mode : )

Herror interjacent(const Hobject Region, Hobject* RegionInterjacent, const char* Mode)

Herror T_interjacent(const Hobject Region, Hobject* RegionInterjacent, const Htuple Mode)

void Interjacent(const HObject& Region, HObject* RegionInterjacent, const HTuple& Mode)

HRegion HRegion::Interjacent(const HString& Mode) const

HRegion HRegion::Interjacent(const char* Mode) const

HRegion HRegion::Interjacent(const wchar_t* Mode) const   ( Windows only)

static void HOperatorSet.Interjacent(HObject region, out HObject regionInterjacent, HTuple mode)

HRegion HRegion.Interjacent(string mode)

def interjacent(region: HObject, mode: str) -> HObject

Description

interjacentinterjacentInterjacentInterjacentinterjacent partitions the image plane using the regions given in RegionRegionRegionregionregion. The result is a region containing the extracted separating lines. The following modes of operation can be used:

'medial_axis'"medial_axis""medial_axis""medial_axis""medial_axis"

This mode is used for regions that do not touch or overlap. The operator will find separating lines between the regions which partition the background evenly between the input regions. This corresponds to the following calls:

Example:

complement('full',Region,Tmp)complement("full",Region,Tmp)Complement("full",Region,Tmp)Complement("full",Region,Tmp)complement("full",Region,Tmp)

skeleton(Tmp,Result)skeleton(Tmp,Result)Skeleton(Tmp,Result)Skeleton(Tmp,Result)skeleton(Tmp,Result)

'border'"border""border""border""border"

If the input regions do not touch or overlap this mode is equivalent to boundary(Region,Result)boundary(Region,Result)Boundary(Region,Result)Boundary(Region,Result)boundary(Region,Result), i.e., it replaces each region by its boundary. If regions are touching they are aggregated into one region. The corresponding output region then contains the boundary of the aggregated region, as well as the one pixel wide separating line between the original regions. This corresponds to the following calls:

Example:

boundary(Region,Tmp1,'inner')boundary(Region,Tmp1,"inner")Boundary(Region,Tmp1,"inner")Boundary(Region,Tmp1,"inner")boundary(Region,Tmp1,"inner")

union1(Tmp1,Tmp2)union1(Tmp1,Tmp2)Union1(Tmp1,Tmp2)Union1(Tmp1,Tmp2)union1(Tmp1,Tmp2)

skeleton(Tmp2,Result)skeleton(Tmp2,Result)Skeleton(Tmp2,Result)Skeleton(Tmp2,Result)skeleton(Tmp2,Result)

'mixed'"mixed""mixed""mixed""mixed"

In this mode the operator behaves like the mode 'medial_axis'"medial_axis""medial_axis""medial_axis""medial_axis" for non-overlapping regions. If regions touch or overlap, again separating lines between the input regions are generated on output, but this time including the “touching line” between regions, i.e., touching regions are separated by a line in the output region. This corresponds to the following calls:

Example:

erosion1(Region,Mask,Tmp1,1)erosion1(Region,Mask,Tmp1,1)Erosion1(Region,Mask,Tmp1,1)Erosion1(Region,Mask,Tmp1,1)erosion1(Region,Mask,Tmp1,1)

union1(Tmp1,Tmp2)union1(Tmp1,Tmp2)Union1(Tmp1,Tmp2)Union1(Tmp1,Tmp2)union1(Tmp1,Tmp2)

complement(full,Tmp2,Tmp3)complement(full,Tmp2,Tmp3)Complement(full,Tmp2,Tmp3)Complement(full,Tmp2,Tmp3)complement(full,Tmp2,Tmp3)

skeleton(Tmp3,Result)skeleton(Tmp3,Result)Skeleton(Tmp3,Result)Skeleton(Tmp3,Result)skeleton(Tmp3,Result)

where Mask denotes the following “cross mask”:

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Processed without parallelization.

Parameters

RegionRegionRegionregionregion (input_object)  region(-array) objectHRegionHObjectHObjectHobject

Regions for which the separating lines are to be determined.

RegionInterjacentRegionInterjacentRegionInterjacentregionInterjacentregion_interjacent (output_object)  region objectHRegionHObjectHObjectHobject *

Output region containing the separating lines.

ModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Mode of operation.

Default: 'mixed' "mixed" "mixed" "mixed" "mixed"

List of values: 'border'"border""border""border""border", 'medial_axis'"medial_axis""medial_axis""medial_axis""medial_axis", 'mixed'"mixed""mixed""mixed""mixed"

Example (HDevelop)

read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)

Example (C)

read_image(&Image,"forest_air1");
mean_imae(Image,&Mean,31,31);
dyn_threshold(Image,Mean,&Seg,20,"light");
interjacent(Seg,&Graph,"medial_axis");
disp_region(Graph,WindowHandle);

Example (HDevelop)

read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)

Example (HDevelop)

read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)

Result

interjacentinterjacentInterjacentInterjacentinterjacent 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>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>), 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>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>), and the behavior in case of an empty result region via set_system('store_empty_region',<'true'/'false'>)set_system("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)set_system("store_empty_region",<"true"/"false">). If necessary, an exception is raised.

Possible Predecessors

thresholdthresholdThresholdThresholdthreshold, connectionconnectionConnectionConnectionconnection, regiongrowingregiongrowingRegiongrowingRegiongrowingregiongrowing, pouringpouringPouringPouringpouring

Possible Successors

select_shapeselect_shapeSelectShapeSelectShapeselect_shape, disp_regiondisp_regionDispRegionDispRegiondisp_region

See also

expand_regionexpand_regionExpandRegionExpandRegionexpand_region, junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton, boundaryboundaryBoundaryBoundaryboundary

Module

Foundation