← Back to all transforms
UnsharpMask
Description
Sharpen the input image using Unsharp Masking processing and overlays the result with the original image. Unsharp masking is a technique that enhances edge contrast in an image, creating the illusion of increased sharpness. This transform applies Gaussian blur to create a blurred version of the image, then uses this to create a mask which is combined with the original image to enhance edges and fine details. Args: blur_limit (tuple[int, int] | int): maximum Gaussian kernel size for blurring the input image. Must be zero or odd and in range [0, inf). If set to 0 it will be computed from sigma as `round(sigma * (3 if img.dtype == np.uint8 else 4) * 2 + 1) + 1`. If set single value `blur_limit` will be in range (0, blur_limit). Default: (3, 7). sigma_limit (tuple[float, float] | float): Gaussian kernel standard deviation. Must be in range [0, inf). If set single value `sigma_limit` will be in range (0, sigma_limit). If set to 0 sigma will be computed as `sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8`. Default: 0. alpha (tuple[float, float]): range to choose the visibility of the sharpened image. At 0, only the original image is visible, at 1.0 only its sharpened version is visible. Default: (0.2, 0.5). threshold (int): Value to limit sharpening only for areas with high pixel difference between original image and it's smoothed version. Higher threshold means less sharpening on flat areas. Must be in range [0, 255]. Default: 10. p (float): probability of applying the transform. Default: 0.5. Targets: image Image types: uint8, float32 Note: - The algorithm creates a mask M = (I - G) * alpha, where I is the original image and G is the Gaussian blurred version. - The final image is computed as: output = I + M if |I - G| > threshold, else I. - Higher alpha values increase the strength of the sharpening effect. - Higher threshold values limit the sharpening effect to areas with more significant edges or details. - The blur_limit and sigma_limit parameters control the Gaussian blur used to create the mask. References: - https://en.wikipedia.org/wiki/Unsharp_masking - https://arxiv.org/pdf/2107.10833.pdf Examples: >>> import numpy as np >>> import albumentations as A >>> image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8) >>> # Apply UnsharpMask with default parameters >>> transform = A.UnsharpMask(p=1.0) >>> sharpened_image = transform(image=image)['image'] >>> # Apply UnsharpMask with custom parameters >>> transform = A.UnsharpMask( ... blur_limit=(3, 7), ... sigma_limit=(0.1, 0.5), ... alpha=(0.2, 0.7), ... threshold=15, ... p=1.0 ... ) >>> sharpened_image = transform(image=image)['image']
Parameters
- blur_limit: int | tuple[int, int] (default: (3, 7))
- sigma_limit: int | tuple[int, int] | float | tuple[float, float] (default: 0)
- alpha: int | tuple[int, int] | float | tuple[float, float] (default: (0.2, 0.5))
- threshold: int (default: 10)
- p: float (default: 0.5)
Targets
- Image
Try it out
ⓘ
Original Image:
Result:
Transform result will appear here