KlassenKlassenKlassenKlassen | | | | Operatoren

union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld (Operator)

Name

union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldunion_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)

Herror union_cotangential_contours_xld(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)

HXLDContArray HXLDContArray::UnionCotangentialContoursXld(const HTuple& FitClippingLength, const HTuple& FitLength, const HTuple& MaxTangAngle, const HTuple& MaxDist, const HTuple& MaxDistPerp, const HTuple& MaxOverlap, const HTuple& Mode) const

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

void HOperatorSetX.UnionCotangentialContoursXld(
[in] IHUntypedObjectX* Contours, [out] IHUntypedObjectX*UnionContours, [in] VARIANT FitClippingLength, [in] VARIANT FitLength, [in] VARIANT MaxTangAngle, [in] VARIANT MaxDist, [in] VARIANT MaxDistPerp, [in] VARIANT MaxOverlap, [in] VARIANT Mode)

IHXLDContX* HXLDContX.UnionCotangentialContoursXld(
[in] double FitClippingLength, [in] VARIANT FitLength, [in] double MaxTangAngle, [in] double MaxDist, [in] double MaxDistPerp, [in] double MaxOverlap, [in] BSTR Mode)

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_xldUnionCotangentialContoursXldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld vereinigt Konturen gemäß der lokalen Krümmungen an ihren Endpunkten.

Parameter

FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength

Dazu werden zunächst die für die jeweiligen Konturen ContoursContoursContoursContoursContourscontours zu betrachtenden Endstücke bestimmt. FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength 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

FitLengthFitLengthFitLengthFitLengthFitLengthfitLength

FitLengthFitLengthFitLengthFitLengthFitLengthfitLength 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""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:

MaxTangAngleMaxTangAngleMaxTangAngleMaxTangAngleMaxTangAnglemaxTangAngle

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

image/svg+xml a

MaxDistMaxDistMaxDistMaxDistMaxDistmaxDist

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

image/svg+xml a

MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp

Mit MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp wird der maximale Abstand der Endpunkte senkrecht zu den Tangentenrichtungen bestimmt. Dieser Abstand wird aus dem Maximum des Abstands des Endpunkts der ersten Kontur zu der Tangente der zweiten Kontur und des Abstands des Endpunkts der zweiten Kontur zu der Tangente der ersten Kontur berechnet.

image/svg+xml a b

MaxOverlapMaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap

Die Überlappung der Konturen wird mit dem Parameter MaxOverlapMaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap 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 MaxOverlapMaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap sein. Im Gegensatz zu den vorherigen Schwellwerten kann MaxOverlapMaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap auch negative Werte bekommen. Negative Werte bezeichnen dann den minimalen Abstand der Endpunkte in Tangentenrichtung.

image/svg+xml a b

Es ist möglich, dass eine Kontur durch union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld 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 ModeModeModeModeModemode gibt an, ob bestehende Attribute in die vereinigten Konturen kopiert werden sollen. 'attr_keep'"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""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_xldUnionAdjacentContoursXldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXld).

Parallelisierung

Parameter

ContoursContoursContoursContoursContourscontours (input_object)  xld_cont-array objectHXLDContHXLDContHXLDContArrayHXLDContXHobject

Eingabekonturen.

UnionContoursUnionContoursUnionContoursUnionContoursUnionContoursunionContours (output_object)  xld_cont-array objectHXLDContHXLDContHXLDContArrayHXLDContXHobject *

Ausgabekonturen.

FitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthFitClippingLengthfitClippingLength (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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 fitClippingLength

FitLengthFitLengthFitLengthFitLengthFitLengthfitLength (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / string) (double / string) (double / HString) (double / char*) (double / BSTR) (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""auto"

Typischer Wertebereich: 0.0 ≤ FitLength FitLength FitLength FitLength FitLength fitLength

MaxTangAngleMaxTangAngleMaxTangAngleMaxTangAngleMaxTangAnglemaxTangAngle (input_control)  angle.rad HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Maximale Richtungsdifferenz der Tangenten.

Defaultwert: 0.78539816

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

MaxDistMaxDistMaxDistMaxDistMaxDistmaxDist (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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 maxDist

MaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpMaxDistPerpmaxDistPerp (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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 maxDistPerp

MaxOverlapMaxOverlapMaxOverlapMaxOverlapMaxOverlapmaxOverlap (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Maximale Überlappung zweier Konturen.

Defaultwert: 2.0

Wertevorschläge: 2.0, 5.0, 10.0, 20.0

ModeModeModeModeModemode (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Modus für die Behandlung der Konturattribute

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

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

Vorgänger

split_contours_xldsplit_contours_xldSplitContoursXldsplit_contours_xldSplitContoursXldSplitContoursXld, select_contours_xldselect_contours_xldSelectContoursXldselect_contours_xldSelectContoursXldSelectContoursXld

Alternativen

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXld, union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXld, union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXld

Siehe auch

edges_sub_pixedges_sub_pixEdgesSubPixedges_sub_pixEdgesSubPixEdgesSubPix, threshold_sub_pixthreshold_sub_pixThresholdSubPixthreshold_sub_pixThresholdSubPixThresholdSubPix, gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld, get_contour_xldget_contour_xldGetContourXldget_contour_xldGetContourXldGetContourXld, get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldget_contour_attrib_xldGetContourAttribXldGetContourAttribXld

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren