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
FitClippingLength
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
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:
MaxTangAngle
Mit dem Parameter MaxTangAngle
wird der maximale Winkel
zwischen den Tangenten zweier Konturen angegeben.
MaxDist
Der Parameter MaxDist
gibt die maximale Entfernung der Endpunkte
der Konturen voneinander an.
MaxDistPerp
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.
MaxOverlap
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
).
Contours
(input_object) xld_cont-array →
object
Eingabekonturen.
UnionContours
(output_object) xld_cont-array →
object
Ausgabekonturen.
FitClippingLength
(input_control) real →
(real)
Länge des für die Tangentenbestimmung zu überspringenden Konturenstücks.
Defaultwert: 0.0
Typischer Wertebereich: 0.0
≤
FitClippingLength
FitLength
(input_control) real →
(real / string)
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
MaxTangAngle
(input_control) angle.rad →
(real)
Maximale Richtungsdifferenz der Tangenten.
Defaultwert: 0.78539816
Typischer Wertebereich: 0.0
≤
MaxTangAngle
≤
3.1415926
MaxDist
(input_control) real →
(real)
Maximaler Abstand der Endpunkte.
Defaultwert: 25.0
Wertevorschläge: 5.0, 10.0, 25.0, 50.0
Typischer Wertebereich: 0.0
≤
MaxDist
MaxDistPerp
(input_control) real →
(real)
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
MaxOverlap
(input_control) real →
(real)
Maximale Überlappung zweier Konturen.
Defaultwert: 2.0
Wertevorschläge: 2.0, 5.0, 10.0, 20.0
Mode
(input_control) string →
(string)
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