HALCON Reference Manual 10.0.2
Table of Contents / Regions / Transformations ClassesClassesClasses | | | Operators

junctions_skeletonjunctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton (Operator)

Name

junctions_skeletonjunctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton — 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)

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

HRegion HRegion::JunctionsSkeleton(HRegion* JuncPoints) const

HRegionArray HRegionArray::JunctionsSkeleton(HRegionArray* JuncPoints) const

void HOperatorSetX.JunctionsSkeleton(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*EndPoints, [out] IHUntypedObjectX*JuncPoints)

IHRegionX* HRegionX.JunctionsSkeleton([out] IHRegionX*JuncPoints)

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

HRegion HRegion.JunctionsSkeleton(out HRegion juncPoints)

Description

junctions_skeletonjunctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton detects junctions and end points in a skeleton (see skeletonskeletonskeletonSkeletonSkeleton). The junctions in the input region RegionRegionRegionRegionregion are output as a region in JuncPointsJuncPointsJuncPointsJuncPointsjuncPoints, while the end points are output as a region in EndPointsEndPointsEndPointsEndPointsendPoints.

To obtain reasonable results with junctions_skeletonjunctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton 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_skeletonmorph_skeletonMorphSkeletonMorphSkeleton do not meet this condition in general.

Parallelization

Parameters

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionXHobject

Input skeletons.

EndPointsEndPointsEndPointsEndPointsendPoints (output_object)  region(-array) objectHRegionHRegionHRegionXHobject *

Extracted end points.

Number of elements: EndPoints == Region

JuncPointsJuncPointsJuncPointsJuncPointsjuncPoints (output_object)  region(-array) objectHRegionHRegionHRegionXHobject *

Extracted junctions.

Number of elements: JuncPoints == Region

Example (HDevelop)

* non-connected branches of a skeleton
skeleton(Region,Skeleton)
junctions_skeleton(Skeleton,EPoints,JPoints)
difference(S,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(S,JPoints,&Rows) ;
connection(Rows,&Parts) ;

Example (HDevelop)

* non-connected branches of a skeleton
skeleton(Region,Skeleton)
junctions_skeleton(Skeleton,EPoints,JPoints)
difference(S,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(S,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(S,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_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton 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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("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>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("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>)set_system("store_empty_region",<true/false>)SetSystem("store_empty_region",<true/false>)SetSystem("store_empty_region",<true/false>). If necessary, an exception is raised.

Possible Predecessors

skeletonskeletonskeletonSkeletonSkeleton

Possible Successors

area_centerarea_centerarea_centerAreaCenterAreaCenter, connectionconnectionconnectionConnectionConnection, get_region_pointsget_region_pointsget_region_pointsGetRegionPointsGetRegionPoints, differencedifferencedifferenceDifferenceDifference

See also

pruningpruningpruningPruningPruning, split_skeleton_regionsplit_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion

Module

Foundation


Table of Contents / Regions / Transformations ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH