sampling_alias_distance — FLYVISION alias op

• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.sampling_alias_distance(period_m, pitch_deg, lattice='hex', view_angle_deg=0.0, acceptance_deg=0.0, obliquity='along') (implementation को सीधे call करना हो तो import flyvision; flyvision.sampling_alias_distance(period_m, pitch_deg, lattice='hex', view_angle_deg=0.0, acceptance_deg=0.0, obliquity='along'), registry से लेना हो तो opsflyvision.get("sampling_alias_distance"))

उपयोग

वह दूरी जिसके आगे periodic target sampling lattice पर alias करता है — inspection camera के working distance का नियम।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

A period *period_m* seen from distance d at viewing angle theta has the angular period P cos^2(theta)/d (the cos^2 is the derivative of the line-of-sight intercept; obliquity="across" — the period runs perpendicular to the plane of obliquity — makes it a single cos). A lattice of pitch *pitch_deg* resolves angular periods down to sqrt(3) * pitch (hexagonal: the inscribed circle of its Brillouin zone) or 2 * pitch (square), so the target aliases once::

d > period_m * cos^2(theta) / (sqrt(3) * pitch) (hex)

d > period_m * cos^2(theta) / (2 * pitch) (square)

The same number is the working-distance rule of an inspection camera:

*pitch_deg* is the pixel's instantaneous field of view, *period_m* the pitch of the display, mesh, weave or halftone being inspected, and beyond the returned distance the picture carries a moire that is not in the part (Petersen & Middleton 1962 for the lattice Nyquist regions).

period_m: the target's spatial period, metres.

pitch_deg: the sample spacing — inter-ommatidial angle or pixel IFOV, degrees.

lattice: one of SAMPLING_LATTICES.

view_angle_deg: the obliquity of the line of sight, |theta| < 90.

acceptance_deg: the FWHM of the Gaussian acceptance (or pixel blur), degrees;

0 means a delta sampler.

obliquity: one of OBLIQUITIES.

Returns a dict {"distance_m", "nyquist_cycles_per_rad", "period_floor_deg", "mtf_at_nyquist", "lattice", "view_angle_deg"} — the alias distance, the lattice's Nyquist frequency, the smallest angular period it resolves, and the acceptance's modulation transfer at that limit (1.0 for a delta sampler).

Ground truth (pinned in the tests): a 7 cm period on a 1.1-degree hexagonal eye aliases beyond 2.105 m head-on and 0.526 m at 60 degrees; on a 4.63-degree eye beyond 0.500 m and 0.125 m; with a 1-degree acceptance the hexagonal 1.1-degree eye keeps 0.375 of the contrast at Nyquist, the 8.23-degree acceptance of a 4.63-degree eye keeps 0.024.

Raises ValueError: a non-positive *period_m* / *pitch_deg* (an empty *period_m* is refused as not a number), a negative *acceptance_deg*, a *view_angle_deg* at or beyond 90, and an unknown *lattice* / *obliquity*.

उपयोग की विस्तृत guide

• fly_vision family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_zebra_stripes_fly_eye — py -3.11 examples/poc_zebra_stripes_fly_eye.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (alias)

lattice_moire_peak


*Provenance: flyvision.py — FLYVISION operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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