dtof_cube_simulate — PHOTON dtof op

• Data kinds: depth → histcube

• Call: import fullseye as fs; fs.ledger.dtof_cube_simulate(depth, bins=256, bin_ps=100.0, reflectivity=None, signal_photons=20.0, ambient_photons=5.0, irf_fwhm_ps=200.0, seed=0, noise=True) (implementation को सीधे call करना हो तो import photoncount; photoncount.dtof_cube_simulate(depth, bins=256, bin_ps=100.0, reflectivity=None, signal_photons=20.0, ambient_photons=5.0, irf_fwhm_ps=200.0, seed=0, noise=True), registry से लेना हो तो opsphoton.get("dtof_cube_simulate"))

उपयोग

SPAD array द्वारा बनाया जाने वाला (H, W, T) photon histogram cube synthesise करता है।

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

The per-pixel version of tcspc_simulate: every pixel of the *depth* map (metres, one-way distance) gets a Gaussian return at its own round-trip time 2d/c, scaled by *signal_photons* times that pixel's *reflectivity*, on a uniform ambient pedestal of ambient_photons/bins per bin, Poisson sampled with numpy.random.default_rng(seed).

The output is the cube that dtof_cube_depth inverts, and the axis order is (H, W, T) with time LAST — the same layout a SPAD array streams. That is not the (D, H, W) of a volops voxel volume; the two are both 3-D float arrays and swapping them silently produces a plausible-wrong depth map, which is why dtof_cube_depth checks and says so.

noise=False returns the exact expectation cube (no sampling).

Ground truth: with noise=False the per-pixel centroid of the cube returns the input depth map to an RMS error of 3.2e-16 m (pinned in the tests) — the pulse integral is analytic, so the only error is float round-off.

Raises ValueError: a non-2-D, non-finite or non-positive *depth*, a *reflectivity* that is negative or not the same shape as *depth*, a *bins* outside [2, MAX_BINS], non-positive *bin_ps* / *irf_fwhm_ps*, negative photon budgets, a non-integer *seed*, a cube over MAX_CUBE_ELEMENTS (H*W*bins grows fast — 512x512x256 is 8x the cap), and any depth whose round-trip time falls outside the time window (which a real sensor would alias into a short distance).

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

• photon_timeresolved 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 करते हैं)

• photon_timeresolved — py -3.11 examples/photon_timeresolved.py

• poc_dtof_ranging — py -3.11 examples/poc_dtof_ranging.py

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

dtof_cube_depth

इसी category के (dtof)

dtof_depth · dtof_cube_depth


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

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