junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton (Operator)
Name
junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton
— Find junctions and end points in a skeleton.
Signature
def junctions_skeleton(region: HObject) -> Tuple[HObject, HObject]
Description
junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton
detects junctions and end points in a skeleton (see
skeletonskeletonSkeletonSkeletonSkeletonskeleton
). The junctions in the input region
RegionRegionRegionRegionregionregion
are output as a region in JuncPointsJuncPointsJuncPointsJuncPointsjuncPointsjunc_points
,
while the end points are output as a region in EndPointsEndPointsEndPointsEndPointsendPointsend_points
.
To obtain reasonable results with junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton
the input
region RegionRegionRegionRegionregionregion
must not contain lines which are more than one
pixel wide. Regions obtained by skeletonskeletonSkeletonSkeletonSkeletonskeleton
meet this condition,
while regions obtained by morph_skeletonmorph_skeletonMorphSkeletonMorphSkeletonMorphSkeletonmorph_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
RegionRegionRegionRegionregionregion
(input_object) region(-array) →
objectHRegionHObjectHRegionHobject
Input skeletons.
EndPointsEndPointsEndPointsEndPointsendPointsend_points
(output_object) region(-array) →
objectHRegionHObjectHRegionHobject *
Extracted end points.
Number of elements: EndPoints == Region
JuncPointsJuncPointsJuncPointsJuncPointsjuncPointsjunc_points
(output_object) region(-array) →
objectHRegionHObjectHRegionHobject *
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)
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_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton
always returns the value 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>)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>)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',<'2 (H_MSG_TRUE)'/'3 (H_MSG_FALSE)'>)set_system("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)set_system("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)
.
If necessary, an exception is raised.
Possible Predecessors
skeletonskeletonSkeletonSkeletonSkeletonskeleton
Possible Successors
area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center
,
connectionconnectionConnectionConnectionConnectionconnection
,
get_region_pointsget_region_pointsGetRegionPointsGetRegionPointsGetRegionPointsget_region_points
,
differencedifferenceDifferenceDifferenceDifferencedifference
See also
pruningpruningPruningPruningPruningpruning
,
split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region
Module
Foundation