fullseye

itof_capture — OPTICS itof op

使い方

距離の図 → 間接 ToF の生信号(周波数ごとに K 段のバケット、電子数)。table(dict)を返す。

画素(細かく描いた標本)ごとに、直接の経路(距離 depth、強さ signal_electrons · reflectivity)と、 任意で余分な経路(paths_depth = 往復の経路長の半分 [m]、paths_amplitude = signal_electrons に掛ける強さ)が 入る。経路 p の位相は φ_p = 4π f d_p / c。段 k(参照の位相 θ_k = 2πk/K)のバケットの期待値は

m_k = (Σ_p a_p + ambient) / K + demod_contrast · Σ_p a_p · corr(φ_p − θ_k) / K

(corr は waveform: "sine" なら cos、"square" なら矩形どうしの相関 = 三角波、配列なら余弦の係数 c_1..c_N)。 つまり 1 回の測定(K 段の合計)に信号 a_p 電子と背景光 ambient_electrons 電子が入る。noise が真なら 各バケットに Poisson のショット雑音と、標準偏差 read_noise_e の正規の読み出し雑音を足す。

supersample = s > 1 なら depth などはセンサの s 倍の細かさで描いたものとみなし、s × s の標本の バケットを平均して 1 画素にする(バケットは経路の光の線形和なので、これは画素の開口で光を足すのと同じ)。 前景と背景をまたぐ画素では 2 つの位相が混ざり、フライングピクセルが生まれる。 falloff_m を与えると直接の経路の強さに (falloff_m / depth)²(逆二乗)を掛ける。

返す dict: kind("itof_raw")、samples (F, K, H, W)、mean_samples(雑音なしの期待値)、 frequencies_hz、phase_offsets_rad、true_depth(画素内の直接経路の距離の平均)、mixed(画素内の 距離の幅 [m])、waveform、demod_contrast、read_noise_e、ambiguity_range (F,)。

Raises ValueError: depth が 2 次元でない・正でない・非有限 / reflectivity・経路の形が合わない・負 / 周波数が (0, 2 GHz] でない・重複 / n_phases が 3〜32 でない / demod_contrast が (0, 1] でない / 電子数が負 / 形が supersample で割り切れない / 画素数・経路数・計算量が上限を超える / waveform が不正。

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

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

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

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

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

同カテゴリ(itof)

itof_phase_amplitude · 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 ノートは tools/opdocs.py md が自動生成(手編集しない)。

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