← Back to all transforms
RandomSnow
Description
Applies a random snow effect to the input image. This transform simulates snowfall by either bleaching out some pixel values or adding a snow texture to the image, depending on the chosen method. Args: snow_point_range (tuple[float, float]): Range for the snow point threshold. Both values should be in the (0, 1) range. Default: (0.1, 0.3). brightness_coeff (float): Coefficient applied to increase the brightness of pixels below the snow_point threshold. Larger values lead to more pronounced snow effects. Should be > 0. Default: 2.5. method (Literal["bleach", "texture"]): The snow simulation method to use. Options are: - "bleach": Uses a simple pixel value thresholding technique. - "texture": Applies a more realistic snow texture overlay. Default: "texture". p (float): Probability of applying the transform. Default: 0.5. Targets: image Image types: uint8, float32 Note: - The "bleach" method increases the brightness of pixels above a certain threshold, creating a simple snow effect. This method is faster but may look less realistic. - The "texture" method creates a more realistic snow effect through the following steps: 1. Converts the image to HSV color space for better control over brightness. 2. Increases overall image brightness to simulate the reflective nature of snow. 3. Generates a snow texture using Gaussian noise, which is then smoothed with a Gaussian filter. 4. Applies a depth effect to the snow texture, making it more prominent at the top of the image. 5. Blends the snow texture with the original image using alpha compositing. 6. Adds a slight blue tint to simulate the cool color of snow. 7. Adds random sparkle effects to simulate light reflecting off snow crystals. This method produces a more realistic result but is computationally more expensive. Mathematical Formulation: For the "bleach" method: Let L be the lightness channel in HLS color space. For each pixel (i, j): If L[i, j] > snow_point: L[i, j] = L[i, j] * brightness_coeff For the "texture" method: 1. Brightness adjustment: V_new = V * (1 + brightness_coeff * snow_point) 2. Snow texture generation: T = GaussianFilter(GaussianNoise(μ=0.5, sigma=0.3)) 3. Depth effect: D = LinearGradient(1.0 to 0.2) 4. Final pixel value: P = (1 - alpha) * original_pixel + alpha * (T * D * 255) where alpha is the snow intensity factor derived from snow_point. Examples: >>> import numpy as np >>> import albumentations as A >>> image = np.random.randint(0, 256, [100, 100, 3], dtype=np.uint8) # Default usage (bleach method) >>> transform = A.RandomSnow(p=1.0) >>> snowy_image = transform(image=image)["image"] # Using texture method with custom parameters >>> transform = A.RandomSnow( ... snow_point_range=(0.2, 0.4), ... brightness_coeff=2.0, ... method="texture", ... p=1.0 ... ) >>> snowy_image = transform(image=image)["image"] References: - Bleach method: https://github.com/UjjwalSaxena/Automold--Road-Augmentation-Library - Texture method: Inspired by computer graphics techniques for snow rendering and atmospheric scattering simulations.
Parameters
- brightness_coeff: float (default: 2.5)
- snow_point_range: tuple[float, float] (default: (0.1, 0.3))
- method: Literal['bleach', 'texture'] (default: 'bleach')
- p: float (default: 0.5)
Targets
- Image
Try it out
ⓘ
Original Image:
Result:
Transform result will appear here