tcspc_background_subtract — PHOTON tcspc op

• Data kinds: counts → counts

• Call: import fullseye as fs; fs.ledger.tcspc_background_subtract(hist, method='median', leading_bins=None, quantile=0.5, scale=1.0) (implementation को सीधे call करना हो तो import photoncount; photoncount.tcspc_background_subtract(hist, method='median', leading_bins=None, quantile=0.5, scale=1.0), registry से लेना हो तो opsphoton.get("tcspc_background_subtract"))

उपयोग

arrival-time histogram से ambient-light / dark-count floor हटाता है।

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

Outdoors, most of what a dToF sensor counts is sunlight: a roughly uniform pedestal under the return pulse. It biases the centroid toward the middle of the window (a floor of b per bin pulls the first moment toward window/2) and it inflates the apparent signal, so it is removed before any depth or lifetime estimate.

The level is estimated by *method* and then subtracted (the sign trap:

the result is hist - level, clipped at 0, never hist + level):

• "median" (default) — the median of every bin. Robust while the pulse occupies well under half the window, which is the normal dToF case.

• "leading" — the mean of the first *leading_bins* bins, the classical choice when the pulse is known to arrive late (a far target).

• "trailing" — the mean of the last *leading_bins* bins, for fluorescence decays where the tail is background.

• "quantile" — the given *quantile* of all bins, for tuning by hand.

*leading_bins* defaults to None = min(8, len(hist)), so the default call works on a short histogram instead of raising over a constant nobody chose (a fixed default of 8 made method="leading" fail on any histogram with fewer than 8 bins).

*scale* multiplies the estimated level before subtraction (scale=1.2 for a deliberately aggressive removal). Clipping at 0 means the result is a valid non-negative histogram that the rest of this module will accept.

Ground truth: on a noiseless histogram with a known flat pedestal of 20 counts/bin under a 5000-photon pulse covering 5.1% of the window, the median estimate recovers 20.000000 and the returned histogram equals the pedestal- free pulse exactly (measured area error 0.0, pinned in the tests).

Returns a float64 1-D histogram of the same length as *hist*.

Raises ValueError: negative, non-finite or non-1-D *hist*, an unknown *method*, a *leading_bins* outside [1, len(hist)], a *quantile* outside [0, 1], and a negative *scale*.

उपयोग की विस्तृत 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 जुड़ता है (counts को input के रूप में लेते हैं)

tcspc_coates_correct · tcspc_irf_convolve · tcspc_stats · dtof_depth · lifetime_fit · lifetime_phasor

इसी category के (tcspc)

tcspc_simulate · tcspc_irf_convolve · tcspc_stats


*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.