union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld (Operator)

Name

union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld — Vereinigen von kotangentialen Konturen.

Signatur

union_cotangential_contours_xld(Contours : UnionContours : FitClippingLength, FitLength, MaxTangAngle, MaxDist, MaxDistPerp, MaxOverlap, Mode : )

Herror union_cotangential_contours_xld(const Hobject Contours, Hobject* UnionContours, double FitClippingLength, double FitLength, double MaxTangAngle, double MaxDist, double MaxDistPerp, double MaxOverlap, const char* Mode)

Herror T_union_cotangential_contours_xld(const Hobject Contours, Hobject* UnionContours, const Htuple FitClippingLength, const Htuple FitLength, const Htuple MaxTangAngle, const Htuple MaxDist, const Htuple MaxDistPerp, const Htuple MaxOverlap, const Htuple Mode)

void UnionCotangentialContoursXld(const HObject& Contours, HObject* UnionContours, const HTuple& FitClippingLength, const HTuple& FitLength, const HTuple& MaxTangAngle, const HTuple& MaxDist, const HTuple& MaxDistPerp, const HTuple& MaxOverlap, const HTuple& Mode)

HXLDCont HXLDCont::UnionCotangentialContoursXld(double FitClippingLength, const HTuple& FitLength, double MaxTangAngle, double MaxDist, double MaxDistPerp, double MaxOverlap, const HString& Mode) const

HXLDCont HXLDCont::UnionCotangentialContoursXld(double FitClippingLength, double FitLength, double MaxTangAngle, double MaxDist, double MaxDistPerp, double MaxOverlap, const HString& Mode) const

HXLDCont HXLDCont::UnionCotangentialContoursXld(double FitClippingLength, double FitLength, double MaxTangAngle, double MaxDist, double MaxDistPerp, double MaxOverlap, const char* Mode) const

HXLDCont HXLDCont::UnionCotangentialContoursXld(double FitClippingLength, double FitLength, double MaxTangAngle, double MaxDist, double MaxDistPerp, double MaxOverlap, const wchar_t* Mode) const   (Nur Windows)

static void HOperatorSet.UnionCotangentialContoursXld(HObject contours, out HObject unionContours, HTuple fitClippingLength, HTuple fitLength, HTuple maxTangAngle, HTuple maxDist, HTuple maxDistPerp, HTuple maxOverlap, HTuple mode)

HXLDCont HXLDCont.UnionCotangentialContoursXld(double fitClippingLength, HTuple fitLength, double maxTangAngle, double maxDist, double maxDistPerp, double maxOverlap, string mode)

HXLDCont HXLDCont.UnionCotangentialContoursXld(double fitClippingLength, double fitLength, double maxTangAngle, double maxDist, double maxDistPerp, double maxOverlap, string mode)

Beschreibung

Der Operator union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXld vereinigt Konturen gemäß der lokalen Krümmungen an ihren Endpunkten.

Parameter

FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength

Dazu werden zunächst die für die jeweiligen Konturen ContoursContoursContoursContourscontours zu betrachtenden Endstücke bestimmt. FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength dient dazu, die Konturen um eine bestimmte euklidische Länge zu beschneiden, so dass eventuelle Artefakte an den Enden der Konturen für die weiteren Berechnungen ignoriert werden können.

image/svg+xml a a
FitLengthFitLengthFitLengthFitLengthfitLength

FitLengthFitLengthFitLengthFitLengthfitLength legt die euklidische Länge der für die Vereinigung zu berücksichtigenden Endstücke der Konturen fest. D.h., an jeder Seite einer Kontur werden einem Endstück soviele Punkte zugeordnet, dass die Länge des Endstücks mindestens dem übergebenen Wert entspricht. Wird kein numerischer Wert sondern der Wert 'auto'"auto""auto""auto""auto" übergeben, wird jede Eingangskontur in Geraden und Kreisbögen segmentiert. Von diesen Segmenten dienen dann die äußersten Segmente als Endstücke der Kontur. Da dieses Verfahren sehr rechenintensiv ist, ist eine numerisch festgelegte Länge, wenn möglich, vorzuziehen.

image/svg+xml a a

Der Operator versucht nun, an jedes Endstück einer Kontur einen Kreis anzupassen. Von der ursprünglichen Kontur werden die äußersten Punkte der Kontur ermittelt, die nah genug (gemessen am mittleren quadratischen Fehler der Kreisanpassung) an ihrem jeweiligen Kreis liegen. Die Kreistangenten an diesen Punkten bestimmen die lokalen Krümmungen an den Enden der jeweiligen Kontur.

Kann kein Kreis an ein Endstück angepasst werden, wird statt dessen versucht, eine Regressionsgerade anzupassen. Die lokale Krümmung der Kontur an ihren Enden entspricht dann der Richtung der Regressionsgeraden.

image/svg+xml

Mithilfe der berechneten lokalen Krümmungen an den Endpunkten der einzelnen Eingabekonturen können nun die verschiedenen Eingabekonturen vereinigt werden. Zwei Konturen werden dann vereinigt, wenn sämtliche Schwellwerte, eingehalten werden:

MaxTangAngleMaxTangAngleMaxTangAngleMaxTangAnglemaxTangAngle

Mit dem Parameter MaxTangAngleMaxTangAngleMaxTangAngleMaxTangAnglemaxTangAngle wird der maximale Winkel zwischen den Tangenten zweier Konturen angegeben.

image/svg+xml a
MaxDistMaxDistMaxDistMaxDistmaxDist

Der Parameter MaxDistMaxDistMaxDistMaxDistmaxDist gibt die maximale Entfernung der Endpunkte der Konturen voneinander an.

image/svg+xml a
MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp

Mit MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp wird der maximale Abstand der Endpunkte senkrecht zu den Tangentenrichtungen bestimmt. Dieser Abstand ist das Minimum der Abstände zwischen den Endpunkten der Konturen senkrecht zur jeweils anderen Kontur.

image/svg+xml a b
MaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap

Die Überlappung der Konturen wird mit dem Parameter MaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap berücksichtigt. Das Ausmaß der Überlappung wird durch den Abstand zwischen dem Endpunkt der ersten Kontur und seiner Projektion auf die Tangente der zweiten Kontur und durch den Abstand zwischen dem Endpunkt der zweiten Kontur und seiner Projektion auf die Tangente der ersten Kontur berechnet. Beide Abstände müssen kürzer als MaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap sein. Im Gegensatz zu den vorherigen Schwellwerten kann MaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap auch negativ sein. Negative Werte bezeichnen dann den minimalen Abstand der Endpunkte in Tangentenrichtung.

image/svg+xml a b
. Hier sind 'a'"a""a""a""a" und 'b'"b""b""b""b" negativ. In der Referenz des Operators union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld finden Sie eine Illustration, in der 'a'"a""a""a""a" und 'b'"b""b""b""b" positiv sind.

Es ist möglich, dass eine Kontur durch union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXld geschlossen wird oder mehrere Konturen zu einer einzigen geschlossenen Kontur vereinigt werden, falls die oben genannten Kriterien für die Endstücke erfüllt werden. Es ist zu beachten, dass bereits geschlossene Konturen nicht mehr in eine Vereinigung einbezogen werden.

Gibt es Konturpaare, für die die oben genannten Kriterien zutreffen, wird intern die Reihenfolge der Vereinigungen berechnet. Hierfür werden die einzelnen möglichen Vereinigungen bewertet. Je näher die oben beschriebenen Winkel und Abstände an 0 liegen, desto höher ist ihre Bewertungszahl. Die Reihenfolge der Konturenvereinigung richtet sich dann nach der Höhe dieser Bewertung.

Der Parameter ModeModeModeModemode gibt an, ob bestehende Attribute in die vereinigten Konturen kopiert werden sollen. 'attr_keep'"attr_keep""attr_keep""attr_keep""attr_keep" kopiert die Attribute, was die Laufzeit negativ beeinflussen kann, und 'attr_forget'"attr_forget""attr_forget""attr_forget""attr_forget" veranlasst den Operator, die Attribute zu ignorieren. Weitere Details finden sich bei der Beschreibung des Parameters Mode des Operators union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXld).

Ausführungsinformationen

Parameter

ContoursContoursContoursContourscontours (input_object)  xld_cont-array objectHXLDContHXLDContHobject

Eingabekonturen.

UnionContoursUnionContoursUnionContoursUnionContoursunionContours (output_object)  xld_cont-array objectHXLDContHXLDContHobject *

Ausgabekonturen.

FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Länge des für die Tangentenbestimmung zu überspringenden Konturenstücks.

Defaultwert: 0.0

Typischer Wertebereich: 0.0 ≤ FitClippingLength FitClippingLength FitClippingLength FitClippingLength fitClippingLength

FitLengthFitLengthFitLengthFitLengthfitLength (input_control)  real HTupleHTupleHtuple (real / string) (double / string) (double / HString) (double / char*)

Länge des für die Tangentenbestimmung zu benutzenden Konturenstücks.

Defaultwert: 30.0

Wertevorschläge: 10.0, 20.0, 30.0, 'auto'"auto""auto""auto""auto"

Typischer Wertebereich: 0.0 ≤ FitLength FitLength FitLength FitLength fitLength

MaxTangAngleMaxTangAngleMaxTangAngleMaxTangAnglemaxTangAngle (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Maximale Richtungsdifferenz der Tangenten.

Defaultwert: 0.78539816

Typischer Wertebereich: 0.0 ≤ MaxTangAngle MaxTangAngle MaxTangAngle MaxTangAngle maxTangAngle ≤ 3.1415926

MaxDistMaxDistMaxDistMaxDistmaxDist (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximaler Abstand der Endpunkte.

Defaultwert: 25.0

Wertevorschläge: 5.0, 10.0, 25.0, 50.0

Typischer Wertebereich: 0.0 ≤ MaxDist MaxDist MaxDist MaxDist maxDist

MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximaler Abstand der Endpunkte senkrecht zu den Tangenten.

Defaultwert: 10.0

Wertevorschläge: 2.0, 5.0, 10.0, 20.0

Typischer Wertebereich: 0.0 ≤ MaxDistPerp MaxDistPerp MaxDistPerp MaxDistPerp maxDistPerp

MaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximale Überlappung zweier Konturen.

Defaultwert: 2.0

Wertevorschläge: 2.0, 5.0, 10.0, 20.0

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Modus für die Behandlung der Konturattribute

Defaultwert: 'attr_forget' "attr_forget" "attr_forget" "attr_forget" "attr_forget"

Werteliste: 'attr_forget'"attr_forget""attr_forget""attr_forget""attr_forget", 'attr_keep'"attr_keep""attr_keep""attr_keep""attr_keep"

Vorgänger

split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldSelectContoursXld

Alternativen

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld, union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldUnionCocircularContoursXld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXldUnionStraightContoursXld, union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXld

Siehe auch

edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix, threshold_sub_pixthreshold_sub_pixThresholdSubPixThresholdSubPixThresholdSubPix, gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXld, get_contour_xldget_contour_xldGetContourXldGetContourXldGetContourXld, get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld

Modul

Foundation