itof op• Data kinds: depth → image2d
• Call: import fullseye as fs; fs.ledger.itof_flying_pixel_mask(depth, threshold_m=0.04, rel_threshold=0.0, radius=1, plateau_ratio=0.5, depth_sigma=None, n_sigma=3.0) (implementation को सीधे call करना हो तो import itof; itof.itof_flying_pixel_mask(depth, threshold_m=0.04, rel_threshold=0.0, radius=1, plateau_ratio=0.5, depth_sigma=None, n_sigma=3.0), registry से लेना हो तो opsoptics.get("itof_flying_pixel_mask"))
depth map → flying pixel (foreground और background के बीच तैरते pixel) का mask (H, W) (1.0 = तैरता हुआ)।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
画素の視野が段差をまたぐと、iToF は 2 つの位相のフェーザ和を返し、距離は前景と背景の間に出る(段差の縁に沿って宙に浮いた点の列ができる)。ある方向(横・縦・2 つの斜め)の両側 ±r 画素の距離 a・b に対して、次の 3 つがそろったとき印をつける:
1. d が両者の間にある((d − a)(d − b) < 0)。
2. 両側との差がどちらも閾値 τ = max(threshold_m, rel_threshold · d, n_sigma · σ_d) を越える。*depth_sigma* (画素ごとの距離の雑音、itof_phase_amplitude の depth_sigma から作る)を渡すと、信号の弱い所(遠い床・暗い印刷)で雑音を段差と取り違えない。
3. 両側が平らな台地: その先の ±2r 画素との差 |a − a₂|・|b − b₂| が、それぞれ |d − a|・|d − b| の *plateau_ratio* 倍以下。★斜面(床を浅い角度で見る・傾いた面)は 1・2 を満たしてしまうが、斜面なら |a − a₂| ≈ |d − a|(同じ傾きが続く)なので 3 で落ちる。段差の縁の混合は、両側が前景と背景の平らな面なので残る。
r = 1〜*radius* を全部見る(縁の混合が 2 画素に広がる場合)。段差の上の正しい画素(前景か背景のどちらかに等しい)は、片側との差が 0 なので印がつかない。★幅 1〜2 画素の細い物(線・棒)は両側が背景で「間」にならないので、この判定では拾えない。
Raises ValueError: depth が 2 次元でない・非有限 / 閾値が負・両方 0 / radius が 1〜4 でない / plateau_ratio が (0, 1] でない / depth_sigma の形が合わない・負 / n_sigma が負。
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
image2d को input के रूप में लेते हैं)fraunhofer_pattern · pupil_psf · pupil_blur · psf_to_mtf · edge_spread · veiling_glare_index · emva_pair_statistics · emva_defect_pixels
itof)itof_capture · itof_phase_amplitude · itof_noise_budget · itof_unwrap_multifreq · itof_unwrap_error_rate · itof_multipath_separate · 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.