Operator Reference

junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton (Operator)

junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton — Find junctions and end points in a skeleton.

Signature

junctions_skeleton(Region : EndPoints, JuncPoints : : )

Herror junctions_skeleton(const Hobject Region, Hobject* EndPoints, Hobject* JuncPoints)

Herror T_junctions_skeleton(const Hobject Region, Hobject* EndPoints, Hobject* JuncPoints)

void JunctionsSkeleton(const HObject& Region, HObject* EndPoints, HObject* JuncPoints)

HRegion HRegion::JunctionsSkeleton(HRegion* JuncPoints) const

static void HOperatorSet.JunctionsSkeleton(HObject region, out HObject endPoints, out HObject juncPoints)

HRegion HRegion.JunctionsSkeleton(out HRegion juncPoints)

def junctions_skeleton(region: HObject) -> Tuple[HObject, HObject]

Description

junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton detects junctions and end points in a skeleton (see skeletonskeletonSkeletonSkeletonskeleton). The junctions in the input region RegionRegionRegionregionregion are output as a region in JuncPointsJuncPointsJuncPointsjuncPointsjunc_points, while the end points are output as a region in EndPointsEndPointsEndPointsendPointsend_points.

To obtain reasonable results with junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton the input region RegionRegionRegionregionregion must not contain lines which are more than one pixel wide. Regions obtained by skeletonskeletonSkeletonSkeletonskeleton meet this condition, while regions obtained by morph_skeletonmorph_skeletonMorphSkeletonMorphSkeletonmorph_skeleton do not meet this condition in general.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Automatically parallelized on tuple level.

Parameters

RegionRegionRegionregionregion (input_object)  region(-array) objectHRegionHObjectHObjectHobject

Input skeletons.

EndPointsEndPointsEndPointsendPointsend_points (output_object)  region(-array) objectHRegionHObjectHObjectHobject *

Extracted end points.

Number of elements: EndPoints == Region

JuncPointsJuncPointsJuncPointsjuncPointsjunc_points (output_object)  region(-array) objectHRegionHObjectHObjectHobject *

Extracted junctions.

Number of elements: JuncPoints == Region

Example (HDevelop)

* non-connected branches of a skeleton
skeleton(Region,Skeleton)
junctions_skeleton(Skeleton,EPoints,JPoints)
difference(Skeleton,JPoints,Rows)
set_system('neighborhood',4)
connection(Rows,Parts)

Example (C)

/* non-connected branches of a skeleton */
skeleton(Region,&Skeleton);
junctions_skeleton(Skeleton,&EPoints,&JPoints);
difference(Skeleton,JPoints,&Rows);
connection(Rows,&Parts);

Example (HDevelop)

* non-connected branches of a skeleton
skeleton(Region,Skeleton)
junctions_skeleton(Skeleton,EPoints,JPoints)
difference(Skeleton,JPoints,Rows)
set_system('neighborhood',4)
connection(Rows,Parts)

Example (HDevelop)

* non-connected branches of a skeleton
skeleton(Region,Skeleton)
junctions_skeleton(Skeleton,EPoints,JPoints)
difference(Skeleton,JPoints,Rows)
set_system('neighborhood',4)
connection(Rows,Parts)

Complexity

Let F be the area of the input region. Then the runtime complexity is O(F).

Result

junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton 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

skeletonskeletonSkeletonSkeletonskeleton

Possible Successors

area_centerarea_centerAreaCenterAreaCenterarea_center, connectionconnectionConnectionConnectionconnection, get_region_pointsget_region_pointsGetRegionPointsGetRegionPointsget_region_points, differencedifferenceDifferenceDifferencedifference

See also

pruningpruningPruningPruningpruning, split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region

Module

Foundation