marker_match_grow — DRIVE tacslip op

• Datenarten: matrix × matrix × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.marker_match_grow(p0, p1, pitch_px: 'float', seed_tol: 'float' = 0.25, tols=(0.2, 0.3, 0.45), nb_r: 'float' = 1.6, border: 'float' = 2.0, max_iter: 'int' = 80) -> 'dict' (die Implementierung direkt: import tacslip; tacslip.marker_match_grow(p0, p1, pitch_px: 'float', seed_tol: 'float' = 0.25, tols=(0.2, 0.3, 0.45), nb_r: 'float' = 1.6, border: 'float' = 2.0, max_iter: 'int' = 80) -> 'dict'; aus dem Register: opsdrive.get("marker_match_grow"))

Verwendung

Bestimmt die Zuordnung zwischen Referenzmarkierungen p0 und Markierungen nach Belastung p1 (je (N, 2) [px]), indem sie über Kontinuität wachsen gelassen wird. Rückgabe i0, i1 (Index-Arrays der Zuordnung), matched.

Auf einem regelmäßigen Gitter springen sowohl der nächste Nachbar als auch die Korrelation zum benachbarten Marker, sobald |u| die Hälfte des Rasterabstands überschreitet (gemessen: auf einem 8-px-Gitter liest PIV eine Verschiebung von 5 px als −3 px). Saaten = Marker am Rand (innerhalb border·Rasterabstand) des umschließenden Rechtecks von p0, deren vorhersagefreier nächster Nachbar innerhalb von seed_tol·Rasterabstand liegt und deren zweitnächster weiter als 0.75 Rasterabstände entfernt ist (physikalische Annahme: „der Kontakt liegt im Inneren des Sichtfelds, der Rand ist Fernfeld = kleine Verschiebung“. Saaten überall erzeugten 27 falsche, um einen Rasterabstand verschobene Saaten, weil die Kernverschiebung von 6.4 px 1.6 px von der benachbarten Referenzposition entfernt ist). Danach wird für jeden nicht zugeordneten Marker der Mittelwert der Verschiebungen von 2 oder mehr bereits zugeordneten Punkten innerhalb nb_r·Rasterabstand als Vorhersage verwendet und der nächste Nachbar innerhalb tol·Rasterabstand genommen, wobei tol von einem kleinen Wert schrittweise gelockert wird. Jedes p1 wird nur einmal verwendet. Raises ValueError: p0/p1 nicht (N, 2), pitch_px ≤ 0.

Leere Eingabe (p0 mit 0 Elementen) löst ValueError aus.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• gallery_drive_soil_tactile — py -3.11 examples/gallery_drive_soil_tactile.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Gleiche Kategorie (tacslip)

mindlin_partial_slip · mindlin_traction · hertz_surface_ur · hertzian_tangential_inner · cerruti_kernel · cerruti_surface_displacement · membrane_shear_field · membrane_markers


*Provenance: tacslip.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.