开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
scikit-image 基本用法
scikit-image 是基于 scipy 的图像处理库,它将图片作为 Mumpy 数组进行处理。
例如,可以利用scikit-image改变图片比例,scikit-image提供了rescale、resize以及downscale_local_mean等函数。
from skimage import data, color, io
from skimage.transform import rescale, resize, downscale_local_mean
image = color.rgb2gray(io.imread('h89817032p0.png'))
image_rescaled = rescale(image, 0.25, anti_aliasing=False)
image_resized = resize(image, (image.shape[0] // 4, image.shape[1] // 4),
anti_aliasing=True)
image_downscaled = downscale_local_mean(image, (4, 3))
plt.figure(figsize=(20,20))
plt.subplot(221),plt.imshow(image, cmap='gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(222),plt.imshow(image_rescaled, cmap='gray'),plt.title('Rescaled')
plt.xticks([]), plt.yticks([])
plt.subplot(223),plt.imshow(image_resized, cmap='gray'),plt.title('Resized')
plt.xticks([]), plt.yticks([])
plt.subplot(224),plt.imshow(image_downscaled, cmap='gray'),plt.title('Downscaled')
plt.xticks([]), plt.yticks([])
plt.show()
使用 scikit-image 绘制蒙太奇图像
在本节中,我们将介绍如何在图像中添加随机噪声添加到图像(具有不同的方差)以创建带有噪声的图像,然后创建图像蒙太奇效果。
我们首先导入所需的库,并使用 imread() 函数读取输入 RGB 图像:
from skimage.io import imread
from skimage.util import random_noise, montage
import matplotlib.pylab as plt
import numpy as np
im = imread("1.png")
使用 scikit-image 模块的函数 random_noise(),通过添加具有给定方差的高斯随机噪声,利用输入图像创建带有噪声的图像。根据 scikit-image 文档所示,函数 random_noise() 函数的用法如下:
skimage.util.random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs)
使用以上函数通过向输入图像添加具有不同方差的随机高斯噪声来生成噪声图像。
使用 NumPy 函数 np.linspace() 从 0 到 1 (按值的递增顺序)生成九个不同的 值:
# 在 0 到 1 区间内创建 包含9 个点的等差序列,作为标准差
sigmas = np.linspace(0, 1, 9)
noisy_images = np.zeros((9, im.shape[0], im.shape[1], im.shape[2]))
for i in range(len(sigmas)):
# 用不同的 Sigma 值在图像中添加高斯随机噪声
noisy_images[i,:,:,:] = random_noise(im, var=sigmas[i]**2)
使用 scikit image-util 模块的函数 montage() 创建含噪图像的蒙太奇。montage() 函数接受有噪图像 ndarray 作为输入参数,并在网格中显示图像。Scikit-image 文档描述了函数 montage() 的调用方法,利用该函数可以创建多个单通道或多通道图像的蒙太奇:
noisy_images_montage = montage(noisy_images, rescale_intensity=True, multichannel=True) # 创建蒙太奇
最后,绘制噪声图像的蒙太奇:
plt.figure(figsize=(15,15))
plt.imshow(noisy_images_montage)
plt.title('Noisy montage', size=15)
plt.axis('off')
plt.show()