
在这篇文章中,我们将讨论如何应用模糊和锐化图像。这些基本知识构成了许多更高级应用程序的主干。
我们将讨论如何将这些知识应用到彩色图像上。现在开始吧!
从导入所需的Python库开始。
import numpy as npimport matplotlib.pyplot as pltfrom skimage.io import imshow, imreadfrom skimage.color import rgb2yuv, rgb2hsv, rgb2gray, yuv2rgb, hsv2rgbfrom scipy.signal import convolve2d
我们将使用下图:
dog = imread('fire_dog.png')plt.figure(num=None, figsize=(8, 6), dpi=80)imshow(dog);

现在我们应用到图像的核是高斯模糊核和锐化核。你可以在下面看到如何定义它们的矩阵。
# 锐化sharpen = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]]) # 高斯模糊gaussian = (1 / 16.0) * np.array([[1., 2., 1.], [2., 4., 2.], [1., 2., 1.]]) fig, ax = plt.subplots(1,2, figsize = (17,10))ax[0].imshow(sharpen, cmap='gray')ax[0].set_title(f'Sharpen', fontsize = 18) ax[1].imshow(gaussian, cmap='gray')ax[1].set_title(f'Gaussian Blur', fontsize = 18) [axi.set_axis_off() for axi in ax.ravel()];

但如何将这些核应用到图像中呢?我首先定义了下面的函数来允许我们迭代地处理核。请注意,我们将边界设置为fill,将fillvalue设置为0,这对于确保输出将是一个0填充的矩阵、且其大小与原始矩阵相同非常重要。
def multi_convolver(image, kernel, iterations): for i in range(iterations): image = convolve2d(image, kernel, 'same', boundary = 'fill', fillvalue =