union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXld (Operator)

Name

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXld — Vereinigen von kollinearen Konturen.

Signatur

union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )

Herror union_collinear_contours_xld(const Hobject Contours, Hobject* UnionContours, double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, const char* Mode)

Herror T_union_collinear_contours_xld(const Hobject Contours, Hobject* UnionContours, const Htuple MaxDistAbs, const Htuple MaxDistRel, const Htuple MaxShift, const Htuple MaxAngle, const Htuple Mode)

void UnionCollinearContoursXld(const HObject& Contours, HObject* UnionContours, const HTuple& MaxDistAbs, const HTuple& MaxDistRel, const HTuple& MaxShift, const HTuple& MaxAngle, const HTuple& Mode)

HXLDCont HXLDCont::UnionCollinearContoursXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, const HString& Mode) const

HXLDCont HXLDCont::UnionCollinearContoursXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, const char* Mode) const

HXLDCont HXLDCont::UnionCollinearContoursXld(double MaxDistAbs, double MaxDistRel, double MaxShift, double MaxAngle, const wchar_t* Mode) const   (Nur Windows)

static void HOperatorSet.UnionCollinearContoursXld(HObject contours, out HObject unionContours, HTuple maxDistAbs, HTuple maxDistRel, HTuple maxShift, HTuple maxAngle, HTuple mode)

HXLDCont HXLDCont.UnionCollinearContoursXld(double maxDistAbs, double maxDistRel, double maxShift, double maxAngle, string mode)

Beschreibung

Der Operator union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld vereinigt aus einer Menge von Konturen (ContoursContoursContoursContourscontours) diejenigen miteinander, die zueinander kollinear sind. Die Vereinigung zweier Konturen ergibt sich aus der Verkettung der Konturpunkte der beiden Eingabekonturen. Sie werden zusammen mit den Konturen, die mit keiner anderen Kontur vereinigt werden konnten, in UnionContoursUnionContoursUnionContoursUnionContoursunionContours zurück gegeben.

Typische Anwendungen

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld kann zum Schließen von Lücken in extrahierten Kanten oder Linien verwendet werden. Diese Lücken können z.B. durch geringen Kontrast in den Bildern entstehen. Der Operator kann auch verwendet werden, um Konturen zu verbinden, die aufgrund von Kreuzungspunkten der Kanten oder Linien voneinander getrennt sind. Typischerweise ist union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld Teil des Prozesses, in dem extrahierte Kanten oder Linien gruppiert und ausgewählt werden, um semantisch aussagekräftige Einheiten zu bilden.

Beispiel

Das folgende Beispiel zeigt die Wirkung von union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld. Auf der linken Seite ist eine Menge unzusammenhängender Konturen dargestellt. Die Konturen, die jeweils auf der selben Seite des Rechtecks liegen, sind näherungsweise kollinear. Auf der rechten Seite ist das Ergebnis von union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld dargestellt. Es zeigt, dass die Konturen, die näherungsweise kollinear waren miteinander vereinigt wurden. Die Konturen, die mehr oder weniger senkrecht zueinander stehen, wurden nicht miteinander vereinigt.

(1) (2)
(1) Unzusammenhängende Eingabekonturen. (2) Ausgabekonturen, bei denen die näherungsweise kollinearen Konturen miteinander vereinigt sind.

Parameter

Die Parameter MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs, MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRel, MaxShiftMaxShiftMaxShiftMaxShiftmaxShift und MaxAngleMaxAngleMaxAngleMaxAnglemaxAngle legen fest, wann zwei Konturen als kollinear angesehen werden. Der Parameter ModeModeModeModemode steuert die Behandlung von Attributen der Eingabekonturen.

Prinzipiell sind die Maße für die ersten drei Parameter reihenfolgenabhängig, d.h., sie hängen davon ab, welche Kontur als Referenzkontur betrachtet wird, die durch die zweite Kontur erweitert werden soll. Um diese Reihenfolgenabhängigkeit zu vermeiden, werden die Maße jeweils in beiden Richtungen ermittelt. Es wird dann die Reihenfolge verwendet, die zu den kleineren Werten für die drei Maße führt. Beachten Sie, dass in den Illustrationen unten immer die linke Kontur als Referenzkontur verwendet wird.

MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs

Der Parameter MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs legt den maximalen Abstand zwischen zwei zu verbindenden Konturen fest. Der Abstand wird entlang der Regressionsgeraden der Referenzkontur gemessen. Es handelt sich also um die Länge der Projektion der Lücke zwischen den beiden Konturen auf die Regressionsgerade der Referenzkontur.

image/svg+xml a
MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRel

Der Parameter MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRel legt den maximalen relativen Abstand zwischen zwei zu verbindenden Konturen fest. Zur Berechnung des relativen Abstands wird der absolute Abstand a (siehe die Beschreibung des Parameters MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs) durch die Länge b der Referenzkontur geteilt.

image/svg+xml a b
MaxShiftMaxShiftMaxShiftMaxShiftmaxShift

Der Parameter MaxShiftMaxShiftMaxShiftMaxShiftmaxShift legt den maximalen Abstand der zweiten Kontur von der Regressionsgeraden der Referenzkontur fest. Dieser Abstand wird senkrecht zur Regressionsgeraden der Referenzkontur gemessen.

image/svg+xml a
MaxAngleMaxAngleMaxAngleMaxAnglemaxAngle

Der Parameter MaxAngleMaxAngleMaxAngleMaxAnglemaxAngle legt den maximalen Winkel (im Bogenmaß) zwischen den Regressionsgeraden der beiden Konturen fest.

image/svg+xml a
ModeModeModeModemode

Der Parameter ModeModeModeModemode steuert die Behandlung der Attribute, die für die Eingabekonturen gesetzt sein können, z.B., wenn die Konturen mit edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix erzeugt wurden.

'attr_keep'"attr_keep""attr_keep""attr_keep""attr_keep"

Alle Attribute werden in die Ausgabekonturen kopiert.

Globale Attribute werden allerdings nur für solche Konturen übernommen, die nicht mit anderen Konturen vereinigt wurden. Im Allgemeinen ist es nicht möglich, aus den globalen Attributen von einzelnen Konturen die entsprechenden globalen Attribute einer vereinigten Kontur zu berechnen.

'attr_forget'"attr_forget""attr_forget""attr_forget""attr_forget"

Die Ausgabekonturen enthalten keine Attribute. Diese Einstellung kann aus Laufzeitgründen gewählt werden, wenn die Attribute in den folgenden Arbeitsschritten nicht benötigt werden.

Um abzufragen, welche Attribute verfügbar sind, kann query_contour_attribs_xldquery_contour_attribs_xldQueryContourAttribsXldQueryContourAttribsXldQueryContourAttribsXld verwendet werden.

Implementierungsdetails

Die Eingabekonturen werden paarweise analysiert und gegebenenfalls vereinigt. Dieser Prozess wird so oft wiederholt, bis keine weiteren Konturen mehr vereinigt werden können. Falls notwendig, wird die Reihenfolge umgekehrt, in der die Punkte innerhalb einer Kontur gespeichert sind, so dass die benachbarten Endpunkte der Konturen in der vereinigten Kontur direkt aufeinanderfolgen.

Zwei Konturen werden nur dann vereinigt, wenn alle Kriterien erfüllt sind, wenn also alle Maße kleiner als die mit den entsprechenden Parametern festgelegten Schwellwerte sind. Eine weitere Voraussetzung ist, dass sich die Konturen nur unwesentlich überlappen dürfen (siehe union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld für eine Illustration, die Überlappung zeigt). Es wird lediglich eine Überlappung von maximal 0.5 Pixeln toleriert. Um einen größeren Überlappungsbereich zuzulassen, kann union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld verwendet werden.

Neben der Suche nach Paaren von Konturen, die vereinigt werden können, ist die Reihenfolge, in der die Konturen vereinigt werden für das Verhalten von union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld wichtig. Hierfür werden alle Paare von Konturen durch die Berechnung eines Kostenmaßes bewertet. Als Kostenmaß wird die Summe der einzelnen Maße verwendet, wobei jedes Maß auf den entsprechend Schwellwert normiert wird, der mit den Parametern MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs, MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRel, MaxShiftMaxShiftMaxShiftMaxShiftmaxShift und MaxAngleMaxAngleMaxAngleMaxAnglemaxAngle festgelegt wurde. Das Paar von Konturen, welches die geringsten Kosten aufweist, wird als erstes vereinigt. Daraufhin werden die Kosten aktualisiert, um die neu erzeugte Kontur zu berücksichtigen. Basierend auf den aktualisierten Kosten wird das als nächstes zu vereinigende Paar ermittelt.

Die Definition von Kollinearität, wie sie in union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld verwendet wird, hängt von den Regressionsgeraden der einzelnen Konturen ab. Um unerwartete Ergebnisse zu vermeiden, sollten die Eingabekonturen einigermaßen geraden Linien entsprechen. Dies kann z.B. mit dem Operator segment_contours_xldsegment_contours_xldSegmentContoursXldSegmentContoursXldSegmentContoursXld erreicht werden. Es ist zu beachten, dass geschlossene Konturen mit keiner anderen Kontur vereinigt werden.

Einschränkungen und Alternativen

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld kann nur zum Vereinigen von Konturen verwendet werden, die näherungsweise auf einer Geraden liegen. Zum Vereinigen von Konturen, die genähert auf einem Kreis liegen, kann union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldUnionCocircularContoursXld verwendet werden. Um Konturen zu vereinigen, die beliebige Formen darstellen, kann union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXld verwendet werden. Sollen nur sehr kleine Lücken zwischen Konturen geschlossen werden, unabhängig von der Richtung in der die angrenzenden Konturen verlaufen, so kann hierfür union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXld verwendet werden.

Wenn die Konfigurationsmöglichkeiten von union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXld nicht ausreichen, können die Kriterien zur Vereinigung von Konturen mit union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld noch detaillierter festgelegt werden. Unter anderem können hiermit die maximale Überlappung der Konturen festgelegt und die Gesamtkosten der Vereinigung begrenzt werden. Durch letzteres kann verhindert werden, dass Paare von Konturen vereinigt werden, bei denen die Maße für mehrere Kriterien bereits nahe an den jeweiligen Schwellwerten liegen.

Ausführungsinformationen

Parameter

ContoursContoursContoursContourscontours (input_object)  xld_cont-array objectHXLDContHXLDContHobject

Eingabekonturen.

UnionContoursUnionContoursUnionContoursUnionContoursunionContours (output_object)  xld_cont-array objectHXLDContHXLDContHobject *

Ausgabekonturen.

MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbs (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximale Länge der Lücke zwischen zwei Konturen, gemessen entlang der Regressionsgeraden der Referenzkontur.

Defaultwert: 10.0

Typischer Wertebereich: 0.0 ≤ MaxDistAbs MaxDistAbs MaxDistAbs MaxDistAbs maxDistAbs

MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRel (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximale Länge der Lücke zwischen zwei Konturen, relativ zur Länge der Referenzkontur. Beides wird entlang der Regressionsgeraden der Referenzkontur gemessen.

Defaultwert: 1.0

Typischer Wertebereich: 0.0 ≤ MaxDistRel MaxDistRel MaxDistRel MaxDistRel maxDistRel

MaxShiftMaxShiftMaxShiftMaxShiftmaxShift (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximaler Abstand der zweiten Kontur von der Regressionsgeraden der Referenzkontur.

Defaultwert: 2.0

Typischer Wertebereich: 0.0 ≤ MaxShift MaxShift MaxShift MaxShift maxShift

MaxAngleMaxAngleMaxAngleMaxAnglemaxAngle (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximaler Winkel zwischen den Regressionsgeraden von zwei Konturen.

Defaultwert: 0.1

Typischer Wertebereich: 0.0 ≤ MaxAngle MaxAngle MaxAngle MaxAngle maxAngle ≤ 0.78539816339

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

Modus, der die Behandlung der Konturattribute festlegt.

Defaultwert: 'attr_keep' "attr_keep" "attr_keep" "attr_keep" "attr_keep"

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

Vorgänger

edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix, lines_gausslines_gaussLinesGaussLinesGaussLinesGauss, segment_contours_xldsegment_contours_xldSegmentContoursXldSegmentContoursXldSegmentContoursXld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldSelectContoursXld, select_shape_xldselect_shape_xldSelectShapeXldSelectShapeXldSelectShapeXld, split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXld, threshold_sub_pixthreshold_sub_pixThresholdSubPixThresholdSubPixThresholdSubPix

Nachfolger

fit_line_contour_xldfit_line_contour_xldFitLineContourXldFitLineContourXldFitLineContourXld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldSelectContoursXld, select_shape_xldselect_shape_xldSelectShapeXldSelectShapeXldSelectShapeXld

Alternativen

union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXldUnionStraightContoursXld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldUnionCocircularContoursXld, union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXld, union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXld

Siehe auch

get_contour_xldget_contour_xldGetContourXldGetContourXldGetContourXld, get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld, query_contour_attribs_xldquery_contour_attribs_xldQueryContourAttribsXldQueryContourAttribsXldQueryContourAttribsXld

Modul

Foundation