union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld (Operator)

Name

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld — 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)

def union_collinear_contours_xld(contours: HObject, max_dist_abs: float, max_dist_rel: float, max_shift: float, max_angle: float, mode: str) -> HObject

Beschreibung

Der Operator union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld vereinigt aus einer Menge von Konturen (ContoursContoursContoursContourscontourscontours) 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 UnionContoursUnionContoursUnionContoursUnionContoursunionContoursunion_contours zurück gegeben.

Typische Anwendungen

union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld. 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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 MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs, MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel, MaxShiftMaxShiftMaxShiftMaxShiftmaxShiftmax_shift und MaxAngleMaxAngleMaxAngleMaxAnglemaxAnglemax_angle legen fest, wann zwei Konturen als kollinear angesehen werden. Der Parameter ModeModeModeModemodemode steuert die Behandlung von Attributen der Eingabekonturen.

Prinzipiell sind die Maße für die ersten drei Parameter abhängig von der Reihenfolge, d.h., sie hängen davon ab, welche Kontur als Referenzkontur betrachtet wird, die durch die zweite Kontur erweitert werden soll. Um diese Abhängigkeit von der Reihenfolge 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.

MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs

Der Parameter MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs 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
MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel

Der Parameter MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel 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 MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs) durch die Länge b der Referenzkontur geteilt.

image/svg+xml a b
MaxShiftMaxShiftMaxShiftMaxShiftmaxShiftmax_shift

Der Parameter MaxShiftMaxShiftMaxShiftMaxShiftmaxShiftmax_shift 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
MaxAngleMaxAngleMaxAngleMaxAnglemaxAnglemax_angle

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

image/svg+xml a
ModeModeModeModemodemode

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

'attr_keep'"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""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_xldQueryContourAttribsXldQueryContourAttribsXldQueryContourAttribsXldquery_contour_attribs_xld 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 Schwellenwerte sind. Eine weitere Voraussetzung ist, dass sich die Konturen nur unwesentlich überlappen dürfen (siehe union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld 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_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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 Schwellenwert normiert wird, der mit den Parametern MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs, MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel, MaxShiftMaxShiftMaxShiftMaxShiftmaxShiftmax_shift und MaxAngleMaxAngleMaxAngleMaxAnglemaxAnglemax_angle 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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_xldSegmentContoursXldSegmentContoursXldSegmentContoursXldsegment_contours_xld 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_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld 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_xldUnionCocircularContoursXldUnionCocircularContoursXldUnionCocircularContoursXldunion_cocircular_contours_xld verwendet werden. Um Konturen zu vereinigen, die beliebige Formen darstellen, kann union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXldunion_cotangential_contours_xld 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_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld verwendet werden.

Wenn die Konfigurationsmöglichkeiten von union_collinear_contours_xldunion_collinear_contours_xldUnionCollinearContoursXldUnionCollinearContoursXldUnionCollinearContoursXldunion_collinear_contours_xld nicht ausreichen, können die Kriterien zur Vereinigung von Konturen mit union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld 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 Schwellenwerten liegen.

Ausführungsinformationen

Parameter

ContoursContoursContoursContourscontourscontours (input_object)  xld_cont-array objectHXLDContHObjectHXLDContHobject

Eingabekonturen.

UnionContoursUnionContoursUnionContoursUnionContoursunionContoursunion_contours (output_object)  xld_cont-array objectHXLDContHObjectHXLDContHobject *

Ausgabekonturen.

MaxDistAbsMaxDistAbsMaxDistAbsMaxDistAbsmaxDistAbsmax_dist_abs (input_control)  real HTuplefloatHTupleHtuple (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 max_dist_abs

MaxDistRelMaxDistRelMaxDistRelMaxDistRelmaxDistRelmax_dist_rel (input_control)  real HTuplefloatHTupleHtuple (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 max_dist_rel

MaxShiftMaxShiftMaxShiftMaxShiftmaxShiftmax_shift (input_control)  real HTuplefloatHTupleHtuple (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 max_shift

MaxAngleMaxAngleMaxAngleMaxAnglemaxAnglemax_angle (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximaler Winkel zwischen den Regressionsgeraden von zwei Konturen.

Defaultwert: 0.1

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

ModeModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Modus, der die Behandlung der Konturattribute festlegt.

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

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

edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPixedges_sub_pix, lines_gausslines_gaussLinesGaussLinesGaussLinesGausslines_gauss, segment_contours_xldsegment_contours_xldSegmentContoursXldSegmentContoursXldSegmentContoursXldsegment_contours_xld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldSelectContoursXldselect_contours_xld, select_shape_xldselect_shape_xldSelectShapeXldSelectShapeXldSelectShapeXldselect_shape_xld, split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXldsplit_contours_xld, threshold_sub_pixthreshold_sub_pixThresholdSubPixThresholdSubPixThresholdSubPixthreshold_sub_pix

Nachfolger

fit_line_contour_xldfit_line_contour_xldFitLineContourXldFitLineContourXldFitLineContourXldfit_line_contour_xld, select_contours_xldselect_contours_xldSelectContoursXldSelectContoursXldSelectContoursXldselect_contours_xld, select_shape_xldselect_shape_xldSelectShapeXldSelectShapeXldSelectShapeXldselect_shape_xld

Alternativen

union_collinear_contours_ext_xldunion_collinear_contours_ext_xldUnionCollinearContoursExtXldUnionCollinearContoursExtXldUnionCollinearContoursExtXldunion_collinear_contours_ext_xld, union_straight_contours_xldunion_straight_contours_xldUnionStraightContoursXldUnionStraightContoursXldUnionStraightContoursXldunion_straight_contours_xld, union_cocircular_contours_xldunion_cocircular_contours_xldUnionCocircularContoursXldUnionCocircularContoursXldUnionCocircularContoursXldunion_cocircular_contours_xld, union_cotangential_contours_xldunion_cotangential_contours_xldUnionCotangentialContoursXldUnionCotangentialContoursXldUnionCotangentialContoursXldunion_cotangential_contours_xld, union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXldunion_adjacent_contours_xld

Siehe auch

get_contour_xldget_contour_xldGetContourXldGetContourXldGetContourXldget_contour_xld, get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXldget_contour_attrib_xld, query_contour_attribs_xldquery_contour_attribs_xldQueryContourAttribsXldQueryContourAttribsXldQueryContourAttribsXldquery_contour_attribs_xld

Modul

Foundation