Home ยป Blurring an Image Using Pillow in Python

Blurring an Image Using Pillow in Python

Java SE 11 Programmer I [1Z0-815] Practice Tests
Oracle Java Certification
Java SE 11 Developer (Upgrade) [1Z0-817]
1 Year Subscription
Spring Framework Basics Video Course
Java SE 11 Programmer II [1Z0-816] Practice Tests

Blurring an image is a common technique used in image processing for smoothing images, reducing noise, or creating artistic effects.

The Pillow library in Python provides several methods to apply blur effects using built-in filters.

This tutorial will cover:

  • Installing Pillow
  • Loading and displaying an image
  • Applying different types of blur (Gaussian, Box, and more)
  • Adjusting blur intensity
  • Saving blurred images
  • Applying blur to specific regions

By the end of this guide, you will be able to blur images effectively using Python and Pillow.

1. Installing Pillow

Before using Pillow, it needs to be installed. If not already installed, use the following command:

pip install pillow

To verify that the installation was successful, try importing the module:

from PIL import Image, ImageFilter

2. Loading and Displaying an Image

Before applying any blur, an image must be loaded into Python. Pillow provides the Image.open() method for this purpose.

from PIL import Image

# Load the image
image = Image.open("example.jpg")

# Display the image
image.show()

This will open the image using the system's default image viewer.

3. Applying a Basic Blur Effect

Pillow provides a BLUR filter that can be applied to an image using the ImageFilter module.

from PIL import Image, ImageFilter

# Load the image
image = Image.open("example.jpg")

# Apply blur
blurred_image = image.filter(ImageFilter.BLUR)

# Save and show the blurred image
blurred_image.save("example_blurred.jpg")
blurred_image.show()

How it Works

  • The filter() method applies an ImageFilter effect to the image.
  • ImageFilter.BLUR applies a basic blur that softens the image.

4. Applying a Gaussian Blur

Gaussian blur is a more advanced smoothing effect that provides stronger control over the blur intensity.

from PIL import Image, ImageFilter

# Load the image
image = Image.open("example.jpg")

# Apply Gaussian blur with radius
gaussian_blurred = image.filter(ImageFilter.GaussianBlur(radius=5))

# Save and show the image
gaussian_blurred.save("example_gaussian_blurred.jpg")
gaussian_blurred.show()

How it Works

  • ImageFilter.GaussianBlur(radius) applies a Gaussian blur with a given radius.
  • The radius determines the strength of the blur. A higher radius results in more blurring.

5. Adjusting Blur Intensity

The intensity of the blur can be increased by modifying the radius parameter in GaussianBlur().

image.filter(ImageFilter.GaussianBlur(radius=10)).show()  # Stronger blur
image.filter(ImageFilter.GaussianBlur(radius=2)).show()   # Weaker blur

Larger values create a more pronounced blur effect.

6. Using Box Blur for Performance

Box blur is a simplified blur effect that is computationally less expensive compared to Gaussian blur.

from PIL import Image, ImageFilter

# Load the image
image = Image.open("example.jpg")

# Apply Box blur
box_blurred = image.filter(ImageFilter.BoxBlur(radius=5))

# Save and show the image
box_blurred.save("example_box_blurred.jpg")
box_blurred.show()

How it Works

  • ImageFilter.BoxBlur(radius) applies a box blur, which is faster than Gaussian blur.
  • The radius parameter determines the blur intensity.

Box blur is useful when processing speed is important.

7. Blurring a Specific Region

Sometimes, it is necessary to blur only a specific part of an image, such as blurring a face or license plate.

from PIL import Image, ImageFilter

# Load the image
image = Image.open("example.jpg")

# Define the region to blur (left, top, right, bottom)
region = (100, 100, 400, 400)

# Crop the region
cropped_part = image.crop(region)

# Apply blur to the cropped part
blurred_part = cropped_part.filter(ImageFilter.GaussianBlur(radius=10))

# Paste the blurred part back into the original image
image.paste(blurred_part, region)

# Save and show the result
image.save("example_partial_blur.jpg")
image.show()

How it Works

  • crop(region) extracts the selected area of the image.
  • The cropped area is blurred using GaussianBlur(radius).
  • paste(blurred_part, region) places the blurred section back onto the original image.

This method is useful for redacting sensitive information in an image.

8. Blurring an Image in a Loop (Incremental Blur)

The following example applies incremental blurring to an image, creating a step-by-step progression of blur.

from PIL import Image, ImageFilter

# Load the image
image = Image.open("example.jpg")

# Apply different levels of blur and save them
for i in range(1, 6):
    blurred = image.filter(ImageFilter.GaussianBlur(radius=i * 2))
    blurred.save(f"example_blur_level_{i}.jpg")

This code generates multiple images, each with an increasing level of blur.

9. Combining Blur with Other Effects

Pillow allows combining blurring with other image processing techniques, such as converting the image to grayscale before applying blur.

from PIL import Image, ImageFilter

# Load image and convert to grayscale
image = Image.open("example.jpg").convert("L")

# Apply Gaussian blur
blurred_gray = image.filter(ImageFilter.GaussianBlur(radius=5))

# Save and show result
blurred_gray.save("example_blurred_gray.jpg")
blurred_gray.show()

This can create artistic effects or help in pre-processing images for machine learning.

10. Summary of Pillow Blur Methods

Method Description
ImageFilter.BLUR Basic blur effect.
ImageFilter.GaussianBlur(radius=n) More advanced blur, adjustable intensity.
ImageFilter.BoxBlur(radius=n) Faster, less computationally expensive blur.
crop(region) + paste() Blur specific parts of an image.

Each method serves a different purpose, whether for performance, selective blurring, or high-quality smoothing.

Conclusion

This tutorial covered:

  • Loading and displaying images using Pillow.
  • Applying different types of blur (basic, Gaussian, and Box blur).
  • Adjusting blur intensity for different effects.
  • Blurring only specific parts of an image.
  • Combining blur with other image processing techniques.

Blurring is a useful tool in image manipulation, privacy protection, and artistic effects. Experimenting with different blur types and radii allows for creating a variety of effects in Python.

You may also like

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More