fullseye

fly_hex_resample — FLYVISION sample op

使い方

Resample a pinhole image onto an ommatidial lattice (the eye’s view).

Each ommatidium integrates the image under a Gaussian acceptance function of full width at half maximum drho_deg weighted by the pixel solid angle::

signal_i = sum_p w_ip * image_p / sum_p w_ip
w_ip = exp(-4 ln2 * a_ip^2 / drho_deg^2) * (1 + X_p^2 + Y_p^2)^(-3/2)

with a_ip the angular distance between ommatidium i and pixel p, cut off at a <= 2*drho_deg, and X, Y the pinhole-normalised pixel coordinates. The image is a perspective (pinhole) view whose optical axis is the lattice centre and whose fov_deg is the full vertical field of view.

image2d: a 2-D (H, W) pinhole image. lattice: the dict returned by :func:fly_hex_lattice. drho_deg: the acceptance FWHM in degrees. fov_deg: the full vertical field of view in degrees. mode: "pinhole" (the only projection implemented).

Returns a 1-D float64 signal of n ommatidial intensities.

Ground truth: an azimuthal sinusoid of angular wavelength lambda is sampled with its amplitude scaled by the analytic modulation transfer exp(-pi^2 drho_deg^2 nu^2 / (4 ln2)), nu = 1/lambda, to within 0.05 over lambda from 15 to 80 degrees at equatorial ommatidia (pinned in the tests).

Raises ValueError: a non-2-D / empty / non-finite image2d, an image over the element cap, a lattice that is not a :func:fly_hex_lattice result, a non-positive drho_deg / fov_deg, a fov_deg not below 180, an unknown mode, a n_ommatidia * n_pixels product over :data:MAX_RESAMPLE_ELEMENTS, and — this is the field-of-view guard — any ommatidium whose nearest pixel is farther than dphi_rad/2 away (the eye is looking outside the image).

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(signal を入力に取れる)

fly_emd_response · fly_lgmd_eta · fly_tau_from_expansion · fly_dsi

同カテゴリ(sample)


Provenance: flyvision.py — FLYVISION operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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