ShotNoise

Targets:
image
Image Types:uint8, float32

Shot noise (Poisson) in linear light space. Sensor-realistic; use for low-light or photon-limited imaging and camera simulation.

Simulates photon-counting: convert to linear space (gamma removed), treat pixel values as expected photon counts, sample from Poisson, convert back. Variance equals mean in linear space; brighter regions have more absolute noise, less relative.

Arguments
scale_range
tuple[float, float]
[0.1,0.3]

Reciprocal of photons per unit intensity. Higher = more noise. e.g. 0.1 ≈ low, 1.0 ≈ moderate, 10.0 ≈ high. Default: (0.1, 0.3).

p
float
0.5

Probability of applying the transform. Default: 0.5.

Examples
>>> import numpy as np
>>> import albumentations as A
>>> image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
>>>
>>> transform = A.ShotNoise(scale_range=(0.1, 1.0), p=1.0)
>>> noisy_image = transform(image=image)["image"]
Notes
  • Pipeline: linear space (gamma = 2.2), Poisson sample, back to display space.
  • Preserves mean intensity. Per-pixel, per-channel independent.
See Also
  • GaussNoise: i.i.d. Gaussian noise; use for sensor or transmission noise.
  • FilmGrain: Luminance-dependent, spatially correlated (film-like) noise.