swarmflow op• 데이터 종류: any × scalar × scalar → table
• 호출: 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'(구현을 직접 호출하려면 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', 원장에서 가져오려면 opsdrive.get("swarm_field_from_piv"))
부감 프레임 열 → 이웃끼리의 상호 상관 PIV(pivops.piv_cross_correlate) → 모든 쌍의 평균 → 월드의 속도장.
개체를 하나씩 구별하지 않는(겹쳐도 쓸 수 있는) 대신, 창(window px)보다 미세한 흐트러짐은 평균화된다. 피크 비가 min_peak_ratio 미만인 창은 결측(NaN). ★무리는 격자처럼 늘어서기 쉬워(서로 밀어 간격이 고르게 됨) 상관 피크가이웃 격자 위치에도 서므로 피크 비가 1 에 가깝다. 실측(간격 7.5 px, 창 24): 문턱값 0 이면 잘못 짝지은 창이 섞여 개체의속도와의 rms 가 U 의 13.7 %, 1.1 에서 1.9 %(측정된 창 85 %), 1.3 에서는 측정된 창이 18 % 로 줄어든다 —— 기본값은 1.1. 또한 쌍마다 정규화한 중앙값 검사(pivops.piv_outlier_mask, 문턱값 outlier_threshold, None 이면 적용 안 함)로벗어난 창을 결측으로 한 뒤 평균한다. pivops 의 주의대로, 급한 기울기(장애물의 어깨)를 이상치로 부르지 않도록 관행의 2 보다 느슨한 3. pivops 의 성분 (dy, dx) [px/프레임] 을 u = dx·res/Δt, v = −dy·res/Δt 로 바꾼다.
Returns:
속도장의 dict + valid_fraction(창 중 측정된 비율), n_pairs.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py
table 를 입력으로 받는 것)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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.