Python Pillow 简明教程

Python Pillow - Removing Noise

Removing noise ,也称为去噪,涉及减少图像中不需要的人工制品的过程。图像中的噪点通常表现为亮度或颜色的随机变化,这不属于原始场景或被拍摄的主题。图像去噪的目的是通过消除或减少这些不需要的令人分心的伪影来提高图像的质量,使图像更干净,视觉效果更佳。

Python pillow 库提供了一系列去噪滤镜,允许用户从噪声图像中去除噪声并恢复原始图像。在本教程中,我们将探讨使用高斯模糊和中值滤镜作为有效的去噪方法。

Removing the noise using the GaussianBlur filter

使用高斯模糊滤镜去除图像中的噪声是一种广泛使用的方法。此技术通过将卷积滤镜应用于图像来平滑像素值来起作用。

Example

这里有一个示例,它使用 ImageFilter.GaussianBlur() 滤镜来去除 RGB 图像中的噪声。

from PIL import Image, ImageFilter

# Open a Gaussian Noised Image
input_image = Image.open("Images/GaussianNoisedImage.jpg").convert('RGB')

# Apply Gaussian blur with some radius
blurred_image = input_image.filter(ImageFilter.GaussianBlur(radius=2))

# Display the input and the blurred image
input_image.show()
blurred_image.show()
gaussiannoisedimage
blurred image tp

Removing the noise using the Median Filter

中值滤镜是另一种减少噪声的方法,特别适用于噪声点像小而分散的图像。此函数通过用其局部邻域内的中值替换每个像素值来操作。Pillow 库为此目的提供了 ImageFilter.MedianFilter() 滤镜。

Example

以下示例使用 ImageFilter.MedianFilter() 去除图像中的噪声。

from PIL import Image, ImageFilter

# Open an image
input_image = Image.open("Images/balloons_noisy.png")

# Apply median filter with a kernel size
filtered_image = input_image.filter(ImageFilter.MedianFilter(size=3))

# Display the input and the filtered image
input_image.show()
filtered_image.show()
balloons noisy
filtered image balloons

Example

此示例演示了灰度图像中 salt-and-pepper 噪声的减少。这可以通过使用中值滤镜、增强对比度以提高可见性,然后将图像转换为二进制模式以显示来完成。

from PIL import Image, ImageEnhance, ImageFilter, ImageOps

# Open the image and convert it to grayscale
input_image = ImageOps.grayscale(Image.open('Images/salt-and-pepper noise.jpg'))

# Apply a median filter with a kernel size of 5 to reduce noise
filtered_image = input_image.filter(ImageFilter.MedianFilter(5))

# Enhance the contrast of the filtered image
contrast_enhancer = ImageEnhance.Contrast(filtered_image)
high_contrast_image = contrast_enhancer.enhance(3)

# Convert the image to binary
binary_image = high_contrast_image.convert('1')

# Display the input and processed images
input_image.show()
binary_image.show()
salt and pepper noise
median filtered