swarmflow op• Datenarten: any × scalar × scalar → table
• Aufruf: import fullseye as fs; fs.ledger.swarm_field_from_piv(frames, res: 'float', frame_dt: 'float', center=(0.0, 0.0), window: 'int' = 24, overlap: 'float' = 0.5, min_peak_ratio: 'float' = 1.1, outlier_threshold=3.0) -> 'dict' (die Implementierung direkt: import swarmflow; swarmflow.swarm_field_from_piv(frames, res: 'float', frame_dt: 'float', center=(0.0, 0.0), window: 'int' = 24, overlap: 'float' = 0.5, min_peak_ratio: 'float' = 1.1, outlier_threshold=3.0) -> 'dict'; aus dem Register: opsdrive.get("swarm_field_from_piv"))
Frame-Folge in Draufsicht → PIV per Kreuzkorrelation benachbarter Frames (pivops.piv_cross_correlate) → Mittel über alle Paare → Geschwindigkeitsfeld der Welt.
Es unterscheidet Individuen nicht einzeln (funktioniert also auch bei Überlappungen), dafür werden Schwankungen feiner als das Fenster (window px) geglättet. Fenster mit einem Peak-Verhältnis unter min_peak_ratio gelten als fehlend (NaN). ★Schwärme ordnen sich leicht gitterartig an (Drängen gleicht die Abstände an), daher erscheinen Korrelationspeaks auch an benachbarten Gitterpositionen, und das Peak-Verhältnis liegt nahe 1. Gemessen (Abstand 7.5 px, Fenster 24): bei Schwelle 0 mischen sich fehlzugeordnete Fenster ein, und der rms gegenüber den Geschwindigkeiten der Individuen beträgt 13.7 % von U; bei 1.1 sind es 1.9 % (85 % der Fenster gemessen); bei 1.3 sinkt der Anteil gemessener Fenster auf 18 % —— Standard ist 1.1. Zusätzlich markiert ein paarweise normalisierter Mediantest (pivops.piv_outlier_mask, Schwelle outlier_threshold, None zum Überspringen) Ausreißerfenster als fehlend, bevor gemittelt wird. Gemäß dem Hinweis von pivops wird 3 verwendet, lockerer als das übliche 2, damit steile Gradienten (Schultern von Hindernissen) nicht als Ausreißer gelten. Die pivops-Komponenten (dy, dx) [px/Frame] werden in u = dx·res/Δt, v = −dy·res/Δt umgerechnet.
Returns:
dict des Geschwindigkeitsfelds + valid_fraction (Anteil gemessener Fenster), n_pairs.
• 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.
• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py
table als Eingabe)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
swarmflow)sph_kernel · sph_density_pressure · swarm_simulate · swarm_render_overhead · swarm_field_from_tracks · potential_flow_cylinder · velocity_deficit_map · stagnation_from_centerline
*Provenance: swarmflow.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.