Name
union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXld — Zusammenfassen von Konturen, die zu denselben Kreisen gehören.
Herror union_cocircular_contours_xld(const Hobject Contours, Hobject* UnionContours, double MaxArcAngleDiff, double MaxArcOverlap, double MaxTangentAngle, double MaxDist, double MaxRadiusDiff, double MaxCenterDist, const char* MergeSmallContours, const Hlong Iterations)
Herror T_union_cocircular_contours_xld(const Hobject Contours, Hobject* UnionContours, const Htuple MaxArcAngleDiff, const Htuple MaxArcOverlap, const Htuple MaxTangentAngle, const Htuple MaxDist, const Htuple MaxRadiusDiff, const Htuple MaxCenterDist, const Htuple MergeSmallContours, const Htuple Iterations)
Herror union_cocircular_contours_xld(Hobject Contours, Hobject* UnionContours, const HTuple& MaxArcAngleDiff, const HTuple& MaxArcOverlap, const HTuple& MaxTangentAngle, const HTuple& MaxDist, const HTuple& MaxRadiusDiff, const HTuple& MaxCenterDist, const HTuple& MergeSmallContours, const HTuple& Iterations)
HXLDContArray HXLDContArray::UnionCocircularContoursXld(const HTuple& MaxArcAngleDiff, const HTuple& MaxArcOverlap, const HTuple& MaxTangentAngle, const HTuple& MaxDist, const HTuple& MaxRadiusDiff, const HTuple& MaxCenterDist, const HTuple& MergeSmallContours, const HTuple& Iterations) const
void UnionCocircularContoursXld(const HObject& Contours, HObject* UnionContours, const HTuple& MaxArcAngleDiff, const HTuple& MaxArcOverlap, const HTuple& MaxTangentAngle, const HTuple& MaxDist, const HTuple& MaxRadiusDiff, const HTuple& MaxCenterDist, const HTuple& MergeSmallContours, const HTuple& Iterations)
HXLDCont HXLDCont::UnionCocircularContoursXld(const HTuple& MaxArcAngleDiff, const HTuple& MaxArcOverlap, const HTuple& MaxTangentAngle, const HTuple& MaxDist, const HTuple& MaxRadiusDiff, const HTuple& MaxCenterDist, const HString& MergeSmallContours, Hlong Iterations) const
HXLDCont HXLDCont::UnionCocircularContoursXld(double MaxArcAngleDiff, double MaxArcOverlap, double MaxTangentAngle, double MaxDist, double MaxRadiusDiff, double MaxCenterDist, const HString& MergeSmallContours, Hlong Iterations) const
HXLDCont HXLDCont::UnionCocircularContoursXld(double MaxArcAngleDiff, double MaxArcOverlap, double MaxTangentAngle, double MaxDist, double MaxRadiusDiff, double MaxCenterDist, const char* MergeSmallContours, Hlong Iterations) const
void HOperatorSetX.UnionCocircularContoursXld(
[in] IHUntypedObjectX* Contours, [out] IHUntypedObjectX** UnionContours, [in] VARIANT MaxArcAngleDiff, [in] VARIANT MaxArcOverlap, [in] VARIANT MaxTangentAngle, [in] VARIANT MaxDist, [in] VARIANT MaxRadiusDiff, [in] VARIANT MaxCenterDist, [in] VARIANT MergeSmallContours, [in] VARIANT Iterations)
IHXLDContX* HXLDContX.UnionCocircularContoursXld(
[in] VARIANT MaxArcAngleDiff, [in] VARIANT MaxArcOverlap, [in] VARIANT MaxTangentAngle, [in] VARIANT MaxDist, [in] VARIANT MaxRadiusDiff, [in] VARIANT MaxCenterDist, [in] BSTR MergeSmallContours, [in] Hlong Iterations)
static void HOperatorSet.UnionCocircularContoursXld(HObject contours, out HObject unionContours, HTuple maxArcAngleDiff, HTuple maxArcOverlap, HTuple maxTangentAngle, HTuple maxDist, HTuple maxRadiusDiff, HTuple maxCenterDist, HTuple mergeSmallContours, HTuple iterations)
HXLDCont HXLDCont.UnionCocircularContoursXld(HTuple maxArcAngleDiff, HTuple maxArcOverlap, HTuple maxTangentAngle, HTuple maxDist, HTuple maxRadiusDiff, HTuple maxCenterDist, string mergeSmallContours, int iterations)
HXLDCont HXLDCont.UnionCocircularContoursXld(double maxArcAngleDiff, double maxArcOverlap, double maxTangentAngle, double maxDist, double maxRadiusDiff, double maxCenterDist, string mergeSmallContours, int iterations)
Der Operator union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXld vereint alle
Konturen, die zu denselben Kreisen gehören. Das Ergebnis ist eine
Menge von Konturen, in der Konturen verbunden sind, die auf
denselben Kreisen liegen.
Der Algorithmus versucht Konturen zusammenzufassen, indem er Kreise
an jede Kontur anpasst und diese bezüglich Radius, Kreismittelpunkt
und Abstand auf dem Kreisbogen vergleicht. Die Liste der Konturen
wird in aufsteigender Reihenfolge der Radiuslänge
bearbeitet. Konturen, an die kein Kreis angepasst werden kann,
werden in einem optionalen zweiten Durchgang hinzugefügt.
Die Schwellwertparameter bestimmen, ob Konturen zu demselben Kreis
gehören. Alle Schwellwerte müssen gleichzeitig erfüllt werden, damit
zwei Konturen verbunden werden.
Parameter
- MaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffmaxArcAngleDiff
-
Der Parameter
MaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffMaxArcAngleDiffmaxArcAngleDiff definiert die maximale Winkeldistanz auf
dem Kreisbogen zwischen dem Ende der einen und dem Start der zweiten
Kontur.
- MaxArcOverlapMaxArcOverlapMaxArcOverlapMaxArcOverlapMaxArcOverlapmaxArcOverlap
-
MaxArcOverlapMaxArcOverlapMaxArcOverlapMaxArcOverlapMaxArcOverlapmaxArcOverlap bestimmt die Winkeldistanz, um die
sich zwei Konturen überlappen dürfen.
- MaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAnglemaxTangentAngle
-
MaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAnglemaxTangentAngle beschreibt den maximalen Winkel zwischen den
Kreistangenten an den zwei Konturenden und der Verbindungsstrecke
zwischen ihnen.
- MaxDistMaxDistMaxDistMaxDistMaxDistmaxDist
-
MaxDistMaxDistMaxDistMaxDistMaxDistmaxDist ist die Schwelle für die absolute
Pixeldistanz zwischen End- und Startpunkt der
Konturen.
- MaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffmaxRadiusDiff
-
MaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffmaxRadiusDiff beschreibt die maximale Differenz
der Radien der angepassten Kreise,
- MaxCenterDistMaxCenterDistMaxCenterDistMaxCenterDistMaxCenterDistmaxCenterDist
-
MaxCenterDistMaxCenterDistMaxCenterDistMaxCenterDistMaxCenterDistmaxCenterDist die
maximale euklidische Distanz zwischen den Mittelpunkten der
angepassten Kreise.
- MergeSmallContoursMergeSmallContoursMergeSmallContoursMergeSmallContoursMergeSmallContoursmergeSmallContours
-
Wenn der Parameter MergeSmallContoursMergeSmallContoursMergeSmallContoursMergeSmallContoursMergeSmallContoursmergeSmallContours auf 'true'"true""true""true""true""true"
gesetzt ist, werden auch Konturen ohne angepasste Kreise
verschmolzen. Eine solche Kontur wird als passend angenommen, wenn
jeder Konturpunkt einen Abstand zum Kreismittelpunkt innerhalb von
MaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffMaxRadiusDiffmaxRadiusDiff zum Kreisradius besitzt und wenn der Winkel
der Verbindungsstrecke von zwei aufeinander folgenden Punkten der
Kontur innerhalb der Grenze von MaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAngleMaxTangentAnglemaxTangentAngle zur
Kreistangenten liegt. Zusätzlich muss die Bedingung bezüglich
MaxDistMaxDistMaxDistMaxDistMaxDistmaxDist erfüllt sein.
- IterationsIterationsIterationsIterationsIterationsiterations
-
Die Verbindung von Konturen führt zu neuen Kreisparametern. Deshalb
kann eine Iteration des Algorithmus zu weiteren Verbindungen
führen. Der Parameter IterationsIterationsIterationsIterationsIterationsiterations gibt die Anzahl der
Iterationen an. Mehr als zwei Iterationen sind selten nötig.
Für jede mögliche Zusammenfassung von zwei Konturen werden die
Kosten berechnet. Diese ergeben sich aus der Summation der Distanzen
bezüglich der obigen Schwellwerte. Die Distanzen werden für die
Vergleichbarkeit mit den Schwellwerten skaliert, so dass sie
zwischen 0.0 und 1.0 liegen. Wenn zwei oder mehr
Konturstartpunkte an einen Konturendpunkt passen, so wird die
Verbindung mit den kleinsten Kosten verschmolzen.
Vor Aufruf sollte sichergestellt sein, dass sich die Konturen durch
Linien und Kreisbögen annähern lassen. Dies kann zum Beispiel durch
eine Vorverarbeitung mit dem Operator split_contours_xldsplit_contours_xldSplitContoursXldsplit_contours_xldSplitContoursXldSplitContoursXld
erreicht werden.
Bereits geschlossene Konturen werden nicht mehr in die Vereinigung
einbezogen. D.h., auch wenn eine Kontur auf dem gleichen Kreis liegt wie eine
bereits geschlossene Kreiskontur, werden beide Konturen getrennt
zurückgeliefert
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Zu vereinigende Konturen.
Maximale Winkeldistanz zwischen zwei Kreisbögen.
Defaultwert: 0.5
Wertevorschläge: 0.25, 0.5, 0.75, 1.0
Maximale Überlappung von zwei Kreisbögen.
Defaultwert: 0.1
Wertevorschläge: 0.0, 0.1, 0.2
Maximaler Winkel zwischen Verbindungsstrecke
und Tangenten der Kreisbögen.
Defaultwert: 0.2
Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5
Maximale Absolutlänge der Lücke zwischen
zwei Kreisbögen in Bildpunkten.
Defaultwert: 30
Wertevorschläge: 10, 30, 50, 70
Maximale Differenz der Radien der Kreise an
zwei Kreisbögen.
Defaultwert: 10
Wertevorschläge: 10, 20, 30
Maximale Distanz zwischen den Kreismittelpunkten
zweier Kreisbögen.
Defaultwert: 10
Wertevorschläge: 10, 20, 30
Legt fest, ob auch Konturen ohne angepassten
Kreis vereinigt werden sollen.
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Anzahl der Iterationen.
Defaultwert: 1
Wertevorschläge: 1, 2
O(n^2) für n Kontouren.
union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXld gibt 2 (H_MSG_TRUE) zurück,
wenn alle Parameter korrekt angegeben sind.
split_contours_xldsplit_contours_xldSplitContoursXldsplit_contours_xldSplitContoursXldSplitContoursXld,
select_contours_xldselect_contours_xldSelectContoursXldselect_contours_xldSelectContoursXldSelectContoursXld
union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXld,
union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXld,
union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXld,
union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXld,
union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXld
Foundation