开启生长之旅!这是我参与「日新计划 12 月更文应战」的第34天,点击检查活动概况

前言

虽然移动均匀滤波器 (moving average filter) 的核算十分方便快捷,但它具有以下两个缺陷,因而或许导致滤波图画中发生伪影:

  • 它并不是各向同性的(即圆形对称的),沿着对角线比沿着行和列更滑润
  • 权重间的改变十分突兀,而不是逐步衰减至零,这会使滑润图画中的发生不连续性

为了战胜这些缺陷,能够核算近似于圆形而不是正方形邻域的均匀值。为了完成此目的,我们一般能够运用高斯滤波器完成,高斯过滤器是唯一可分解的滤波器,能够将高斯滤波器分解表示为两个 1D 高斯滤波器的乘积,并且至少是近似圆形对称。从核中心到核边际的权重会逐步过渡衰减为零。以下表达式展示了高斯滤波器核,并给出了两个高斯核示例,核尺寸巨细分别为 3x35x5

高斯滤波器核权重:

wkl=122exp{−(k2+l2)22}w_{kl}=\frac 1 {2\pi \sigma ^2}exp\{\frac {-(k^2+l^2)} {2\sigma ^2}\}

333\times3 高斯滤波器如下:

116[121242121]\frac 1 {16} \left[ \begin{array}{ccc} 1 & 2 & 1\\ 2 & 4 & 2\\ 1 & 2 & 1\\ \end{array} \right]

555\times5 高斯滤波器如下:

1256[1464141624164624362464162416414641]\frac 1 {256} \left[ \begin{array}{ccc} 1 & 4 & 6 & 4 & 1\\ 4 & 16 & 24 & 16 & 4\\ 6 & 24 & 36 & 24 & 6\\ 4 & 16 & 24 & 16 & 4\\ 1 & 4 & 6 & 4 & 1\\ \end{array} \right]

运用高斯含糊滤波器去除椒盐噪声

(1) 首先读取输入 RGB 彩色图画,并增加固定份额 (20%) 的脉冲噪声:

import numpy as np
import matplotlib.pylab as plt
from PIL import Image, ImageFilter
from copy import deepcopy
def plot_image(image, title=None, sz=10):
plt.imshow(image)
plt.title(title, size=sz)
plt.axis('off')
def add_noise(im, prop_noise, salt=True, pepper=True):
im = deepcopy(im)
n = int(im.width * im.height * prop_noise)
x, y = np.random.randint(0, im.width, n), np.random.randint(0, im.height, n)
for (x,y) in zip(x,y):
im.putpixel((x, y), # generate salt-and-pepper noise
((0,0,0) if np.random.rand() < 0.5 else (255,255,255)) if salt and pepper \
else (255,255,255) if salt \
else (0, 0, 0)) # if pepper
return im
im = Image.open('1.png')
im = add_noise(im, prop_noise = 0.2)

(2) 运用 PIL 中的 image.filter() 方法,运用 imageFilter.gaussianblur 实例化具有不同的半径参数值(从 1 开始到 3 )的高斯滤波器,并绘制输出图画:

plt.figure(figsize=(20,15))
i = 1
for radius in np.linspace(1, 3, 12):
im1 = im.filter(ImageFilter.GaussianBlur(radius))
plt.subplot(3,4,i)
plot_image(im1, 'radius = ' + str(round(radius,2)))
i += 1
plt.suptitle('PIL Gaussian Blur with different Radius', size=13)
plt.show()

使用高斯模糊滤波器去除椒盐噪声

上图显示了代码的履行结果。能够看出,在运用高斯滤波器履行去噪使命时,半径越大,图画就会变得更加滑润,能够消除更多的噪声,但一起会使图画逐步含糊,丢失细节。