swarm_field_from_tracks — DRIVE swarmflow op

• 데이터 종류: any × scalar × scalar → table

• 호출: 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'(구현을 직접 호출하려면 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', 원장에서 가져오려면 opsdrive.get("swarm_field_from_tracks"))

사용법

부감 프레임 열 → 개체 검출(blob2d의 연결 성분 + 밝기 중심) → 이웃 프레임과 상호 최근접으로 연결 → 속도를 SPH 커널로 격자에.

연결 조건: A 의 점의 최근접 이웃이 B 의 점이고, 그 B 의 점의 최근접 이웃도 A 의 점(상호)이며, 이동이 max_disp_px 이하(기본값 = 검출된 점들 사이 최근접 간격의 중앙값의 0.45 배. 한 프레임의 이동이 이를 넘으면 잘못 짝짓는다 = 추적의 한계). 모든 프레임의 쌍의 속도를 하나의 집단으로 모아 평균한다(정상 흐름의 전제). 잘못 짝지은 쌍은 속도가 자릿수 단위로 벗어나므로(실측: 균일하게뿌린 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: 이진화 임계값(최소~최대 사이의 비율).

max_disp_px: 한 프레임 이동의 상한 [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]).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(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_piv · 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.