| Operatoren |
union_cotangential_contours_xld — Vereinigen von kotangentialen Konturen.
union_cotangential_contours_xld(Contours : UnionContours : FitClippingLength, FitLength, MaxTangAngle, MaxDist, MaxDistPerp, MaxOverlap, Mode : )
Der Operator union_cotangential_contours_xld vereinigt Konturen gemäß der lokalen Krümmungen an ihren Endpunkten.
Parameter
Dazu werden zunächst die für die jeweiligen Konturen Contours zu betrachtenden Endstücke bestimmt. FitClippingLength 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.
FitLength 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' ü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.
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.
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:
Mit dem Parameter MaxTangAngle wird der maximale Winkel zwischen den Tangenten zweier Konturen angegeben.
Der Parameter MaxDist gibt die maximale Entfernung der Endpunkte der Konturen voneinander an.
Mit MaxDistPerp 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.
Die Überlappung der Konturen wird mit dem Parameter MaxOverlap 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 MaxOverlap sein. Im Gegensatz zu den vorherigen Schwellwerten kann MaxOverlap auch negativ sein. Negative Werte bezeichnen dann den minimalen Abstand der Endpunkte in Tangentenrichtung.
Es ist möglich, dass eine Kontur durch union_cotangential_contours_xld 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 Mode gibt an, ob bestehende Attribute in die vereinigten Konturen kopiert werden sollen. 'attr_keep' kopiert die Attribute, was die Laufzeit negativ beeinflussen kann, und 'attr_forget' veranlasst den Operator, die Attribute zu ignorieren. Weitere Details finden sich bei der Beschreibung des Parameters Mode des Operators union_adjacent_contours_xld).
Eingabekonturen.
Ausgabekonturen.
Länge des für die Tangentenbestimmung zu überspringenden Konturenstücks.
Defaultwert: 0.0
Typischer Wertebereich: 0.0 ≤ FitClippingLength
Länge des für die Tangentenbestimmung zu benutzenden Konturenstücks.
Defaultwert: 30.0
Wertevorschläge: 10.0, 20.0, 30.0, 'auto'
Typischer Wertebereich: 0.0 ≤ FitLength
Maximale Richtungsdifferenz der Tangenten.
Defaultwert: 0.78539816
Typischer Wertebereich: 0.0 ≤ MaxTangAngle ≤ 3.1415926
Maximaler Abstand der Endpunkte.
Defaultwert: 25.0
Wertevorschläge: 5.0, 10.0, 25.0, 50.0
Typischer Wertebereich: 0.0 ≤ MaxDist
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
Maximale Überlappung zweier Konturen.
Defaultwert: 2.0
Wertevorschläge: 2.0, 5.0, 10.0, 20.0
Modus für die Behandlung der Konturattribute
Defaultwert: 'attr_forget'
Werteliste: 'attr_forget', 'attr_keep'
split_contours_xld, select_contours_xld
union_collinear_contours_xld, union_collinear_contours_ext_xld, union_cocircular_contours_xld, union_straight_contours_xld, union_adjacent_contours_xld
edges_sub_pix, threshold_sub_pix, gen_polygons_xld, get_contour_xld, get_contour_attrib_xld
Foundation
| Operatoren |