union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld (Operator)

Name

union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld — Compute the union of contours whose end points are close together.

Signature

union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : )

Herror union_adjacent_contours_xld(const Hobject Contours, Hobject* UnionContours, double MaxDistAbs, double MaxDistRel, const char* Mode)

Herror T_union_adjacent_contours_xld(const Hobject Contours, Hobject* UnionContours, const Htuple MaxDistAbs, const Htuple MaxDistRel, const Htuple Mode)

void UnionAdjacentContoursXld(const HObject& Contours, HObject* UnionContours, const HTuple& MaxDistAbs, const HTuple& MaxDistRel, const HTuple& Mode)

HXLDCont HXLDCont::UnionAdjacentContoursXld(double MaxDistAbs, double MaxDistRel, const HString& Mode) const

HXLDCont HXLDCont::UnionAdjacentContoursXld(double MaxDistAbs, double MaxDistRel, const char* Mode) const

HXLDCont HXLDCont::UnionAdjacentContoursXld(double MaxDistAbs, double MaxDistRel, const wchar_t* Mode) const   ( Windows only)

static void HOperatorSet.UnionAdjacentContoursXld(HObject contours, out HObject unionContours, HTuple maxDistAbs, HTuple maxDistRel, HTuple mode)

HXLDCont HXLDCont.UnionAdjacentContoursXld(double maxDistAbs, double maxDistRel, string mode)

def union_adjacent_contours_xld(contours: HObject, max_dist_abs: float, max_dist_rel: float, mode: str) -> HObject

Description

The operator union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld unifies all contours of the input XLD contour array (ContoursContoursContourscontourscontours) whose end points are close together. The unified contour consists of the concatenation of the contour points of the input contours. If necessary, the order of these input contour points is flipped, so that the end points of the contours that have to be connected are direct neighbors in the resulting point list. This operation is repeated until there are no more unconnected adjacent contours left. As a result all the contours that are newly created by unification, as well as the input contours that could not be connected with any other contour, are returned in UnionContoursUnionContoursUnionContoursunionContoursunion_contours.

Parameters

The parameters MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs and MaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel are used to define the conditions for the proximity of two contours. In principle, the measures for these parameters depend on the order in which each pair of contours is evaluated, i.e., which contour is used as reference contour that is to be joined with the second contour. To avoid this dependency, the respective measures are evaluated in both directions and the order of contours is chosen that results in the smaller value for these measures. Note that in the illustrations below, the contour on the left is always used as the reference contour. The parameter ModeModeModemodemode controls the handling of the attributes of the input contours.

MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs

The parameter MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs defines the maximum accepted absolute distance between the two contours. The distance is measured along the regression line of the reference contour. Thus, it is the length of the projection of the gap between the two contours onto the regression line of the reference contour.

image/svg+xml a
MaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel

The parameter MaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel defines the maximum accepted relative distance between the two contours. The relative distance is calculated by dividing the distance a (see the description of the parameter MaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs) by the length b of the reference contour.

image/svg+xml a b

The order for connecting adjacent contours depends mainly on the distance of the neighbored end points: the contours with the smallest distance are connected first. If there are two pairs of contours with the same distance, first the contour pair that does not contain the shortest contour is connected.

ModeModeModemodemode

Finally, by the parameter ModeModeModemodemode it is possible to control how to handle the attributes that may come with input contours. For example, the operator edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixedges_sub_pix attaches to every contour point attributes like the local orientation, the edge response, and the edge direction. Choosing the default value 'attr_keep'"attr_keep""attr_keep""attr_keep""attr_keep", all attributes are copied to the output, and - if a contour has to be flipped for connecting it with another one - they are adapted to the new orientation. With a great number of input contours, however, it may be sensible to ignore the attributes for performance reasons, if they are not needed for further calculations. For this the value 'attr_forget'"attr_forget""attr_forget""attr_forget""attr_forget" has to be passed.

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.

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 relation to the length of the longer contour.

Default: 1.0

Value range: 0.0 ≤ MaxDistRel MaxDistRel MaxDistRel maxDistRel max_dist_rel

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_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldunion_cocircular_contours_xld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXldunion_straight_contours_xld, union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldunion_cotangential_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