direction op• 데이터 종류: matrix × table → matrix
• 호출: import fullseye as fs; fs.ledger.fly_flow_from_directions(responses, lattice)(구현을 직접 호출하려면 import flyvision; flyvision.fly_flow_from_directions(responses, lattice), 원장에서 가져오려면 opsflyvision.get("fly_flow_from_directions"))
> 이 연산자의 설명은 아직 번역이 없습니다. 원문을 그대로 싣습니다.
Six directional responses per ommatidium in, one local flow vector out.
The lobula plate does not keep six numbers per point of the visual field; it keeps the direction and strength of the motion there, split over four layers of opposite preference. This op is that reduction, done as the vector sum on the tangent plane that makes opposite hexagonal directions cancel exactly::
f_i = (2/6) * sum_k R[k, i] * (cos t_ik, sin t_ik)
where t_ik is the angle of the step to ommatidium *i*'s neighbour in direction *k*, measured in the local tangent plane with azimuth scaled by cos(elevation) so that it is an angle on the sphere rather than a difference of coordinates. The 2/6 normalises the sum so that a cosine-tuned set of responses of amplitude A returns a vector of length A — with six directions the raw sum is 3A.
responses: (6, n), the return of fly_t4t5_field.
lattice: the fly_hex_lattice it was measured on (a merged eye is refused — neighbours are local, the fit downstream is not).
Returns (n, 2) float64: for each ommatidium the flow component along the local azimuth (left positive) and along the local elevation (up positive), in the response's own units. This is the (n, 2) field fly_egomotion_from_flow and fly_matched_filter speak.
Ommatidia at the rim, which do not have all six neighbours, return exactly
zero: a partial sum over the circle does not cancel, so keeping it would draw a ring of inward flow around the eye and the fit downstream would read that ring as a rotation.
Ground truth: for responses R[k] = A cos(theta_k - theta_0) the returned vector has length A and angle theta_0 exactly (regular geometry, where the six steps are 60 degrees apart); opposite directions cancel, so a symmetric flicker response of any size returns exactly zero.
Raises ValueError: *responses* that is not (6, n), a column count that is not the lattice's ommatidium count, non-finite entries, and any malformed *lattice*.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_fly_optomotor_steering — py -3.11 examples/poc_fly_optomotor_steering.py
matrix 를 입력으로 받는 것)fly_lamina_filter · fly_onoff_split · fly_t4t5_field · fly_egomotion_from_flow · fly_hs_readout
direction)*Provenance: flyvision.py — FLYVISION 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.