lattice_moire_peak — FLYVISION alias op

• 資料種類:signal × table → table

• 呼叫: import fullseye as fs; fs.ledger.lattice_moire_peak(signal, lattice, fmax_cycles_per_deg=0.0, n_freq=48, window='hann')(要直接呼叫實作,import flyvision; flyvision.lattice_moire_peak(signal, lattice, fmax_cycles_per_deg=0.0, n_freq=48, window='hann');從台帳取用則 opsflyvision.get("lattice_moire_peak"))

用法

取樣訊號中最強低頻成分的尖銳程度——晶格對無法分辨的紋理所產生的莫爾條紋。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

Sampling a texture above the lattice's Nyquist limit does not lose it; it folds it to a lower frequency. On a regular lattice the fold is a single sharp peak — a false stripe the next stage reads as a real one — and on an irregular arrangement the same energy spreads into a ring. This op measures that difference as a number: the non-uniform discrete Fourier transform of the ommatidial signal (mean removed, radially windowed) at the gnomonic positions of the ommatidia, over a grid of n_freq x n_freq frequencies up to *fmax_cycles_per_deg* (0 = the lattice's own hexagonal Nyquist 1/(sqrt 3 dphi), the band the eye can represent), and the ratio of the highest amplitude on that grid to the median amplitude.

signal: (n,) ommatidial values (fly_view_plane_texture).

lattice: the eye they were sampled on — any geometry; only directions are used. fmax_cycles_per_deg: the half-width of the frequency grid, cycles/degree.

n_freq: grid side, 8 <= n_freq <= MAX_MOIRE_FREQ.

window: one of MOIRE_WINDOWS — a radial Hann taper over the field

(default: the field edge is a step and would leak everywhere).

Returns a dict {"peak_ratio", "peak_cycles_per_deg", "peak_amplitude", "background_median", "nyquist_cycles_per_deg", "n_freq"}.

Ground truth (pinned in the tests): a sinusoid just below Nyquist sampled on the hexagonal eye gives a peak ratio above 30; the same sinusoid on a Vogel eye of the same count and mean spacing gives a peak ratio at least 2.5x smaller — the energy that was one peak is now a ring.

Raises ValueError: a *signal* that is not (n,) for this lattice (an empty *signal* is refused), non-finite entries, a constant signal (there is no spectrum to rank — its ratio would be 0/0), a negative *fmax*, an *n_freq* outside its range, an unknown *window*, and a malformed *lattice*.

詳細使用指南

• fly_vision 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_moire_screen — py -3.11 examples/poc_moire_screen.py

• poc_print_registration — py -3.11 examples/poc_print_registration.py

• poc_zebra_stripes_fly_eye — py -3.11 examples/poc_zebra_stripes_fly_eye.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

fly_t4t5_field · fly_flow_from_directions · fly_matched_filter · fly_egomotion_from_flow · fly_eye_merge · fly_view_plane_texture · fly_hex_resample · fly_expansion_readout

同類別(alias)

sampling_alias_distance


*Provenance: flyvision.py — FLYVISION 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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