swarm_field_from_tracks — DRIVE swarmflow op

• Data kinds: any × scalar × scalar → table

• Call: import fullseye as fs; fs.ledger.swarm_field_from_tracks(frames, res: 'float', frame_dt: 'float', center=(0.0, 0.0), grid_step=None, h=None, threshold: 'float' = 0.3, max_disp_px=None, min_count: 'int' = 3, outlier_k: 'int' = 12, outlier_threshold: 'float' = 3.0) -> 'dict' (implementation को सीधे call करना हो तो import swarmflow; swarmflow.swarm_field_from_tracks(frames, res: 'float', frame_dt: 'float', center=(0.0, 0.0), grid_step=None, h=None, threshold: 'float' = 0.3, max_disp_px=None, min_count: 'int' = 3, outlier_k: 'int' = 12, outlier_threshold: 'float' = 3.0) -> 'dict', registry से लेना हो तो opsdrive.get("swarm_field_from_tracks"))

उपयोग

ऊपर से देखे frame का क्रम → सदस्यों को detect करना (blob2d के connected component + brightness का centroid) → पड़ोसी frame से mutual nearest neighbor द्वारा जोड़ना → velocity को SPH kernel से grid पर ले जाना।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

つなぐ条件: A の点の最近傍が B の点で、その B の点の最近傍も A の点(相互)、かつ移動が max_disp_px 以下(既定 = 検出した点どうしの最近傍の間隔の中央値の 0.45 倍。1 コマの移動がこれを超えると取り違える = 追跡の限界)。全部のコマの組の速度を一つの集団にして平均する(定常の流れの前提)。取り違えた組は速度が桁で外れる(実測: 一様に撒いた 1300 個で 2 % の組が 1〜3 m/s ずれ、格子の rms 誤差が U の 16 % になった)ので、格子へ移す前に正規化した中央値の検査(PIV の慣行、近い outlier_k 個の速度の中央値からのずれ / その近傍のずれの中央値 > outlier_threshold) で捨てる。

Args:

frames: 同じ大きさの (H, W) のコマの列(2 枚以上)。

res: 画素の大きさ [m/px]。

frame_dt: コマの間隔 [s]。

center: 画像の中心の世界座標 [m]。

grid_step: 格子の間隔 [m] (既定 = 個体の間隔の推定値)。

h: 格子へ移す核の h [m] (既定 = grid_step)。

threshold: 2 値化のしきい値(最小〜最大の割合)。

max_disp_px: 1 コマの移動の上限 [px]。

min_count: 格子の台の中に要る速度の数。

outlier_k: 中央値の検査に使う近傍の数(0 で検査しない)。

outlier_threshold: 検査のしきい値。

Returns:

速度場の dict(module の規約)+ points (M, 2)・point_velocity (M, 2)(つないだ組の中点と速度)、

n_detected(コマごと)、n_linked、n_outliers(中央値の検査で捨てた組)、n_rejected_blobs、

spacing(個体の間隔の推定 [m])。

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (swarmflow)

sph_kernel · sph_density_pressure · swarm_simulate · swarm_render_overhead · swarm_field_from_piv · potential_flow_cylinder · velocity_deficit_map · stagnation_from_centerline


*Provenance: swarmflow.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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