Basic Image Operations

Python Pillow Color Conversions

Image Manipulation

Image Filtering

Image Enhancement and Correction

Image Analysis

Advanced Topics

  • Image Module
  • Python Pillow Useful Resources

    Selected Reading

    Python Pillow - Unsharp Mask Filter



    Unsharp masking is a widely used image sharpening technique in image processing. The fundamental concept behind unsharp masking involves using a softened or unsharp version of a negative image to create a mask for the original image. This unsharp mask is subsequently merged with the original positive image, resulting in a less blurry version of the original image, making it clearer.

    The Python pillow(PIL) library provides a class called UnsharpMask() within its ImageFilter module for the application of the Unsharp Masking filter to images.

    The UnsharpMask Filter

    The ImageFilter.UnsharpMask() class represents an unsharp mask filter, which is used to enhance image sharpness.

    Following is the syntax of the ImageFilter.UnsharpMask() class −

    class PIL.ImageFilter.UnsharpMask(radius=2, percent=150, threshold=3)
    

    Where,

    • radius − This parameter controls the blur radius. Radius affects the size of the edges to be enhanced. A smaller radius sharpens smaller details, while a larger radius can create light halos around objects. Adjusting the radius and amount affects each other; decreasing one allows the other to have a greater impact.

    • percent − It determines the strength of the unsharp mask in percentage. Percentage controls the strength or magnitude of the sharpening effect. It determines how much contrast is added at the edges of objects. A higher amount results in a more pronounced sharpening effect, making edge borders darker and lighter. It does not impact the width of the edge rims.

    • threshold − Threshold controls the minimum change in brightness that gets sharpened. It decides how different adjacent tonal values need to be for the filter to take action. A higher threshold prevents smooth areas from becoming speckled. Lower values sharpen more, while higher values spare lower-contrast areas.

    Example - Using Unsharp Mask

    The following example applies the unsharp mask filter to an image using the ImageFilter.UnsharpMask() class and the Image.filter() method with default values.

    main.py

    from PIL import Image, ImageFilter
    
    # Open the image 
    original_image = Image.open('Images/flower1.jpg')
    
    # Apply the Unsharp Mask filter with default parameter values
    sharpened_image = original_image.filter(ImageFilter.UnsharpMask())
    
    # Display the original image
    original_image.show()
    
    # Display the sharpened image
    sharpened_image.show()
    

    Output

    Input image −

    zinnia flower

    Output image after applying the unsharp mask filter with default parameter values −

    imagefilter unsharpmask

    Example - Using Custom Unsharp Mask

    Here's another example that applies the Unsharp Mask filter to an image using different parameter values.

    main.py

    from PIL import Image, ImageFilter
    
    # Open the image using Pillow
    original_image = Image.open('Images/flower1.jpg')
    
    # Apply the Unsharp Mask filter with custom parameters
    sharpened_image = original_image.filter(ImageFilter.UnsharpMask(radius=4, percent=200, threshold=3))
    
    # Display the original image
    original_image.show()
    
    # Display the sharpened image
    sharpened_image.show()
    

    Output

    Input image −

    zinnia flower

    Output image after applying the unsharp mask filter with custom parameter values −

    unsharpmask
    Advertisements