RandomBrightnessContrast
Randomly changes the brightness and contrast of the input image.
This transform adjusts the brightness and contrast of an image simultaneously, allowing for a wide range of lighting and contrast variations. It's particularly useful for data augmentation in computer vision tasks, helping models become more robust to different lighting conditions.
brightness_limitFactor range for changing brightness. If a single float value is provided, the range will be (-brightness_limit, brightness_limit). Values should typically be in the range [-1.0, 1.0], where 0 means no change, 1.0 means maximum brightness, and -1.0 means minimum brightness. Default: (-0.2, 0.2).
contrast_limitFactor range for changing contrast. If a single float value is provided, the range will be (-contrast_limit, contrast_limit). Values should typically be in the range [-1.0, 1.0], where 0 means no change, 1.0 means maximum increase in contrast, and -1.0 means maximum decrease in contrast. Default: (-0.2, 0.2).
brightness_by_maxIf True, adjusts brightness by scaling pixel values up to the maximum value of the image's dtype. If False, uses the mean pixel value for adjustment. Default: True.
ensure_safe_rangeIf True, adjusts alpha and beta to prevent overflow/underflow. This ensures output values stay within the valid range for the image dtype without clipping. Default: False.
pProbability of applying the transform. Default: 0.5.
>>> import numpy as np
>>> import albumentations as A
>>> image = np.random.randint(0, 256, [100, 100, 3], dtype=np.uint8)
# Default usage
>>> transform = A.RandomBrightnessContrast(p=1.0)
>>> augmented_image = transform(image=image)["image"]
# Custom brightness and contrast limits
>>> transform = A.RandomBrightnessContrast(
... brightness_limit=0.3,
... contrast_limit=0.3,
... p=1.0
... )
>>> augmented_image = transform(image=image)["image"]
# Adjust brightness based on mean value
>>> transform = A.RandomBrightnessContrast(
... brightness_limit=0.2,
... contrast_limit=0.2,
... brightness_by_max=False,
... p=1.0
... )
>>> augmented_image = transform(image=image)["image"]- The order of operation is: contrast adjustment, then brightness adjustment.
- For uint8 images, the output is clipped to [0, 255] range.
- For float32 images, the output is clipped to [0, 1] range.
- The
brightness_by_maxparameter affects how brightness is adjusted:- If True, brightness adjustment is more pronounced and can lead to more saturated results.
- If False, brightness adjustment is more subtle and preserves the overall lighting better.
- This transform is useful for:
- Simulating different lighting conditions
- Enhancing low-light or overexposed images
- Data augmentation to improve model robustness