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

split_skeleton_linesT_split_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLines (Operator)

Name

split_skeleton_linesT_split_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLines — Split lines represented by one pixel wide, non-branching lines.

Signature

split_skeleton_lines(SkeletonRegion : : MaxDistance : BeginRow, BeginCol, EndRow, EndCol)

Herror T_split_skeleton_lines(const Hobject SkeletonRegion, const Htuple MaxDistance, Htuple* BeginRow, Htuple* BeginCol, Htuple* EndRow, Htuple* EndCol)

Herror split_skeleton_lines(Hobject SkeletonRegion, const HTuple& MaxDistance, HTuple* BeginRow, HTuple* BeginCol, HTuple* EndRow, HTuple* EndCol)

HTuple HRegionArray::SplitSkeletonLines(const HTuple& MaxDistance, HTuple* BeginCol, HTuple* EndRow, HTuple* EndCol) const

void HOperatorSetX.SplitSkeletonLines(
[in] IHUntypedObjectX* SkeletonRegion, [in] VARIANT MaxDistance, [out] VARIANT* BeginRow, [out] VARIANT* BeginCol, [out] VARIANT* EndRow, [out] VARIANT* EndCol)

VARIANT HRegionX.SplitSkeletonLines(
[in] Hlong MaxDistance, [out] VARIANT* BeginCol, [out] VARIANT* EndRow, [out] VARIANT* EndCol)

static void HOperatorSet.SplitSkeletonLines(HObject skeletonRegion, HTuple maxDistance, out HTuple beginRow, out HTuple beginCol, out HTuple endRow, out HTuple endCol)

void HRegion.SplitSkeletonLines(int maxDistance, out HTuple beginRow, out HTuple beginCol, out HTuple endRow, out HTuple endCol)

Description

split_skeleton_linessplit_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLines splits lines represented by one pixel wide, non-branching regions into shorter lines based on their curvature. A line is split if the maximum distance of a point on the line to the line segment connecting its end points is larger than MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (split & merge algorithm). The start and end points of the approximating line segments are returned in BeginRowBeginRowBeginRowBeginRowbeginRow, BeginColBeginColBeginColBeginColbeginCol, EndRowEndRowEndRowEndRowendRow, and EndColEndColEndColEndColendCol.

Attention

The input regions must represent non-branching lines, that is single branches of the skeleton.

Parallelization

Parameters

SkeletonRegionSkeletonRegionSkeletonRegionSkeletonRegionskeletonRegion (input_object)  region-array objectHRegionHRegionArrayHRegionXHobject

Input lines (represented by 1 pixel wide, non-branching regions).

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (input_control)  integer HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Maximum distance of the line points to the line segment connecting both end points.

Default value: 3

Suggested values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Typical range of values: 1 ≤ MaxDistance MaxDistance MaxDistance MaxDistance maxDistance ≤ 500 (lin)

Minimum increment: 1

Recommended increment: 1

BeginRowBeginRowBeginRowBeginRowbeginRow (output_control)  line.begin.y-array HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Row coordinates of the start points of the output lines.

BeginColBeginColBeginColBeginColbeginCol (output_control)  line.begin.x-array HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Column coordinates of the start points of the output lines.

EndRowEndRowEndRowEndRowendRow (output_control)  line.end.y-array HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Row coordinates of the end points of the output lines.

EndColEndColEndColEndColendCol (output_control)  line.end.x-array HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Column coordinates of the end points of the output lines.

Example (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_lines (SelectedBranches, 3, BeginRow, BeginCol, EndRow, \
                      EndCol)

Example (C)

read_image(&Image,"fabrik");
edges_image (Image, &ImaAmp, &ImaDir, "lanser2", 0.5, "nms", 8, 16);
threshold (ImaAmp, &RawEdges, 8, 255);
skeleton (RawEdges, &Skeleton);
junctions_skeleton (Skeleton, &EndPoints, &JuncPoints);
difference (Skeleton, JuncPoints, &SkelWithoutJunc);
connection (SkelWithoutJunc, &SingleBranches);
select_shape (SingleBranches, &SelectedBranches, "area", "and", 16, 99999);
split_skeleton_lines (SelectedBranches, 3, &BeginRow, &BeginCol, &EndRow,
                      &EndCol);

Example (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_lines (SelectedBranches, 3, BeginRow, BeginCol, EndRow, \
                      EndCol)

Example (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_lines (SelectedBranches, 3, BeginRow, BeginCol, EndRow, \
                      EndCol)

Example (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_lines (SelectedBranches, 3, BeginRow, BeginCol, EndRow, \
                      EndCol)

Result

split_skeleton_linessplit_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLines 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

connectionconnectionconnectionConnectionConnection, select_shapeselect_shapeselect_shapeSelectShapeSelectShape, skeletonskeletonskeletonSkeletonSkeleton, junctions_skeletonjunctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton, differencedifferencedifferenceDifferenceDifference

Possible Successors

select_linesselect_linesselect_linesSelectLinesSelectLines, partition_linespartition_linespartition_linesPartitionLinesPartitionLines, disp_linedisp_linedisp_lineDispLineDispLine

See also

split_skeleton_regionsplit_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion, detect_edge_segmentsdetect_edge_segmentsdetect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegments

Module

Foundation


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