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

union_straight_contours_xldunion_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXld (Operator)

Name

union_straight_contours_xldunion_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXld — Compute the union of neighboring straight contours that have a similar direction.

Signature

union_straight_contours_xld(Contours : UnionContours : MaxDist, MaxDiff, Percent, Mode, Iterations : )

Herror union_straight_contours_xld(const Hobject Contours, Hobject* UnionContours, double MaxDist, double MaxDiff, double Percent, const char* Mode, const char* Iterations)

Herror T_union_straight_contours_xld(const Hobject Contours, Hobject* UnionContours, const Htuple MaxDist, const Htuple MaxDiff, const Htuple Percent, const Htuple Mode, const Htuple Iterations)

Herror union_straight_contours_xld(Hobject Contours, Hobject* UnionContours, const HTuple& MaxDist, const HTuple& MaxDiff, const HTuple& Percent, const HTuple& Mode, const HTuple& Iterations)

HXLDContArray HXLDContArray::UnionStraightContoursXld(const HTuple& MaxDist, const HTuple& MaxDiff, const HTuple& Percent, const HTuple& Mode, const HTuple& Iterations) const

void HOperatorSetX.UnionStraightContoursXld(
[in] IHUntypedObjectX* Contours, [out] IHUntypedObjectX*UnionContours, [in] VARIANT MaxDist, [in] VARIANT MaxDiff, [in] VARIANT Percent, [in] VARIANT Mode, [in] VARIANT Iterations)

IHXLDContX* HXLDContX.UnionStraightContoursXld(
[in] double MaxDist, [in] double MaxDiff, [in] double Percent, [in] BSTR Mode, [in] VARIANT Iterations)

static void HOperatorSet.UnionStraightContoursXld(HObject contours, out HObject unionContours, HTuple maxDist, HTuple maxDiff, HTuple percent, HTuple mode, HTuple iterations)

HXLDCont HXLDCont.UnionStraightContoursXld(double maxDist, double maxDiff, double percent, string mode, HTuple iterations)

HXLDCont HXLDCont.UnionStraightContoursXld(double maxDist, double maxDiff, double percent, string mode, string iterations)

Description

union_straight_contours_xldunion_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXld merges neighboring XLD contours ContoursContoursContoursContourscontours if certain criteria are fulfilled. The merging is not done recursively, and only between two contours. The parameter IterationsIterationsIterationsIterationsiterations controls how often this union step is executed.

Two contours are merged if the shortest distance between their end points (end points are the projections of the contours' first and last points onto its regression line) is smaller than MaxDistMaxDistMaxDistMaxDistmaxDist, and if the difference in direction (i.e., the regression lines' direction) is smaller than MaxDiffMaxDiffMaxDiffMaxDiffmaxDiff (radians).

If only one of the criteria is fulfilled, the decision on merging can be influenced by the weighting factor PercentPercentPercentPercentpercent, which allows the exceeding of one limit to be balanced by the other value remaining below the limit by the same amount. The end point distance is weighted by PercentPercentPercentPercentpercent, while the directional difference is weighted by 100 - Percent.

If, for example, two contours have an end point distance of 5.0 and a directional difference of 0.5 (with the limits chosen being MaxDistMaxDistMaxDistMaxDistmaxDist = 4.0 and MaxDiffMaxDiffMaxDiffMaxDiffmaxDiff = 0.625), both values differ from the limits by 25%. By choosing PercentPercentPercentPercentpercent = 60%, the larger end point distance is weigthed more than the smaller directional difference, and thus the contours are not merged. Contrary, if PercentPercentPercentPercentpercent = 40% is chosen, the contours are merged.

For PercentPercentPercentPercentpercent = 100%, only the end point distance is taken into account, while for PercentPercentPercentPercentpercent = 0% only the difference of direction is used. If PercentPercentPercentPercentpercent = 50% both criteria are equally valid.

In case there are parallel contours, there is a danger of merging neighboring contours. If this is to be avoided, ModeModeModeModemode = 'noparallel' has to be chosen, while otherwise ModeModeModeModemode = 'paralleltoo' suffices. For ModeModeModeModemode = 'every', contours are merged unconditionally. All other parameters have no influence in this case.

The parameters of the regression line are calculated anew for merged contours.

Attention

Before the contour parameters can be returned by get_regress_params_xldget_regress_params_xldget_regress_params_xldGetRegressParamsXldGetRegressParamsXld, the parameters of the regression line to the contour must be calculated by calling regress_contours_xldregress_contours_xldregress_contours_xldRegressContoursXldRegressContoursXld.

Parallelization

Parameters

ContoursContoursContoursContourscontours (input_object)  xld_cont-array objectHXLDContHXLDContArrayHXLDContXHobject

Input XLD contours.

UnionContoursUnionContoursUnionContoursUnionContoursunionContours (output_object)  xld_cont-array objectHXLDContHXLDContArrayHXLDContXHobject *

Output XLD contours.

MaxDistMaxDistMaxDistMaxDistmaxDist (input_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Maximum distance of the contours' endpoints.

Default value: 5.0

MaxDiffMaxDiffMaxDiffMaxDiffmaxDiff (input_control)  angle.rad HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Maximum difference in direction.

Default value: 0.5

PercentPercentPercentPercentpercent (input_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Weighting factor for the two selection criteria.

Default value: 50.0

ModeModeModeModemode (input_control)  string HTupleHTupleVARIANTHtuple (string) (string) (char*) (BSTR) (char*)

Should parallel contours be taken into account?

Default value: 'noparallel' "noparallel" "noparallel" "noparallel" "noparallel"

List of values: 'noparallel'"noparallel""noparallel""noparallel""noparallel", 'paralleltoo'"paralleltoo""paralleltoo""paralleltoo""paralleltoo", 'every'"every""every""every""every"

IterationsIterationsIterationsIterationsiterations (input_control)  string HTupleHTupleVARIANTHtuple (string / integer) (string / int / long) (char* / Hlong) (BSTR / Hlong) (char* / Hlong)

Number of iterations or 'maximum'.

Default value: 'maximum' "maximum" "maximum" "maximum" "maximum"

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

Typical range of values: 1 ≤ Iterations Iterations Iterations Iterations iterations ≤ 500 (lin)

Minimum increment: 1

Recommended increment: 1

Possible Predecessors

regress_contours_xldregress_contours_xldregress_contours_xldRegressContoursXldRegressContoursXld

Alternatives

union_collinear_contours_xldunion_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXld, union_collinear_contours_ext_xldunion_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXld, union_cocircular_contours_xldunion_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXld, union_cotangential_contours_xldunion_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld, union_adjacent_contours_xldunion_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXld

See also

fit_line_contour_xldfit_line_contour_xldfit_line_contour_xldFitLineContourXldFitLineContourXld, get_contour_xldget_contour_xldget_contour_xldGetContourXldGetContourXld, get_contour_attrib_xldget_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXld, gen_contours_skeleton_xldgen_contours_skeleton_xldgen_contours_skeleton_xldGenContoursSkeletonXldGenContoursSkeletonXld, lines_gausslines_gausslines_gaussLinesGaussLinesGauss, lines_facetlines_facetlines_facetLinesFacetLinesFacet, edges_sub_pixedges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPix, get_regress_params_xldget_regress_params_xldget_regress_params_xldGetRegressParamsXldGetRegressParamsXld, get_contour_global_attrib_xldget_contour_global_attrib_xldget_contour_global_attrib_xldGetContourGlobalAttribXldGetContourGlobalAttribXld, query_contour_global_attribs_xldquery_contour_global_attribs_xldquery_contour_global_attribs_xldQueryContourGlobalAttribsXldQueryContourGlobalAttribsXld

Module

Foundation


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