union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld (Operator)

Name

union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld — Compute the union of collinear contours (operator with extended functionality).

Signature

union_collinear_contours_ext_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, MaxOverlap, MaxRegrError, MaxCosts, WeightDist, WeightShift, WeightAngle, WeightLink, WeightRegr, Mode : )

Herror union_collinear_contours_ext_xld(const Hobject Contours, Hobject* UnionContours, double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, double MaxOverlap, double MaxRegrError, double MaxCosts, double WeightDist, double WeightShift, double WeightAngle, double WeightLink, double WeightRegr, const char* Mode)

Herror T_union_collinear_contours_ext_xld(const Hobject Contours, Hobject* UnionContours, const Htuple MaxDistAbs, const Htuple MaxDistRel, const Htuple MaxShift, const Htuple MaxAngle, const Htuple MaxOverlap, const Htuple MaxRegrError, const Htuple MaxCosts, const Htuple WeightDist, const Htuple WeightShift, const Htuple WeightAngle, const Htuple WeightLink, const Htuple WeightRegr, const Htuple Mode)

void UnionCollinearContoursExtXld(const HObject& Contours, HObject* UnionContours, const HTuple& MaxDistAbs, const HTuple& MaxDistRel, const HTuple& MaxShift, const HTuple& MaxAngle, const HTuple& MaxOverlap, const HTuple& MaxRegrError, const HTuple& MaxCosts, const HTuple& WeightDist, const HTuple& WeightShift, const HTuple& WeightAngle, const HTuple& WeightLink, const HTuple& WeightRegr, const HTuple& Mode)

HXLDCont HXLDCont::UnionCollinearContoursExtXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, double MaxOverlap, double MaxRegrError, double MaxCosts, double WeightDist, double WeightShift, double WeightAngle, double WeightLink, double WeightRegr, const HString& Mode) const

HXLDCont HXLDCont::UnionCollinearContoursExtXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, double MaxOverlap, double MaxRegrError, double MaxCosts, double WeightDist, double WeightShift, double WeightAngle, double WeightLink, double WeightRegr, const char* Mode) const

HXLDCont HXLDCont::UnionCollinearContoursExtXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, double MaxOverlap, double MaxRegrError, double MaxCosts, double WeightDist, double WeightShift, double WeightAngle, double WeightLink, double WeightRegr, const wchar_t* Mode) const   ( Windows only)

static void HOperatorSet.UnionCollinearContoursExtXld(HObject contours, out HObject unionContours, HTuple maxDistAbs, HTuple maxDistRel, HTuple maxShift, HTuple maxAngle, HTuple maxOverlap, HTuple maxRegrError, HTuple maxCosts, HTuple weightDist, HTuple weightShift, HTuple weightAngle, HTuple weightLink, HTuple weightRegr, HTuple mode)

HXLDCont HXLDCont.UnionCollinearContoursExtXld(double maxDistAbs, double maxDistRel, double maxShift, double maxAngle, double maxOverlap, double maxRegrError, double maxCosts, double weightDist, double weightShift, double weightAngle, double weightLink, double weightRegr, string mode)

def union_collinear_contours_ext_xld(contours: HObject, max_dist_abs: float, max_dist_rel: float, max_shift: float, max_angle: float, max_overlap: float, max_regr_error: float, max_costs: float, weight_dist: float, weight_shift: float, weight_angle: float, weight_link: float, weight_regr: float, mode: str) -> HObject

Description

Like union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld, the operator union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld detects all the collinear contours within the input array containing straight contours (ContoursContoursContourscontourscontours) and returns the results in UnionContoursUnionContoursUnionContoursunionContoursunion_contours. The basic behavior is identical to the operator union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld and is described there. union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld, however, provides several additional parameters to control the process of contour unification more precisely.

Parameters

The parameters MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs, MaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel, MaxShiftMaxShiftMaxShiftmaxShiftmax_shift, and MaxAngleMaxAngleMaxAnglemaxAnglemax_angle operate as described for the operator union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld.

MaxOverlapMaxOverlapMaxOverlapmaxOverlapmax_overlap

In addition, the parameter MaxOverlapMaxOverlapMaxOverlapmaxOverlapmax_overlap allows to define an overlap between two contours, in order to connect contours which slightly overlap. Internally, the operator assures -- irrespective of the passed value for MaxOverlapMaxOverlapMaxOverlapmaxOverlapmax_overlap -- that the overlap is not bigger than a third of the length of both contours.

image/svg+xml a b
MaxRegrErrorMaxRegrErrorMaxRegrErrormaxRegrErrormax_regr_error

The parameter MaxRegrErrorMaxRegrErrorMaxRegrErrormaxRegrErrormax_regr_error is not used at the moment. Its aim is to assure that after the unification of two contours, the resulting contour does not deviate too much from its regression line. This parameter is by default switched off (-1), because of its high time consumption and because of the fact that it is normally not necessary. In some cases, however, result contours may be created with points diverging to much from the regression line (winding input contours, shift and angle differences close to the -- quite high adjusted -- thresholds, recursive unification of a lot of small contours).

MaxCostsMaxCostsMaxCostsmaxCostsmax_costs

With the help of the parameter MaxCostsMaxCostsMaxCostsmaxCostsmax_costs it is possible to limit the maximum costs for connecting two contours. So, not only contour pairs with one value beyond a certain threshold may be excluded from unification, but also contour pairs where all values are quite close to the limits. The costs are always normalized at a value between 0 and 1, where 1 means that all values exactly meet the threshold.

WeightDistWeightDistWeightDistweightDistweight_dist, WeightShiftWeightShiftWeightShiftweightShiftweight_shift, WeightAngleWeightAngleWeightAngleweightAngleweight_angle, WeightLinkWeightLinkWeightLinkweightLinkweight_link, and WeightRegrWeightRegrWeightRegrweightRegrweight_regr

The influence of the different values on the total costs is adjusted by passing appropriate weights with the parameters WeightDistWeightDistWeightDistweightDistweight_dist, WeightShiftWeightShiftWeightShiftweightShiftweight_shift, WeightAngleWeightAngleWeightAngleweightAngleweight_angle, WeightLinkWeightLinkWeightLinkweightLinkweight_link, WeightRegrWeightRegrWeightRegrweightRegrweight_regr. Any positive number can be chosen for these weights, the resulting costs are always automatically normalized to fit the range from 0 to 1. The parameter WeightRegrWeightRegrWeightRegrweightRegrweight_regr is not used.

ModeModeModemodemode

The parameter ModeModeModemodemode controls -- as for union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld -- how to handle the attributes of the input contours.

Execution Information

Parameters

ContoursContoursContourscontourscontours (input_object)  xld_cont-array objectHXLDContHObjectHObjectHobject

Input XLD contours.

UnionContoursUnionContoursUnionContoursunionContoursunion_contours (output_object)  xld_cont-array objectHXLDContHObjectHObjectHobject *

Output XLD contours.

MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum distance of the contours' end points in the direction of the reference regression line.

Default: 10.0

Value range: 0.0 ≤ MaxDistAbs MaxDistAbs MaxDistAbs maxDistAbs max_dist_abs

MaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum distance of the contours' end points in the direction of the reference regression line in relation to the length of the contour which is to be elongated.

Default: 1.0

Value range: 0.0 ≤ MaxDistRel MaxDistRel MaxDistRel maxDistRel max_dist_rel

MaxShiftMaxShiftMaxShiftmaxShiftmax_shift (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum distance of the contour from the reference regression line (i.e., perpendicular to the line).

Default: 2.0

Value range: 0.0 ≤ MaxShift MaxShift MaxShift maxShift max_shift

MaxAngleMaxAngleMaxAnglemaxAnglemax_angle (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum angle difference between the two contours.

Default: 0.1

Value range: 0.0 ≤ MaxAngle MaxAngle MaxAngle maxAngle max_angle ≤ 0.78539816339

MaxOverlapMaxOverlapMaxOverlapmaxOverlapmax_overlap (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum range of the overlap.

Default: 0.0

Value range: 0.0 ≤ MaxOverlap MaxOverlap MaxOverlap maxOverlap max_overlap

MaxRegrErrorMaxRegrErrorMaxRegrErrormaxRegrErrormax_regr_error (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximum regression error of the resulting contours (NOT USED).

Default: -1.0

MaxCostsMaxCostsMaxCostsmaxCostsmax_costs (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Threshold for reducing the total costs of unification.

Default: 1.0

Value range: 0.0 ≤ MaxCosts MaxCosts MaxCosts maxCosts max_costs

WeightDistWeightDistWeightDistweightDistweight_dist (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Influence of the distance in the line direction on the total costs.

Default: 1.0

Value range: 0.0 ≤ WeightDist WeightDist WeightDist weightDist weight_dist

WeightShiftWeightShiftWeightShiftweightShiftweight_shift (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Influence of the distance from the regression line on the total costs.

Default: 1.0

Value range: 0.0 ≤ WeightShift WeightShift WeightShift weightShift weight_shift

WeightAngleWeightAngleWeightAngleweightAngleweight_angle (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Influence of the angle difference on the total costs.

Default: 1.0

Value range: 0.0 ≤ WeightAngle WeightAngle WeightAngle weightAngle weight_angle

WeightLinkWeightLinkWeightLinkweightLinkweight_link (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Influence of the line disturbance by the linking segment (overlap and angle difference) on the total costs.

Default: 1.0

Value range: 0.0 ≤ WeightLink WeightLink WeightLink weightLink weight_link

WeightRegrWeightRegrWeightRegrweightRegrweight_regr (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Influence of the regression error on the total costs (NOT USED).

Default: 0.0

Value range: 0.0 ≤ WeightRegr WeightRegr WeightRegr weightRegr weight_regr

ModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Mode describing the treatment of the contours' attributes

Default: 'attr_keep' "attr_keep" "attr_keep" "attr_keep" "attr_keep"

List of values: 'attr_forget'"attr_forget""attr_forget""attr_forget""attr_forget", 'attr_keep'"attr_keep""attr_keep""attr_keep""attr_keep"

Possible Predecessors

split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldsplit_contours_xld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldselect_contours_xld

Alternatives

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldunion_cocircular_contours_xld, union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldunion_cotangential_contours_xld, union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXldunion_straight_contours_xld

See also

edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixedges_sub_pix, threshold_sub_pixthreshold_sub_pixThresholdSubPixThresholdSubPixthreshold_sub_pix, gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldgen_polygons_xld, split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldsplit_contours_xld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldselect_contours_xld, get_contour_xldget_contour_xldGetContourXldGetContourXldget_contour_xld, get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldget_contour_attrib_xld

Module

Foundation