在图像处理过程中,经常会需要将一张完整的图像切分为若干个图像块,在对图像块进行操作后,又需要利用图像块恢复到原始尺寸,接下来使用Python的numpy库来完成这两个过程的处理。
首先是一些准备工作:
%config InlineBackend.figure_format = 'retina'
%matplotlib inline
import numpy as np
from skimage.io import imread
from skimage.color import rgb2gray
import matplotlib.pyplot as plt
## 读取一张图像并可视化
im = imread("斑马.jpg") / 255.0
# im = rgb2gray(im)
plt.imshow(im)
plt.axis("off")
plt.show()
im.shape
(321, 481, 3)
读取的图像为321*481的RGB图像。下面定义一个可以将灰度图像或者RGB图像切分为图像块的函数:
## 定义辅助函数 图像转化为图像块
def image2cols(image,patch_size,stride):
"""
image:需要切分为图像块的图像
patch_size:图像块的尺寸,如:(10,10)
stride:切分图像块时移动过得步长,如:5
"""