photon_sample — PHOTON counting op

• 데이터 종류: image2d → image2d

• 호출: import fullseye as fs; fs.ledger.photon_sample(image, photons_per_unit=100.0, dark_rate=0.0, seed=0)(구현을 직접 호출하려면 import photoncount; photoncount.photon_sample(image, photons_per_unit=100.0, dark_rate=0.0, seed=0), 원장에서 가져오려면 opsphoton.get("photon_sample"))

사용법

기대 광자 수 이미지를 푸아송 표본화해 실제 광자 계수 이미지로 만듭니다.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

*image* is a non-negative 2-D map of scene radiance in arbitrary units; lambda = image * photons_per_unit + dark_rate is the expected number of photons in each pixel over the exposure, and the result is one Poisson realisation of it. *dark_rate* is the dark-count contribution (a SPAD counts thermally generated carriers even in the dark) in the same photon units.

Returns the counts themselves as a float64 (H, W) image (integer valued). That is the deliberate difference from backends_aug.aug_shot_noise, which returns Poisson(v*K)/K clipped to [0, 1] for training-data augmentation: every operator downstream here (Fano factor, Anscombe, Coates, dToF) needs N, and the rescale-and-clip is not invertible.

seed is a required non-negative integer and the RNG is numpy.random.default_rng(seed) — same seed, same frame, on any machine.

Ground truth it reproduces (pinned in tests/test_photoncount.py): the sample mean and sample variance both converge to lambda. Measured on a flat lambda = 100 field of 512x512 pixels at seed 0 — mean 99.9796, Fano factor 1.001089, so the photon-limited SNR is sqrt(lambda): 9.9990 predicted from the mean, 9.9935 actually achieved.

Raises ValueError: negative or non-finite *image*, negative *photons_per_unit* / *dark_rate*, a non-integer or negative *seed*, an image

over MAX_IMAGE_ELEMENTS, and — instead of letting numpy fail deep inside the sampler — any lambda over MAX_LAMBDA.

자세한 사용 가이드

• photon_timeresolved 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• photon_timeresolved — py -3.11 examples/photon_timeresolved.py

• poc_colocalization_crosstalk — py -3.11 examples/poc_colocalization_crosstalk.py

• poc_search_sweep_width — py -3.11 examples/poc_search_sweep_width.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

photon_statistics · photon_uncertainty · anscombe_transform · anscombe_inverse

같은 카테고리(counting)

photon_statistics · photon_uncertainty


*Provenance: photoncount.py — PHOTON 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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