itof op• Data kinds: table → table
• Call: import fullseye as fs; fs.ledger.itof_phase_amplitude(samples, frequencies_hz=None, phase_offsets_rad=None, read_noise_e=None) (implementation को सीधे call करना हो तो import itof; itof.itof_phase_amplitude(samples, frequencies_hz=None, phase_offsets_rad=None, read_noise_e=None), registry से लेना हो तो opsoptics.get("itof_phase_amplitude"))
K-step raw signal → phase, amplitude, offset, wrapped depth और हर pixel के depth noise का अनुमान (table)।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
*samples* は itof_capture の dict、または (F, K, ...) の配列(周波数 F、段 K が先頭。1 周波なら samples[None])。段 k のバケットを m_k = B + A·cos(φ − θ_k) とみなし、[1, cos θ_k, sin θ_k] の最小二乗で B・A cos φ・A sin φ を解く(θ_k が等間隔 2πk/K なら DFT と同じ。4 段なら φ = atan2(m1 − m3, m0 − m2)、A = ½√((m0 − m2)² + (m1 − m3)²)、B = Σm_k / 4)。θ_k は *phase_offsets_rad*(既定は等間隔、dict ならその値)。
距離の雑音の見積もり: 各バケットの分散を B + read_noise²(ショット雑音は平均に等しい)とみなすと、最小二乗の共分散から位相の標準偏差 σ_φ が出る(4 段・等間隔なら σ_φ = √((B + σ_r²)/2) / A)。σ_d = c σ_φ / (4π f)。★小さい雑音の近似で、A ≈ √B 程度まで SNR が落ちると実際の散らばりはこれより大きい。
返す dict: kind("itof_phase")、phase (F, ...) [0, 2π)、amplitude、offset、phasor (A·e^{iφ}、複素)、frequencies_hz(分かれば)、wrapped_depth と ambiguity_range(周波数が分かれば)、phase_sigma、depth_sigma(周波数が分かれば)。
Raises ValueError: 配列が 2 次元未満・非有限 / 段の数が 3〜32 でない / 段の位相が退化 / 周波数の数が F と合わない・範囲外 / dict が生信号でない。
optics के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):
• Unit argument के नाम में ही लिखी होती है — _mm / _um / _deg / _mrad। mm और µm की गड़बड़ी crash नहीं करती, बल्कि "सही दिखने वाला पर गलत उत्तर" देती है, इसलिए नाम से इसे रोका जाता है। मान के आकार से unit का अनुमान बिल्कुल नहीं लगाया जाता।
• String से ValueError — float('50') सफल हो जाता है, इसलिए बिना parse किया config value length के रूप में निकल जाता (मापा गया: thin_lens('50', '200') सही दिखने वाला 66.667 mm लौटा रहा था)। bool को भी True == 1 वाले implicit promotion के रूप में अस्वीकार किया जाता है।
• complex / masked array से ValueError (केवल real-valued slots; imaginary part को चुपचाप छोड़ना या mask हटाना अस्वीकार)। हर input पर NaN/Inf से ValueError।
• शून्य से भाग और उससे जुड़े मामलों को नाम लेकर अस्वीकार किया जाता है: focal length 0, radius of curvature 0, refractive index <= 0, पूरी तरह opaque aperture (सब 0, इसलिए normalisation 0/0), ऐसा PSF जिसका योग <= 0 हो, S0 = 0 वाला Stokes vector, और front focal point पर रखा object (image अनंत पर)।
• केवल 2 ops non-finite value लौटाते हैं, और वह भी contract के रूप में लिखा हुआ: depth_of_field hyperfocal distance से आगे far_mm = inf (hyperfocal distance की परिभाषा यही है) और gaussian_beam waist पर wavefront_radius_mm = inf (plane wavefront की radius of curvature)। दोनों साथ में एक finite साथी (far_is_infinite / curvature_per_mm) भी लौटाते हैं। इसके अलावा कोई भी चुपचाप आया NaN/Inf अंदर ही पकड़ा जाता है और ValueError देता है — "float64 overflow हुआ" और "उत्तर अनंत है" अलग-अलग दावे हैं, इसलिए पहले को दूसरे का चेहरा पहनाकर नहीं लौटाया जाता।
• Size की सीमा: generate होने वाले grid के लिए optics.MAX_GRID (4096), दिए गए field/PSF/aperture के लिए optics.MAX_FIELD_ELEMENTS (2^24), ABCD element chain के लिए optics.MAX_SYSTEM_ELEMENTS (1024), Zernike के लिए MAX_ZERNIKE_TERMS (512) / MAX_ZERNIKE_ORDER (40) / MAX_ZERNIKE_BASIS (2^25)। छोटे argument से बहुत बड़ा internal allocation होने वाले रास्तों (मापा गया: n_max=40 × 4096² पर 108 GB) को fail-closed ढंग से बंद किया गया है।
• भौतिक रूप से असंभव states भी अस्वीकार: degree of polarisation > 1 वाला Stokes vector, ऋणात्मक transmittance, ऋणात्मक intensity, और n-|m| odd जैसे अमान्य Zernike indices।
• 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 में दिए गए हैं।
• poc_itof_multifreq — py -3.11 examples/poc_itof_multifreq.py
table को input के रूप में लेते हैं)abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd
itof)itof_capture · itof_noise_budget · itof_unwrap_multifreq · itof_unwrap_error_rate · itof_multipath_separate · itof_flying_pixel_mask · itof_wiggling_correct
*Provenance: itof.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.