← Back to all transforms
ShotNoise
Description
Apply shot noise to the image by modeling photon counting as a Poisson process. Shot noise (also known as Poisson noise) occurs in imaging due to the quantum nature of light. When photons hit an imaging sensor, they arrive at random times following Poisson statistics. This transform simulates this physical process in linear light space by: 1. Converting to linear space (removing gamma) 2. Treating each pixel value as an expected photon count 3. Sampling actual photon counts from a Poisson distribution 4. Converting back to display space (reapplying gamma) The noise characteristics follow real camera behavior: - Noise variance equals signal mean in linear space (Poisson statistics) - Brighter regions have more absolute noise but less relative noise - Darker regions have less absolute noise but more relative noise - Noise is generated independently for each pixel and color channel Args: scale_range (tuple[float, float]): Range for sampling the noise scale factor. Represents the reciprocal of the expected photon count per unit intensity. Higher values mean more noise: - scale = 0.1: ~100 photons per unit intensity (low noise) - scale = 1.0: ~1 photon per unit intensity (moderate noise) - scale = 10.0: ~0.1 photons per unit intensity (high noise) Default: (0.1, 0.3) p (float): Probability of applying the transform. Default: 0.5 Targets: image Image types: uint8, float32 Note: - Performs calculations in linear light space (gamma = 2.2) - Preserves the image's mean intensity - Memory efficient with in-place operations - Thread-safe with independent random seeds Example: >>> import numpy as np >>> import albumentations as A >>> # Generate synthetic image >>> image = np.random.randint(0, 256, [100, 100, 3], dtype=np.uint8) >>> # Apply moderate shot noise >>> transform = A.ShotNoise(scale_range=(0.1, 1.0), p=1.0) >>> noisy_image = transform(image=image)["image"] References: - Shot noise: https://en.wikipedia.org/wiki/Shot_noise - Original paper: https://doi.org/10.1002/andp.19183622304 (Schottky, 1918) - Poisson process: https://en.wikipedia.org/wiki/Poisson_point_process - Gamma correction: https://en.wikipedia.org/wiki/Gamma_correction
Parameters
- scale_range: tuple[float, float] (default: (0.1, 0.3))
- p: float (default: 0.5)
Targets
- Image
Try it out
ⓘ
Original Image:
Result:
Transform result will appear here