欢迎关注 “小白玩转Python”,发现更多 “有趣”
引言
在之前的文章中,我们讨论了边缘检测内核。在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核应用到彩色图像上,同时保留核心图像。
一如既往,我们从导入所需的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);
现在我们应用于图像的内核是高斯模糊内核和锐化内核。
# Sharpensharpen = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])# Gaussian Blurgaussian = (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()];
但我们如何将这些内核应用到我们的图像中呢?那么,让我们直接通过卷积来试试。
def multi_convolver(image, kernel, iterations): for i in range(iterations): image = convolve2d(image, kernel, 'same', boundary = 'fill',